HTTP服務初識
-
http請求流程
- 建立、處理連接
- 接受請求
- 處理請求
- 訪問資源
- 構建響應報文
- 發送響應報文
- 記錄日志
-
提供http服務的軟件
- 靜態資源web程序
- httpd(apache)
- nginx
- lighttpd
- 動態資源web程序
- IIS
- tomcat、jboss、jetty (輕量級)
- weblogic、webshpere (企業級)
- 靜態資源web程序
-
apache httpd的特點
- 高度模塊化
- DSO動態共享對象
- MPM多路訪問模塊
- prefork:多進程模型,每個進程響應一個請求。一個主進程(監聽套接字),負責生成n個子進程,子進程為工作進程,沒有用戶請求,也會生成空閑進程,等待新的請求,最大不超過1024個進程
- worker:多線程模型(多進程生成,一個進程生成多個線程),一個線程響應一個請求
- event:事件驅動模型,多個進程,一個進程響應多個請求
-
查看當前所使用的MPM模塊(默認為prefork)
ps -aux | grep http

-
httpd -M #查看所有加載的模塊

-
httpd 2.2修改所使用的MPM模式




-
httpd 2.4 修改配置文件/etc/httpd/conf.modules.d/00-mpm.conf 加載指定的MPM模塊
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #加載prefork多進程模式
LoadModule mpm_worker_module modules/mod_mpm_worker.so #加載work多線程模式
LoadModule mpm_event_module modules/mod_mpm_event.so #加載event事件驅動模式
- 其他相關知識
- URI: Universal Resource Identifier 統一資源標志符 ,由三部分組成:訪問資源的命名機制,存放資源的主機名,資源自身的名稱
- URL:Universal Resource Locator 統一資源定位符 ,由三部分組成:第一部分是協議(或稱為服務方式);第二部分是存有該資源的主機IP地址(有時也包括端口號);第三部分是主機資源的具體路徑
- PV:page view(一次頁面的訪問) 即頁面訪問量,每打開一次頁面PV計數+1,刷新頁面也是。包括全站PV,首站PV等
- UV:user view (多少用戶訪問過,跟頁面數量多無關,表現為用戶活躍度,一台電腦終端為一個訪客)
- AC:Active connection 活動連接數,當前在使用的活動的連接數
- IV:是IP訪問數指獨立IP訪問數,一個獨立的IP在一個計算時段內訪問網站計算為1次IP訪問數。在同一個計算時段內不管這個IP訪問多少次均計算為1次。計算時段有以1天為一個計算時段,也有以1個小時為一個計算時段。
- qps:每秒查詢數 並發/響應
- 並發:多個客戶機同時請求服務器資源,服務器對多個請求交替進行響應
- 並行:多個客戶機同時請求服務器資源,服務器同時對多個請求進行響應
- 進程:是程序的運行實體,進行資源分配的基本單位,擁有獨立的資源,進程之間相互獨立一個進程可以包含多個線程
- 線程:程序執行的最小單位,線程間共享進程的資源,線程間通信更方便
HTTP服務安裝與初始化配置
環境:
http2.2 服務端:Centos6.10 192.168.10.110
windows客戶端:windows 10 10.10.86.68
Linux客戶端:Centos6.10 192.168.10.111
- 安裝httpd(需要關閉防火牆、selinux)

- 備份配置文件/etc/httpd/conf/httpd.conf

- 默認配置文件如下
ServerTokens OS #服務器標識
ServerRoot "/etc/httpd" #服務器根,其他配置文件的相對目錄
PidFile run/httpd.pid
Timeout 60 #響應超時時長(秒)
KeepAlive Off #是否保持長連接
MaxKeepAliveRequests 100 #長連接最大請求次數
KeepAliveTimeout 15 #同一用戶同一連接的長連接超時時長(秒)
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
#Listen 127.0.0.1:80 #監聽的ip和端口,可以為多個
#Listen [::1]:80 #使用ipv6時需要將ip地址括起來
Listen 80 #監聽端口
#LoadModule為加載的模塊
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
...
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
Include conf.d/*.conf
User apache #提供服務的用戶
Group apache #提供服務的用戶組
ServerAdmin root@localhost #錯誤發送郵箱
UseCanonicalName Off
DocumentRoot "/var/www/html" #網站根目錄
<Directory /> #指定根的一組配置
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/html"> #/var/www/html該目錄的一組配置
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny #訪問控制,先檢查allow后檢查deny,后面的規則會覆蓋前面規則
# Order Mutual-failure #只有出現在allow中且未出現在deny中的允許訪問
# Order deny,allow #先檢查deny
Allow from all #設定允許的范圍,all允許所有
# Deny from all #設定拒絕的范圍,all拒絕所有
</Directory>
DirectoryIndex index.html index.html.var #網站首頁名
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
TypesConfig /etc/mime.types #MIME類型配置文件
DefaultType text/plain #默認MIME內容類型
<IfModule mod_mime_magic.c>
# MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule>
HostnameLookups Off
ErrorLog logs/error_log
LogLevel warn #日志級別
#emerg 緊急(系統無法使用)
#alert 必須立即采取措施
#crit 致命情況
#error 錯誤情況
#warn 警告情況
#notice 一般重要情況
#info 普通信息
#debug 調試信息
#LogFormat定義日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log combined #設置日志文件名和格式
ServerSignature On
Alias /icons/ "/var/www/icons/" #Alias命名的別名
<Directory "/var/www/icons">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
AddDefaultCharset UTF-8 #默認字符集
...
- 修改配置如下





- 分別在/var/www/html和/var/www/html/sub下創建主頁




- 重啟服務

- 或

- 也可以不重啟,只重載配置

- windows客戶端測試


- linux客戶端curl命令測試


