本篇博客內容主要有:php
apache的簡介和安裝
html
apache實現文件共享java
apache虛擬主機功能node
apache訪問控制IPlinux
apache用戶認證nginx
http 工做狀態碼 web
一.apache簡介sql
apache : 意爲充滿補丁的服務器(a patchy server) , 它是一個web網站服務器軟件 , 用來發佈網站信息資源 , 給用戶提供網頁服務apache
工做端口:TCP 80windows
其餘的web服務器軟件除了apache , 常見的還有nginx , tomcat(java) , iis(windows).....
相比其餘web軟件其優勢有:安裝配置方便簡單 , 兼容性好 , windows和linux系統都支持apache , 穩定性高 , 安全可靠 , 支持模塊擴展
apache架構基本爲:lamp(Linux + Apache + Mysql + PHP)
工做過程:
第1步、鏈接過程:客戶端經過瀏覽器輸入的URL採用HTTP協議與服務器之間經過TCP三次所握手創建鏈接。
第2步、請求過程:向服務器請求網站的主頁資源,一般默認主頁爲index.html、index.php、index.jsp等文件名。
第3步、應答過程:服務器將主頁文件傳送給客戶機瀏覽器。若是主頁不存在,會顯示網頁不存在。
第4步、關閉鏈接:爲了不一直佔用服務器資源,數據傳送完畢會自動關閉TCP鏈接。
apache部署流程
此實驗在主機node12上進行(192.168.11.12)
systemctl stop firewalld && setenforce 0 #關閉防火牆和selinux
yum install -y httpd httpd-manual #安裝httpd軟件 ,手冊(可不安裝)
systemctl start httpd && systemctl enable httpd #啓動服務
ss -anput | grep :80 #查看80端口是否開啓
測試:
apache的默認網站目錄爲: /var/www/html/ , 在此能夠設置一個簡單的主頁進行測試
date > /var/www/html/index.html
curl 192.168.11.12 #linux用curl訪問網站 , curl最小版linux系統須要安裝
windows直接用瀏覽器地址欄輸入ip便可訪問
httpd主配置文件
rpm -qc httpd #查看配置文件
其中/etc/httpd/conf/httpd.conf爲主配置文件
httpd.conf配置文件組成:全局設置、模塊設置、虛擬主機設置、目錄訪問權限設置。
全局設置:Listen監聽端口、Root默認網站根目錄、Directory目錄權限等設置
模塊設置:IfModule各類功能模塊設置,如基於用戶認證的訪問模塊、fastcgi通用網關接口模塊、PHP模塊等。
虛擬主機設置:<VirtualHost ip:port>主頁目錄、管理員郵箱設置</VirtualHost>
目錄訪問權限設置:<Directory 目錄路徑>訪問權限設置</Directory>
line |
配置選項 |
功能解釋 |
31 |
ServerRoot "/etc/httpd" |
apache工做目錄 |
Include conf.d/*.conf |
包含的配置文件(可在此存放虛擬主機配置文件) |
|
42 |
Listen 80 |
監聽全部IP的80號端口 |
56 |
Include conf.modules.d/*.conf |
包含的配置文件 |
66 |
User apache |
apache服務進程的用戶帳號。ps -u apache |
67 |
Group apache |
apache服務進程的組帳號。ps -g apache |
86 |
ServerAdmin root@localhost |
管理員郵箱 |
102 |
<Directory /> |
/根目錄訪問權限設置 |
103 |
AllowOverride none |
不啓用htaccess訪問控制功能 |
104 |
Require all denied |
拒絕任何人訪問 |
105 |
</Directory> |
目錄權限設置的結束標記 |
119 |
DocumentRoot "/var/www/html" |
默認網站主頁的根目錄 |
124 |
<Directory "/var/www"> |
/var/www目錄的訪問權限設置 |
125 |
AllowOverride None |
不啓用htaccess訪問控制功能 |
127 |
Require all granted |
容許任何人訪問 |
128 |
</Directory> |
目錄權限設置的結束標記 |
131 |
<Directory "/var/www/html"> |
/var/www/html目錄的訪問權限設置 |
144 |
Options Indexes FollowSymLinks |
啓用索引和符號連接功能,容許無主頁時顯示文件列表(Indexes僅用於實現文件共享) |
151 |
AllowOverride None |
不啓用htaccess訪問控制功能 |
156 |
Require all granted |
容許任何人訪問 |
Order allow,deny Allow from all Deny from 192.168.10.60 |
訪問規則控制的順序,先容許,後拒絕 容許任何IP的客戶機訪問此目錄 拒絕192.168.10.60的客戶機訪問此目錄 |
|
157 |
</Directory> |
目錄權限設置的結束標記 |
163 |
<IfModule dir_module> |
關於dir_module這個模塊設置 |
164 |
DirectoryIndex index.html index.php |
指定默認主頁文件名的檢索前後順序 |
165 |
</IfModule> |
模塊設置的結束標記 |
171 |
<Files ".ht*"> |
.ht*文件訪問的權限設置 |
172 |
Require all denied |
拒絕任何人訪問 |
173 |
</Files> |
文件訪問權限設置的結束標記 |
182 |
ErrorLog "logs/error_log" |
錯誤訪問日誌文件,完整路徑爲/etc/httpd/logs/error_log |
CustomLog logs/access_log combined |
默認網站的訪問日誌 |
|
189 |
LogLevel warn |
日誌文件等級爲warn警告級 |
191 |
<IfModule log_config_module> |
日誌配置模塊設置 |
202 |
</IfModule> |
|
217 |
CustomLog "logs/access_log" combined |
CustomLog訪問日誌格式 |
218 |
</IfModule> |
模塊設置的結束符 |
220 |
<IfModule alias_module> |
alias別名模塊設置 |
247 |
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" |
設置/var/www/cgi-bin/目錄的別名爲/cgi-bin |
249 |
</IfModule> |
|
276 |
ServerName www.example.com:80 |
默認網站的域名和端口號(用域名訪問此網站) |
261 |
<IfModule mime_module> |
mime_module模塊設置 |
266 |
TypesConfig /etc/mime.types |
|
283 |
AddType application/x-compress .Z |
|
284 |
AddType application/x-gzip .gz .tgz |
|
305 |
AddType text/html .shtml |
|
306 |
AddOutputFilter INCLUDES .shtml |
|
307 |
</IfModule> |
|
316 |
AddDefaultCharset UTF-8 |
默認的字符編碼爲UTF-8,win7採用GB2312編碼(即GBK) |
348 |
EnableSendfile on |
容許發送文件。實現文件下載 |
353 |
IncludeOptional conf.d/*.conf |
包含conf.d目錄下的*.conf配置文件,虛擬主機配置文件能夠保存在此處。 |
二.apache實現文件共享
實例 : 對鏡像進行共享
httpd想要共享的話,需廢掉welcome.conf(默認主頁)並保證/var/www/html沒有其餘.html文件
mv /etc/httpd/conf.d/welcome.conf{,.bak} #對welcome.conf文件更名爲.bak
知足上述條件時 :
第一步 , 在/var/www/html/下建立須要分享的文件的掛載目錄
mkdir /var/www/html/iso
mount /dev/sr0 /var/www/html/iso #將鏡像掛載到/var/www/html/iso目錄
systemctl restart httpd #重啓服務
第二步 , 在瀏覽器地址欄輸入IP:192.168.11.12驗證效果
三.虛擬主機設置
虛擬主機即在一臺服務器上發佈多個不一樣的網站 , 一般有如下三種解決方法:
基於端口的虛擬主機 | 服務器只有一個IP,但每一個網站綁定在不一樣的端口上 . 例如:80 , 8081 , 8082等 |
基於IP的虛擬主機 | 服務器網卡設置多個IP地址 , 每一個網站綁定在不一樣的IP地址上 |
基於域名的虛擬主機(最常用) | 服務器只有一個IP地址 , 給服務器設置多個主機名 , 每一個網站綁定在不一樣主機名上 |
基於端口的虛擬主機:
第一步 : 前期準備工做 , 設置3個網站目錄 , 分別設置簡單的主頁
第二步 : 編輯建立文件/etc/httpd/conf.d/gg.conf , 內容爲
第三步 : 保存文件退出後 , 重啓服務 , 進行訪問測試
基於IP的虛擬主機
第一步 : 前期準備工做 , 給主機臨時添加兩個虛擬IP , 查看效果以下圖:
第二步 : 編輯配置文件 /etc/httpd/conf.d/gg.conf 文件
第三步 : 重啓服務 , 進行測試
基於域名的虛擬主機
第一步 : 由於是測試 , 能夠修改本地域名解析文件/etc/hosts
第二步 , 重啓服務進行測試
能夠看到 , 三個域名指向的是同一個IP
四 . 訪問控制IP
第一步 : 把上面的/etc/hosts文件改回 , 編輯主配置文件/etc/httpd/conf/httpd.conf , 添加以下內容:
第二步 : 重啓服務 , 用192.168.11.11(node11)和192.168.11.14(node14)兩臺主機進行訪問
結果爲192.168.11.11成功訪問 , 192.168.11.14讀取的只是apache的默認主頁文件 , /gg/www/目錄讀取不到
五 . 用戶認證
apache的用戶認證:是指客戶端在訪問網站時會提示輸入用戶名和密碼 , 經過驗證後才能顯示網頁內容
用戶認證工具 : htpasswd
查htpasswd文件由哪一個包提供: yum provides htpasswd
安裝htpasswd工具的軟件 : yum install -y httpd-tools
第一步 : 建立基於用戶認證的帳號 :
htpasswd -cm /etc/httpd/htuser tom #建立tom用戶 , 並生成htuser帳號文件 和 登陸密碼
cat /etc/httpd/htuser #查看htuser文件
第二步 : 編輯主配文件/etc/httpd/conf/httpd.conf文件(也能夠在/etc/httpd/conf.d)
第三步 : 重啓服務 , 進行測試
沒有輸入正確的認證用戶帳號密碼時會報錯
六 . http工做狀態碼
常見的代碼以下:
代碼 |
含義 |
100 |
請求已接收 , 客戶端能夠繼續發送請求 |
101 |
Switching Protocals服務器根據客戶端的請求切換協議 |
200 |
一切正常 |
201 |
服務器已經建立了文檔 |
202 |
已經接受了請求 , 但還沒有處理完成 |
203 |
文檔正常返回 , 但一些頭部信息可能不正確 |
300 |
客戶端請求的資源能夠在多個位置找到 |
301 |
客戶端請求的資源能夠在其餘位置找到 |
305 |
請求代理服務 |
400 |
請求語法錯誤 |
401 |
訪問被拒絕 |
401.1 |
登陸失敗 |
403 |
資源不可用 |
403.6 |
IP地址被拒絕 |
404 |
沒法找到指定資源 |
406 |
指定資源已找到 , 但MIME類型與客戶端要求不兼容 |
407 |
要求進行代理身份驗證 |
500 |
服務器內部錯誤 |
500.13 |
服務器太忙 |
501 |
服務器不支持客戶端的請求功能 |
502 |
網關錯誤 |
503 |
服務不可用 |
504 |
網關超時 , 服務器處於維護或負載太高沒法響應 |
505 |
服務器不支持客戶端請求的HTTP版本 |