天天看點

Centos7 安裝Nginx(OpenResty)、Windows安裝Nginx1、Nginx不同安裝形式分析2.Nginx各種形式安裝3.Nginx進階認知

Nginx是一款高性能的代理、轉發伺服器,目前已經支援4層和7層代理。
OpenResty則是基于Nginx增加Lua的功能,可以友善的實作緩存功能。
           

1、Nginx不同安裝形式分析

安裝形式 安裝難度 優點 缺點 推薦排名 官網
OpenResty Centos一鍵安裝 自帶Https、Lua擴充 不帶開機啟動 1 OpenResty Download Centos
OpenResty Windows一鍵安裝 開機重新開機有難度 不帶開機啟動 2 OpenResty Windows
Nginx Centos yum一鍵安裝 簡單,自帶https,開機啟動 定制麻煩 3 nginx: download Stable
Nginx Centos 手工編譯 麻煩,慢;編譯時候可以自己把子產品如:https編譯進去 定制友善 4
Nginx Centos 手工編譯(簡化版本) 簡單,慢;編譯時候可以自己把子產品如:https編譯進去 定制友善 5
Nginx Windows版本 簡單,直接解壓;開機自動動麻煩 6

2.Nginx各種形式安裝

2.0 nginx前置使用者建立

我們安裝nginx、tomcat等,建議使用自己賬号建立,不推薦使用root使用者;
尤其是tomcat
           
  1. 新增tomcat使用者

    useradd tomcat

  2. 将tomcat目錄owner改為tomcat

    chown -R tomcat:tomcat /usr/local/tomcat9 #把已有的目錄變成tomcat的權限

2.1 OpenResty Centos7 yum安裝

直接檢視官網最新的安裝指令。http://openresty.org/cn/linux-packages.html 
搜尋Centos
           

你可以在你的 CentOS 系統中添加

openresty

倉庫,這樣就可以便于未來安裝或更新我們的軟體包

(通過

yum check-update

指令)。

運作下面的指令就可以添加我們的倉庫(對于 CentOS 8 或以上版本,應将下面的

yum

都替換成

dnf

):

2.1.1 add the yum repo

# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/

# update the yum index:
sudo yum check-update
           

2.1.2 yum install

然後就可以像下面這樣安裝軟體包,比如

openresty

sudo yum install -y openresty
           

如果你想安裝指令行工具

resty

,那麼可以像下面這樣安裝

openresty-resty

包:

sudo yum install -y openresty-resty
           

指令行工具

opm

openresty-opm

包裡,而

restydoc

工具在

openresty-doc

包裡頭。

列出所有

openresty

倉庫裡頭的軟體包:

2.1.3 檢視openresty的軟體包

sudo yum --disablerepo="*" --enablerepo="openresty" list available
           

2.1.4 設定開機自動啟動

指令1編輯啟動檔案

vim /etc/rc.d/rc.local

,敲入下面腳本

#編輯開機啟動檔案,加入對應的指令
nohup bash /usr/local/tomcat9/bin/startup.sh &>/dev//null &  #tomcat開機啟動
nohup ntpdate   stdtime.gov.hk #開機自動校準時間,首先自己要在指令行執行一次,試一下。看是否OK
/usr/local/redis-5.0.8/src/redis-server  /usr/local/redis-5.0.8/redis.conf #redis 開機
/usr/local/openresty/nginx/sbin/nginx &>/dev//null &  #啟動openresty
           

必須記得給rc.local權限

chmod +x /etc/rc.d/rc.local

檢視rc-local:

systemctl status rc-local

systemctl restart rc-local

2.1.5 更細指令

openresty -t #valid 
 openresty -s reload #reload 
           

2.2 Windows 安裝 nginx/OpenResty

下載下傳直接解壓就可以使用,也不需要安裝其他插件。
           

主要點:預設不帶開機啟動,需要自己進行配置開機啟動。

參考,親測可以-推薦 使用windows 任務計劃 ui界面操作:Nginx伺服器 & windows 設定自動(開機 or 定時)啟動

