Nginx服務簡介及編譯安裝詳解
一、Nginx簡介
Nginx是一個自由、開源、高性能及輕量級的HTTP服務器及反向代理服務器,其性能與IMAP/POP3代理服務器相當。Nginx以其高性能、穩定、功能豐富、配置簡單及占用系統資源少而著稱。Nginx 超越 Apache 的高性能和穩定性,使得國內使用 Nginx 作為 Web 服務器的網站也越來越多
二、Nginx工作原理
Nginx由內核和模塊組成,完成工作是通過查找配置文件將客戶端請求映射到一個location block(location是用於URL匹配的命令),location配置的命令會啟動不同模塊完成工作。Nginx模塊分為核心模塊,基礎模塊和第三方模塊。
1、核心模塊包括:HTTP模塊、EVENT模塊(事件)、MAIL模塊。
2、基礎模塊包括:HTTP Access模塊、HTTP FastCGI模塊、HTTP Proxy模塊、HTTP Rewrit模塊。
3、第三方模塊包括:HTTP Upstream Request Hash模塊、Notice模塊、HTTP Access Key模塊。
三、Nginx的性能優勢
1、Nginx作為web服務器可以快速處理靜態文件、索引文件以及自動索引效率高。
2、Nginx作為代理服務器可以進行快速高效的反向代理,提升網站性能。
3、Nginx作為負載均衡器既可以在內部直接支持 Rails 和 PHP 程序對外進行服務, 也可以支持作為
4、Nginx在性能方面,Nginx專為性能優化而開發,性能是其最重要的考量, 實現上非常註重效率。它支持內核Poll模型,能經受高負載的考驗, 有報告表明能支持高達 50000 個並發連接數,並在大並發時占用很低內存。
5、Nginx在穩定性方面,采用分階段資源分配技術,使CPU資源占用率低。官方表示保持10000個沒有活動的連接,它只占2.5M內存,就穩定性而言, nginx比lighthttpd更勝一籌。
6、Nginx在高可用性方面,Nginx支持熱部署。它的啟動特別容易, 並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。
四、編譯安裝Nginx步驟詳解
本次Nginx是在CentOS7.3上進行安裝的。
1、先安裝Nginx需要的各種依賴軟件
[root@localhost ~]# yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel gcc gcc-c++
2、下載Nginx安裝包或者上傳下載好的安裝包到服務器
[root@localhost ~]# wget http://nginx.org/download/nginx-1.12.1.tar.gz
[root@localhost ~]# tar xf nginx-1.12.1.tar.gz
3、創建Nginx運行的用戶和組(組在創建用戶時默認已經創建)
[root@localhost ~]# useradd nginx -s /sbin/nologin -M
4、編譯Nginx需要用到的模塊參數
[root@localhost ~]# cd nginx-1.12.1
[root@localhost nginx-1.12.1]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.12.1 --with-http_stub_status_module --with-http_ssl_module
[root@localhost nginx-1.12.1]# make && make install
5、啟動Nginx服務
[root@localhost nginx-1.12.1]# /usr/local/nginx-1.12.1/sbin/nginx
[root@localhost nginx-1.12.1]# netstat -antp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4627/nginx: master
五、編寫Nginx啟動文件並設置開機自啟
1、編寫Nginx啟動文件,使Nginx可以使用systemctl命令啟動
[root@localhost ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx-1.12.1/logs/nginx.pid
ExecStart=/usr/local/nginx-1.12.1/sbin/nginx
ExecReload=/usr/local/nginx-1.12.1/sbin/nginx -s reload
ExecStop=/usr/local/nginx-1.12.1/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@localhost ~]# systemctl enable nginx.service
[root@localhost ~]# systemctl start nginx.service
2、編寫的配置文件說明
[Unit]:服務的說明
Description:描述服務
After:依賴,當依賴的服務啟動之後再啟動自定義的服務
[Service]服務運行參數的設置
Type=forking是後臺運行的形式
ExecStart為服務的具體運行命令
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務分配獨立的臨時空間
註意:啟動、重啟、停止命令全部要求使用絕對路徑
[Install]服務安裝的相關設置,可設置為多用戶
3、相關命令說明
啟動nginx服務
systemctl start nginx.service
設置開機自動啟動
systemctl enable nginx.service
停止開機自動啟動
systemctl disable nginx.service
查看狀態
systemctl status nginx.service
重啟服務
systemctl restart nginx.service
查看所有服務
systemctl list-units --type=service
Nginx服務簡介及編譯安裝詳解