Laravel通过Envoyer部署到Cpanel

时间:2019-06-29 00:30:24

标签: laravel apache laravel-5 deployment envoyer.io

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

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

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

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

现在文件夹结构为:

-staging
    - releases
        -release1
        -release2
    - current

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

由于该应用程序位于发布文件夹中,因此当我访问子域时,如何确保我的应用程序运行。

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

1 个答案:

答案 0 :(得分:0)

Laravel要求域的根目录(在相关的apache vhost conf文件中配置)是“ public”文件夹。这是入口点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>

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

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

对于 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文件夹中执行相同的操作。