我有一个运行WHM和Cpanel的VPS。我在那里托管了多个域。假设其中一个是example.com
我打算做的是拥有两个版本的应用程序。
生产:example.com
> /public_html/
开发:staging.example.com
> /public_html/staging/
现在,我正在尝试将应用程序部署到开发环境,即部署到暂存文件夹。
使者与我的托管服务提供商进行了很多斗争,目前工作正常。它正在按预期方式上传文件。现在唯一的问题是符号链接current
现在文件夹结构为:
-staging
- releases
-release1
-release2
- current
我的子域清楚地指向暂存文件夹,这将导致它显示该文件夹而不是应用程序的所有内容。
由于该应用程序位于发布文件夹中,因此当我访问子域时,如何确保我的应用程序运行。
我是否必须在Apache中修改我的虚拟主机文件?
答案 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文件夹中执行相同的操作。