(一)再說編譯安裝httpd2.4
php
新特性:
1:MPM(多處理模塊)支持運行爲DSO(動態共享,動態加載模式)機制,以模塊形式按需加載,支持動態加載
2:event MPM生產環境可用
3:支持異步讀寫機制
4:支持每一個模塊和每一個目錄日誌級別定義
5:每請求相關的專用配置
6:加強版的表達式分析式
7:支持毫秒級持久鏈接時長定義
8:基於FQDN的虛擬主機也再也不須要NameVirtualHost directive
9:支持新的AllowOverrideList指令
10:支持自定義變量的使用
11:更低的內存消耗
12:支持fcgi
13:支持scgi
14:支持remote IP
(二)對於yum 安裝的httpd2.4詳解
node
前言:yum 安裝的httpd2.4必須掌握
(1)切換使用的MPM
/etc/httpd/conf.modules.d/00-mpm.conf 中選擇須要的模式 ,打開獨有的LoadModule,而後restart
(2)虛擬機基於IP的訪問控制,位於<VirtualHost> </VirtualHost>
容許全部的主機訪問:
Require all granted
拒絕全部的主機訪問:
Require all deny
控制某特定的IP訪問:
Require ip IPADDR:受權指定的IP訪問
Require not ip IPADDR:拒絕
控制特定的主機訪問:
Require host HOSHNAME:受權指定的來源的主句訪問
Require not host HOSHNAME:拒絕
注意:若是容許全部的主機訪問,可是拒絕192.168.10.2這臺主機訪問,要在<Directory>中加上一個容器,例如
<RequireAll>
Require all granted
Require not ip 192.168.10.2
</RequireAll>
(3)基於FQDN的虛擬主機再也不須要NameVirtualHost指令
# www.a.com 虛擬機
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot "/apps/www/a"
<Directory "/apps/www/a">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
# www.b.com 虛擬機
<VirtualHost *:80>
ServerName www.b.com
DocumentRoot "/apps/www/b"
<Directory "/apps/www/b">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
千萬注意:對於httpd-2.4版原本說,任意目錄下的頁面只有被顯示受權才能被訪問
(三)對於httpd這樣的web服務器中http協議說明
python
前言:
請你們使用Google搜一搜什麼是會話保持
(1)使用會話粘性
(2)使用會話服務器集羣,會話保持在數據庫裏面
(3)使用會話服務器,會話保存在基於內存的NoSQL數據庫中,如memcached或redis
<方法> <請求URL> <協議版本>
<各類的請求的header>
<請求體>
<協議版本> <狀態碼> <是否ok>
<各類的響應的header>
<響應體>
GET :從服務器獲取一個資源
HEAD :只從服務器獲取文檔的響應首部,不會獲取響應的內容資源
POST:向服務器發送服務器要處理的數據,數據會保存在entity-body中
PUT:將請求的主體部分存儲在服務器上,entity-body包含須要上傳的內容
DELETE:刪除服務器上的經過URL指定的文檔
TRACE:追蹤請求到達服務器中間通過的代理服務器
OPTIONS:讓服務器返回對指定資源支持使用請求的方法
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:與301類似,可是在響應報文中經過Location指明資源如今所處的臨時的新位置;Found
304:客戶端發出了條件式請求,可是服務器上的資源未發送改變,經過響應此響應狀態碼通知客戶端,Not Modified
401:須要客戶端輸入帳號和密碼才能訪問資源;Unauthorized
403:請求被禁止;Forbidden
404:服務器沒法找到客戶端請求的資源;Not Found
500:服務器內部錯誤;Internal Server Error
502:代理服務器從後端服務器收到了一條僞響應;Bad Gateway
- 6:
http協議的各個首部分類
(如何想深刻學習,請移步《HTTP權威指南》)
1:通用首部:
Date:報文的建立時間
Connection:鏈接方式,如:keep-alive ,close
Via:顯示報文通過的中間節點
Cache-Control:控制緩存的生效
2:請求首部:
Accept:告訴服務器客戶端本身能夠接受的媒體類型,也就是MIME類型
Accept-Charset:能夠接受的字符集
Accept-Encoding:能夠接受的編碼格式,接受哪些壓縮格式,如gzip
Accept-Language: 能夠接受的語言
Host:請求的服務器名稱,通常是域名
Referer:包含當前正在請求資源的上一級資源,就是上一級所在的域名
User-Agent:客戶端代理
條件式請求首部:
Expect
If-Modified-Since: 自從自定的時間後,請求的資源是否發生過修改
If-UnModified-Since:自從自定的時間後,請求的資源是否沒有發生過修改
If-None-Match:本地緩存中存儲的文檔的ETag標籤是否與服務器端的文檔ETag標籤不匹配
If-Match:本地緩存中存儲的文檔的ETag標籤是否與服務器端的文檔ETag標籤匹配
安全請求首部
Authorization:向服務器發送認證信息,如:帳號密碼
Cookie:客戶端向服務器端發送cookie
Cookie2:
代理請求首部 :
Proxy-Authorization:向代理服務器認證
3:響應首部:
信息性 :
Age:資源的有效期限,或 響應持續時長
Server:服務器程序的軟件名稱和版本,如:Apache,Nginx
協商首部:某資源有多種表示方法時使用
Accept-Ranges:服務器能夠請求的訪問類型
Vary:服務器查看的其餘首部列表
安全響應首部 :
Set-Cookie:向客戶端設置cookie
Set-Cookie2:
WWW-Authenticate:來自服務器對客戶端的質詢認證表單
4:實體首部 :
Allow:列出對此實體可以使用的請求方法
Location:告訴客戶端真正的實體位於何處
Content-Encoding:實體的編碼格式
Content-Language:實體使用的語言
Content-Length:主體的長度
Content-Location:實體真正的所處位置
Content-Range
Content-Type:主體的對象類型
緩存:
ETag:實體的擴展標籤
Expires:實體的過時時間
Last-Modified:最後一次修改的時間
(四)LAMP架構集羣入門
mysql
L:Linux
A:Apache(httpd)
M:MySQL , Mariadb
P:php, perl , python
靜態資源:圖片,文檔,視頻,HTML代碼,CSS代碼,js代碼等
動態資源:是程序文件,須要在執行引擎上執行後,返回給客戶端
客戶端技術:JavaScript(有機會必定要學習)
服務端技術:php, Java,Python(必定要學習),node.js,go(運維的趨勢,跟着谷歌走,不拍栽跟頭)
httpd:接受用戶的web請求
php:運行PHP程序
MariaDB:數據管理系統
做用:從客戶端的網頁瀏覽器向服務器上的應用程序傳輸數據
Client ---(http)---> httpd ---> (cgi協議) ---> PHP --- (mysql協議) ---> MySQL
腳本編程語言,使用PHP模板將PHP代碼嵌入到HTML代碼中,實現HTML頁面的基於數據的動態化
1:CGI
2:FastCGI
3:把php編譯爲httpd的模塊
模塊名爲:libphp5.so
(五)LAMP架構集羣進階
web
redhat 6:httpd,php, mysql-server , php-mysql
service httpd start
service mysqld start
redhat 7:httpd,php, mariadb-server , php-mysql
systemctl start httpd.service
systemctl start mariadb.service
客戶端程序:mysql
-u:指明用戶名
-h:指明主機
-p:指明密碼
例如:mysql -h192.168.23.10 -uroot -p
數據庫SQL語言介紹(這個會在下週一一次性講完,請同志們作好心理準備,其實很簡單)
DDL:數據庫定義語言
DML:數據庫操做語言
DCL:數據庫執行語言
例如:
grant all on testdb.* to testuser@'192.168.10.%' identified by '123456';
flush privileges;
1:PHP
<?php
phpinfo();
?>
2:php鏈接mysql的測試代碼
<?php
$conn = mysql_connect('192.168.10.3','yhy','123456');
if ($conn)
echo "ok";
else
echo "false";
?>
(1)解壓後,將目錄放在web站點目錄下,而且更名wp-config-sample.php爲wp-config.php
(2)在mysql數據庫中先建立wp數據庫,而且給yhy用戶受權 這是WordPress特殊的地方,其餘的程序不須要
create database wpdb;
grant all on wp.* to yhy@'192.168.%.%' identified by '123456';
flush privileges;
systemctl restart mariadb.service
(3)編輯wp-config.php,修改以下配置
define('DB_NAME', 'wp');