3

我有一个运行 WHM 和 Cpanel 的 VPS。我在那里托管了多个域。说其中之一是example.com

我打算做的是有两个版本的应用程序。生产:example.com>/public_html/ 开发:staging.example.com>/public_html/staging/

现在,我正在尝试将我的应用程序部署到开发环境,即部署到暂存文件夹。

Envoyer 与我的托管服务提供商进行了很多斗争,工作正常。它正在按预期上传文件。现在唯一的问题是符号链接current

现在文件夹结构是:

-staging
    - releases
        -release1
        -release2
    - current

我的子域清楚地指向暂存文件夹,这将导致它显示文件夹的所有内容而不是应用程序。

由于应用程序位于发布文件夹中,我如何确保我的应用程序在我们点击子域时运行。

我必须在 Apache 中修改我的虚拟主机文件吗?

4

1 回答 1

0

Laravel 要求域的根目录(在相关的 apache vhost conf 文件中配置)是它的“公共”文件夹。这是它的入口点 index.php 所在的位置。

编辑 apache vhosts conf 文件,如下所示

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/home/user/public_html/public"
    <Directory "/home/user/public_html/public">
        Options Indexes FollowSymLinks
        AllowOverride all
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName staging.example.com
    DocumentRoot "/home/user/public_html/staging/public"
    <Directory "/home/user/public_html/staging/public">
        Options Indexes FollowSymLinks
        AllowOverride all
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

例如.com,您将 laravel 应用程序安装到 /home/user/public_html 文件夹中

作为 laravel 安装的一部分,它将创建“公共”文件夹。

对于staging.example.com,您将 laravel 应用程序安装到 /home/user/public_html/staging 文件夹中。

不要忘记重新启动 Web 服务器,以便它获取新配置。

如果您无法更改上述虚拟主机配置,则可以使用 public_html 文件夹中的 .htaccess 文件(注意前导句号使其成为隐藏文件)。以下内容取决于您的托管服务提供商是否允许 .htaccess 覆盖。

将以下内容添加到 .htaccess 文件中:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

如果在输入http://example.com时主机已正确设置域指向 /home/username/public_html,那么它应该自动调用 public/index.php。

您需要在 public_html/staging 文件夹中执行相同的操作。

于 2019-07-01T02:54:16.200 回答