Web:httpd有個功能模塊MPM(multi processing modules 多道處理模塊)
該模塊有兩種類型:
(1)thread 一個進程中包含多個線程;
(2)process
基於線程有兩種類型:
1、prefork類型:完全基於進程的方法來實現,每個用戶的會話需要一個獨立的進程響應。
工作模式:當web服務進來時,就會new一個httpd進程(如果有100個用戶請求就有100個進程響應), 由該進程產生一個父子進程,
2、worker類型:利用線程的能力來提供高併發的一種多通道處理模塊。
工作模式:而對於worker模式有可能啓動2個httpd進程,當一個用戶訪問時就在這兩個進程負載均衡 的分配,對以上prefork類型來講是父子進程,而對於worker來講有進程和線程。
一、實踐部分:
1、配置文件:/etc/httpd/
/etc/httpd/conf/http.conf
配置文件說明:parameter value
/etc/httpd/conf.d/*.conf
2、網頁文件
/var/www/html
二、軟件安裝:
#yum list all httpd*
httpd.i386 服務端包
httpd-devel.i386 開發包
httpd-manual.i386 手冊
1、#yum install httpd
注意:安裝完成後檢查IP和主機名稱是否正常解析,如果正常解析服務啓動應該就沒有問題。
在/etc/hosts配置文件裏添加:
IP地址(192.168.0.12) 解析名稱(www.bac.com) 別名(www)
#hostname www.bac.com
#vim /etc/sysconfig/network
$HOSTNAME=www.bac.com
最後驗證一下解析情況,ping www.bac.com,如果正常解析,接下來即可直接啓動服務。
2、、#ls /etc/init.d |grep httpd
所以直接可以用#service httpd start
#chkconfig httpd on 加入開機啓動項,即可以通過瀏覽器訪問主頁面;
如果不想訪問時看到默認主頁面,需#cd /etc/http/conf目錄下httpd.conf
以及#cd ../conf.d/目錄下welcome.conf
注意:
一旦修改配置文件需要service httpd reload一下。
3、網頁存放目錄:/var/www/html/
場景1:例如可否通過網卡多配置一個ip地址來訪問頁面
#ifconfig eth0:1 172.16.100.1/16 輸入該IP即可訪問;
#netstat -tnlp 驗證80端口是否開啓
#elinks 127.0.0.1 命令行模式下訪問
#grep Section !$
ab: apache benchmark
-c 模擬多少個客戶端用戶數訪問
-n 請求數。
例如:ab -c 100 -n 1000 http://192.168.0.151/index.html
在本機電腦輸入監控命令:watch -n.5'(刷新次數) ps aux|grep httpd 動態的監控
/etc/http/conf/httpd.conf配置文件詳解:
ServerRoot "/etc/httpd/" 根目錄存放。
PidFile: 服務器用於記錄啓動時進程ID的文件,所有的PID進程存放/var/run。
Timeout:定義tcp三次握手的時間,特定於http協議而言,用戶的請求發來了、也響應了;等待用戶再繼續發,此時tcp 還沒有端口,啥時候斷開呢?就是這個時間。
Keeplive:是否啓用保持連接。
Prefork MPM 多道處理模塊。
<LfModule Prefork.c> Start Servers 8 服務個數(命令 ps aux | grep httpd查看是有8個)
跟蹤一個進程方法:strace -p 12736 (這個是pid號)
MinSpareServers 5 最少空閒
MaxSpareServers 20 最大空閒
ServerLimit 256
MaxClients 256 允許最大併發個數;http是一種無狀態協議,用戶連接後就斷開,用戶同時連接進來的峯值
MaxRequestsPerChild 4000
<LfModule>
Worker MPM
<LfModule Prefork.c>
其他參數與上面相同的省略。。。
<LfModule>
Listen 80 監聽端口
Dcocument “/var/www/html”定義存放網頁的位置目錄
注意:如果修改該目錄爲/www,需要修改selinux設置,
方法:#setenforce 1
#chcon -R --reference=/var/www/html /www
#ll -dZ /www 查看
2類日誌:訪問日誌access_log和錯誤日誌err_log(均在/var/log/httpd/目錄下)
4、實現基於用戶的認證:AllowOverRide AuthConfig
AuthName "our site"
AuthType basic
AuthUserFile /etc/httpd/.htpasswd
如何創建該文件呢?利用#htpasswd -c(初次創建) -m(md5加密方式存放)/etc/http/.htpasswd tom
#htpasswd -c -m /etc/http/.htpasswd tom
#htpasswd -m /etc/http/.htpasswd jerry
#tail /etc/http/.htpasswd查看剛剛創建的用戶
#service httpd configtest檢查語法錯誤(或httpd -t)
require user valid-user (如果指定用戶,就不需要valid-user;多個用戶用空格隔開)
Order allow,deny --這裏的order是順序的意思,先允許再禁止。
Allow from 192.168.0.1/20 172.16.0.0/16 以上是基於IP訪問控制。
DirectoryIndex 網站的默認索引 index.html index.htm 注意次序
ErrorLog logs/error_log 相對於ServerRoot目錄
LogLevel warn 日誌級別
CustomLog logs/access_log Combined(包含common、referer、agent三種類型格式)
Alias /icons/ "/var/www/icons/" 路徑別名
ScriptAlias /cgi-bin/ "/var/www/cgi-bin" CGI格式動態網頁文件
AddDefaultCharset UTF-8 默認字符集
AddType application/x-compress .Z 添加文件支持的格式類型,後續需要添加php、asp、jsp
虛擬主機:一臺物理機上可以提供多個站點,每個頁面均有一個socket(IP+Port),實現方式有三種:
基於IP(首先1、要在Listen包含有地址 2、取消中心主機:DocumentRoot )
在配置文件添加以下:
<virtualHost 192.168.0.181:80>
ServerName www.mma.com
DocumentRoot "/web/magedu.com"
</virtualhost>
<virtualHost 172.16.100.1:80>
ServerName www.b.org
DocumentRoot "/web/b.org"
</virtualhost>
#語法檢查正確性httpd -t
基於Port(首先1、要在Listen包含有地址添加Listen 8080)
在配置文件添加以下:
<virtualHost 172.16.100.1:80>
ServerName www.magedu.com
DocumentRoot "/web/magedu.com"
</virtualhost>
<virtualHost 172.16.100.1:8080>
ServerName www.b.org
DocumentRoot "/web/b.org"
</virtualhost>
基於FQDN(可以直接叫基於主機頭或者域名)保證解析能夠正常以下兩個域名
/etc/named.conf添加區域文件,
zone “magedu.com” IN {
type master;
file “magedu.com.zone”
};
zone “b.org” IN {
type master;
file “b.org.zone”
};
再查看zone文件,/var/named/magedu.com.zone文件,添加A記錄即可
第二部分:mysql的安裝
#yum install mysql-server -y
#service mysqld start ------啓動服務
#chkconfig mysqld on ------開機自動啓動