apt-get 方式安裝nginx后,增加模塊--with-http_perl_module


因為要把網站的圖片格式方式換成imageMagick的緣故,服務器端原來安裝的nginx要增加perl的模塊,而原來服務器安裝時apt-get方式安裝的並不是源碼安裝,但我又不想直接卸了重新安裝,所以整了老半天,下面把方法和遇到的問題記錄如下,供有同樣需求的人參考。

首先,要知道你原安裝的nginx版本,以及原來安裝的模塊,用nginx -V即可

/usr/sbin/nginx -V
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-pcre-jit --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/nginx-sbbMZs/nginx-1.2.1/debian/modules/nginx-auth-pam --add-module=/build/nginx-sbbMZs/nginx-1.2.1/debian/modules/nginx-echo --add-module=/build/nginx-sbbMZs/nginx-1.2.1/debian/modules/nginx-upstream-fair --add-module=/build/nginx-sbbMZs/nginx-1.2.1/debian/modules/nginx-dav-ext-module

結尾處的--add-module 重新安裝時這里可以去掉,

然后去官網下載一個相同版本的源碼包 http://nginx.org/download/

我的路徑放在/usr/src

tar zxf nginx-1.2.1.tar.gz;
cd nginx-1.2.1;

解壓 進入源碼路徑,然后configure,加入

--prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-pcre-jit --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/incloude/openssl --with-md5=/usr/incloude/openssl --with-mail --with-mail_ssl_module --with-openssl=/usr/src/openssl-1.0.1c --with-zlib=/usr/src/zlib-1.2.8 --with-pcre=/usr/src/pcre-8.21 --with-http_perl_module

執行可能遇到問題

the HTTP XSLT module requires the libxml2/libxslt libraries

sudo apt-get install libxml2 libxml2-dev libxslt-dev

 the HTTP image filter module requires the GD library.

sudo apt-get install libgd2-xpm libgd2-xpm-dev

the GeoIP module requires the GeoIP library.

sudo apt-get install geoip-database libgeoip-dev

 the HTTP rewrite module requires the PCRE library.

apt-get install libpcre3 libpcre3-dev

下載安裝相關包即可,再configure,完成后,make

make;

可能會報lperl not found 的錯誤;

apt-get install libperl-dev  

如果已經安裝 查看安裝路徑

perl -V
 Compiled at Sep 29 2013 13:26:03
  @INC:
    /etc/perl
    /usr/local/lib/perl/5.14.2
    /usr/local/share/perl/5.14.2
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.14
    /usr/share/perl/5.14
    /usr/local/lib/site_perl

到usr/lib 查看libperl.so是否存在,不存在的話建立連接

ln -s libperl.so.5.14.2 /usr/lib/libperl.so 

make 完成后,這時會在/usr/src/nginx-1.2.1 下生成一個文件夾objs

把nginx二進制文件拷貝sbin下,注意備份原nginx

cp objs/nginx /usr/sbin/nginx

試一下nginx配置文件

/usr/sbin/nginx -t

報錯

Can't locate nginx.pm in @INC 
(@INC contains: 
/usr/lib/perl5 
/etc/perl
/usr/local/lib/perl/5.14.2 
/usr/local/share/perl/5.14.2 
/usr/lib/perl5 
/usr/share/perl5 
/usr/lib/perl/5.14 
/usr/share/perl/5.14 
/usr/local/lib/site_perl .).

由於沒有make install的緣故,這里我們來手動加入以下文件:

位置在/usr/local/lib/perl/5.14.2

這里存放的是perl的一些類庫,perl -V可查看到路徑

共需手動加入五個個文件,文件可在nginx源碼包中安裝后生成的文件objs中找到

/usr/local/lib/perl/5.14.2/auto/nginx 下兩個nginx.bs nginx.so 可從/usr/local/src/nginx-1.4.4/objs/src/http/modules/perl/blib/arch/auto/nginx/下復制

/usr/local/lib/perl/5.14.2兩個nginx.pm perllocal.pod nginx.pm可從/usr/local/src/nginx-1.4.4/objs/src/http/modules/perl/blib/lib復制

perllocal.pod中記錄了nginx版本信息可手動加入文本如下:

=head2 Mon Jan 13 15:01:43 2014: C<Module> L<nginx|nginx>

=over 4

=item *

C<installed into: /usr/local/share/perl/5.14.2>

=item *

C<LINKTYPE: dynamic>

=item *

C<VERSION: 1.4.4>

=item *

C<EXE_FILES: >

=back

最后一個:在/usr/local/man/man3中加入nginx.3pm

nginx.3pm 在/usr/local/src/nginx-1.4.4/objs/src/http/modules/perl/blib/man3/nginx.3pm

找不到文件也可用命令:

find / -name "要查找的文件名" 

最后在用更新后copy的nginx 二進制文件啟動下就應該可以了!

 

 






 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM