Apache网站常见问题排查
概述
本文主要介绍使用阿里云ECS实例搭建Apache网站时,遇到的一些常见问题的处理方法。
详细信息
阿里云提醒您:
如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
请根据现场实际情况,选择以下对应的解决方案。
Apache网站无法打开
检查Apache是否正常启动
登录服务器里执行命令,查看网站80、443端口是否监听启动。
netstat -nltp |grep -E '80|443'
执行命令,查看Apache进程是否运行。
ps aux |grep httpd #CentOS/Alinux系统里进程名是httpd
ps aux |grep apache #Ubuntu系统里进程名是apache2
启动Apache 服务
如果Apache没有启动,执行命令启动Apache。
systemctl start httpd #CentOS/Alinux系统
systemctl start apache2 #Ubuntu系统
检查安全组和防火墙规则
ECS控制台检查安全组规则是否放行了80、443端口访问。
登录ECS管理控制台。
在左侧导航栏,单击实例与镜像 > 实例。
在实例列表中找到对应ECS实例,点击ECS实例名称进入到实例管理页面。
在安全组选项中,查看入方向安全规则。
在服务器里执行命令,查看是否设置iptables 防火墙规则。
iptables -nL
Apache网站访问4xx/5xx错误
Apache网站访问403错误
检查网站目录的文件权限,Apache是否有权限读写网站文件。
站点目录默认为/var/www/html/ 。
执行命令查看站点目录/var/www/html/ 的权限,一般权限为755。
stat /var/www/html/
执行命令,查看站点目录里边网站文件的权限,一般权限为644。
ls -l /var/www/html/
检查Apache配置文件,查看站点目录是否设置了拒绝访问。
CentOS/Alinux系统默认配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
Ubuntu系统默认配置文件:
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/
查看配置文件中<Directory> 部分的配置,是否配置了 Deny from all 拒绝访问。
检查网站首页文件是否存在。
CentOS/Alinux系统:
查看配置文件httpd.conf 中 DirectoryIndex 配置的默认首页,默认首页一般为 index.html 或者index.php。
Ubuntu系统:
查看配置文件 /etc/apache2/mods-enabled/dir.conf 中 DirectoryIndex 配置的默认首页。
Apache网站访问404错误
检查Apache配置文件中vhosts部分站点目录配置是否正确,域名绑定是否正确。
CentOS/Alinux系统默认配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
Ubuntu系统默认配置文件:
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/
检查网站目录中的程序文件是否存在。
配置文件中 DocumentRoot 设置的站点目录。
如果使用vhosts配置多个站点,查看vhosts站点对应的 DocumentRoot 站点目录。
Apache网站访问5xx错误
查看Apache的错误日志,根据错误信息分析排查。
执行命令查看错误日志。
less /var/log/httpd/error_log #CentOS/Alinux系统 less /var/log/apache2/error.log #Ubuntu系统
检查伪静态配置文件 .htaccess 的配置是否正确。
检查网站目录的权限是否正常,一般权限为755。
站点目录默认为/var/www/html/ 。
执行命令查看站点目录/var/www/html/ 的权限。
stat /var/www/html/
用户实际站点目录,可以查看配置文件中虚拟站点VirtualHost的DocumentRoot配置。
CentOS/Alinux系统默认配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
Ubuntu系统默认配置文件:
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/
开启php的详细错误日志,查看php程序错误信息。
修改 php.ini 配置文件,添加如下配置开启详细日志输出。
display_errors = Off error_reporting = E_ALL | E_STRICT
执行命令重启Apache,然后访问php页面查看错误。
systemctl restart httpd #CentOS/Alinux系统 systemctl restart apache2 #Ubuntu系统
Apache网站访问卡慢排查
检查服务器性能
主要检查公网带宽、CPU使用率,磁盘IOPS性能。
查看Apache错误日志,是否有错误信息
执行命令查看Apache错误日志。
less /var/log/httpd/error_log #CentOS/Alinux系统
less /var/log/apache2/error.log #Ubuntu系统
查看Apache的httpd进程数量,是否达到了设置的最大值进程数
执行命令统计httpd进程数量。
ps aux |grep httpd |wc -l #CentOS/Alinux系统
ps aux |grep apache2 |wc -l #Ubuntu系统
Apache调优,3种工作模式,prefork\worker\event,参考Apache官方文档说明:
查看Apache工作模式。 CentOS/Alinux系统使用命令:
httpd -V
Ubuntu系统使用命令:
a2query -M
[root@localhost]# httpd -V #CentOS/Alinux系统
Server version: Apache/2.4.6 (CentOS)
Server built: Mar 24 2022 14:57:57
Server's Module Magic Number: 20120211:24
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: prefork #表示用的prefork模式
threaded: no
forked: yes (variable process count)
[root@localhost]# a2query -M #Ubuntu系统
prefork
Apache\PHP\MySQL运行异常修复
Apache运行异常检查方法
重启Apache服务。
systemctl restart httpd #CentOS/Alinux系统
systemctl restart apache2 #Ubuntu系统
查看Apache错误日志,根据错误日志分析。
执行命令,查看Apache错误日志。
less /var/log/httpd/error_log #CentOS/Alinux系统
less /var/log/apache2/error.log #Ubuntu系统
PHP运行异常检查方法
1. 开启php详细错误信息。
修改php.ini 配置文件,添加如下配置开启详细日志输出。
display_errors = Off
error_reporting = E_ALL | E_STRICT
执行命令重启Apache。
systemctl restart httpd #CentOS/Alinux系统
systemctl restart apache2 #Ubuntu系统
2. 访问php页面,根据详细php错误信息分析排查。
MySQL运行异常检查方法
查看MySQL日志,根据错误日志分析。
执行命令查看MySQL日志。
less /var/log/mysqld.log #CentOS/Alinux系统
less /var/log/mysql/error.log #Ubuntu系统