带有嵌套符号链接的Nginx根目录



我们的网站(laravel(项目目录如下:

/home/user/project/{app,route,public_html,storage,...} 

新版本位于:

/home/user/releases/v1

出于某种原因,我们必须为每个版本链接public_html目录,因此:

/home/user/releases/v1/public_html > /home/user/project/public_html

Nginx根目录是:

/home/user/www/site/public_html  

哪个:

/home/user/www/site > /home/user/releases/v1

由于NGINX将遵循符号链接,最终根目录将是:

/home/user/project/public_html

有办法解决这种情况吗?

由于虚拟主机的root/home/user/www/site/public_html/home/user/www/site/public_html/home/user/project/public_html的符号链接,/home/user/project/public_html是最新版本的符号链接-nginXlocation块实际上会在/home/user/releases/v1/public_html中搜索。


以下是一个示例。假设我们有一个文件夹/my_releases。每次发布/部署新版本时,我都会在/my_releases中创建一个新的子文件夹,其中包含该版本(/my_releases/v1,然后是/my_releases/v2,依此类推(。发布的所有资产都将在相应的子文件夹中,所以我会有

/my_releases
|
+---- /v1
|      |
|      +--- /css
|      |      |
|      |      +--- /home.a120cd8.css
|      |
|      +--- /img
|      |      |
|      |      +--- /logo.7f40c3a.svg
|      |
|      +--- /js
|      |     |
|      |     +--- /main.ba4de98.js
|      |
|      +--- /api
|      |      |
|      |      +--- /index.php
|      |      |
|      |      +--- /routes
|      |              |
|      |              +--- /login.php
|      +--- /index.html
|
+---- /v2
|      |
|      +--- /css
|      |      |
|      |      +--- /home.7845c7.css
|      |
|      +--- /img
|      |      |
|      |      +--- /logo.23038ad.svg
|      |
|      +--- /js
|      |     |
|      |     +--- /main.acb33f1.js
|      |
|      +--- /api
|      |      |
|      |      +--- /index.php
|      |      |
|      |      +--- /routes
|      |              |
|      |              +--- /login.php
|      +--- /index.html
........ next releases until the end of the world

我的nginX是这样配置的,我的虚拟主机有

server {
server_name my.personal.web.site;
root /var/www/public_html;
.....
}

在启动nginX之前,我已经运行了以下2个命令:

ln -s -f -n /my_releases/current /my_releases/v1
ln -s -f -n /var/www/public_html /my_releases/current

然后我启动了nginX-service nginx start。它现在将为我的网站/应用程序的v1提供服务。

现在,每当我部署新版本时,我都会运行以下命令(用相关修订版替换v2(

ln -s -f -n /my_releases/current /my_releases/v2

不要忘记设置正确的文件系统权限和所有权

最新更新