一、1、安裝openssl,因為編譯安裝nginx需要指定openssl目錄
mkdir /data/openssl -p cd /data/openssl wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
2、解壓並編譯安裝openssl
tar xf openssl-1.1.1d.tar.gz cd openssl-1.1.1d ./config --prefix=/usr/local/openssl --openssldir=/usr/local/ssl make -j 2 make install
3、導出庫文件
echo /usr/local/openssl/lib >> /etc/ld.so.conf.d/openssl.conf ldconfig 檢測版本信息 /usr/local/openssl/bin/openssl version -a OpenSSL 1.1.1d 10 Sep 2019 built on: Mon Dec 9 08:39:59 2019 UTC platform: linux-x86_64 options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG OPENSSLDIR: "/usr/local/ssl" ENGINESDIR: "/usr/local/openssl/lib/engines-1.1" Seeding source: os-specific
4、導出openssl/bin 到PATH 變量
echo 'PATH=/usr/local/openssl/bin:$PATH' >> /etc/profile.d/env.sh source /etc/profile.d/env.sh openssl version OpenSSL 1.1.1d 10 Sep 2019
5、安裝nginx所需的依賴
yum -y install gcc gcc-c++ yum -y install zlib zlib-devel openssl openssl-devel pcre-devel gzip 模塊需要 zlib 庫 rewrite 模塊需要 pcre 庫 ssl 功能需要openssl庫
6、下載nginx安裝包
wget http://nginx.org/download/nginx-1.16.1.tar.gz tar xf nginx-1.16.1.tar.gz cd nginx-1.16.1
7、添加nginx組,用戶
groupadd nginx useradd nginx -g nginx -s /sbin/nologin -M
8、先修改nginx源碼包以下文件,否則在執行初始化配置時會提示“.openssl”相關錯誤
vim /data/nginx-1.16.1/auto/lib/openssl/conf
刪除/.openssl
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
更改為以下內容:
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
9、 初始化配置信息
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_realip_module --with-http_gzip_static_module --with-openssl=/usr/local/openssl
10、查看是否配置成功($? 是顯示最后命令的退出狀態,0表示沒有錯誤,其他表示有錯誤)
echo $? 0
11、編譯安裝
make && make install echo $?
12、查看nginx版本號
/usr/local/nginx/sbin/nginx -v nginx version: nginx/1.16.1
13、檢查配置文件語法是否正確
/usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
14、啟動nginx
/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx -s reload 重新載入配置文件 /usr/local/nginx/sbin/nginx -s stop 快速關閉 Nginx /usr/local/nginx/sbin/nginx -s quit 關閉Nginx
15、編寫啟動腳本,方便開機自啟
vim /usr/lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPost=/bin/sleep 0.1 ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
使用:
systemctl start|stop|reload|restart|status nginx.service 開機自啟: systemctl enable nginx.service 關閉開機自啟: systemctl disable nginx.service
openssl安裝參考:https://blog.51cto.com/1012682/2380553?source=dra
nginx安裝參考:https://blog.csdn.net/yuanfangPOET/article/details/90045001
