1. 程式人生 > >記錄一次apache服務器啟動報錯和解決方法

記錄一次apache服務器啟動報錯和解決方法

受限 png www img oot 端口 使用 rwx 環境

問題描述:
在liunx系統上安裝軟件時需要較大的權限,一般用戶是不能隨便安裝的。為了省事,在安裝lamp環境時,整個過程都是以root身份安裝各種軟件的。
最後整個環境是安裝成功,但是像apache這樣的服務器如果以root用戶的身份運行存在較大的風險,對整個系統也存在較大的安全隱患。
所以決定添加一個系統用戶用來運行apache服務器,就給系統添加了一個名為www的用戶。

接著是修改apache的配置文件,將運行用戶改為www,如下圖所示

技術分享

接著將apache下的htdocs和logs目錄的屬主和屬組都改為了www,因為apache服務器在運行時會訪問htdocs和往logs目錄中寫入日誌記錄,所以就給了www用這兩個目錄的rwx權限,如下圖所示

技術分享

本以為做了以上配置和更改後,使用www用戶身份可以正常啟動apache服務器,沒想到還是報錯了,如下圖所示

技術分享

對於上面圖片出現的報錯的一些說明:
前面的兩行信息可以不用管,主要提示服務器沒有一個合格的域名,由於這是測試環境可以不管。通過第三行和第四行可以明顯的看到是權限的問題,大概意思就是服務器啟動時綁定80端口失敗,
開始一直找不到原因,以為是防火墻和selinux的問題,但是關掉防火墻和selinux後問題還沒有解決。後來網上找資料,看到以為網友的文章,他遇到的問題和我的類似,只不過他是通過一個普通用戶調用腳本
啟動httpd服務器,也是報類似的錯誤,文章中提到httpd的執行需要root權限,就是這句話啟發我了。因為不管是通過apachectl還是腳本去調用httpd啟動,最終都是都是要執行httpd這個可執行文件,所以
這時候就要看執行腳本或啟動apachectl的那個普通用戶對httpd這個文件有沒有執行權限。


所以就進入到/usr/local/apache2/bin/目錄下修改一下httpd的權限,執行命令
chmod u+s httpd

修改後文件權限如下圖所示

技術分享

這裏對圖片中權限位中擁有者的權限做一下說明,rws這是表示當一個沒有權限操作該文件的普通用戶(就像該實例中的www用戶)執行該文件或對文件做其他的受限制性操作時,身份會臨時切換為該文件的擁有者身份,
身份切換為擁有者身份後就想做什麽就做什麽,不受文件權限限制了,註意這個身份切換只是臨時的,只在該進程執行的過程中生效,一旦執行完腳本或進程結束,身份有切換為普通用戶了。

經過上面的權限修改後,www用戶就可以正常啟動apache服務器了。

記錄一次apache服務器啟動報錯和解決方法