Nginx lnmp環境及https的實現

一、http事務簡明 

request:
<method> <URL> <VERSION>
MHADERS 
<body>
response:
<version><status><reason phrase>
<HEADERS>
...
<body> 

status:

1xx:信息類
2xx:成功類,200 
3xx:重定向,301,304,302 
4xx:錯誤類,客戶端錯誤,404,403 
5xx:錯誤類, 服務端錯誤,502 

認證:basic,digest 

httpd;MPM 

prefork,:進程模型,兩級結構,主進程master負責生成子進程,每個進程負責響應一個請求;
worker:線程模型,三級結構,主進程生成子進程,子進程負責生成多個線程, 每個線程響應一個請求 
event:主進程master負責生成子進程,每個子進程響應多個請求,基于事物管理; 

I/O模型;

同步:synchronous 
異步:asynchronous 
關注的是消息通知機制; 
消息通知:
同步:等待對方返回消息; 
異步; 被調用者能過狀態,通知或回調通知調用者 

狀態:調用者每隔一段時間就需要檢查一次; 

阻塞/非阻塞 
調用者等待結果返回之前年處的狀態; 
阻塞:block調用結果返回之前,調用者會被掛起; 
非阻塞:nonblock調用結果返回之前,調用者不會被掛起 

I/O:

網絡IO:本質是socket讀?。?nbsp;
磁盤IO:流; 

每次IO,都不會經由兩個階段 ;
第一步; 數據先回載至內核內存空間; 
第二步; 數據從內核緩沖區復制到用戶空間的進程的內存中付出 ;

等待數據準備完成; 

數據內核復制進程 ;

二、Nginx簡明:

特性:

采用模塊化設計,較好的擴展性; 
高可靠性  master/worker 
支持熱部署:不停機更新配置文件、更換日志文件、列新服務器版本 
低內存消耗:10000個keep-alive連接模式下的非活動連接僅消耗2.5M內存; 
event-dreiven,aio,mmap 
基本功能; 
靜態資源的web服務器
http協議反向代理服務器;
pop3/imap4協議反向代理服務器; 
FastCgi,uWSCGI等協議; 
模塊化(非DSO),有zip,ssl,…;

web服務器相關的功能; 

虛擬主機、keepalive、訪問日志、url rewrite 、路徑別名、基于ip及用戶的訪問控制; 
支持速率限制及并發數限制,…; 
Nginx的程序架構:
master/worker 
一個master進程,可生成一個或多個worker進程; 
master;加載配置文件、管理worker進程、平滑升級、… 
worker:http服務、http代理、fstcgi代理 … 
緩存對象的相關數據
cache loader 載入緩存對象 
cache manager 管理緩存對象 
模塊類型
核心模塊;core module 
標準模塊: Standard HTTP modules Optional HTTP moduels Mail modules 3rd party modules ; 
nginx一般用于靜態資源的web服務器 http協議反向代理
nginx高度模塊:高度模塊化,但其模塊早期不支持DSO機制; 近期版本支持動態裝載和動態卸載 
nginx的功用; 
靜態的web資源服務器; (圖片服務器,或js/css/html/txt等靜態的資源服務器)
結合FastCGI/uwCGI/SCGI等協議反代動態資源請求 
http/https協議的反向代理 ; 
imap4/pop3協議的么向代理 ; 
tcp/udp協議的請求轉發; 

三、LNMP環境的搭建 (nginx+php-fpm):基于fastcgi 

CGI全稱為公共網關接口(Common Gateway Interface)
php-fpm 工作方式:(類似于httpd的prefork)
listen=127.0.0.1:9000
listen.allowed_clients=127.0.0.1 
pm=dynamic |static  
pm.start_servers:啟動fpm進程時啟動的工作進程數量; 
pm.min_spare_server:最少空閑進程數; 
pm.max_children:最大工作進程數; 
user=USERNAME 
group=GROUPNAME 

