如何更好的手工编译安装Nginx

=Start=

缘由:

为了能在Nginx上使用一些额外的功能/模块,一般都是需要手工编译安装Nginx的,这对于专门研究Nginx或对此比较熟悉的人来说不算麻烦,但对于我这种新手来说就非常麻烦了——如果只是简单的设置「--prefix」、「--with-pcre」等几个编译选项的话,我也会一点,但如果考虑得不全面的话后期还需要重新编译,但该添加哪些选项我还真不清楚;还有就是如果完全重头开始编译Nginx的话,用户、组的创建,启动脚本的编写等都是需要自己来处理的,这也是我为什么一直都比较忌惮从头编译Nginx等系统软件的原因,需要考虑的问题太多了。

但今天在测试一个Nginx模块的时候学到了一个比较好的办法,自己实际在 CentOS 7 测试了一下,挺好用的。于是记录一下,方便以后参考。

正文:

参考解答:

完全从头开始指定Nginx的编译选项对我来说显然不现实,一个更好的办法是参照系统的编译选项,然后根据实际需要增加几个「--add-module」选项即可很好的结合二者的优点(方便快速&可定制):

# 首先用yum的方式在CentOS 7上安装Nginx及需要的模块
# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum install nginx nginx-module-xslt nginx-module-perl nginx-module-image-filter nginx-module-geoip

# 然后通过「-V」选项查看yum命令在安装时给它设置了哪些编译选项
# nginx -V

&

# 创建一个单独的目录用于存放编译Nginx需要的软件
$ mkdir compile_nginx
$ cd compile_nginx

$ git clone https://github.com/cuber/ngx_http_google_filter_module
$ git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module

$ wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-beta.tar.gz
$ mv v1.12.34.2-beta.tar.gz ngx_pagespeed.1.12.34.2-beta.tar.gz
$ tar zxf ngx_pagespeed.1.12.34.2-beta.tar.gz

# 一般建议是下载和yum命令安装的Nginx相同版本的进行重新编译,不过如果你想体验新版本的Nginx,也可以先编译试试,一般也没什么问题
$ wget http://nginx.org/download/nginx-1.11.7.tar.gz
$ tar zxf nginx-1.11.7.tar.gz
$ cd nginx-1.11.7
# 使用上面的「nginx -V」命令给出的编译选项,然后在末尾添加上自己需要的选项
$ ./configure \
 --prefix=/etc/nginx \
 --sbin-path=/usr/sbin/nginx \
 --modules-path=/usr/lib64/nginx/modules \
 --conf-path=/etc/nginx/nginx.conf \
 --error-log-path=/var/log/nginx/error.log \
 --http-log-path=/var/log/nginx/access.log \
 --pid-path=/var/run/nginx.pid \
 --lock-path=/var/run/nginx.lock \
 --http-client-body-temp-path=/var/cache/nginx/client_temp \
 --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
 --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
 --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
 --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
 --user=nginx \
 --group=nginx \
 --with-file-aio \
 --with-threads \
 --with-http_addition_module \
 --with-http_auth_request_module \
 --with-http_dav_module \
 --with-http_flv_module \
 --with-http_gunzip_module \
 --with-http_gzip_static_module \
 --with-http_mp4_module \
 --with-http_random_index_module \
 --with-http_realip_module \
 --with-http_secure_link_module \
 --with-http_slice_module \
 --with-http_ssl_module \
 --with-http_stub_status_module \
 --with-http_sub_module \
 --with-http_v2_module \
 --with-mail \
 --with-mail_ssl_module \
 --with-stream \
 --with-stream_ssl_module \
 --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' \
 --add-module=../ngx_http_google_filter_module \
 --add-module=../ngx_http_substitutions_filter_module \
 --add-module=../ngx_pagespeed-1.12.34.2-beta
$ make

$ sudo cp /usr/sbin/nginx{,.orig}
$ sudo cp -rf objs/nginx /usr/sbin/nginx
参考链接:

=END=

发表评论

电子邮件地址不会被公开。 必填项已用*标注