nginx安裝成功後,發現有一些其餘模塊沒有編譯進去,或者想額外添加一些模塊,這時候就要從新編譯nginx。html
首先,查看以前編譯的一些參數,好比:nginx
1
2
3
4
5
|
[root@lmode nginx]# /usr/local/nginx/nginx -V
nginx version: nginx/1.4.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=/usr/local/src/lnmp/pcre-8.33 --with-zlib=/usr/local/src/lnmp/zlib-1.2.8 --with-openssl=/usr/local/src/lnmp/openssl-1.0.1e
|
好比我如今要新增–with-http_ssl_module 、–with-http_gzip_static_module 這些模塊參數,那麼我只要把這些參數添加進去而後從新編譯便可,須要注意的是原先編譯過的參數也要加進來。過程以下:測試
進入nginx源碼包ui
1
|
[root@lmode nginx]# cd /usr/local/src/nginx-1.4.7
|
將要編譯的參數從新添加到後面spa
1
|
[root@lmode nginx-1.4.7]# ./configure --prefix=/usr/local/nginx --user=www --group=www --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=/usr/local/src/lnmp/pcre-8.33 --with-zlib=/usr/local/src/lnmp/zlib-1.2.8 --with-openssl=/usr/local/src/lnmp/openssl-1.0.1e --with-http_gzip_static_module --with-http_ssl_module
|
注意:這裏只能make 千萬別make install,不然就覆蓋安裝了code
1
|
[root@lmode nginx-1.4.7]# make
|
make完成後,在源碼目錄下會有一個objs目錄,objs目錄下就多了個nginx,這個就是新版本的程序了。htm
1
2
3
|
[root@lmode nginx-1.4.7]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
|
而後將objs目錄下的nginx替換以前已經安裝過的nginx。ip
先備份舊的nginx程序ssl
1
|
[root@lmode nginx-1.4.7]#cp /usr/local/nginx/nginx /usr/local/nginx/nginx.bak
|
把新的nginx程序覆蓋舊的ci
1
|
[root@lmode nginx-1.4.7]#cp ./objs/nginx /usr/local/nginx/sbin/nginx
|
若是提示「cp:cannot create regular file `/usr/local/nginx/sbin/nginx': Text file busy」
建議使用以下語句cp
1
|
#cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
|
測試新的nginx程序是否正確
1
2
3
|
[root@lmode nginx-1.4.7]# /usr/local/nginx/nginx -t
nginx: the configuration file /usr/local/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/nginx.conf test is successful
|
最後重啓nginx
1
|
[root@lmode nginx-1.4.7]# /usr/local/nginx/nginx -s reload
|
這樣,就安裝成功了。下面介紹下安裝第三方模塊的方法。
安裝第三方模塊
nginx安裝第三方模塊的方法和上面差很少,只是要額外添加一個–add-module參數:
1
|
./configure --prefix=/你的安裝目錄 --add-module=/第三方模塊目錄
|
下面以安裝pagespeed模塊位實例
1
2
3
4
5
6
7
|
# ./configure --prefix=--prefix=/usr/local/nginx --user=www --group=www --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=/usr/local/src/lnmp/pcre-8.33 --with-zlib=/usr/local/src/lnmp/zlib-1.2.8 --with-openssl=/usr/local/src/lnmp/openssl-1.0.1e --with-http_gzip_static_module --with-http_ssl_module --add-module=../ngx_pagespeed-master
# make
# cp ./objs/nginx /usr/local/nginx/nginx
# /usr/local/nginx/nginx -s reload
|
總結
安裝nginx安裝第三方模塊其實是使用–add-module從新安裝一次nginx,不要make install而是直接把編譯目錄下objs/nginx文件直接覆蓋老的nginx文件.若是你須要安裝多個nginx第三方模塊,你只須要多指定幾個相應的–add-module便可。
[warning]備註:從新編譯的時候,記得必定要把之前編譯過的模塊一同加到configure參數裏。