fastcgi模塊指令; 
fastcgi_pass address;
address是fpm服務器監聽的地址和端口; 
示例:fastcgi 127.0.0.1:9000; 
fastcgi_index name; fastcgi應用的主面名稱; 
fastcgi_param parameter avlue [if_not_empty];
傳遞給fpm服務器的參數及其值 
path:文件系統路徑,用于存儲緩存的文件數據 ; 
max_size=size:定義此路徑下的多大空間用于存儲緩存數據 ; 
levels=#[:#[:#]]:緩存目錄層級定義; 
levels=1:2 
key_zone=name:size  
內存中用于緩存k/v映射關系的空間名稱及大?。?nbsp;
inactive=time  
注意:只能定義在httpd上下文; 
fastcgi_cache zone | off; 
是否啟用cache,如果啟用; 
fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=fcgicache:10m; 
在location中調用; 
fastcgi_cache fcgicache; 
fastcgi_cache_key string; 
定義要使用的緩存鍵; 
例如:fastcgi_cache_key $request_uri; 
fastcgi_cache_methods GET | HEAD |POST…; 
緩存哪些類型的請求的相關數據; 
fastcgi_cache_min_users number; 
fastcgi_cache_valid [code…] time; 
對不同響應碼設定其可緩存時長; 
注意:調用緩存時,至少應該指定三個參數; 
fastcgi_cache 
fastcgi_cache_key 
fastcgi_cache_valid 

配置拓撲

Nginx lnmp環境及https的實現

安裝: 

# yum -y install php-fpm php-mysql php-mbstring php-gd php-xml nginx mariadb  
# rpm -ql php-fpm 可以查看其生成的文件 
# systemctl start php-fpm mariadb nginx 
# vim /etc/nginx/conf.d/defult.conf 
修改 
location / {
root   /usr/share/nginx/html;
index  index.html index.htm index.php;
} 

添加

   location ~ \.php$ {
root           /usr/share/nginx/html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;
include        fastcgi_params;
} 

# vim /usr/share/nginx/html/index.php 
<h1>www.rj.com NODE2</h1>
<?php
$link=mysql_connect("localhost","root","centos.123");
if(!$link)echo"CNONNECT FILED!";
else echo "CAN CNONNECT !";
?>

訪問http://172.16.23.10/index.php后可以看到CAN CNONNECT字樣時,表示php可以正常解析,并能夠連接到mysql

Nginx lnmp環境及https的實現

下載wordpress-4.3.1-zh_CN.zip
# cp wordpress-4.3.1-zh_CN.zip  /usr/share/nginx/html/
# cd /usr/share/nginx/html/
# unzip wordpress-4.3.1-zh_CN.zip 
# cp -a ./wordpress/* . 
# cp wp-config-sample.php wp-config.php -a
mysql>  CREATE DATABASE word;
mysql>  GRANT ALL ON word.* TO 'rj'@'localhost' IDENTIFIED BY 'centos';
mysql>  GRANT ALL ON word.* TO 'rj'@'127.0.0.1' IDENTIFIED BY 'centos';
# vim wp-config.php 修改以下字段
define('DB_NAME', 'word');
/** MySQL數據庫用戶名 */
define('DB_USER', 'rj');

/** MySQL數據庫密碼 */
define('DB_PASSWORD', 'centos');

/** MySQL主機 */
define('DB_HOST', 'localhost');

/** 創建數據表時默認的文字編碼 */
define('DB_CHARSET', 'utf8');

/** 數據庫整理類型。如不確定請勿更改 */
define('DB_COLLATE', '');

而后輸入以下地址進行安裝http://172.16.23.10/wp-admin/ 

安裝完之后,訪問可得到以下結果

Nginx lnmp環境及https的實現

這樣wordpress就可以安裝成功了; 

四、nginx https的實現,并為之提供phpmyadmin 

生成自簽證明證書 

