配置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]webmaster1@abc.com[/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com:80
</VirtualHost>
<VirtualHost 192.168.1.57:80>
ServerAdmin [email]webmaster1@abc.com[/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]netmask@abc.com[/email]
DocumentRoot /var/www/html
DirectoryIndex index.html
ServerName 192.168.1.57
</VirtualHost>
<VirtualHost 192.168.1.77:80>
Server Admin [email]netmask@abc.com[/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]webmaster@abc.com[/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName rhl9.abc.com:8080
</VirtualHost>
<VirtualHost 192.168.1.57:6666>
ServerAdmin [email]webmaster@abc.com[/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,
編輯正向解析數據庫文件
www
1 IN
A 192.168.1.57
www
2 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]webmaster@abc.com[/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com
</VirtualHost>
<VirtualHost 192.168.1.57:80>
ServerAdmin [email]webmaster@abc.com[/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