(httpd、php)2

 

(一)再說編譯安裝httpd2.4php

新特性:
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
 

  • 再次編譯httpd2.4
# 1:安裝包組
yum groupinstall -y "Development tools" "Server Platform Development"

# 2:安裝依賴開發包
yum install pcre-devel apr-devel apr-util-devel openssl-devel

# 3:解壓本地的httpd-2.4.25.tar
tar xf httpd-2.4.25.tar
cd httpd-2.4.25

# 4:配置安裝信息,生成make file, yum 安裝的RPM包通常都是在/usr目錄下
./configure --prefix=/usr/local/apache-2.4 --sysconfdir=/etc/httpd-2.4 --enable-so --enable-ssl --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-zlib --with-pcre --with-apr=/usr --with-apr-util=/usr --with-mpm=prefork

# 5:編譯安裝
make && make install

# 6:製做軟鏈接,便於版本管控
ln -sv /usr/local/apache-2.4 /usr/local/apache

# 7:由於自帶的Apache服務控制腳本:apachectl腳本在/usr/local/apache-2.4/bin/目錄下,能夠將這個目錄添加到環境變量中,編輯 vi /etc/profile.d/httpd.sh , 添加export PATH=/usr/local/apache/bin/:$PATH,那麼啓動的時候,就能夠直接使用apachectl start
vi /etc/profile.d/httpd.sh文件,添加以下代碼
export PATH=/usr/local/apache/bin/:$PATH
. /etc/profile.d/httpd.sh

# 8:將頭文件和庫文件輸出到默認的
ln -sv /usr/local/apache/include /usr/include/httpd

# 9:啓動httpd2.4
apachectl start

# 10:編寫服務腳本實現 service httpd start 啓動httpd
vi /etc/rc.d/init.d/httpd-2.4 添加

. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi

HTTPD_LANG=${HTTPD_LANG-"C"}

INITLOG_ARGS=""


apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
STOP_TIMEOUT=${STOP_TIMEOUT-10}

start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}

stop() {
status -p ${pidfile} $httpd > /dev/null
if [[ $? = 0 ]]; then
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
else
echo -n $"Stopping $prog: "
success
fi
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
# Force LSB behaviour from killproc
LSB=1 killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
if [ $RETVAL -eq 7 ]; then
failure $"httpd shutdown"
fi
fi
echo
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart|try-restart)
if status -p ${pidfile} $httpd >&/dev/null; then
stop
start
fi
;;
force-reload|reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
RETVAL=2
esac

exit $RETVAL


# 11:讓腳本能夠被chkconfig管控
chkconfig --add /etc/rc.d/init.d/httpd-2.4

# 12:使用service重啓服務
service httpd-2.4 restart

(二)對於yum 安裝的httpd2.4詳解node

前言:yum 安裝的httpd2.4必須掌握

  • 配置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

前言:

  • 1:什麼是會話保持
請你們使用Google搜一搜什麼是會話保持
  • 2:如何實現會話保持
1)使用會話粘性
2)使用會話服務器集羣,會話保持在數據庫裏面
3)使用會話服務器,會話保存在基於內存的NoSQL數據庫中,如memcached或redis

  • 3:http協議 
    • 什麼是請求報文
<方法> <請求URL> <協議版本> 
<各類的請求的header>
<請求體>
    • 什麼是響應報文
<協議版本> <狀態碼> <是否ok> 
<各類的響應的header>
<響應體>
  • 4:http協議的method介紹
GET :從服務器獲取一個資源
HEAD :只從服務器獲取文檔的響應首部,不會獲取響應的內容資源
POST:向服務器發送服務器要處理的數據,數據會保存在entity-body中
PUT:將請求的主體部分存儲在服務器上,entity-body包含須要上傳的內容
DELETE:刪除服務器上的經過URL指定的文檔
TRACE:追蹤請求到達服務器中間通過的代理服務器
OPTIONS:讓服務器返回對指定資源支持使用請求的方法
  • 5:http協議的狀態碼介紹
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


  • LAMP簡要介紹
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:數據管理系統
  • CGI:通用網關接口
做用:從客戶端的網頁瀏覽器向服務器上的應用程序傳輸數據
  • 對於一個LAMP集羣的請求流程
Client ---(http)---> httpd ---> (cgi協議) ---> PHP --- (mysql協議) ---> MySQL
  • PHP說明
腳本編程語言,使用PHP模板將PHP代碼嵌入到HTML代碼中,實現HTML頁面的基於數據的動態化
  • http與php結合的方式
1:CGI
2:FastCGI
3:把php編譯爲httpd的模塊
模塊名爲:libphp5.so

(五)LAMP架構集羣進階web


  • 安裝LAMP
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
客戶端程序: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;

  • 檢查PHP和MySQL是否安裝成功檢查代碼
1:PHP
<?php
phpinfo();
?>

2:php鏈接mysql的測試代碼
<?php
$conn = mysql_connect('192.168.10.3','yhy','123456');
if ($conn)
echo "ok";
else
echo "false";
?>
  • WordPress應用源碼上線
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');
/** MySQL數據庫用戶名 */
define('DB_USER', 'yhy');
/** MySQL數據庫密碼 */
define('DB_PASSWORD', '123456');
/** MySQL主機 */
define('DB_HOST', '192.168.10.3');
相關文章
相關標籤/搜索