1

我有这个以前没有发生过的奇怪问题。

我在 Digital Ocean 上运行一个使用 NGINX 和 PHP-FPM 的 Ubuntu Box。我还使用 PHP Deployer 在 Stage 和 Prod 之间部署代码。

Deployer 使用符号链接告诉服务器文件在哪里,在这种情况下/var/www/mydommain.com/current将是指向/var/www/mydomain.com/releases/26.

这一切都很好,如果我这样做cd /var/www/mydomain.com/current,它将更改为releases/26. 然而,该网站仍然指向releases/25. 我已经多次重启 NGINX 和 PHP-FPM 都没有成功。

为什么 NGINX 仍然指向releases/25符号链接实际指向的时间releases/26?我无法得到它。

在这个域的 NGINX 配置中,我有root /var/www/mydomain.com/current

4

2 回答 2

1

这可能是由于$document_root在您的 Nginx 配置中被缓存,直到您这样做sudo service php5.6-fpm restart

您可以替换$document_root$realpath_root以避免缓存。

这个网站帮助了我:

https://joshtronic.com/2019/07/29/symlinks-with-nginx-and-php-fpm/

于 2019-10-30T12:00:08.367 回答
1

我知道这是一个 8 个月大的问题,但这可能对其他人有所帮助:

我遇到了同样的问题,并注意到如果我编辑以前版本的索引文件(index.php),符号链接会神奇地刷新。

部署后,我只需运行:

touch /path/to/releases/[previous_release_number]/public_html/index.php

...更新文件的修改时间戳。

我最终将它包含在我的deploy:symlink任务中,如下所示:

task('deploy:symlink', function () {
    run("cd {{deploy_path}} && ln -sfn {{release_path}}/public_html ./public_html");
    run("touch {{previous_release}}/public_html/index.php");
})->desc('Linking latest version to public_html'); // <= Added this

希望这可以帮助。问候, 沃特

于 2018-05-29T18:44:25.190 回答