配置web服務器
一.Web服務器簡介:
5.Apache的性能:web服務器的功能和運行性能是最重要的因素.Apache的衆多特性保證了它可以高效而且穩定的運行
DOS,動態共享對象,允許運行時動態裝載模塊、採用預生成技術提高響應速度、運行在幾乎所有的計算機平臺、支持最新的HTTP1.1協議、簡單而強有力的基於文件的配置、支持虛擬主機、支持HTTP認證、集成了代理服務器、且有可定製的服務器日誌、支持安全Socket層(SSL)、用戶會話過程的跟蹤能力、支持通用網關接口CGI、集成Perl腳本編程語言、支持服務器端包含命令(SSI)、支持FastCGI、支持PHP、支持Java Servlets、支持第三方軟件開發商提供的大量功能模塊
6.Apache的三種運行方式:Multi-processing modules
預派生(Profork):首先啓動一個父進程,然後創建並啓動一定數量的子進程監聽客戶的請求,父進程始終監控子進程,啓動時自動生成8個子進程,最小空閒進程5
工作者(Worker MPM):此模塊是混合使用進和線程的運行模型,首先啓動一個父進程,然後創建並啓動一定數量的子進程 ,每個子進程都創建 並啓動相同數量的線程,由線程監聽客戶的請求,父進程始終監控子進程,當沒有足夠的空閒線程爲客戶服務時,父進程就會創建並運行新的子進程
獨立子進程(Perchild):混合使用進程和線程的運行模式,每個子進程都可以創建指定數量的線程,當服務器上負載增加後,Apache不會創建新的子進程,而是在當前的子進程之一上創建新的線程爲客戶提供服務,具有高擴展性,低可靠性
二.Apache2.0的模塊:仍舊使用模塊的方式運行,Apache由內核、標準模塊和第三方提供的模塊3個層次組成
三.Apache的安裝和啓動:
1.Apache的安裝
2.啓動Apache
#service httpd restart
#pstree|grep httpd
#apachect1 configtest|httpd -t檢測配置文件語法的正確性
#service httpd status
#ntsysv
#apachect configtest|httpd -t檢查配置文件語法的正確性
#apachectl -v查看編譯配置參數
#apachectl -l查看已經被編譯的模塊
mod_so.c表示當前的Apache支持Dynamic Shared Objects(DSO),即用戶可以在不重新編譯Apache的情況下使用Apache eXenSion編譯的第三方模塊
prefork.c表示Red Hat發佈的Apache是使用預派生MPM模式運行的
3.Apache的基本配置
KeepAlive on使用保連接的功能,即一次請求連接能響應多個文件
MaxClients 150限制同一時間的連接數不能超過150
ServerAdmin root@localhost設置Apache服務器管理員的E-mail地址
ServerName [url]www.abc.com:80[/url]當Apache服務器需要指向本身的連接時使用
DirectoryIndex index.html index.html.var當訪問服務器時依次查找頁面index.html、index.html.var
IndexOptions 可以在此指令後添加FolderFirst表示讓目錄列有前面
4.分割配置任務
使用Inclde指令:例如可以將所與虛擬主機配置相關的配置單獨存成一個配置文件,然後在主配置文件中將其包含進來
使用.htaccess文件:用於改變主配置文件中的配置,只能設置對目錄的訪問控制,它可以覆蓋主配置文件中的配置,而Include只是簡單的包含
(1).何時使用.htaccess不重新啓動服務器的情況下改變服務器配置
(2).步驟:
首先在主配置文件中啓用並控制對.htaccess文件的使用
然後在需要蓋主配置文件的目錄下生成.htaccess文件
(3).啓用並控制使用.htaccess文件
設置文件名稱
AcessFileName .htaccess
<Files ~".\.htaccess">
Order allow,deny
Deny from all
</files>
例1 .htaccess文件的訪問控制
#cd /var/www/html #mkdir private #cd private #touch test
修改主配置文件#vi /etc/httpd/conf/httpd.conf <Directory "/var/www/html/private">AllowOverride Options</Directory>
#service httpd restart
#vi /var/www/html/private/.htaccess 添加Options -Indexes
例2配置每個用戶的Web站點
配置每個用戶的Web站點的意圖是使在安裝了Apache的本地計算機上,擁有用戶帳號的每個用戶都能夠架設自己單獨的Web站點
步驟:
修改主配置文件啓用每個用戶的Web站點配置
修改主配置文件爲每個用戶的Web站點目錄配置訪問控制
vi /etc/httpd/conf/httpd.conf
<IFModule mod_userdir.c>
UserDir disable root
UserDir public_html
</IfModule>
<Directory /home/*/public_html>
AllowOverride FileInfo Authconfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
#su user1
#cd
#mkdir public_html
#chmod 711 /home/user1
創建Index.html的內容
訪問自己的主頁
[url]http://IP[/url]地址或FQDN/~用戶名
例3配置虛擬主機
在一臺WEB服務器上,可以爲多個單獨域名提供Web服務,對於ISP的意義重大,因爲使用獨立的域名和根網址更爲正式,易爲衆人接受.
基於IP地址的虛擬主機:使用相同的IP地址,不同的端品號。不同的IP地址,相同的端口號
基於名字的虛擬主機:不同的主機頭,一個IP地址映射多個域名。
配置不同IP地址的虛擬主機:
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
#/etc/rc.d/init.d/network restart
#cd /etc/httpd
#vi vhost-conf.d/ip-vhost34.conf
<VirtualHost 192.168.1.57:80>
ServerAdmin [email][email protected][/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com:80
</VirtualHost>
<VirtualHost 192.168.1.57:80>
ServerAdmin [email][email protected][/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com:80
</VirtualHost>
創建默認文檔
#echo "Include vhost-conf.d/*.conf">>conf/httpd.conf
#vi /etc/httpd/conf/httpd.conf
<Virtualhost 192.168.1.57:80>
Server Admin [email][email protected][/email]
DocumentRoot /var/www/html
DirectoryIndex index.html
ServerName 192.168.1.57
</VirtualHost>
<VirtualHost 192.168.1.77:80>
Server Admin [email][email protected][/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName 192.168.1.77
</VirtualHost>
例4:配置基於端口的虛擬主機,即相同IP地址不同端口號的虛擬主機
#vi vhost-conf.d/ip-vhost12.conf
listen 8080
listen 6666
<Virtualhost 192.168.1.57:8080>
ServerAdmin [email][email protected][/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName rhl9.abc.com:8080
</VirtualHost>
<VirtualHost 192.168.1.57:6666>
ServerAdmin [email][email protected][/email]
DocumentRoot /var/www/www2
DirectoryIndex index.html
ServerName rhl9.abc.com:6666
</VirtualHost>
創建默認文檔
#echo "Include vhost-conf.d/*.conf">>conf/httpd.conf
例5:配置基於主機頭的虛擬主機
配置DNS,編輯正向解析數據庫文件
www1 IN A 192.168.1.57
www2 IN A 192.168.1.57
#vi vhost-conf.d/n-vhost.conf
NameVirtualHost 192.168.1.57
<Virtualhost 192.168.1.57:80>
ServerAdmin [email][email protected][/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com
</VirtualHost>
<VirtualHost 192.168.1.57:80>
ServerAdmin [email][email protected][/email]
DocumentRoot /var/www/www2
DirectoryIndex index.html
ServerName www2.abc.com
</VirtualHost>
創建默認文檔
#echo "Incaf.d/*.conf">>conf/httpd.conf
例6:訪問控制
訪問控制指令
Order deny,allow用於指定執行允許訪問規則和執行拒絕訪問的先後順序
Deny all表示所有客戶|abc.com域名錶示域內的所有客戶|IP地址,可以指定完整的IP地址或部分IP地址|192.168.1.0/255.255.255.0|192.168.1.0/24定義拒絕訪問列表
Allow定義允許訪問列表
<Directory /var/www/html/private>
Order deny,allow
deny from all
allow from 192.168.1.57
</Directory>
例7:認證和授權.兩種認證類,基本認證Basic和摘要Digest認證,摘要認證比基本認證更加安全,認證指令既可以出現在主配置文件的Directory容器中,也可以出現在./htaccess文件中
授權,爲指定用戶或組進行授權,授權指令爲Require
#vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/private">
AllowOverride None不使用.htaccess文件
AuthType Basic指定基本認證方式
AuthName "abc.com"指定認證領域名稱
AuthUserFile /var/www/passwd/abc.com指定認證口令的存放位置
require valid-user
</Directory>
創建認證口令文件,並添加兩個用戶
#cd /var/www/passwd
#htpasswd -c jamond osmond
#chown apache.apache jamond由於Apache的子進程以apache用戶運行
#service httpd restart