環境:centos7 nginx1.16.1(源碼安裝) 一、下載nginx源碼包 地址:http://nginx.org/en/download.html Mainline version(主線版本)Stable version(穩定版本)Legacy versions(傳統老版本) 下載穩定版: ...
環境:centos7 nginx1.16.1(源碼安裝)
一、下載nginx源碼包
地址:http://nginx.org/en/download.html
Mainline version(主線版本)Stable version(穩定版本)Legacy versions(傳統老版本)
下載穩定版:nginx-1.16.1.tar.gz
二、安裝相關依賴
gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel
gcc,gcc-c++ #c,c++編譯器,用來編譯安裝
zlib,zlib-devel #壓縮和解壓的函數庫,網頁文件壓縮要用到它
openssl,openssl-devel #網路通信安全協議庫,包含眾多的密碼演算法、公鑰基礎設施標準以及SSL協議
三、安裝Nginx
(1).解包
[root@izm5e8nyz28va3a786y465z src]# tar -zxvf nginx-1.16.1.tar.gz
(2).編譯配置(進入到解壓的文件夾)./configure --選項
./configure --prefix=/usr/local/nginx1.16.1 --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tem/nginx/client --http-proxy-temp-path=/var/tem/nginx/proxy --http-fastcgi-temp-path=/var/tem/nginx/fcgi --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-openssl
1. 路徑配置(不設置則為預設路徑)
--prefix=/usr/local/nginx1.16.1 #nginx的安裝路徑,所有其它路徑都要依賴該選項
--sbin-path=/usr/sbin/nginx #指定nginx二進位文件的路徑,不指定則:/usr/local/nginx/sbin/nginx
--conf-path=/etc/nginx/nginx.conf #nginx配置文件路徑,不指定則:/usr/local/nginx/conf/nginx.conf
--error-log-path=/var/log/nginx/error.log #nginx錯誤日誌路徑,不指定則:/usr/local/nginx/logs/error.log
--pid-path=/var/run/nginx/nginx.pid #pid文件路徑,不指定則:/usr/local/nginx/logs/nginx.pid
--http-log-path=/var/log/nginx/access.log #http訪問日誌路徑
--http-client-body-temp-path=/var/tem/nginx/client #存儲客戶端請求主主體的臨時目錄
--http-proxy-temp-path=/var/tem/nginx/proxy #存儲代理伺服器接收數據的臨時文件
--http-fastcgi-temp-path=/var/tem/nginx/fcgi # 設置存儲HTTP fastcgi的臨時文件的路徑
2.模塊配置
--http_v2_module #用於支持http2協議
--with-http_ssl_module #用於支持https協議
--with-http_flv_module #視頻直播模塊
--with-http_gzip_module #是nginx預設編譯的模塊,對網頁文件壓縮
--with-http_gzip_static_module #載入gz靜態緩存模塊,開啟後伺服器優先返回gz文件
--with-http_stub_status_module #http服務狀態模塊
3. 其它功能啟用
--with-pcre #開啟正則表達式
--with-openssl #啟用OpenSSL(安全套接字層密碼庫)啟用後可支持https,ssl證書
3.用戶,用戶組配置
--user=www #nginx工作進程的用戶名,預設:user nobody;
nobody 是系統用戶,是一個不能登陸的帳號,一個特殊用途的用戶 ID,uid<500一般都是系統ID
--group=www #nginx工作進程的用戶組,預設:group nogroup
nginx 只有一個主進程和多個工作進程,主進程主要讀取和評估配置文件正確性,以及管理工作進程
工作進程是真正的網路請求處理的進程
(3)編譯
make
(4)安裝
make install
小技巧:安裝nginx後,怎麼加入其它沒有編譯的模塊(不重裝nginx)
1.查看編譯安裝的配置信息:nginx -V
2.進入之前下載並解壓了的源碼包目錄,重新編譯nginx ,在原來配置參數後加上配置信息
./configure --prefix=xxx ..... 回車,再 make
3. 將新生成的nginx二進位文件替換掉原來的nginx二進位文件(停止nginx)
先備份原來的二進位文件:#防止失敗
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak #防止失敗
替換掉原來的二進位文件:新生成的二進位文件 ./objs/nginx
cp ./objs/nginx /usr/local/nginx/sbin
4. 查看是否成功
啟動nginx # nginx -V
四、nginx服務控制
1. 啟動nginx
[root@izm5e8nyz28va3a786y465z tmp]# nginx
nginx: [emerg] mkdir() "/var/tem/nginx/client" failed (2: No such file or directory)
原因:缺少這個文件夾
創建:mkdir -p /var/tem/nginx/client
修改所有者:chown nobody /var/tem/nginx/client
之後,nginx能正常啟動
2. 服務控制
nginx服務在運行時,會保持一個主進程和一個或多個 worker process 工作進程。可以通過給Nginx服務的主進程發送信號來控制服務
2種發送信號的方式:nginx二進位文件 或 kill 命令
nginx命令:
nginx –s stop/start/reload/quit #/停止/啟動/重啟/請求結束後退出
nginx -t #檢測配置文件是否正確
nginx -v #查看nginx編譯時參數
nginx -h #查看nginx命令幫助
nginx -c filename #用來指定啟動Nginx服務使用的配置文件
nginx -g directives #nginx啟動時載入補充的配置文件
kill命令:kill single 主進程號 (實際使用中多用此種方式)
PID #cat /usr/local/nginx/logs/nginx.pid 命令查看 QUIT #平緩停止Nginx服務 TERM或INT #快速停止nginx服務 HUP #使用新的配置文件啟動進程,之後平緩停止原有進程 USR1 #重新打開日誌文件,常用於日誌切割 USR2 #使用新版本的Nginx文件啟動服務,之後平緩停止原有Nginx進程,也就是’平滑升級‘ WINCH #平緩停止舊的 worker process,配合USR2平滑升級 常用組合命令: nginx -HUP #載入原來的配置文件,平滑重啟 nginx -HUP -c newConfFile #載入新的配置文件,平滑重啟 nginx -g -HUP -c newConfFile #載入新的配置文件,平滑重啟,若新的配置文件有錯誤,則報錯,並以老的配置文件啟動nginx nginx -tc filename #檢測指定nginx配置文件 例:[root@izm5e8nyz28va3a786y465z ~]# kill -HUP 6635 3. nginx伺服器升級 如果要對當前的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 -p newInstallPath newInstallPath為新伺服器的安裝路徑。之後備份舊伺服器安裝新伺服器即可 做好準備工作後,使用以下命令實現Nginx服務的平滑升級: nginx -g USR2 或 kill USR2 '/Nginx/logs/nginx.pid' 其中,USR2信號用於發送平滑升級信號,或者使用: 通過 ps -ef | grep nginx 查看新的Nginx服務啟動正常,再使用 nginx -g WINCH --------其中 WINCH 信號用於發送平滑停止舊服務信號,或者 使用: kill WINCH '/Nginx/logs/nginx.pid' 這樣就在不停止提供 Web 服務的前提下完成了 Nginx 伺服器的平滑升級