關於nginx重新編譯

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參數裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章