參考,親測可以執行-有點麻煩:window 怎麼樣讓nginx開機自啟動

2.3 Centos7自動使用yum安裝

參考:CentOS7中使用yum安裝Nginx的方法,直接一鍵安裝nginx.

安裝完畢,通過

where nginx

或者

find -name nginx

檢視配置conf檔案目錄、日志目錄等

2.4 Centos7自己編譯安裝

參考:Centos7安裝Nginx實戰

參考2: CentOS7安裝Nginx及配置

2.4.1 下載下傳nginx for linux軟體包

到Nginx官網下載下傳最新的nginx包,zip 或者 tar.gz 都可以.

wget --no-check-certificate https://nginx.org/download/nginx-1.23.1.tar.gz
#https://nginx.org/download/nginx-1.20.2.tar.gz
#wget https://nginx.org/download/nginx-1.18.0.tar.gz
#wget https://nginx.org/download/nginx-1.16.1.tar.gz
#wget https://nginx.org/download/nginx-1.14.2.tar.gz  
## 下載下傳要使用:https,不要使用 http
#老版本,之前自己用的最多的,目前不用了;
#目前更新使用用1.16 (環普東r 項目使用);
#最新更新使用1.18 (yulin B環境) 有漏洞
#最新更新使用1.20 (baoj)
#最新更新使用1.22 (jiankang xi an)
           

然後解壓,

tar -xvzf nginx-1.23.1.tar.gz

