【问题标题】:Laravel deployment via Envoyer to CpanelLaravel 通过 Envoyer 部署到 Cpanel
【发布时间】:2019-11-10 20:21:32
【问题描述】:

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

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

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

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

现在文件夹结构是:

-staging
    - releases
        -release1
        -release2
    - current

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

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

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

【问题讨论】:

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


    【解决方案1】:

    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>
    

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

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

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

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

    如果您无法更改上述虚拟主机配置,您可以使用 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 文件夹中执行相同的操作。

    【讨论】:

    • 我可以简单地修改我的子域的根路径吗?
    • 有没有我可以在不更改虚拟主机文件的情况下做到这一点?我的托管服务提供商建议不要这样做。
    • @prakashchhetri 修改根路径应该可以解决问题。这就是配置所做的 - DocumentRoot 指令。
    • 我提供了另一种方法,但取决于托管服务提供商是否允许 .htaccess 覆盖。首先尝试根据 DocumentRoot 指令修改根路径。
    • @prakashchhetri 你是怎么做到的?
    猜你喜欢
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    相关资源
    最近更新 更多