使用 apache 在单个 VPS 上托管多个 laravel 5.5 项目?

Posted

技术标签:

【中文标题】使用 apache 在单个 VPS 上托管多个 laravel 5.5 项目?【英文标题】:Hosting multiple laravel 5.5 projects on a single VPS with apache? 【发布时间】:2018-06-05 13:55:34 【问题描述】:

我有一个Digital Ocean VPS,我想做的是设置多个应用程序但只更改http://ip/:project。

我的 apache .conf 中已经有这个:

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/rovix/public
    <Directory /var/www/rovix/public/>
        RewriteEngine On
        RewriteBase /var/www/rovix/public
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    Alias /aleman /var/www/aleman
    <Directory /var/www/aleman/public/>
        RewriteEngine On
        RewriteBase /var/www/aleman/public
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

到目前为止 Alias /aleman 正在工作,因为它引导我进入文件夹,但是当我进入公共时不再工作。关于如何实现这一目标的任何想法?谢谢!

更新

Alias /aleman /var/www/aleman/public
    DocumentRoot /var/www/aleman/public
    <Directory /var/www/aleman/public/>
        RewriteEngine On
        RewriteBase /var/www/aleman/public
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

我已经按照你的建议更改了配置。

但如果我不覆盖 DocumentRoot,那么我会被重定向到根目录 /

如果我覆盖 DocumentRoot,则 url 会变得混杂。

有没有其他方法可以为每个项目实现单独的url?

【问题讨论】:

更改http://ip/:project 是什么意思?您的意思是您使用的是基于 IP 的虚拟主机? 【参考方案1】:

我的猜测是您想将Alias /aleman /var/www/aleman 更改为Alias /aleman /var/www/aleman/public。我发现“点击”到 public 文件夹对 Laravel 路由器来说不是很好。

我假设您知道这一点,但为了别人,请记住在编辑文件后重新启动 Apache,否则更改不会生效。

【讨论】:

点击“公开”不仅不是很好,而且是对安全性的严重妥协。有人写下something/aleman/.env -- 会以漂亮的纯文本格式下载 .env 文件。 感谢您提出这个问题。我同意,根据 Apache 的配置,可以加载隐藏文件。 我已经按照您的建议更改了配置: Alias /aleman /var/www/aleman/public DocumentRoot /var/www/aleman/public RewriteEngine在 RewriteBase /var/www/aleman/public 选项索引 FollowSymLinks AllowOverride All 要求所有授予 但是如果我不覆盖 DocumentRoot 然后我被重定向到根 / 如果我覆盖 DocumentRoot 的 url 得到混合.是否有另一种方法可以为每个项目实现单独的 url?

以上是关于使用 apache 在单个 VPS 上托管多个 laravel 5.5 项目?的主要内容,如果未能解决你的问题,请参考以下文章

在一个 IP 上托管多个 Golang 站点并根据域请求提供服务?

在 Debian 8 VPS 上托管 C# Discord 机器人

在单个服务器上托管多个应用程序容器而不会发生冲突

如何在单个 AWS EC2 实例上托管多个域和子域

如何在 nginx 上托管的单个域下托管多个烧瓶应用程序?

Apache 虚拟主机:HTTP 被重定向到默认的 Apache 站点