apache是典型優秀的Web服務器,可以運行在linux,unix,windows等環境。其具有開源,跨平臺,支持各種語言,模塊化設置,穩定與安全等特點。
以紅冒企業版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查看結果。
優化執行路徑
ln -s /usr/local/httpd/bin/* /usr/local/bin/
啓動服務
/usr/local/httpd/bin/apachectl start
netstat -anpt | grep httpd
配置並啓動httpd服務。
網站根目錄位於/usr/local/httpd/htdocs中,需要將Web的網頁複製到該目錄中。例如打開默認的測試頁面:
日誌文件位於/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 allow,deny
#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
測試爲拒絕訪問!!
構建虛擬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.1:80
虛擬主機區域,例如<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
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,基於端口的虛擬主機
這種虛擬主機,一般需要指定端口纔可以訪問。一般訪問網頁默認都是80(http)或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
重啓服務
則可以看到結果。