【故障分析】apache啟動失敗
客戶的一臺web服務(wù)器,是基于Apache+JK+Tomcat構(gòu)建的一個電商平臺,在機(jī)器更換硬件重新啟動后,客戶反映apache啟動失敗,但是tomcat可以啟動,啟動Apache的錯誤信息如下。
于是又檢查了操作用戶和Apache監(jiān)聽的端口,如下圖。
從輸出可知,Apache的啟動用戶是www,監(jiān)聽端口為80,接著查看到/usr/local/apache2/目錄所有文件和目錄的權(quán)限都是www,看來不是讀寫權(quán)限的問題,于是繼續(xù)排查,這里更換了Apache的監(jiān)聽端口,將其改為8000,看是否能啟動成功,如下圖。
雖然這次啟動沒報錯,但是根據(jù)httpd進(jìn)程的狀態(tài)來看,啟動應(yīng)該還有問題,于是查看Apache啟動日志,如下圖。
從日志輸出看,果然存在問題,通過存在問題,通過日志基本判斷是Apache的pid文件無權(quán)限導(dǎo)致的。接著檢查httpd.pid文件的選項,操作如下:
[root@cloud1 logs]# ll/usr/local/apache2/logs/httpd.pid
-rw-r--r-- 1 root www 6 Sep 16 17:33
/usr/local/apache2/logs/httpd.pid
從輸出可知,httpd.pid權(quán)限的屬主為root,將其修改為www用戶,操作如下:
[root@cloud1 logs]# chown www/usr/local/apache2/logs/httpd.pid
然后,重慶Apache2,如下圖。
可以看到,這次Apahce啟動成功了,看來Apache配置并無問題,通過8000端口可以啟動,而通過80端口則無法啟動,這是什么問題呢?
1、解決思路
既然這個案例是與端口相關(guān)的,那么久需要了解下Linux系統(tǒng)中的端口,在Linux系統(tǒng)下可用的端口范圍是1-65535,端口可分為三類,分別是公認(rèn)端口、注冊端口和動態(tài)端口。
用戶www無法啟動Apache的80端口,是因為80端口屬于公認(rèn)端口,普通公認(rèn)端口,普通用戶無權(quán)綁定,而8000端口屬于注冊端口,普通用戶可以自由使用,這是此案例要查找的原因。
2、解決問題
如何使用Apache的80端口呢,這里提供兩種方法,分別是:
1)將Apache以root用戶啟動即可,這是最簡單的方法。
2)修改Apache目錄下httpd文件的SUID屬性。
種方法實現(xiàn)簡單,但是有安全問題,如果黑客入侵了80端口,那么他也擁有了root權(quán)限,因此,不推薦使用種方法,因為保證程序的安全才是根本。這里簡單介紹下第二種方法的實現(xiàn)過程。首先通過root用戶進(jìn)行如下授權(quán),如下圖。
然后再www用戶下再次啟動Apache,可以看到這次啟動正常了,如下圖。
從這個輸出可以看出,其實Apache還是在root用戶下啟動的,上面的修改只不過是保證普通用戶可以正常啟動Apache而已,另外,啟動的httpd進(jìn)程對應(yīng)的用戶除了root,還有www用戶,這其實是一種父進(jìn)程和子進(jìn)程的關(guān)系,父進(jìn)程由root用戶啟動后,會派生出多個子進(jìn)程,而這些子進(jìn)程的啟動用戶是可定義的,可以在配置文件httpd.conf的如下選項中修改:
User www
Group www
至此,這個案例被完整剖析!
本文標(biāo)題:【故障分析】apache啟動失敗
標(biāo)題路徑:http://jinyejixie.com/news/105384.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、搜索引擎優(yōu)化、Google、網(wǎng)站排名、小程序開發(fā)、移動網(wǎng)站建設(shè)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)