在 CentOS 系統下,雖然可以通過 Yum 工具一鍵下載 Nginx ,但是當我們需求安裝第三方模組、開啟某些隱藏功能的時候,就需要我們自己手動下載原始碼,並編譯安裝 Nginx 來定製自己的 Nginx 。本文主要演示如何在 CentOS 系統下原始碼編譯安裝 Nginx,並安裝第三方模組。
準備工作
1. 安裝編譯工具、依賴包
當前系統為 CentOS7 64 位,首先安裝缺少的依賴包:
yum update
yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
yum -y install unzip patch # 安裝第三方模組會使用到
這些軟體也可以通過下載原始碼來編譯安裝,只是要注意編譯時預設安裝的目錄,確保在安裝 Nginx 時正確指定相關依賴的安裝目錄。
2. 新建匿名使用者和使用者組
新建的使用者組和使用者主要是在編譯配置的時候指定 Nginx 執行的使用者和使用者組:
groupadd -r nginx
useradd -s /sbin/nologin -g nginx -r nginx
Nginx 編譯安裝
1. 下載原始碼包
# 下載最新穩定版本
wget http://nginx.org/download/nginx-1.12.2.tar.gz
# 下載負載均衡健康檢查的第三方模組
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
# 重新命名
mv master.zip nginx_upstream_check_module.zip
2. 解壓
tar -zxvf nginx-1.12.2.tar.gz
unzip nginx_upstream_check_module.zip
3. 配置編譯引數
整合 nginx_upstream_check_module
第三方模組至 Nginx 中:
cd nginx-1.12.2
patch -p1 < /usr/local/src/nginx_http_upstream_check_module/check_1.12.1+.patch # 安裝對應版本的補丁
配置 Nginx 編譯引數:
./configure
--prefix=/usr/local/nginx
--sbin-path=/usr/sbin/nginx
--modules-path=/usr/lib64/nginx/modules
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp
--user=nginx
--group=nginx
--with-compat
--with-file-aio
--with-threads
--with-http_addition_module
--with-http_auth_request_module
--with-http_dav_module
--with-http_flv_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_mp4_module
--with-http_random_index_module
--with-http_realip_module
--with-http_secure_link_module
--with-http_slice_module
--with-http_ssl_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_v2_module
--with-mail
--with-mail_ssl_module
--with-stream
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--add-module=../nginx_upstream_check_module
# --with-http_gunzip_module 開啟隱藏模組
# --add-module= 安裝第三發模組
4. 編譯並安裝
make && make install
5. 檢查是否安裝成功
# 檢視 Nginx 版本號
nginx -v
# 檢視 Nginx 配置資訊是否正確
nginx -t
設定開機啟動系統服務
1. 建立服務檔案
vim /lib/systemd/system/nginx.service
2. 配置資訊
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPost=/bin/sleep 0.1
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
3. 修改檔案許可權
chmod 754 /lib/systemd/system/nginx.service
4. 設定為開機啟動,同時防火牆開啟80埠
# 啟動 Nginx
systemctl start nginx
# 設定開機啟動
systemctl enable nginx
# 防火牆開啟80埠
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重啟防火牆
systemctl restart firewalld.service
參考文章: