Apache網(wǎng)站常見問題排查
概述
本文主要介紹使用阿里云ECS實例搭建Apache網(wǎng)站時,遇到的一些常見問題的處理方法。
詳細信息
阿里云提醒您:
如果您對實例或數(shù)據(jù)有修改、變更等風險操作,務(wù)必注意實例的容災(zāi)、容錯能力,確保數(shù)據(jù)安全。
如果您對實例(包括但不限于ECS、RDS)等進行配置與數(shù)據(jù)修改,建議提前創(chuàng)建快照或開啟RDS日志備份等功能。
如果您在阿里云平臺授權(quán)或者提交過登錄賬號、密碼等安全信息,建議您及時修改。
請根據(jù)現(xiàn)場實際情況,選擇以下對應(yīng)的解決方案。
Apache網(wǎng)站無法打開
檢查Apache是否正常啟動
登錄服務(wù)器里執(zhí)行命令,查看網(wǎng)站80、443端口是否監(jiān)聽啟動。
netstat -nltp |grep -E '80|443'
執(zhí)行命令,查看Apache進程是否運行。
ps aux |grep httpd #CentOS/Alinux系統(tǒng)里進程名是httpd
ps aux |grep apache #Ubuntu系統(tǒng)里進程名是apache2
啟動Apache 服務(wù)
如果Apache沒有啟動,執(zhí)行命令啟動Apache。
systemctl start httpd #CentOS/Alinux系統(tǒng)
systemctl start apache2 #Ubuntu系統(tǒng)
檢查安全組和防火墻規(guī)則
ECS控制臺檢查安全組規(guī)則是否放行了80、443端口訪問。
登錄ECS管理控制臺。
在左側(cè)導(dǎo)航欄,單擊實例與鏡像 > 實例。
在實例列表中找到對應(yīng)ECS實例,點擊ECS實例名稱進入到實例管理頁面。
在安全組選項中,查看入方向安全規(guī)則。
在服務(wù)器里執(zhí)行命令,查看是否設(shè)置iptables 防火墻規(guī)則。
iptables -nL
Apache網(wǎng)站訪問4xx/5xx錯誤
Apache網(wǎng)站訪問403錯誤
檢查網(wǎng)站目錄的文件權(quán)限,Apache是否有權(quán)限讀寫網(wǎng)站文件。
站點目錄默認為/var/www/html/ 。
執(zhí)行命令查看站點目錄/var/www/html/ 的權(quán)限,一般權(quán)限為755。
stat /var/www/html/
執(zhí)行命令,查看站點目錄里邊網(wǎng)站文件的權(quán)限,一般權(quán)限為644。
ls -l /var/www/html/
檢查Apache配置文件,查看站點目錄是否設(shè)置了拒絕訪問。
CentOS/Alinux系統(tǒng)默認配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
Ubuntu系統(tǒng)默認配置文件:
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/
查看配置文件中<Directory> 部分的配置,是否配置了 Deny from all 拒絕訪問。
檢查網(wǎng)站首頁文件是否存在。
CentOS/Alinux系統(tǒng):
查看配置文件httpd.conf 中 DirectoryIndex 配置的默認首頁,默認首頁一般為 index.html 或者index.php。
Ubuntu系統(tǒng):
查看配置文件 /etc/apache2/mods-enabled/dir.conf 中 DirectoryIndex 配置的默認首頁。
Apache網(wǎng)站訪問404錯誤
檢查Apache配置文件中vhosts部分站點目錄配置是否正確,域名綁定是否正確。
CentOS/Alinux系統(tǒng)默認配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
Ubuntu系統(tǒng)默認配置文件:
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/
檢查網(wǎng)站目錄中的程序文件是否存在。
配置文件中 DocumentRoot 設(shè)置的站點目錄。
如果使用vhosts配置多個站點,查看vhosts站點對應(yīng)的 DocumentRoot 站點目錄。
Apache網(wǎng)站訪問5xx錯誤
查看Apache的錯誤日志,根據(jù)錯誤信息分析排查。
執(zhí)行命令查看錯誤日志。
less /var/log/httpd/error_log #CentOS/Alinux系統(tǒng) less /var/log/apache2/error.log #Ubuntu系統(tǒng)
檢查偽靜態(tài)配置文件 .htaccess 的配置是否正確。
檢查網(wǎng)站目錄的權(quán)限是否正常,一般權(quán)限為755。
站點目錄默認為/var/www/html/ 。
執(zhí)行命令查看站點目錄/var/www/html/ 的權(quán)限。
stat /var/www/html/
用戶實際站點目錄,可以查看配置文件中虛擬站點VirtualHost的DocumentRoot配置。
CentOS/Alinux系統(tǒng)默認配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
Ubuntu系統(tǒng)默認配置文件:
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/
開啟php的詳細錯誤日志,查看php程序錯誤信息。
修改 php.ini 配置文件,添加如下配置開啟詳細日志輸出。
display_errors = Off error_reporting = E_ALL | E_STRICT
執(zhí)行命令重啟Apache,然后訪問php頁面查看錯誤。
systemctl restart httpd #CentOS/Alinux系統(tǒng) systemctl restart apache2 #Ubuntu系統(tǒng)
Apache網(wǎng)站訪問卡慢排查
檢查服務(wù)器性能
主要檢查公網(wǎng)帶寬、CPU使用率,磁盤IOPS性能。
查看Apache錯誤日志,是否有錯誤信息
執(zhí)行命令查看Apache錯誤日志。
less /var/log/httpd/error_log #CentOS/Alinux系統(tǒng)
less /var/log/apache2/error.log #Ubuntu系統(tǒng)
查看Apache的httpd進程數(shù)量,是否達到了設(shè)置的最大值進程數(shù)
執(zhí)行命令統(tǒng)計httpd進程數(shù)量。
ps aux |grep httpd |wc -l #CentOS/Alinux系統(tǒng)
ps aux |grep apache2 |wc -l #Ubuntu系統(tǒng)
Apache調(diào)優(yōu),3種工作模式,prefork\worker\event,參考Apache官方文檔說明:
查看Apache工作模式。 CentOS/Alinux系統(tǒng)使用命令:
httpd -V
Ubuntu系統(tǒng)使用命令:
a2query -M
[root@localhost]# httpd -V #CentOS/Alinux系統(tǒng)
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系統(tǒng)
prefork
Apache\PHP\MySQL運行異常修復(fù)
Apache運行異常檢查方法
重啟Apache服務(wù)。
systemctl restart httpd #CentOS/Alinux系統(tǒng)
systemctl restart apache2 #Ubuntu系統(tǒng)
查看Apache錯誤日志,根據(jù)錯誤日志分析。
執(zhí)行命令,查看Apache錯誤日志。
less /var/log/httpd/error_log #CentOS/Alinux系統(tǒng)
less /var/log/apache2/error.log #Ubuntu系統(tǒng)
PHP運行異常檢查方法
1. 開啟php詳細錯誤信息。
修改php.ini 配置文件,添加如下配置開啟詳細日志輸出。
display_errors = Off
error_reporting = E_ALL | E_STRICT
執(zhí)行命令重啟Apache。
systemctl restart httpd #CentOS/Alinux系統(tǒng)
systemctl restart apache2 #Ubuntu系統(tǒng)
2. 訪問php頁面,根據(jù)詳細php錯誤信息分析排查。
MySQL運行異常檢查方法
查看MySQL日志,根據(jù)錯誤日志分析。
執(zhí)行命令查看MySQL日志。
less /var/log/mysqld.log #CentOS/Alinux系統(tǒng)
less /var/log/mysql/error.log #Ubuntu系統(tǒng)