fastCGI 動態(tài)請求數(shù)據(jù)處理
1. fastcgi安裝步驟:
(1) ./configure 生成makefile;
(2)在 make運(yùn)行makefile;sudo make instll 安裝即可。 出現(xiàn)錯誤如下:

解決方案如下:
找到這個文件,打開,添加頭文件:#include<stdio.h>之后: 在make就不會有錯了。


2. fastcgi 與 cgi區(qū)別
fastcgi通過線程來響應(yīng)請求,而cgi對每個請求生成一個進(jìn)程。
nginx數(shù)據(jù)傳輸過程:user->nginx->本地socket(請求傳輸)->fastcgi(即進(jìn)程管理器)->cgi進(jìn)程。
總結(jié): CGI 就是所謂的短生存期應(yīng)用程序,F(xiàn)astCGI 就是所謂的長生存期應(yīng)用程序。FastCGI像是一個常駐(long-live)型的CGI,它可以一直執(zhí)行著,不會每次都要花費(fèi)時間去fork一次。
搭建服務(wù)器部分
一. 搭建一個HTTP服務(wù)器:
目的1: 可獲取請求(get)
目的2: 可接受請求的數(shù)據(jù),并顯示或存儲起來(post)
前提: 軟件安裝完畢。
- http簡介
http:
有兩部分組成: 瀏覽器發(fā)送的“請求消息”; 服務(wù)器發(fā)送的“應(yīng)答消息”。
每一部分又有四個組成部分:
請求消息= 請求行 + 請求頭 + 空行 + 請求數(shù)據(jù)。
相應(yīng)消息= 狀態(tài)行 + 消息報頭 + 空行 + 相應(yīng)正文。
請求行: 請求方法, 請求URL, http, 版本號;
請求頭: key/value形式組成,是請求時一些附加信息;
請求體:一般由post請求方法提交,可能時圖片,文件,字符串。
響應(yīng)行:http版本號,狀態(tài)碼, 狀態(tài)描述;
相應(yīng)頭:為響應(yīng)報文附加信息;
響應(yīng)體:返回客戶端的正文數(shù)據(jù)。
image.png
2. 搭建服務(wù)器準(zhǔn)備:
[oracle@localhost conf] which nginx ##查看nginx的目錄
/usr/bin/nginx
[oracle@localhost conf] ps -aux|grep nginx ##查看nginx進(jìn)程是否啟動
[oracle@localhost conf] nginx -v ##查看nginx 的版本,不需要root權(quán)限
nginx version: nginx/1.10.1
[oracle@localhost conf] nginx -t ##查看nginx.conf配置文件是否正常
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied) ##錯誤:需要root權(quán)限。
[oracle@localhost conf] sudo nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
(1) 啟動服務(wù)器:測試默認(rèn)的靜態(tài)訪問
采用默認(rèn)配置文件,啟動nginx:
[oracle@localhost conf] sudo nginx ##啟動
[oracle@localhost conf] ps -aux|grep nginx ##查看進(jìn)程(daemon on )守護(hù)進(jìn)程
root 17714 0.0 0.0 27040 1096 ? Ss 13:19 0:00 nginx: master process nginx
nobody 17715 0.0 0.0 27460 1696 ? S 13:19 0:00 nginx: worker process
oracle 17717 0.0 0.0 103248 852 pts/0 S+ 13:19 0:00 grep nginx
[oracle@localhost conf]sudo netstat -ntlp ##查看nginx監(jiān)聽的端口
圖片.png
由上圖可知,nginx的pid為17714,監(jiān)視兩個端口:http的80,https的443.
測試靜態(tài)訪問:
1.PNG
2.PNG
注: 由于http 與 https都使用的默認(rèn)端口,所以訪問時不需要加上端口。
(2) 訪問nginx Web頁面實(shí)現(xiàn)用戶認(rèn)證: 使用 httpd-tools
htpasswd -c /usr/local/nginx/pass tom
注: pass 為密碼文件, oracle 為用戶。
圖片.png
修改nginx.conf文件,再http的server中添加認(rèn)證:并測試conf文件
auth_basic "Input Password:"; ##認(rèn)證提示符
auth_basic_user_file "/usr/local/nginx/pass"; ##認(rèn)證密碼文件
圖片.png
使用: sudo nginx -t ##測試一下conf文件
最后:重新加載配置文件,并測試:
[oracle@localhost conf] sudo nginx -s reload
結(jié)果: 感覺沒什么區(qū)別啊 ???
(3) 設(shè)置圖片服務(wù)器
在nginx安裝目錄下的 html/image/下放置圖片資源:
修改配置文件:如下
圖片.png
訪問結(jié)果如下:
3.PNG
4.PNG
(4) 實(shí)現(xiàn)負(fù)載均衡《需要多臺服務(wù)器》 : 先略
3. 搭建可處理動態(tài)數(shù)據(jù)的HTTP服務(wù)器:
先略。
二. 搭建一個https 服務(wù)器: 目的:同上
加密算法一般分為對稱算法、非對稱算法、信息摘要。
對稱算法有:AES、DES,主要應(yīng)用在單機(jī)數(shù)據(jù)加密。
非對稱算法有:RSA、DSA,主要應(yīng)用在網(wǎng)絡(luò)數(shù)據(jù)加密。
信息摘要:MD5、sha256,主要應(yīng)用在數(shù)據(jù)完整性校驗(yàn)、數(shù)據(jù)秒傳等
- 密鑰生成 : HTTPS =HTTP + SSL / TLS
(1) 雙向認(rèn)證
客戶端與服務(wù)器建立連接,都生成私鑰和公鑰(四個秘鑰)。
首先:服務(wù)器返給客戶端一個公鑰,然后客戶端拿著這個公鑰把要搜索的東 西加密,稱之為密文,并連并自己的公鑰一起返回給服務(wù)器;
其次:服務(wù)器拿著自己的私鑰解密密文,然后把響應(yīng)到的數(shù)據(jù)用客戶端的公鑰加密,返回給客戶端,客戶端拿著自己的私鑰解密密文,把數(shù)據(jù)呈現(xiàn)出來。
(2)生成秘鑰 (單向認(rèn)證,兩個密鑰)
說明:自己創(chuàng)建的秘鑰不受瀏覽器驗(yàn)證。如需要搭建https服務(wù)器,需買秘鑰。
首先: 決定密鑰存目錄,一般為/usr/local/nginx/conf/ssl/目錄,進(jìn)入。
其次: 創(chuàng)建服務(wù)器證書密鑰文件 server.key:
openssl genrsa -des3 -out server.key 1024
image.png
再次: 創(chuàng)建服務(wù)器證書的申請文件 server.csr,具體操作見下圖
openssl req -new -key server.key -out server.csr
image.png
最后: 生成證書文件server.crt:
openssl x509 -req -days 365 -in server.csr -signkey server.key
-out server.crt
image.png
總結(jié):上面server.key 是服務(wù)器證書密鑰(私鑰)。
上面server.crt 為證書文件(包含公鑰,與其他相關(guān)信息)
- 配置NGINX
修改配置文件,并重啟
圖片.png
擴(kuò)展:
假如:將密鑰放到/usr/local/nginx/conf文件下,使用rsa非對稱:
cd /usr/local/nginx/conf
openssl genrsa > cert.key ###生成私鑰
openssl req -new -x509 -key cert.key > cert.pem ##生成證書
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem ; ##證書文件,與配置文件同目錄的相對路徑
ssl_certificate_key cert.key; ##私鑰
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
3. 搭建可處理動態(tài)數(shù)據(jù)的HTTPS服務(wù)器:
/-----------------------------------------------附錄部分------------------------------------------------/
附錄1:
yum常用命令
1.列出所有可更新的軟件清單命令:yum check-update
2.更新所有軟件命令:yum update
3.僅安裝指定的軟件命令:yum install <package_name>
4.僅更新指定的軟件命令:yum update <package_name>
5.列出所有可安裝的軟件清單命令:yum list
6.刪除軟件包命令:yum remove <package_name>
7.查找軟件包 命令:yum search <keyword>
8.清除緩存命令:
yum clean packages: 清除緩存目錄下的軟件包
yum clean headers: 清除緩存目錄下的 headers
yum clean oldheaders: 清除緩存目錄下舊的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders)
清除緩存目錄下的軟件包及舊的headers。
APT-GET
apt-get,是一條linux命令,適用于deb包管理式的操作系統(tǒng),主要用于自動從互聯(lián)網(wǎng)的軟件倉庫中搜索、安裝、升級、卸載軟件或操作系統(tǒng)。最常用的命令是update(更新) 和install(安裝)。
命令:
update - 重新獲取軟件包列表
upgrade - 進(jìn)行更新
install - 安裝新的軟件包
remove - 移除軟件包
autoremove - 自動移除全部不使用的軟件包
purge - 移除軟件包和配置文件
source - 下載源碼檔案
build-dep - 為源碼包配置編譯依賴
dist-upgrade - 發(fā)行版升級
dselect-upgrade - 依照 dselect 的選擇更新
clean - 清除下載的歸檔文件
autoclean - 清除舊的的已下載的歸檔文件
check - 檢驗(yàn)是否有損壞的依賴
apt-get 常用實(shí)例:
apt-cache search packagename 搜索包
apt-cache show packagename 獲取包的相關(guān)信息大小、版本等
apt-get install packagename 安裝包
apt-get install packagename --reinstall 重新安裝包
apt-get remove packagename 刪除包
apt-get remove packagename --purge 刪除包,包括刪除配置文件.
apt-get update 更新源
apt-get upgrade 更新已安裝的包
apt-get dist-upgrade 升級系統(tǒng)
apt-get dselect-upgrade 使用 dselect 升級
apt-cache depends packagename 了解使用依賴
apt-cache rdepends packagename 是查看該包被哪些包依賴
apt-get build-dep packagename 安裝相關(guān)的編譯環(huán)境
apt-get source packagename 下載該包的源代碼
apt-get clean 清理無用的包
apt-get autoclean 清理無用的包
apt-get check 檢查是否有損壞的依賴
區(qū)別: yum 與 apt-get:
rpm包和deb包是兩種Linux系統(tǒng)下最常見的安裝包格式;rpm包主要應(yīng)用在RedHat系列包括 Fedora等發(fā)行版的Linux系統(tǒng)上,deb包主要應(yīng)用于Debian系列包括現(xiàn)在比較流行的Ubuntu等發(fā)行版上。
如果要安裝現(xiàn)成的這兩種包的話,安裝rpm包的命令是“rpm -參數(shù)”,安裝deb包的命令是“dpkg -參數(shù)”。LINUX人性化的一點(diǎn)不用我們?nèi)ハ螺d,直接使用相應(yīng)的命令就可以管理。
yum可以用于運(yùn)作rpm包,例如在Fedora系統(tǒng)上對某個軟件的管理:
安裝:yum install <package_name>
卸載:yum remove <package_name>
更新:yum update <package_name>
apt-get可以用于運(yùn)作deb包,例如在Ubuntu系統(tǒng)上對某個軟件的管理:
安裝:apt-get install <package_name>
卸載:apt-get remove <package_name>
更新:apt-get update <package_name>








