Nginx 原始碼安裝

Jochen發表於2018-03-30

在 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 

參考文章:

  1. nginx 伺服器安裝及配置檔案詳解
  2. CentOS7.0 下編譯安裝Nginx 1.10.0
  3. CentOS 7自定義開機啟動系統服務
  4. nginx使用yum/編譯安裝,心跳檢查模組

相關文章