apache服務與虛擬主機

    apache是典型優秀的Web服務器,可以運行在linuxunixwindows等環境。其具有開源,跨平臺,支持各種語言,模塊化設置,穩定與安全等特點。

    以紅冒企業版RHEL5爲例,搭建與配置apache服務。

    配置好IP,網關,掩碼等基本信息。

    爲了避免端口和程序發生衝突,刪除以RPM包安裝的相關軟件。可根據實際情況刪除。

rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common mysql dovecot --nodeps

    在刪除過程中,如果出現error: package mysql is not installed報錯,則在命令上將這個選項去掉再刪即可。

    將httpd解壓到/usr/src目錄下,並進入其目錄。

tar zxf httpd-2.2.17.tar.gz -C /usr/src/

cd /usr/src/httpd-2.2.17/

    開始編譯安裝。指定安裝在/usr/local/httpd目錄下,啓用動態加載模塊,啓用網頁地址重寫,啓用字符集支持,啓用CGI腳本程序支持。

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi && make && make install

安裝完成後,可以通過ls /usr/local/httpd查看結果。

wKioL1SyaI3D1cTGAABQH8fE7TU266.jpg

優化執行路徑

ln -s /usr/local/httpd/bin/* /usr/local/bin/

啓動服務

/usr/local/httpd/bin/apachectl start

netstat -anpt | grep httpd

wKiom1SyZ8bi-sMhAAA3fm32p10125.jpg

配置並啓動httpd服務。

網站根目錄位於/usr/local/httpd/htdocs中,需要將Web的網頁複製到該目錄中。例如打開默認的測試頁面:

wKioL1SyaI6jsX8DAABzrlq9484441.jpg

    日誌文件位於/usr/local/httpd/log目錄下,有access_log和error_log

    httpd.conf配置文件,位於/usr/local/httpd/conf/httpd.conf

vim /usr/local/httpd/conf/httpd.conf

 

    一些常用到的配置項:

ServerRoot "/usr/local/httpd"     //服務器的根目錄

Listen 80//監聽端口

DocumentRoot "/usr/local/httpd/htdocs"    //網頁存放位置

DirectoryIndex index.html            //默認索引頁,可以多個,以空格分開。

//區域配置項:僅針對該區域有效,不干涉全局。

<Directory />//可以是<Directory /var/wwwroot/>

    Options FollowSymLinks        //控制選項,允許使用符號鏈接

    AllowOverride None                //不允許隱含控制文件中的覆蓋配置

    Order deny,allow                    //訪問控制策略的應用順序

    Deny from all                        //禁止任何人訪問該區域

</Directory>                            //該區域結束

    通常情況下Web對所有的客戶端都開放,所以應該使用Allow from all 允許所有人訪問策略。但有時某些區域只拒絕/允許一部分主機訪問,例如後臺或者AWStats系統等。例如修改爲:

<Directory “/usr/local/httpd/htdocs/test”>

    ......

    Order deny,allow

    Deny from all              //拒絕訪問的主機,例如所有all,可以使網段和一個ip

   #Order allowdeny

   #Allow from all              //允許訪問的主機,例如所有all

</Directory>

保存退出,編輯/usr/local/httpd/htdocs/test/test.html

cat >>/usr/local/httpd/htdocs/test/test.html<<end

<h1>test</h1>

end

重啓服務

/usr/local/httpd/bin/apachectl stop

/usr/local/httpd/bin/apachectl start

測試爲拒絕訪問!!

wKiom1SyZ8fgwymeAACjaM9V3fE684.jpg

    構建虛擬WEB主機,基於域名,基於IP,基於端口。

    在此測試前,應該搭建好DNS服務器。略

    創建兩個不同網站,用作測試。

mkdir /var/www/html/testcom

mkdir /var/www/html/webcom

echo "<h1>www.test.com</h1>" > /var/www/html/testcom/index.html

echo "<h1>www.web.com</h1>" > /var/www/html/webcom/index.html

方法一:三種虛擬主機都可以直接在httpd配置文件上修改,

修改監聽地址,例如211.1.1.180

虛擬主機區域,例如<VirtualHost 監聽地址>......</VirtualHost>

目錄權限等,例如<Directory 目錄位置>......</Directory>

方法二:直接修改比較少,這樣會改動太多主配置文件,通常是用獨立配置文件來配置虛擬主機,,然後在httpd.conf文件通過lnclude加載這些配置。這有利於減少httpd.conf文件的改動。

1,基於域名虛擬主機:

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 

NameVirtualHost 192.168.78.129:80

<Directory "/var/www/html">        //區域配置文件目錄

    Order allow,deny//允許所有人訪問

    Allow from all

</Directory>

<VirtualHost 192.168.78.129:80>        //虛擬主機的IP地址

    DocumentRoot "/var/www/html/testcom"    //網站地址

    ServerName www.test.com            //服務名稱

    ErrorLog "logs/dummy-host.example.com-error_log"

    CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

 

<VirtualHost 192.168.78.129:80>

    DocumentRoot "/var/www/html/webcom"

    ServerName www.web.com

    ErrorLog "logs/dummy-host2.example.com-error_log"

    CustomLog "logs/dummy-host2.example.com-access_log" common

</VirtualHost>

保存退出。

修改主配置文件,添加獨立配置文件

vim /usr/local/httpd/conf/httpd.conf

....//

Include conf/extra/httpd-vhosts.conf

保存退出,並重啓httpd服務。

/usr/local/httpd/bin/apachectl restart

wKioL1SyaI_hUodZAAEKde5ifSw029.jpg

2,基於IP地址的虛擬主機

PS:實驗可以使用同一網段,減少DNS配置和網段調整等工作。添加多一張虛擬網卡或編輯虛擬網卡di地址:ifconfig eth0:0 192.168.78.130/24

同樣使用獨立配置文件的方法。

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 

<Directory "/var/www/html">            //區域配置文件目錄

    Order allow,deny                         //允許所有人訪問

    Allow from all

</Directory>

<VirtualHost 192.168.78.129:80>                    //虛擬主機的IP地址

    DocumentRoot "/var/www/html/testcom"    //網站目錄

    ServerName www.test.com                       //服務名稱

    ErrorLog "logs/dummy-host.example.com-error_log"

    CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

 

<VirtualHost 192.168.78.130:80>

    DocumentRoot "/var/www/html/webcom"

    ServerName www.web.com

    ErrorLog "logs/dummy-host2.example.com-error_log"

    CustomLog "logs/dummy-host2.example.com-access_log" common

</VirtualHost>

保存退出,同樣需要在主配置文件加載配置文件

 

3,基於端口的虛擬主機

    這種虛擬主機,一般需要指定端口纔可以訪問。一般訪問網頁默認都是80http)443(https)。因此在配置虛擬主機時需要指定端口。

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 

<Directory "/var/www/html">        //區域配置文件目錄

    Order allow,deny                      //允許所有人訪問

    Allow from all

</Directory>

<VirtualHost 192.168.78.129:80>                    //虛擬主機的IP地址

    DocumentRoot "/var/www/html/testcom"    //網站目錄

    ServerName www.test.com                       //服務名稱

    ErrorLog "logs/dummy-host.example.com-error_log"

    CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

 

<VirtualHost 192.168.78.129:1234>                //虛擬主機的IP地址加端口!!

    DocumentRoot "/var/www/html/webcom"

    ServerName www.web.com

    ErrorLog "logs/dummy-host2.example.com-error_log"

    CustomLog "logs/dummy-host2.example.com-access_log" common

</VirtualHost>

保存退出,同樣需要在主配置文件上加載獨立配置文件。

主配置文件需要添加監聽端口!!

vim /usr/local/httpd/conf/httpd.conf 

Listen 1234

重啓服務

則可以看到結果。

wKiom1SyZ8iisGOqAADZOdzPMFM553.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章