nginx安裝成功後,發現有一些其他模塊沒有編譯進去,或者想額外添加一些模塊,這時候就要重新編譯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源碼包
1
|
[root@lmode
nginx]# cd /usr/local/src/nginx-1.4.7 |
將要編譯的參數重新添加到後面
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,否則就覆蓋安裝了
1
|
[root@lmode
nginx-1.4.7]# make |
make完成後,在源碼目錄下會有一個objs目錄,objs目錄下就多了個nginx,這個就是新版本的程序了。
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。
先備份舊的nginx程序
1
|
[root@lmode
nginx-1.4.7]#cp /usr/local/nginx/nginx /usr/local/nginx/nginx.bak |
把新的nginx程序覆蓋舊的
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參數裏。