1. 程式人生 > >Nginx 安裝和操作

Nginx 安裝和操作

Nginx 安裝和操作

1.常用功能

  1. HTTP代理和反向代理
  2. 負載均衡
  3. 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有兩種方法:

  1. 檔案檢視PID。啟動Nginx 服務後,預設在Nginx 伺服器的安裝目錄下的logs目錄中,會產生檔名為nginx.pid 的檔案,此檔案中保持的就是Nginx服務主程序的PID。
  2. 命令檢視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 服務有兩種方法

  1. 快速停止(TERM 和 INT 訊號用於快速停止)
  2. 平緩停止(QUIT用於平緩停止)
kill -[TERM | INT | QUIT] PID

強制關閉(不建議使用)

kill -9 PID

3.4 Nginx 服務的重啟

更改Nginx 伺服器的配置和加入新模組後,如果希望當前的Nginx 服務應用新的配置或使用新模組生效,就需要重啟Nginx 服務。

平滑重啟是這樣一個過程:

  1. Nginx 服務程序接收到訊號後,首先讀取新的Nginx 配置檔案。
  2. 如果配置語法正確,則啟動新的Nginx服務,然後平緩關閉舊的服務程序。
  3. 如果新的Nginx 配置有問題,將顯示錯誤,仍然使用舊的Nginx 程序提供服務。

使用以下命令平滑重啟

kill -HUP PID

3.5 伺服器的升級

如果要對當前的 Nginx 伺服器進行版本升級,應用新模組,最簡單的辦法是停止當前 Nginx 服務,然後開啟新的 Nginx 服務,但這樣就會導致在一段時間內,使用者無法訪問伺服器。

為了解決這個問題,Nginx 伺服器提供平滑升級的功能。

平滑升級的過程是這樣的:

  1. Nginx 服務接收到 USR2 訊號後,首先將舊的 nginx.pid 檔案新增字尾 .oldbin,變為 nginx.pid.oldbin 檔案。
  2. 然後執行新版本的Nginx 伺服器的二進位制檔案啟動服務。
  3. 如果新的服務啟動成功,系統中將有新舊兩個Nginx 服務共同提供 Web 服務。
  4. 之後,需要向舊的 Nginx 服務程序傳送 WINCH 訊號,使舊的 Nginx 服務平滑停止,並刪除 nginx.pid.oldbin 檔案。
  5. 在傳送 WINCH 訊號之前,可以隨時停止新的 Nginx 服務。

為了實現 Nginx 伺服器的平滑升級,新的伺服器安裝路徑應該和舊的保持一致。

因此建議在安裝新伺服器之前先備份舊伺服器。

如果由於某種原因無法保持新舊伺服器安裝路徑一致,則可以先使用以下命令將舊伺服器的安裝路徑更改為新伺服器的安裝路徑:

./Nginx/nginx -p newInstallPath

其中,newInstallPath 為新伺服器的安裝路徑。之後,備份舊伺服器,安裝新伺服器即可。

做好準備工作後,使用以下命令平滑升級 Nginx 服務。

kill -USR2 PID

通過 ps -ef |grep nginx 檢視新的 Nginx 服務啟動正常。

再使用 WINCH 訊號用於傳送平滑停止舊服務訊號。

kill -WINCH PID

這樣就在不停止提供 Web 服務的前提下完成了 Nginx 伺服器的平滑升級。