# touch /etc/pki/CA/index.txt 
# echo 01 > /etc/pki/CA/serial 
# cd /etc/pki/CA/ 
# (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 
# cd /etc/pki/ca/private/ 
注:此處的國家為CN 、省份為BJ 、 城市為BJ 公司為rj  部門為rj 主機名為www.rj.com 
# opessl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem 
生成證明請求 
# mkdir /etc/nginx/ca
# (umaask 066;openssl genrsa -out /etc/nginx/ca/nginx.key 1024)
注:此處所要填寫的內容前四項要與之對應一致,主機名要與使用的主機名一致 
# openssl -req -new -key /etc/nginx/ca/nginx.key -out nginx.csr -days 3650 
自簽名 
# openssl -ca in /etc/nginx/ca/nginx.csr -out /etc/nginx/ca/nginx.crt -days 3650

如以下所示便生成了自簽名的證書

Nginx lnmp環境及https的實現

在windows中測試時需要導入證書 

Nginx lnmp環境及https的實現

sz /etc/pki/CA/cacert.pem 

在windows將cacert.pem重命名為cacert.crt 
配置nginx 

vim /etc/nginx/conf.d/openssl.conf 
server {
listen       443 ssl;
server_name  www.rj.com:441;
ssl on ;
ssl_certificate /etc/nginx/ca/nginx.crt;
ssl_certificate_key /etc/nginx/ca/nginx.key;
location / {
root   /usr/share/nginx/ssl;
index  index.html index.htm index.php;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /usr/share/nginx/ssl;
}
location ~ \.php$ {
root           /usr/share/nginx/ssl;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/ssl/$fastcgi_script_name;
include        fastcgi_params;
}
}
# ssl -tnl 查看443端口是否啟用 
開始初裝phpmyadmin 
# cp phpMyAdmin-4.0.5-all-languages.zip /usr/share/nginx/ssl/ 
# unzip phpMyAdmin-4.0.5-all-languages.zip 
# cp config.sample.inc.php  config.inc.php -a
此時直接訪問會報錯的
vim /etc/php.ini進行配置 
修改以下字段
session.save_path = "/var/lib/php/session"
session.auto_start = 1
# chmod 0777 /var/lib/php/session/
# chown nginx:nginx /var/lib/php/session 

此時訪問http://www.rj.com 時為wordpress

Nginx lnmp環境及https的實現 

當訪問https://www.rj.com時為phpmyadmin 

Nginx lnmp環境及https的實現

原創文章,作者:renjin,如若轉載,請注明出處:http://www.www58058.com/69304

(0)
renjinrenjin
上一篇 2014-09-17
下一篇 2014-10-03

相關推薦

  • Linux獲取命令幫助的途徑

    在學習和使用Linux的過程中,免不了會遇到一些我們不熟悉或者不知道的命令。對于這些我們不熟悉的命令,就需要查找幫助文檔來獲取更多信息來協助我們完成相關的工作。 如何獲取Linux命令的使用幫助? 1.  針對內部命令 help [命令名] 2.  針對外部命令 [命令名] –help,    獲取簡要幫助…

    Linux干貨 2017-09-01
  • Linux用戶權限管理和信息查找

    這里給大家介紹一下基本的一些用戶管理的命令。       基于這些命令演示一下例題如下:      復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost&nbs…

    Linux干貨 2016-11-20
  • 自我介紹

    個人簡介     基本信息:     何秋雨,男,安徽人,22歲,初中學歷 工作經驗:     目前就職于南京的一家互聯網公司做Java Web 開發,大概有一年半的工作經驗。工作內容包括前端和Java后端兩個部分。 個人愛好:   &nb…

    Linux干貨 2016-08-08
  • Linux磁盤陣列RAID以及mdadm實現軟件RAID

    一、概要 RAID(磁盤陣列):由眾多價格較便宜的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果來提升整個磁盤的性能。 二、RAID的級別及其優缺點 讀性能提升 寫性能提升 容錯能力 組合后空間大小 RAID0 上升 上升 無 n*單個磁盤大小 RAID1 上升 下降 有(最多壞一塊磁盤) 1*單個磁盤大小 RAID4 上升 上升 有(…

    2015-04-20
  • 第一周博客作業

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定

    Linux干貨 2018-03-13
欧美性久久久久