目錄html
http是Apache超文本傳輸協議服務器的主程序。它是一個獨立的後臺進程,可以處理請求的子進程和線程apache
http經常使用用的兩個版本是httpd-2.2和httpd-2.4vim
CentOS6系列的默認httpd版本是httpd-2.2版本的rpm包 CentOS7系列的默認httpd版本是httpd-2.4版本的rpm包
事先建立進程
按需維持適當的進程
模塊化設計,核心比較小,各類功能經過模塊添加(包括PHP),支持運行時配置,支持單獨編譯模塊
支持多種方式的虛擬主機配置,如基於ip的虛擬主機,基於端口的虛擬主機,基於域名的虛擬主機等
支持https協議(經過mod_ssl模塊實現)
支持用戶認證
支持基於IP或域名的ACL訪問控制機制
支持每目錄的訪問控制(用戶訪問默認主頁時不須要提供用戶名和密碼,可是用戶訪問某特定目錄時須要提供用戶名和密碼)
支持URL重寫
支持MPM(Multi Path Modules,多處理模塊)。用於定義httpd的工做模型(單進程、單進程多線程、多進程、多進程單線程、多進程多線程)windows
httpd-2.4的新特性:
MPM支持運行DSO機制(Dynamic Share Object,模塊的動態裝/卸載機制),以模塊形式按需加載
支持event MPM,eventMPM模塊生產環境可用
支持異步讀寫
支持每一個模塊及每一個目錄分別使用各自的日誌級別
每一個請求相關的專業配置,使用
加強版的表達式分析器
支持毫秒級的keepalive timeout
基於FQDN的虛擬主機再也不須要NameVirtualHost指令
支持用戶自定義變量
支持新的指令(AllowOverrideList)
下降對內存的消耗
httpd有三種工做模式:prefork,worker,event服務器
工做模式在/etc/httpd/conf.modules.d/00-mpm.conf定義,啓動哪一種模式就取消那行註釋多線程
prefork:多進程模型,預先生成進程,一個請求用一個進程響應
一個主進程負責生成n個子進程,子進程也稱爲工做進程
每一個子進程處理一個用戶請求,即便沒有用戶請求,也會預先生成多個空閒進程,隨時等待請求到達,最大不會超過1024個
worker:基於線程工做,一個請求用一個線程響應(啓動多個進程,每一個進程生成多個線程)
event:基於時間的驅動,一個進程處理多個請求curl
/var/log/httpd/access.lod 訪問日誌異步
/var/log/httpd/error_log 錯誤日誌 (報錯就觀察此日誌)ide
/var/www/html/* 站點文檔目錄
/usr/lib64/httpd/modules 模塊存儲路徑
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf/*.conf 配置文件,被主配置文件包含
apachectl -t 或 httpd -t 檢查配置文件是否有錯誤
httpd -x 測試服務運行
httpasswd basic認證基於文件實現時,用到的帳號密碼文件生成工具
ab 壓力測試工具
apachectl 相似systemctl命令,控制程序啓動關閉
rotatelogs 日誌滾動工具
curl 可用於http認證的命令
status(狀態碼):
1xx:100-101 信息提示
2xx:200-206 成功
3xx:300-305 重定向
4xx:400-415 錯誤類信息,客戶端錯誤
5xx:500-505 錯誤類信息,服務器端錯誤
200: 成功,請求數據經過響應報文的entity-body部分發送;OK
301: 請求的URL指向的資源已經被刪除;但在響應報文中經過首部Location指明瞭資源如今所處的新位置;Moved Permanently
302: 響應報文Location指明資源臨時新位置 Moved Temporarily
304: 客戶端發出了條件式請求,但服務器上的資源不曾發生改變,則經過響應此響應狀態碼通知客戶端;Not Modifiled
401: 須要輸入帳號和密碼認證方能訪問資源;Unauthorized
403: 請求被禁止;Forbidden
404: 服務器沒法找到客戶端請求的資源;Not Found
500: 服務器內部錯誤;Internal Server Error
502: 代理服務器從後端服務器收到了一條僞響應,如沒法鏈接到網關;Bad Gateway
503 – 服務不可用,臨時服務器維護或過載,服務器沒法處理請求
504 – 網關超時
法則 功能
Require all granted 容許全部主機訪問
Require all deny 拒絕全部主機訪問
Require ip IPADDR 受權指定來源地址的主機訪問
Require not ip IPADDR 拒絕指定來源地址的主機訪問
Require host HOSTNAME 受權指定來源主機名的主機訪問
Require not host HOSTNAME 拒絕指定來源主機名的主機訪問
IPADDR的類型 HOSTNAME的類型
IP:192.168.1.1
Network/mask:192.168.1.0/255.255.255.0
Network/Length:192.168.1.0/24
Net:192.168 FQDN:特定主機的全名
DOMAIN:指定域內的全部主機
httpd-2.4版本默認是拒絕全部主機訪問的,安裝後必須修改顯示受權訪問
配置示例: 容許除了ip192.168.60.55之外的全部主機訪問
Require not ip 192.168.60.55
Require all granted
虛擬主機有三種:
1)相同ip不一樣端口
2)不一樣ip相同端口
3)相同ip相同端口不一樣域名
http2.2版本里,在<VirtualHost *:80>上面加一行
NameVirtualHost
測試時,須要作主機名解析 vim /etc/hosts
windows主機名解析 C:\windows\system32\drivers\etc\hosts
找到文件沒法修改,須要把文件拖到桌面修改,添加解析,再放回原位
vim /etc/httpd-2.4/httpd.conf 修改主配置文件
Listen 80
Listen 81 (須要什麼端口增長哪一個端口)
<VirtualHost *:80>
ServerName wang.example.com
DocumentRoot "/usr/local/apache/htdocs/wang"
ErrorLog "logs/wang-error_log"
CustomLog "logs/wang-access_log" common
<VirtualHost *:81>
ServerName chen.example.com
DocumentRoot "/usr/local/apache/htdocs/wang
ErrorLog "logs/error_log"
CustomLog "logs/access_log" common
網卡配置裏增長ip 192.168.160.55
臨時添加 ip addr add 192.168.160.55/24 dev ens33
永久添加 vim /etc/sysconfig/network-scright/ifcg-ens33
IPADDR=192.168.160.55
NETMASK=255.255.255.0
IPADDR=192.168.160.56
NETMASK=255.255.255.0
DNS=192.168.160.1
vim /etc/httpd-2.4/httpd.conf 修改主配置文件
<VirtualHost 192.168.160.55:80>
ServerName wang.example.com
DocumentRoot "/usr/local/apache/htdocs/wang"
ErrorLog "logs/wang-error_log"
CustomLog "logs/wang-access_log" common
<VirtualHost 192.168.160.56:80>
ServerName chen.example.com
DocumentRoot "/usr/local/apache/htdocs/wang
ErrorLog "logs/chen-error_log"
CustomLog "logs/chen-access_log" common
<VirtualHost *:80>
ServerName wang.example.com
DocumentRoot "/usr/local/apache/htdocs/wang"
ErrorLog "logs/wang-error_log"
CustomLog "logs/wang-access_log" common
<VirtualHost *:80>
ServerName chen.example.com
DocumentRoot "/usr/local/apache/htdocs/chen
ErrorLog "logs//chen-error_log"
CustomLog "logs/chen-access_log" common
建立apache用戶
useradd -s /sbin/nologin apache
建立網頁目錄並修改屬主屬組
mkdir -pv /usr/local/apache/htdocs/chen
chown -R apache.apache /usr/local/apache/htdocs/
建立網頁
echo "wang" > /usr/local/apache/htdocs/wang/index.html
echo "chen" > /usr/local/apache/htdocs/chen/index.html
建立日誌目錄
mkdir /usr/local/apache/logs
chown -R /usr/local/apache/logs/{wang,chen}
啓動服務後查看端口是否開啓
ss -ntlp #httpd默認是80端口,https默認是443端口
啓用模塊:編輯/etc/httpd/conf.modules.d/00-base.conf文件,添加
LoadModule ssl_module modules/mod_ssl.so
1.CA生成服務器證書
創建服務器密鑰,括號必需要
cd /etc/pki/CA/
(umask 077;openssl genrsa -out private/cakey.pem 2048)
提取公鑰
openssl rsa -in private/cakey.pem -pubout
創建服務器證書
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
國家: CN
省:HuBei
城市:Wuhan
公司:runtime.example.com
須要頒發的網址:runtime.example.com
郵箱:123@123.com
openssl x509 -text -in cacert.pem
mkdir certs new certs crl
touch index.txt && echo 01 > serial
2.客戶端(須要的服務器端),生成密鑰
cd /etc/httpd && mkdir ssl && cd ssl
(umask 077;openssl genrsa -out httpd.key 2048)
生成證書籤署請求
openssl req -new -key httpd.key -days 365 -out httpd.csr
客戶端把證書請求文件發給CA
scp httpd.csr root@CA端ip:/root
CA簽署客戶端提交上來的證書
openssl ca -in /root/httpd.csr -out httpd.crt -days 365
3.配置httpd.conf
取消如下內容的註釋
LoadModule ssl_module
Include /etc/httpd/extra/httpd-vhost.conf
Include /etc/httpd/extra/httpd-ssl.conf
4 .在httpd-vhost.conf配置虛擬主機 (httpd-ssl.conf設置也能夠)
<VirtualHost default:443> # 必須有一個虛擬主機,這樣纔可使用跳轉功能和使用443端口訪問
DocumentRoot "/usr/local/htdocs/wang"
Servername https://wang.example.com/
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
5.在httpd-ssl.conf配置證書的路徑
SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key
6.檢查配置文件是否有語法錯誤。apachectl -t 或 httpd -t
7.啓動或重啓服務
8.客戶端設置hosts並以域名驗證 vim /etc/hosts 192.168.43.143 wang.example.com