Nginx 安裝和操作
Nginx 安裝和操作
1.常用功能
- HTTP代理和反向代理
- 負載均衡
- Web快取
2.伺服器安裝部署
cd /opt/software
mkdir nginx
cp nginx-1.2.3.tar.gz nginx/
cd nginx
tar xf nginx-1.2.3.tar.gz
cd nginx-1.2.3
ls -l
2.1安裝包目錄
目錄 | 說明 |
---|---|
src | Nginx 原始碼 |
man | Nginx 幫助文件 |
html | 存放靜態網頁文件 |
conf | Nginx 配置檔案 |
auto | 指令碼檔案 |
configure | Nginx 自動指令碼程式 |
配置生成Makefile
./configure --prefix=/nginx
--prefix
指定了Nginx 軟體安裝目錄為剛建立的ngnix目錄。
編譯
make
安裝
make install
如果在沒有改動原始碼的情況下,需要重新編譯和安裝Nginx 軟體,就不必再使用 configure 指令碼自動生成 Makefile 了。
可以先使用以下命令刪除上次安裝的 Nginx 軟體:
rm -rf /nginx/*
然後定位到nginx-1.2.3.tar.gz 解壓目錄,清除上次編譯的遺留檔案:
cd /nginx/nginx-1.2.3/; make clean
之後再使用以下命令進行編譯和安裝:
make; make install
到此,我們就安裝好了一個最基本的Nginx伺服器了。
2.2 Nginx 伺服器安裝目錄
目錄 | 說明 |
---|---|
sbin | 只有一個nginx 檔案,這就是Nginx伺服器的主程式 |
conf | Nginx 所有配置檔案 |
html | 存放靜態網頁檔案 |
logs | 日誌資料夾 |
3.Nginx 服務的啟停
3.1 服務的訊號控制
Nginx 服務在執行時,會保持一個主程序和一個或多個worker process 工作程序。
我們通過給Nginx 服務的主程序傳送訊號就可以控制服務的啟停了。
如何給主程序傳送訊號呢?
首先得知道主程序的程序號PID。
獲取PID有兩種方法:
- 檔案檢視PID。啟動Nginx 服務後,預設在Nginx 伺服器的安裝目錄下的logs目錄中,會產生檔名為
nginx.pid
的檔案,此檔案中保持的就是Nginx服務主程序的PID。 - 命令檢視PID。
ps -ef |grep nginx
可以檢視master process
主程序的PID。
向Nginx 服務主程序傳送訊號的方法。
格式
kill -[SIGNAL] PID
Nginx 服務可接收的訊號
訊號 | 說明 |
---|---|
kill -TERM PID | 快速停止Nginx 服務 |
kill -INT PID | 快速停止Nginx 服務 |
kill -9 PID | 強制關閉Nginx 服務 |
kill -QUIT PID | 平緩停止Nginx 服務 |
kill -HUP PID | 平滑重啟Nginx 服務。使用新的配置檔案啟動程序,之後平緩停止原有程序。 |
kill -USR1 PID | 重新開啟日誌檔案,常用於日誌切割 |
kill -USR2 PID | 平滑升級。使用新版本的Nginx檔案啟動服務,之後平緩停止原有Nginx程序 |
kill -WINCH PID | 平緩停止 worker process,用於Nginx 伺服器平滑升級 |
3.2 Nginx 服務的啟動
啟動Nginx 伺服器直接執行安裝目錄下 sbin 目錄中的二進位制檔案即可。
./sbin/nginx
檢視Nginx 服務的程序狀態
ps -ef |grep nginx
Nginx 的幫助資訊
➜ nginx ./sbin/nginx -h
nginx version: nginx/1.14.0
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /opt/software/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file
3.3 Nginx 服務的停止
停止 Nginx 服務有兩種方法
- 快速停止(TERM 和 INT 訊號用於快速停止)
- 平緩停止(QUIT用於平緩停止)
kill -[TERM | INT | QUIT] PID
強制關閉(不建議使用)
kill -9 PID
3.4 Nginx 服務的重啟
更改Nginx 伺服器的配置和加入新模組後,如果希望當前的Nginx 服務應用新的配置或使用新模組生效,就需要重啟Nginx 服務。
平滑重啟是這樣一個過程:
- Nginx 服務程序接收到訊號後,首先讀取新的Nginx 配置檔案。
- 如果配置語法正確,則啟動新的Nginx服務,然後平緩關閉舊的服務程序。
- 如果新的Nginx 配置有問題,將顯示錯誤,仍然使用舊的Nginx 程序提供服務。
使用以下命令平滑重啟
kill -HUP PID
3.5 伺服器的升級
如果要對當前的 Nginx 伺服器進行版本升級,應用新模組,最簡單的辦法是停止當前 Nginx 服務,然後開啟新的 Nginx 服務,但這樣就會導致在一段時間內,使用者無法訪問伺服器。
為了解決這個問題,Nginx 伺服器提供平滑升級的功能。
平滑升級的過程是這樣的:
- Nginx 服務接收到 USR2 訊號後,首先將舊的 nginx.pid 檔案新增字尾
.oldbin
,變為nginx.pid.oldbin
檔案。 - 然後執行新版本的Nginx 伺服器的二進位制檔案啟動服務。
- 如果新的服務啟動成功,系統中將有新舊兩個Nginx 服務共同提供 Web 服務。
- 之後,需要向舊的 Nginx 服務程序傳送 WINCH 訊號,使舊的 Nginx 服務平滑停止,並刪除
nginx.pid.oldbin
檔案。 - 在傳送 WINCH 訊號之前,可以隨時停止新的 Nginx 服務。
為了實現 Nginx 伺服器的平滑升級,新的伺服器安裝路徑應該和舊的保持一致。
因此建議在安裝新伺服器之前先備份舊伺服器。
如果由於某種原因無法保持新舊伺服器安裝路徑一致,則可以先使用以下命令將舊伺服器的安裝路徑更改為新伺服器的安裝路徑:
./Nginx/nginx -p newInstallPath
其中,newInstallPath 為新伺服器的安裝路徑。之後,備份舊伺服器,安裝新伺服器即可。
做好準備工作後,使用以下命令平滑升級 Nginx 服務。
kill -USR2 PID
通過 ps -ef |grep nginx
檢視新的 Nginx 服務啟動正常。
再使用 WINCH 訊號用於傳送平滑停止舊服務訊號。
kill -WINCH PID
這樣就在不停止提供 Web 服務的前提下完成了 Nginx 伺服器的平滑升級。