Nginx 程式作為一款輕量級的網站服務軟體,因其穩定性和豐富的功能而快速佔領伺服器市 場,但 Nginx 最被認可的還當是系統資源消耗低且併發能力強,因此得到了國內諸如新浪、 網易、騰訊等門戶站的青睞。
特點:
支援高併發,能支援幾萬併發連線
資源消耗少,在3萬併發連線下開啟10個nginx執行緒消耗的記憶體不到200M
可以做http反向代理和負載均衡
支援非同步網路i/o事件模型epoll
1.安裝準備
一. gcc 安裝 安裝 nginx 需要先將官網下載的原始碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝: yum install gcc-c++ 二. PCRE pcre-devel 安裝 PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 相容的正規表示式庫。nginx 的 http 模組使用 pcre 來解析正規表示式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。命令: yum install -y pcre pcre-devel 三. zlib 安裝 zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。 yum install -y zlib zlib-devel 四. OpenSSL 安裝 OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程式供測試或其它目的使用。 nginx 不僅支援 http 協議,還支援 https(即在ssl協議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
2.安裝啟動
1.下載原始碼包
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
2.解壓縮原始碼tar -zxvf nginx-1.12.0.tar.gz
3.配置,編譯安裝 開啟nginx狀態監測功能./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module make && make install
4.啟動nginx,進入sbin目錄,找到nginx啟動命令
cd sbin./nginx
#啟動.
/nginx -s stop
#關閉./nginx -s reload
#重新載入
3.檢測服務
netstat -tunlp |grep 80 curl -I 127.0.0.1 #如果訪問不了,檢查selinux,iptables
4.部署web站點
nginx預設站點是Nginx目錄下的html資料夾,這裡可以從nginx.conf中查到
location /{
root html; #這裡是預設的站點html資料夾,也就是 /opt/nginx1-12/html/資料夾下的內容
index index.html index.htm; #站點首頁檔名是index.html
}
如果要部署網站業務資料,只需要把開發好的程式全放到html目錄下即可
[root@oldboy_python /tmp 11:34:52]#ls /opt/nginx1-12/html/
index.html jssts.jpeg lhy.mp4 man.jpg wget-log
透過域名或者資源訪問
http://www.pyyuc.cn/man.jpg
目錄結構:
- conf 存放nginx所有配置檔案的目錄,主要nginx.conf
- html 存放nginx預設站點的目錄,如index.html、error.html等
- logs 存放nginx預設日誌的目錄,如error.log access.log
- sbin 存放nginx主命令的目錄,sbin/nginx
5.Nginx配置檔案
Nginx主配置檔案/etc/nginx/nginx.conf
是一個純文字型別的檔案,整個配置檔案是以區塊的形式組織的。一般,每個區塊以一對大括號{}
來表示開始與結束。
CoreModule核心模組 user www; #Nginx程序所使用的使用者 worker_processes 1; #Nginx執行的work程序數量(建議與CPU數量一致或auto) error_log /log/nginx/error.log #Nginx錯誤日誌存放路徑 pid /var/run/nginx.pid #Nginx服務執行後產生的pid程序號
events事件模組 events { worker_connections //每個worker程序支援的最大連線數 use epool; //事件驅動模型, epoll預設 }
http核心模組 //公共的配置定義在http{} http { //http層開始 ... //使用Server配置網站, 每個Server{}代表一個網站(簡稱虛擬主機) 'server' { listen 80; //監聽埠, 預設80 server_name localhost; //提供服務的域名或主機名 access_log host.access.log //訪問日誌 //控制網站訪問路徑 'location' / { root /usr/share/nginx/html; //存放網站程式碼路徑 index index.html index.htm; //伺服器返回的預設頁面檔案 } //指定錯誤程式碼, 統一定義錯誤頁面, 錯誤程式碼重定向到新的Locaiton error_page 500 502 503 504 /50x.html; } ... //第二個虛擬主機配置 'server' { ... } include /etc/nginx/conf.d/*.conf; //包含/etc/nginx/conf.d/目錄下所有以.conf結尾的檔案 } //http層結束