apache没有阅读更新的符号链接

Ric*_*tti 8 apache symlink ispconfig

我在/var/www/domain.example/web/MY_SYMLINK上有一个指向/var/www/domain.example/web/SOME_FOLDER的符号链接.这被定义为我的网站文档根目录.

然后我运行ln -sfn将符号链接更改为/var/www/domain.example/web/NEW_FOLDER.到现在为止还挺好.如果我运行ls -a,则可以看到更改已应用.

如果我在http://domain.example上点击服务器,网站仍然指向旧文件夹.我知道apache需要重新启动,所以我运行service apache2 restart但是没有执行更改.我已经尝试过apache2停止/启动,重新加载或优雅.它们都不起作用.

仅当我转到ISPConfig的控制面板并单击" 重新同步"时,才会应用符号链接更新.

我希望能够从命令行执行此操作.谁知道怎么做?

小智 7

我很确定这与您将 PHP 作为 FPM 运行这一事实有关。我使用过类似的设置,部署过程是复制服务器上的源并重置符号链接,该符号链接是虚拟主机文件中定义的文档根目录。我必须在部署过程结束时重新启动 PHP FPM,否则服务器将继续为旧源提供服务。

对于重新启动 PHP FPM 服务,最常见的方法是:

sudo service php-fpm restart
Run Code Online (Sandbox Code Playgroud)

或者

sudo /etc/init.d/php-fpm restart
Run Code Online (Sandbox Code Playgroud)

或者其他方式,你可以查看这篇文章的答案。


小智 0

检查 apache 是否正在运行

sudo service httpd status
Run Code Online (Sandbox Code Playgroud)

请注意,Apache 推荐使用 apachectl -k 作为命令,对于 systemd,该命令替换为 httpd -k

apachectl -k stop or httpd -k stop
Run Code Online (Sandbox Code Playgroud)

这告诉进程杀死所有线程然后退出

符号链接应该可以正常工作。您可能需要也可能不需要将该目录添加到 /etc/apache2/apache2.conf 以便 apache 知道它可以访问非标准目录。

Example (note: I do not use the -d option):

doug@s15:/var/www/html$ ln -s /media/newhd/test_web bla2
doug@s15:/var/www/html$ ls -l
total 44
...
lrwxrwxrwx 1 doug doug   21 May 11 22:14 bla2 -> /media/newhd/test_web
...
Run Code Online (Sandbox Code Playgroud)

摘自“/etc/apache2/acpahe2.conf”

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

<Directory /media/newhd/test_web/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

确保所有权限(包括父母)均符合要求。