title: 源码包安装 Nginx

之前寫過一篇《CentOS 安装 Nginx》,介紹使用 yum 安裝 Nginx,yum 安裝方式雖然簡單,不易出錯,但是安裝過程不能人為干預,不能按需安裝,靈活性較弱,源碼安裝可以彌補 yum 安裝的一些不足之處。

用 yum 安裝好還是用源碼安裝好並沒有最優的結論,一切要看生產環境的需求情況,作為初學者,無腦 yum 安裝固然安全省事,但是不通過源碼安裝了解一二,一但 yum 出現問題,可能會出現一臉懵 B 不懂從何下手解決問題。

下載 nginx 源碼

現官網有兩個推薦的版本下載:stable (1.10.x), mainline (1.11.x),穩定版本在 2017-01-31 推出了 nginx-1.10.3,開發版本在 2017-01-24 推出了 nginx-1.11.9,利用下面指令可以下載到當前目錄下

1
wget http://nginx.org/download/nginx-1.10.3.tar.gz

穩定版本 nginx-1.10.3 壓縮文件 nginx-1.10.3.tar.gz 可下載到任意目錄下,推薦下載到 /usr/local/src 目錄,這個目錄是系統專門為用戶分配的放源代碼的目錄

解壓縮:

1
tar -zxvf nginx-1.10.3.tar.gz

解壓縮後可看到 nginx-1.10.3 目錄

編譯安裝

進入 nginx-1.10.3 目錄,通過

1
./configure

配置即將安裝的 nginx,如果不加任何配置參數,nginx 服務器文件默認放在 /usr/local/nginx 路徑,若要放在指定路徑,可以加上參數 --prefix=*path*,添加第三方模塊可以使用參數 --add-dynamic-module=*source*,更多的配置參數以及第三方模塊可參考 Installation and Compile-Time OptionsNGINX 3rd Party Modules

配置完成後,使用指令

1
make

對源代碼進行編譯,如果配置無誤,模塊依賴齊全的話,編譯完成後,會在 nginx-1.10.3 目錄新添一個 Makefile 文件和 objs 目錄,編譯好的 nginx 執行文件就在 objs 目錄裏

最後使用指令

1
make install

完成 Nginx 的安裝

Nginx 服務的啟動和停止

安裝 Nginx 後,執行文件放在安裝目錄的 sbin 目錄下

1
2
3
4
5
6
7
8
9
drwx------ 2 nobody root 4096 Feb  7 15:19 client_body_temp
drwxr-xr-x 3 root root 4096 Feb 7 16:11 conf
drwx------ 2 nobody root 4096 Feb 7 15:19 fastcgi_temp
drwxr-xr-x 2 root root 4096 Feb 7 15:35 html
drwxr-xr-x 2 root root 4096 Feb 7 15:19 logs
drwx------ 2 nobody root 4096 Feb 7 15:19 proxy_temp
drwxr-xr-x 2 root root 4096 Feb 7 15:30 sbin
drwx------ 2 nobody root 4096 Feb 7 15:19 scgi_temp
drwx------ 2 nobody root 4096 Feb 7 15:19 uwsgi_temp

yum 安裝方式啟動 Nginx 需要使用指令

1
service nginx start

源碼安裝方式啟動 Nginx 需要通過絕對路徑來執行

1
2
3
/usr/local/nginx/sbin/nginx  #啟動 nginx 服務
/usr/local/nginx/sbin/nginx -s stop #停止 nginx 服務
/usr/local/nginx/sbin/nginx -s reload #重啟 nginx 服務

啟動 Nginx 服務後,可以通過 ps -aux | grep nginx 命令查看進程

1
2
3
root     28127  0.0  0.3  60144  3840 ?        Ss   16:06   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 28288 0.0 0.4 62648 5072 ? S 16:19 0:00 nginx: worker process
root 29008 0.0 0.0 112612 736 pts/0 S+ 22:56 0:00 grep --color=auto nginx

OK,源碼包安裝完成了,其實並沒有想象中複雜,66666~~