一、環境與依賴準備
為確保編譯順利,我們首先更新系統并安裝必要的編譯工具和庫:
sudo apt update
sudo apt install -y build-essential \libpcre3 libpcre3-dev \zlib1g zlib1g-dev \libssl-dev \wget
- build-essential:提供
gcc
、make
等基礎編譯工具 - libpcre3 / libpcre3-dev:支持正則匹配(如
rewrite
模塊) - zlib1g / zlib1g-dev:提供 gzip 壓縮功能
- libssl-dev:開啟 HTTPS/SSL 支持
- wget:用于下載源碼包
二、下載并解壓 Nginx 源碼
- 切換到用戶主目錄(或其他工作目錄)
- 下載并解壓源碼包
cd ~
wget http://nginx.org/download/nginx-1.28.0.tar.gz
tar zxvf nginx-1.28.0.tar.gz
cd nginx-1.28.0
若你已將源碼包 nginx-1.28.0.tar.gz
放在本地目錄,同樣執行 tar zxvf
并進入解壓后的目錄即可。
三、配置編譯選項
使用 ./configure
腳本為編譯過程指定安裝路徑和所需模塊。本例中啟用了 HTTP、SSL、HTTP/2、gzip、狀態監控、異步 I/O、線程以及 Stream 模塊等常用功能:
./configure \--prefix=/usr/local/nginx \--with-http_ssl_module \--with-http_v2_module \--with-http_gzip_static_module \--with-http_stub_status_module \--with-http_realip_module \--with-threads \--with-file-aio \--with-stream \--with-stream_ssl_module \--with-stream_realip_module
--prefix
:指定安裝目錄--with-http_stub_status_module
:開啟運行狀態頁(可用于監控)- 其余模塊可根據實際需求增刪。執行
./configure --help
可查看所有可選項。
四、編譯與安裝
- 編譯:根據機器性能,執行時間通常在幾分鐘左右
- 安裝:將編譯成果復制到指定目錄
make
sudo make install
- 編譯完成后,可執行文件位于
/usr/local/nginx/sbin/nginx
- 默認主配置文件:
/usr/local/nginx/conf/nginx.conf
- 日志目錄:
/usr/local/nginx/logs/
五、創建 systemd 服務單元
為了方便開機自啟及系統統一管理,建議新建一個 systemd 服務文件:
sudo tee /etc/systemd/system/nginx.service > /dev/null << 'EOF'
[Unit]
Description=NGINX HTTP and reverse proxy server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PIDFile=/usr/local/nginx/logs/nginx.pid
PrivateTmp=true[Install]
WantedBy=multi-user.target
EOF
隨后執行:
sudo systemctl daemon-reload
sudo systemctl enable nginx
六、啟動、重載與狀態檢查
- 啟動 Nginx
sudo systemctl start nginx
- 查看運行狀態
sudo systemctl status nginx
- 平滑重載配置(修改
nginx.conf
后)sudo systemctl reload nginx
- 停止 Nginx
sudo systemctl stop nginx
七、防火墻設置與訪問驗證
如果系統啟用了 UFW 防火墻,請放行 HTTP/HTTPS 端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
在瀏覽器中訪問服務器 IP 或綁定的域名,若出現默認 Nginx 歡迎頁,即代表安裝部署成功。
八、常見故障排查
-
端口被占用
sudo lsof -i:80
如有其他服務占用,需停止或修改 Nginx 監聽端口。
-
配置文件語法錯誤
/usr/local/nginx/sbin/nginx -t
檢查并修正錯誤后再重載。
-
日志查看
- 訪問日志:
/usr/local/nginx/logs/access.log
- 錯誤日志:
/usr/local/nginx/logs/error.log
- 訪問日志:
小結
本文詳細介紹了在 Ubuntu 上從源碼編譯安裝 Nginx 1.28.0 的全流程,涵蓋依賴環境準備、源碼下載解壓、配置編譯選項、make 安裝、systemd 服務管理及常見排錯方法。通過這種方式,你可以根據業務需求靈活定制 Nginx 功能,并更好地集成到生產運維體系中。歡迎在評論區交流心得或提問!