天天看點

邁向 RHCE 之路 (Day26) - Apache 網頁伺服器

本篇將在 selinux 安全機制及 iptables 防火牆開啟的環境下實作,分別實作簡單網頁服務及虛擬主機 virtual host

設定,最後則是實作網頁中需要保護網頁時可以透過 .htaccess 機制進行保護,關於 apache

網頁伺服器內容及更詳細設定參數可以參考官方檔案 。以下為 apache 網頁伺服器實作環境:(若執行

semanage 指令發現系統中沒有此一指令請安裝 policycoreutils-python 套件即可(yum -y install

policycoreutils-python)。

* os: centos 6.0 (32

bit)

* apache 套件資訊:

httpd-2.2.15-5.el6.centos.i686

* apache 設定檔:

/etc/httpd/conf/httpd.conf

* iptables 防火牆: tcp 協定 port

80

* selinux 權限: httpd_sys_content_t

* apache

根目錄預設路徑: /var/www/html

* apache 根目錄變更後路徑:

/home/web

----- 安裝 apache 網頁伺服器套件 -----

請使用 yum 指令搭配

apache 套件名稱 httpd 即可進行套件安裝。

#yum -y install httpd              //安裝 apache 套件  

#rpm -qa httpd                     //查詢 apache 套件版本  

 httpd-2.2.15-5.el6.centos.i686  

#rpm -qc httpd | grep httpd.conf$  //查詢 apache 設定檔路徑  

 /etc/httpd/conf/httpd.conf  

----- 設定 iptables 防火牆規則 -----

apache

網頁服務屆時啟動會 listen tcp 協定 port

80(http)、443(https),是以必須修改 iptables 防火牆規則以便網頁服務啟動後可進行測試,請修改

iptables 防火牆規則設定檔「/etc/sysconfig/iptables」加上允許 tcp

port 80、443 規則,修改防火牆規則後請使用指令「service iptables

restart」重新啟動防火牆服務,以便防火牆規則套用生效,並且使用「service

iptables status」指令確定目前防火牆規則是否允許 tcp port 80。

#vi /etc/sysconfig/iptables         //修改防火牆規則(加入如下二行)  

 -a input -m state --state new -m tcp -p tcp --dport 80 -j accept  

 -a input -m state --state new -m tcp -p tcp --dport 443 -j accept  

#service iptables restart           //重新啟動防火牆服務  

#service iptables status | grep -e ‘80|443‘    //檢視防火牆規則是否套用生效  

 5    accept  tcp  --  0.0.0.0/0  0.0.0.0/0   state new tcp dpt:80  

 6    accept  tcp  --  0.0.0.0/0  0.0.0.0/0   state new tcp dpt:443  

#chkconfig httpd on                 //開機自動啟動 apache 服務  

----- 修改 apache 設定檔 -----

修改 apache

設定檔「/etc/httpd/conf/httpd.conf」,主要為修改網頁根目錄「documentroot」設定,將根目錄路徑由預設「/var/www/html」修改至「/home/web」 掛載點,下列僅列出

apache 設定檔中需要修改的地方其預設值及修改後內容。

#cd /etc/httpd/conf               //切換至 apache 設定檔資料夾  

#cp httpd.conf httpd.conf.bak     //備份 apache 設定檔  

#vi httpd.conf                    //修改 apache 設定檔  

 documentroot "/var/www/html"     //預設值,網頁根目錄  

 documentroot "/home/web"         //修改後  

 <directory "/var/www/html">      //預設值,網頁根目錄設定  

 <directory "/home/web">          //修改後  

接著建立屆時 apache

網頁伺服器測試首頁「/home/web/index.html」,利用「echo」指令將字串「apache work!!」送入測試首頁檔案內

#echo ‘apache work!!‘ > /home/web/index.html  

----- 修改 selinux 設定值 -----

修改 selinux

安全機制設定值,因為將 apahe

網頁伺服器網頁根目錄由 「/var/www/html」 修改至 「/home/web」,是以資料夾其

selinux 安全機制的權限勢必與原來不同,若不修改屆時啟動 apache 服務時便可能會因為 selinux 權限問題造成無法啟動 apache

服務的狀況。

#ls -dz /var/www/html /home/web  

 drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/web  

 drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html  

接著透過「semanage fcontext -a -t」指令配合 selinux

權限「httpd_sys_content_t」,指定「/home/web」資料夾及所有子資料夾及檔案都設定此權限為「selinux預設權限」,之後使用「restorecon

-rv」指令把 /home/web 資料夾還原至剛才設定的 selinux 預設權限,完成套用權限動作後再次檢視二個資料夾 selinux

權限便一模一樣。

#semanage fcontext -a -t httpd_sys_content_t "/home/web(/.*)?"  //設定 selinux 預設權限  

#restorecon -rv /home/web          //還原 selinux 權限         

#ls -dz /var/www/html /home/web    //檢視資料夾 selinux 權限  

 drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /home/web  

----- 啟動 apache 服務 -----

安全機制權限設定後,可以放心啟動 apache 網頁服務,請使用指令「service httpd start」啟動 apache

服務,並且於服務啟動後使用「netstat」指令檢視系統是否開啟了 tcp port 80,以及「ps」指令檢視 apache

執行序(httpd)是否運作。

#service httpd start        //啟動 apache 服務  

 starting httpd:                                            [  ok  ]  

#netstat -tunpl | grep :80  //檢視是否開啟 port 80  

 tcp  0  0 :::80  :::*    listen     904/httpd  

#ps aux |grep httpd         //檢視 httpd 執行序  

 apache     906  0.0  0.2  12680  2132 ?        s    15:58   0:00 /usr/sbin/httpd  

 apache     907  0.0  0.2  12680  2132 ?        s    15:58   0:00 /usr/sbin/httpd  

 ...略...  

啟動 apache 網頁服務成功後,開啟瀏覽器測試 apache

網頁服務是否真的運作以及看到剛才建立的測試首頁。

邁向 RHCE 之路 (Day26) - Apache 網頁伺服器

-----

虛擬主機 virtual host 設定 -----

簡單說虛擬主機 virtual host 為讓 apache

網頁伺服器可以同時運作多個網站的機制,若伺服器隻有一個 ip 位址即可依靠 dns 名稱解析機制來達成,請注意!! 當設定 virtual host

之後原本的設定將被覆蓋。

#vi /etc/httpd/conf/httpd.conf   //修改設定檔內容如下  

 <virtualhost 10.10.25.115:80>  

    serveradmin [email protected]  

    documentroot /home/web/colo-a  

    servername colo-a.weithenn.org  

    errorlog logs/colo-a.weithenn.org-error_log  

    customlog logs/colo-a.weithenn.org-access_log common  

 </virtualhost>  

#mkdir /home/web/colo-a          //建立 virtual host 資料夾  

#echo ‘colocation-a work!!‘ > /home/web/colo-a/index.html  //建立測試首頁  

#service httpd reload            //重新載入 apache 服務(套用生效)  

 reloading httpd:  

重新載入 apache 網頁服務成功後,測試是否可以看到測試首頁。

邁向 RHCE 之路 (Day26) - Apache 網頁伺服器

設定 apache 支援 .htaccess 保護功能 -----

當您網站上有某些網頁不想讓人可以隨便瀏覽

(例如:管理介面、程式後台.....),此時可利用 apache 內的 .htaccess 功能來替網頁進行管制保護,以下為利用 .htaccess

來保護指定網頁其設定注意事項:

* allowoverride authconfig:

使用 帳號/密碼 進行管制保護

*

allowoverride limit: 使用 管制來源

ip 進行管制保護

* allowoverride

none: .htaccess 功能失效

#vi /etc/httpd/conf/httpd.conf //修改設定檔內容  

 allowoverride none             //預設值  

 allowoverride authconfig       //修改後  

#mkdir /home/web/colo-a/admin   //建立後台資料夾  

#echo ‘web site admin page!!‘ > /home/web/colo-a/admin/index.html   //建立測試首頁  

#vi /home/web/colo-a/admin/.htaccess  //修改 .htaccess 檔案內容如下  

authtype basic  

authname "admin page login"  

authuserfile /home/web/colo-a/admin/.htpasswd  

require valid-user  

#htpasswd -mc /home/web/admin/.htpasswd weithenn  //第二筆帳號使用 -m 即可  

 new password:             //輸入登入密碼  

 re-type new password:     //再次輸入密碼以確認  

 adding password for user weithenn  

#chgrp apache home/web/colo-a/admin/.htpasswd     //設定檔案權限  

#chmod 640 /home/web/colo-a/admin/.htpasswd       //設定檔案權限  

#service httpd reload                             //重新載入服務套用生效  

設定完成後若成功運作則要瀏覽 admin

資料夾時便會彈跳出使用者帳號密碼驗證視窗,通過驗證即可看到網頁內容。

邁向 RHCE 之路 (Day26) - Apache 網頁伺服器
邁向 RHCE 之路 (Day26) - Apache 網頁伺服器

http://ithelp.ithome.com.tw/question/10080681