Ubuntu系统云服务器Apache进程正常,服务无法访问(HTTP Error503)的解决方案之一
- 网上很多资料都指向服务器防火墙未关或云服务提供商的安全组设定未放开,大家可以先尝试以上两种问题,如果不是欢迎继续阅读。
- 另外首先请大家执行重启,确保Apache更新你之前的所有配置,同时再测试一遍是否能访问。
/etc/init.d/apache2 restart #重启
- 如不能,一个解决方案如下所示:
1.问题发现
将静态HTML网页利用Apache2中的httpd服务部署到服务器上,并通过”IP:Port+页面“的形式访问,但在部署完成后的第二天发现目标无法访问(浏览器报错HTTP Error503),但查看Apache2进程状态为running。
sudo systemctl status apache2 #Debian/Ubuntu
systemctl status httpd #RHEL/CentOS/Fedora
2.问题排查
2.1 查看访问日志与错误日志
cat /var/log/apache2/error.log.1 #最后一项可根据自己的日志修改
发现是有一个信号SIGUSR1被捕获,然后Apache2服务执行了重启。其中信号SIGUSR1使得父进程建议子进程在完成它们现在的请求后退出(如果他们没有进行服务,将会立刻退出)。父进程重新读入配置文件并重新打开日志文件。每当一个子进程死掉,父进程立刻用新的配置文件产生一个新的子进程并立刻开始伺服新的请求。这代表着Apache2的自动重启计划,以便于模型的稳定,同时可以执行日志的更迭。
2.2 查看日志配置
cat /etc/logrotate.d/apache2
我们可以看到日志以天为单位更换,这也可能导致Apache2环境重启。但是为什么重启之后服务就挂掉,不能访问了呢?笔者检查了访问日志与发生重启时的连接数都没问题,进行到这,我们多半可以确定是Apache2在安装时配置的问题了。
2.3 检查端口配置
查看port.conf和sites-enabled/000-default.conf
vim /etc/apache2/ports.conf #检查监听端口
vim /etc/apache2/sites-enabled/000-default.conf #检查默认启动虚拟机主机端口
3.解决方案
如果两者不一致,请修改为一致后重启。
/etc/init.d/apache2 restart #重启
并使用【ip地址:端口号 页面地址】,如:(只有端口号为80时,可以默认不加端口号)
http://82.157.118.181:63342/index.html
即可正常访问。
- 造成此问题的具体原因是,在配置文件时只修改了其中一个(监听或者默认启动的端口号),导致Apache2服务自动重启后端口不一致而无法提供服务。
- 解决方案简述:查看配置文件,修改后重启。