之前文章中曾介绍升级VPS系统导致cutehive.com网站失败的问题,但是好在我都一一成功解决了。
(图源 :pixabay)
不过悲催的是,我在升级另外一台VPS时,又导致这台VPS上的网站无法访问了。按说有了先前的经验,解决起来应该很简单,可是问题是这次的症状和cutehive.com的完全不一样。
当我将VPS系统从Ubuntu 18.04 LTS升级为Ubuntu 20.04 LTS后,这个问题就出现了。当时我想,也许我进一步升级到Ubuntu 22.04 LTS后,问题会自行修复,然而事实证明我想多啦。
插一句:有朋友可能会问,为何要先升级到Ubuntu 20.04 LTS,而不是直接升级到Ubuntu 22.04 LTS,我也想一步到位呀,可是好像Ubuntu的升级脚本只支持这样一步一步地升级。
继续说无法访问的问题,当我在浏览器里打开对应网址,出现了如下提示:
如果不是我确信升级之前网站可以正常访问,那么看到这个提示我一定会以为网站被墙了呢。
我想在网站错误日志中找找线索,结果发现错误日志是空的(升级之前被我清空啦),这就让我有些束手无策了,咋办了啊?
想到自己解决问题时最常用的办法就是重启大法,于是乎重启系统,但是故障依旧。
既然重启系统不可以,那么重启Apache2试试看:
sudo systemctl restart apache2
结果出现如下提示:
既然它这么说了,那咱就执行一下它给的命令呗:
sudo systemctl status apache2.service
提示信息如下:
其中核心的信息为:
apachectl[1673]: AH00526: Syntax error on line 6 of /etc/apache2/sites-enabled/xxx-le-ssl.conf:
apachectl[1673]: Invalid command 'php_admin_value', perhaps misspelled or defined by a module not included in the server configuration
apachectl[1670]: Action 'start' failed.
也就是说在站点的配置文件中,存在无效命令php_admin_value,导致Apache2启动失败。
我去看了一样对应的站点配置文件,发现里边果然有这条指令:
完整的指令为:
php_admin_value engine Off
那么这条指令是做什么用的呢?我为什么要加它呢?它为什么会变为无效指令呢?,我发出灵魂三拷问。
不过好在这条指令字面意思就比较直观,所以我一下子就回想起来了。这条指令指示对应目录下是否可以使用PHP功能;我之所以加它是因为想禁用这个站点的PHP功能;之所以无效是因为升级Ubuntu会把PHP搞丢(参考我之前的文章)。
知道了问题所在,解决起来就很简单了,比如说有以下两个办法:
- 在VPS上安装PHP,并为Apache2启用PHP模块
- 删除站点配置文件中的对应指令
我看了这台VPS上,我根本不需要PHP,那么与其安装上PHP再禁用站点的PHP功能,不如直接不装PHP算了。于是在站点配置文件中删除对应指令。
原本以为这次重启Apache2,一定没问题了,结果发现故障依旧,只是提示信息中换了一个站点配置文件而已。看到出错信息,我才想起来,http以及https两个版本网站对应不同的配置文件,都需要做修改才对。
在所有的站点文件中都去掉对应指令,再重启Apache2,一切正常,网站也可以正常访问啦。折腾大半宿,总算解决这个问题啦。
(图源 :pixabay)
接下来的问题是,我还有几个VPS,上边的情况更加复杂,很纠结要不要升级这几个VPS?
毕竟现在它们都运行得好好的,升级可能会一堆麻烦,哎,纠结呀!