1. 程式人生 > >Linux之Nginx原始碼編譯安裝,並實現Nginx版本升級,秒級切換和Nginx版本回滾,秒級回退

Linux之Nginx原始碼編譯安裝,並實現Nginx版本升級,秒級切換和Nginx版本回滾,秒級回退

Linux之Nginx原始碼編譯安裝,並實現Nginx版本升級,秒級切換和Nginx版本回滾,秒級回退

1、先檢查Nginx依賴庫(主要4個gcc、pcre、zlib、openssl,通過yum安裝)
2、GCC——GNU編譯器集合(GCC可以使用預設包管理器的倉庫(repositories)來安裝,包管理器的選擇依賴於你使用的Linux釋出版本,包管理器有不同的實現:yum是基於Red Hat的釋出版本;apt用於Debian和Ubuntu;yast用於SuSE Linux等等。)
RedHat中安裝GCC:

yum install gcc

2、PCRE庫(Nginx編譯需要PCRE(Perl Compatible Regular Expression),因為Nginx的Rewrite模組和HTTP核心模組會使用到PCRE正則表示式語法。這裡需要安裝兩個安裝包pcre和pcre-devel。第一個安裝包提供編譯版本的庫,而第二個提供開發階段的標頭檔案和編譯專案的原始碼,這正是我們需要的理由。)
RedHat中安裝PCRE:

yum install pcre pcre-devel

3、zlib庫(zlib庫提供了開發人員的壓縮演算法,在Nginx的各種模組中需要使用gzip壓縮。如同安裝PCRE一樣,同樣需要安裝庫和它的原始碼:zlib和zlib-devel。)
RedHat中安裝zlib:

yum install zlib zlib-devel

4、OpenSSL庫(在Nginx中,如果伺服器提供安全網頁時則會用到OpenSSL庫,我們需要安裝庫檔案和它的開發安裝包(openssl和openssl-devel)。)
RedHat中安裝OpenSSL:

yum install openssl openssl-devel

5、最後我們檢查依賴是都否安裝完成

[[email protected] nginx-1.12.2]# rpm -q  gcc pcre zlib
gcc-4.8.5-28.el7_5.1.x86_64
pcre-8.32-17.el7.x86_64
zlib-1.2.7-17.el7.x86_64
[[email protected] nginx-1.12.2]# 

6、 先建立nginx不可登入型使用者

[[email protected] nginx-1.12.2]# useradd -s /sbin/nologin -M nginx   
//   /sbin/nolong表示不可登入,-M表示在home目錄下沒有使用者nginx的資料夾

7、 解壓縮包(注意檔案歸屬)

# tar -zxvf nginx-1.12.2.tar.gz
# cd nginx-1.12.2
配置,指定安裝路徑、/usr/local/nginx 指定使用者nginx 指定組nginx
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx  

完成後 nginx-1.12.2 目錄下會多一些檔案 例如:Makefile

  • 如果出現報錯: make: *** No rule to make target build', needed bydefault’. Stop.
 //解決辦法是需要安裝openssl以及ncurses元件
# yum install -y openssl*
# yum -y install ncurses-devel
  • 之後再刪除Makefile檔案,重新make生成
#make && make install
//可檢視是否編譯成功,如果輸出為 0 說明是OK 的
[[email protected] nginx-1.12.2]# echo $?    		
0													
[[email protected] nginx-1.12.2]# 

8、 啟動Nginx ,並設定開機自啟

# /usr/local/nginx/sbin/nginx
# systemctl enable nginx
  • 可檢視服務是否啟動
# netstat -antup | grep nginx
  • 檢視nginx佔用的埠,預設是80埠
# ss -lntp|grep nginx

9、 訪問Nginx

  • 訪問前注意關閉防火牆和selinux防火牆
# systemctl stop firewalld.service
# setenfoce 0

在這裡插入圖片描述

10、停止nginx 服務

 #systemctl stop nginx 
 或者 # service stop nginx   
 或者 #  /soft/nginx-1.12.0/sbin/nginx -s stop 
 或者 # pkill nginx

11、Nginx版本升級,秒級切換

 // 前提:已經裝好了別的的版本如:nginx-1.14.0
[[email protected] /]# unlink /nginx && ln -s /soft/nginx-1.14.0/ /nginx && /soft/nginx-1.12.2/sbin/nginx -s stop && /soft/nginx-1.14.0/sbin/nginx 

12、Nginx版本回滾,秒級回退

[[email protected] sbin]# unlink /nginx && ln -s /soft/nginx-1.12.2/ /nginx && /soft/nginx-1.14.0/sbin/nginx -s stop && /soft/nginx-1.12.2/sbin/nginx

ps:
啟動:/usr/local/nginx/sbin/nginx
停止/重新載入:/usr/local/nginx/sbin/nginx -s stop(quit、reload)
驗證配置檔案是否合法:/usr/local/nginx/sbin/nginx -t
命令幫助:/usr/local/nginx/sbin/nginx -h