大家好,我是你們的後端技術老司機。今天我們來聊聊一個後端開發繞不開的話題——Nginx安裝。別看這玩意兒簡單,但新手朋友經常在這上面摔跟頭。

今天我就手把手教你,從零開始安裝Nginx 1.9.1版本,讓你一次成功,從此告別"裝個Nginx搞了一天"的尷尬!

為什麼選擇源碼安裝?

可能有朋友問了:"為啥不直接yum install或者apt-get install?"

好問題!源碼安裝雖然步驟多一點,但有這幾個好處:

  1. 版本可控:想裝哪個版本就裝哪個版本,不像包管理器可能只有老版本
  2. 模塊定製:可以根據需要選擇功能模塊,要啥裝啥,不要的不裝
  3. 性能優化:針對你的服務器環境進行編譯優化
  4. 學習價值:瞭解軟件安裝的本質過程,排查問題更方便

安裝前的準備工作

環境檢查

首先確認你的服務器環境:

# 查看系統版本
cat /etc/redhat-release  # CentOS/RedHat
# 或者
cat /etc/issue          # Ubuntu/Debian

# 查看內核版本
uname -r

安裝依賴包

Nginx編譯需要一些基礎庫,咱們一次性裝齊:

# CentOS/RedHat系統
yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

# Ubuntu/Debian系統
apt-get update
apt-get install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev

這些依賴的作用:

  • gcc gcc-c++:編譯器,不裝這個沒法編譯C/C++代碼
  • pcre pcre-devel:正則表達式庫,Nginx的rewrite功能需要
  • zlib zlib-devel:壓縮庫,gzip壓縮功能需要
  • openssl openssl-devel:SSL/TLS加密庫,HTTPS功能需要

下載並解壓源碼

下載Nginx 1.9.1

# 進入源碼目錄(習慣放這裏)
cd /usr/local/src

# 下載源碼包
wget http://nginx.org/download/nginx-1.9.1.tar.gz

# 解壓
tar -zxvf nginx-1.9.1.tar.gz

# 進入源碼目錄
cd nginx-1.9.1

配置編譯參數

這是最關鍵的一步!Nginx的強大之處就在於模塊化設計,你可以按需選擇功能。

./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_auth_request_module \
--with-http_sub_module \
--with-http_dav_module \
--with-stream \
--with-stream_ssl_module

參數解釋:

  • --prefix:安裝目錄,建議統一放/usr/local/nginx
  • --user/--group:運行用户和用户組,安全考慮不能用root
  • --with-http_ssl_module:HTTPS支持模塊,現在是標配
  • --with-http_v2_module:HTTP/2支持,提升性能
  • --with-http_stub_status_module:狀態監控模塊,運維必備
  • --with-stream:TCP/UDP代理模塊,四層負載均衡需要

如果提示缺少某些庫,比如GeoIP,可以先安裝對應依賴或者去掉相關模塊。

編譯和安裝

# 編譯(這步時間稍長,喝杯茶)
make

# 安裝(這步很快)
make install

安裝完成後,Nginx會被安裝到[/usr/local/nginx](file:///usr/local/nginx)目錄下:

# 查看安裝結果
ls /usr/local/nginx/
# 輸出應該是:
# conf  html  logs  sbin

目錄結構説明:

  • conf:配置文件目錄
  • html:默認網頁文件目錄
  • logs:日誌文件目錄
  • sbin:可執行文件目錄

創建運行用户

為了安全,我們創建專門的nginx運行用户:

# 創建用户組
groupadd www

# 創建用户並加入組
useradd -g www www

啓動Nginx

直接啓動

# 啓動Nginx
/usr/local/nginx/sbin/nginx

# 檢查是否啓動成功
ps -ef | grep nginx

正常情況下會看到master和worker進程:

root     12345     1  0 10:00 ?        00:00:00 nginx: master process
www      12346 12345  0 10:00 ?        00:00:00 nginx: worker process

驗證安裝

打開瀏覽器訪問你的服務器IP地址,應該能看到Nginx的歡迎頁面。

或者用命令行驗證:

curl http://localhost

Nginx常用操作命令

# 啓動(如果已啓動會報錯)
/usr/local/nginx/sbin/nginx

# 優雅停止(處理完當前請求再停止)
/usr/local/nginx/sbin/nginx -s quit

# 強制停止
/usr/local/nginx/sbin/nginx -s stop

# 重新加載配置文件(不中斷服務)
/usr/local/nginx/sbin/nginx -s reload

# 檢查配置文件語法
/usr/local/nginx/sbin/nginx -t

# 查看版本和編譯參數
/usr/local/nginx/sbin/nginx -V

配置系統服務(推薦)

為了方便管理,我們把Nginx配置成系統服務:

# 創建服務文件
cat > /etc/systemd/system/nginx.service << 'EOF'
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

# 重新加載系統服務
systemctl daemon-reload

# 設置開機自啓
systemctl enable nginx

# 啓動服務
systemctl start nginx

# 查看服務狀態
systemctl status nginx

現在就可以用systemctl管理Nginx了:

systemctl start nginx    # 啓動
systemctl stop nginx     # 停止
systemctl restart nginx  # 重啓
systemctl reload nginx   # 重載配置
systemctl status nginx   # 查看狀態

常見問題排查

1. 端口被佔用

# 查看80端口占用情況
netstat -tlnp | grep :80

# 殺掉佔用進程(替換PID)
kill -9 PID

2. 權限問題

# 檢查nginx目錄權限
ls -la /usr/local/nginx

# 修改權限
chown -R www:www /usr/local/nginx

3. 配置文件錯誤

# 檢查配置文件語法
/usr/local/nginx/sbin/nginx -t

# 查看錯誤日誌
tail -f /usr/local/nginx/logs/error.log

性能優化建議

安裝完成後,建議做以下優化:

  1. 調整worker進程數

    # 在nginx.conf中
    worker_processes auto;  # 自動檢測CPU核心數
    
  2. 調整連接數

    events {
        worker_connections  1024;  # 單個worker最大連接數
    }
    
  3. 開啓gzip壓縮

    http {
        gzip on;
        gzip_types text/plain text/css application/json application/javascript;
    }
    

結語

到這裏,Nginx 1.9.1的安裝就全部完成了!從下載源碼、編譯安裝到配置服務,每一步都詳細講解了。

記住幾個關鍵點:

  1. 依賴要裝全,不然編譯會報錯
  2. configure參數按需選擇,不要貪多
  3. 運行用户要設置,安全第一
  4. 配置成系統服務,管理更方便

安裝只是第一步,後續我們還會分享Nginx的配置優化、負載均衡、安全加固等實戰技巧,記得關注我們的公眾號"服務端技術精選"!

覺得這篇文章對你有幫助嗎?歡迎點贊、在看、轉發三連,你的支持是我們持續創作的最大動力!


服務端技術精選 | 專注分享實用的後端技術乾貨