或者 `unzip nginx-1.23.1.zip

2.4.2 前置1 C++編譯環境

前置安裝1:C++

ububtu平台編譯環境可以使用以下指令

apt-get install build-essential

apt-get install libtool

centos平台編譯環境使用如下指令

安裝make:

yum -y install gcc automake autoconf libtool make

安裝g++:

yum install gcc gcc-c++

2.4.2 前置2 PCRE庫

$ cd /usr/local/
 
$ wget --no-check-certificate  http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
 
$ tar -zxvf pcre-8.33.tar.gz
 
$ cd pcre-8.33
 
$ ./configure
 
$ make && make install
 
#如報錯:configure: error: You need a C++ compiler for C++ support
#解決:yum install -y gcc gcc-c++
           

2.4.3 前置3: openssl

$ cd /usr/local/
 
$ #wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz --no-check-certificate  ### 不驗證證書, nginx1.18和之前用的這個版本。
$ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz --no-check-certificate  ### 不驗證證書, nginx.1.20 需要最新的這個班;
 
$ tar -zxvf openssl-1.1.1k.tar.gz
 
$ cd  openssl-1.1.1k
 
$ ./config         【這個一步完成一定看一下是否有報錯】
 
$ make && make install   【這一步很慢的,慢慢等】
 
 
#按照完成我們檢視一下版本:openssl version   ,如果報錯,我們繼續下面
#檢測指令是否有軟連接配接:dd $(which /usr/local/nginx/sbin/nginx)  
#我們建立軟連接配接:
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1  
ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
#執行完,我們再次檢視版本
openssl version ## OpenSSL 1.1.1k  25 Mar 2021
           

2.4.4 前置4 zlib庫安裝

#安裝zlib庫存
$ cd /usr/local/
$ wget https://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ ./configure
$ make && make install
           

2.4.5 編譯nginx

cd /usr/local/nginx/nginx-1.20.2/

進入目錄

–prefix: 是編譯後nginx放置的根目錄,自己選擇

./configure \
--user=nobody \
--group=nobody \
--prefix=/usr/local/nginx/ \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-openssl=/usr/local/openssl-1.1.1k \
--with-http_ssl_module \
--with-stream \
--with-mail \
--with-mail_ssl_module
 
###這裡編譯環境總是找不到openssl,這裡手工指定一下位置 
### 後面的參數都是, 可以删除 或者 添加的 
(--with-http-ssl-module 這個不加後面在nginx.conf配置ssl:on後,啟動會報,是為了支援https, 
不添加報錯:nginx: [emerg] unknown directive "ssl" in /opt/nginx/conf/nginx.conf 異常 )
(--with-stream是為了支援4層基于端口的代理; 平時用都是7層的。可選)
(--with-mail    #該選項用于啟用mail子產品,該子產品預設沒有被激活。可選)
(--with-mail_ssl_module \    #為了代理任何一種類型的使用SSL/TLS的mail,激活該子產品。可選)
 
【這裡是指定編譯的時候把相關的子產品安裝到nginx裡面。】  
編譯參數說明: Nginx:編譯安裝/動态添加子產品 https://www.cnblogs.com/Dy1an/p/11227796.html
【編譯這一步必須不能報錯,如果報錯,檢查完成】
 
make & make install
【這步完成會從新生成一個目錄/usr/local/nginx】 make挺慢的,一般make指令最後會卡頓,提示:#這裡經常出現這樣的提示  make[1]: 離開目錄“/usr/local/nginx/nginx-1.20/nginx-1.20.2”  #不用理睬 就可以
 
make install 最後我們再次執行一下這個指令,就OK了
 
--------------------------------
--------------------------------
安裝完成, 會重新産生一個目錄 /usr/local/nginx,并生成 sbin、conf等目錄。
裡面就是 nginx可執行檔案; 以前的 /usr/local/nginx-1.16.1可以删除了
           

2.4.6 開機啟動配置

手工安裝就是麻煩,還得自己設定開機啟動配置。
           

開機啟動腳本方式1: centos7.x設定nginx開機自啟動

開啟啟動腳本方式2: CentOS下設定nginx開機自動啟動和chkconfig管理

開啟啟動腳本方式3:同openResty開機自動,

rc.local

寫入啟動指令

原來

systemctl status nginx.service

service nginx.service status

這兩種指令是等價的

在這三種都已經使用過

2.5 Centos7自己編譯安裝 (簡化版本)

liang哥提供
           

2.5.1 yum 一鍵安裝nginx 所有依賴

yum -y install make gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel
           

2.5.2 編譯安裝nginx

  1. 解壓Nginx程式包

    到Nginx官網下載下傳最新的nginx包,zip 或者 tar.gz 都可以.

    放到:

    /usr/local/nginx/

wget --no-check-certificate   https://nginx.org/download/nginx-1.22.0.tar.gz
#wget --no-check-certificate   https://nginx.org/download/nginx-1.20.2.tar.gz
#wget https://nginx.org/download/nginx-1.18.0.tar.gz
#wget https://nginx.org/download/nginx-1.16.1.tar.gz
#wget https://nginx.org/download/nginx-1.14.2.tar.gz  
## 下載下傳要使用:https,不要使用 http
#老版本,之前自己用的最多的,目前不用了;
#目前更新使用用1.16 (環普東r 項目使用);
#最新更新使用1.18 (yulin B環境)
#最新更新使用1.20 (baoj)
           

然後解壓,

tar -xvzf nginx-1.22.0.tar.gz

或者

unzip nginx-1.22.0.tar.gz

  1. 配置
# 預設安裝在:/usr/local/nginx
./configure --with-http_ssl_module --with-http_stub_status_module
           
  1. 編譯并安裝
  1. 将原先的配置檔案和應用程式拖動過去

2.6 nginx完全解除安裝删除

參考:nginx完全解除安裝删除

3.Nginx進階認知

3.1 NGINX 啟動

#linux常用指令
#1: 啟動
./nginx  #适合手工安裝;如果不指定-c,nginx在啟動時預設加載conf/nginx.conf檔案,此檔案的位址也可以在編譯安裝nginx時指定./configure的參數(--conf-path= 指向配置檔案(nginx.conf))
#或者
./nginx -c /usr/local/nginx/conf/nginx.conf  #适合yum安裝
#2: 驗證配置檔案是否正确
nginx -t
#3:  重置加載配置檔案
nginx -s load
#4: 檢視是否啟動成功
ps -ef | grep nginx #有master和worker兩個程序證明啟動成功

#5: 檢視nginx 版本 和 安裝的子產品 
nginx -v #隻檢視版本
nginx -V #檢視版本,和編輯的子產品有哪些
           

3.2 NGINX linux 停止

  1. 暴利kill(不推薦使用)

    kill -9 processId

  2. 快速停止

    cd /usr/local/nginx/sbin && ./nginx -s stop

    此方式相當于先查出nginx程序id再使用kill指令強制殺掉程序
  3. 完整停止(建議使用)

    cd /usr/local/nginx/sbin && ./nginx -s quit

    此方式停止步驟是待nginx程序處理任務完畢進行停止,更簡單:

    pkill -9 nginx

3.2 NGINX windows 停止

1: windows 殺程序

windows殺nginx程序:

taskkill /fi "imagename eq nginx.EXE" /f

windowsnginx啟動:

nginx.exe

windows重新加載配置:

nginx.exe -s reload

windows驗證配置:

nginx.exe -t

2:如何檢視日誌

windows:

Get-Content -wait "D:\server\tomcat8.5.8081\logs\hiber\hiber_business.log"

linux:

tail -f xx.log

3.3 常見報錯

  1. ./nginx 啟動報錯 [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)

    需要檢視下是不是在/var/run檔案夾下不存在nginx檔案夾,不存在則建立

  2. nginx在reload時候報錯invalid PID number的解決方法

    參考:nginx在reload時候報錯invalid PID number的解決方法

3.4 負載均衡政策

Nginx負載均衡權重,ip_hash、

nginx已經安裝好了,在安裝新的插件 nginx負載均衡fair子產品安裝和配置

3.5 nginx認知

nginx簡介:nginx主要做7層的應用層的反向代理,一般基于url 進行代理。 
4層的反向代理,比如LVS或者haproxy, 當然最新版的nginx也慢慢支援4層基于端口的映射了。
nginx反向代理:平時我們用nginx都是反向代理,反向代理是代理的server端,比如server有多台局域  網   的伺服器。

nginx正向代理:正向代理代理的是client端,
 eg1 伺服器在内網,需要内網要通過163郵箱伺服器進行發    送郵箱;eg2: 科學的上網
           

3.6 https 證書

參考:Tomcat 或者 Nginx 配置 Https ~ 域名 ssl證書

3.7 nginx 增加 4層代理

參考:nginx 4層代理配置

3.8 nginx.conf 配置檔案

配置檔案1: [QCURE.nginx.conf ]github、gitee)

配置檔案2:[Bgyiot nginx.config ]github、gitee

4 nginx 常見錯誤代碼

  1. 上傳檔案過大504
  2. 請求響應太慢導緻504
  3. 後端代理服務挂掉 處理不過來,導緻502

5 nginx增加lua插件/更新版本

針對已經安裝的nginx,增加:lua插件

參考:nginx 中添加 lua 子產品,支援lua腳本以及遇到的坑

nginx openresty-luajit2 ngx_devel_kit lua-nginx-module
nginx 1.22 openresty/luajit2 v0.3.1 openresty/lua-nginx-module

5.1 下載下傳安裝openresty-luajit2

#1、下載下傳luajit2
# Github: https://github.com/openresty/luajit2/archive/refs/tags/v2.1-20220915.tar.gz
# 官網太慢,這裡使用:代理位址,根據情況後期換成其他代理位址
cd /usr/local && wget https://download.yzuu.cf/openresty/luajit2/archive/refs/tags/v2.1-20220915.tar.gz -O luajit2-v2.1-20220915.tar.gz

# 2、解壓檔案,進入檔案夾
tar xzvf luajit2*.tar.gz && cd luajit2*

# 3、安裝檔案 (大概60s),檔案按照到了 /usr/local/luajit 目錄
make install PREFIX=/usr/local/luajit

#4、添加環境變量!
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.1

# 需要添加ln,link連結
# 否則在 ./nginx -t的時候報錯:error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
## 主要:ln 源檔案 目标文連結,源檔案必須檔案,不能是連結位址
cd /usr/local/luajit/lib/ && ls -l && ln /usr/local/luajit/lib/libluajit-5.1.so.2.1.0  /lib64/libluajit-5.1.so.2
           
Centos7 安裝Nginx(OpenResty)、Windows安裝Nginx1、Nginx不同安裝形式分析2.Nginx各種形式安裝3.Nginx進階認知

5.2 下載下傳解壓ngx_devel_kit

# 1、下載下傳檔案
# 原始位址:https://github.com/simpl/ngx_devel_kit/archive/v0.3.1.tar.gz
# 原始github,太慢可通過代理位址下載下傳
cd /usr/local/ && wget https://download.yzuu.cf/simpl/ngx_devel_kit/archive/v0.3.1.tar.gz -O ngx_devel_kit-v0.3.1.tar.gz

# 2、解壓檔案,進入檔案夾
tar -xzvf ngx_devel_kit-*.tar.gz && cd ngx_devel_kit-*
           

5.3 下載下傳解壓lua-nginx-module【不要輕易更新版本】

!!!切記,切記,這裡暫時不要更新新的版本,會有問題。
# 1、下載下傳解壓檔案
# 原始Github位址:https://github.com/openresty/lua-nginx-module/archive/refs/tags/v0.10.22.tar.gz
# 原始位址太慢,這裡使用代理位址
cd /usr/local/ && wget https://download.yzuu.cf/openresty/lua-nginx-module/archive/refs/tags/v0.10.9rc7.tar.gz -O lua-nginx-module-v0.10.9rc7.tar.gz

# 2、解壓檔案
tar -xzvf lua-nginx-module-*.tar.gz
           

5.4 安裝lua-devel

yum install lua-devel -y

5.5 對nginx重新進行一次編譯安裝

#1、對已經安裝的nginx,對配置conf檔案夾、conf檔案夾進行備份
cd /usr/local/nginx/ && cp -rf conf/ conf_bak/ && cp -rf conf/ conf_bak/

#2、進入之前的nginx源檔案解壓目錄 
cd /usr/local && wget https://nginx.org/download/nginx-1.22.0.tar.gz && tar -zxvf nginx-1.22.0.tar.gz && cd /usr/local/nginx-1.22.0

#3、進行源碼檔案目錄進行 configure,之前的安裝的插件一定要包含在配置清單中
## 執行完畢,仔細檢視有沒有報錯,有報錯必須解決,否則無法進行下一步,如:缺少xxx包
## 執行完畢,會有一個插件彙總Summery
./configure \
--prefix=/usr/local/nginx/ \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-stream \
--with-pcre \
--add-module=/usr/local/lua-nginx-module-0.10.9rc7 \
--add-module=/usr/local/ngx_devel_kit-0.3.1


#4、進行make
make

#5. 進行make install
# 執行成功,發現多了:/usr/local/nginx/sbin/nginx.old,其他檔案并沒有丢失
# 并且發現安裝了,新版本,老版本照樣運作;
make install 
           

5.6 驗證lua是否安裝成功

###在server子產品裡面,随便找個地方添加下面的代碼,并儲存
location /lua {
            default_type 'text/plain';

            content_by_lua 'ngx.say("hello, lua")';
         }
      
# 必須殺掉nginx程序(這裡是在:已有nginx上面更新,必須要先殺掉nginx程序)
cd /usr/local/nginx/sbin && ps -ef | grep nginx && echo 'stop nginx (請觀察前後程序變化) ....' && ./nginx -s stop && ps -ef | grep nginx

## 殺死nginx程序,重新啟動
cd /usr/local/nginx/sbin/ && ./nginx -c /usr/local/nginx/conf/nginx.conf      
      
#  重新加載配置檔案
 cd /usr/local/nginx/sbin/ && ./nginx -t && ./nginx -s reload

# 測試lua腳本,正常會列印:hello,lua
curl http://localhost:80/lua/
           

繼續閱讀