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系统

检查安全组和防火墙规则

  1. ECS控制台检查安全组规则是否放行了80、443端口访问。

    1. 登录ECS管理控制台

    2. 在左侧导航栏,单击实例与镜像 > 实例。

    3. 在实例列表中找到对应ECS实例,点击ECS实例名称进入到实例管理页面。

    4. 在安全组选项中,查看入方向安全规则。

  2. 在服务器里执行命令,查看是否设置iptables 防火墙规则。

iptables -nL

Apache网站访问4xx/5xx错误

Apache网站访问403错误

  1. 检查网站目录的文件权限,Apache是否有权限读写网站文件。

    站点目录默认为/var/www/html/ 。

    执行命令查看站点目录/var/www/html/ 的权限,一般权限为755。

    stat /var/www/html/

    执行命令,查看站点目录里边网站文件的权限,一般权限为644。

    ls -l /var/www/html/
  2. 检查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 拒绝访问。

  3. 检查网站首页文件是否存在。

      • CentOS/Alinux系统:

        • 查看配置文件httpd.conf 中 DirectoryIndex 配置的默认首页,默认首页一般为 index.html 或者index.php。

      • Ubuntu系统:

        • 查看配置文件 /etc/apache2/mods-enabled/dir.conf 中 DirectoryIndex 配置的默认首页。

Apache网站访问404错误

  1. 检查Apache配置文件中vhosts部分站点目录配置是否正确,域名绑定是否正确。

      • CentOS/Alinux系统默认配置文件:

        • /etc/httpd/conf/httpd.conf

        • /etc/httpd/conf.d/

      • Ubuntu系统默认配置文件:

        • /etc/apache2/apache2.conf

        • /etc/apache2/sites-enabled/

  2. 检查网站目录中的程序文件是否存在。

      • 配置文件中 DocumentRoot 设置的站点目录。

      • 如果使用vhosts配置多个站点,查看vhosts站点对应的 DocumentRoot 站点目录。

Apache网站访问5xx错误

  1. 查看Apache的错误日志,根据错误信息分析排查。

    执行命令查看错误日志。

    less /var/log/httpd/error_log #CentOS/Alinux系统
    less /var/log/apache2/error.log #Ubuntu系统
  2. 检查伪静态配置文件 .htaccess 的配置是否正确。

  3. 检查网站目录的权限是否正常,一般权限为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/

  4. 开启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系统