【linux创建组】linux下把组件与模块编译到nginx包中的教程

更新时间:2019-12-06    来源:linux    手机版     字体:

【www.bbyears.com--linux】


在Ubuntu系统下,我们通常是使用apt-get来搞定一切,简单方便快捷。但是如果要给nginx添加额外的模块就需要重新编译了。从源码编译nginx就要手工补充Debian包提供的一些文件,如启动脚本,logrotate等等。
获取额外的模块

以Pagespeed、upload模块为例。

获取pagespeed模块:


sudo mkdir /opt/pagespeed
cd /opt/pagespeed
NPS_VERSION=1.9.32.2
sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip
sudo unzip release-${NPS_VERSION}-beta.zip
cd ngx_pagespeed-release-${NPS_VERSION}-beta/
sudo wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
sudo tar -xzvf ${NPS_VERSION}.tar.gz  # extracts to psol/
# Gives us directory /opt/pagespeed/ngx_pagespeed-release-1.9.32.2-beta

获取upload模块:

sudo mkdir /opt/httpupload
cd /opt/httpupload
sudo wget https://github.com/vkholodkov/nginx-upload-module/archive/2.2.zip
sudo unzip 2.2.zip
# Gives us directory: /opt/httpupload/nginx-upload-module-2.2

获取nginx源码包和依赖关系
添加nginx源,调整、重建并重新安装nginx。
添加PPA源文件,并确保deb-src指令没被注释掉。


$ vim /etc/apt/sources.list.d/nginx-stable-trusty.list
deb http://ppa.launchpad.net/nginx/stable/ubuntu trusty main
deb-src http://ppa.launchpad.net/nginx/stable/ubuntu trusty main

更新

$ sudo apt-get update

获取源码包和依赖包


# Install package creation tools
sudo apt-get install -y dpkg-dev
 
sudo mkdir /opt/rebuildnginx
cd /opt/rebuildnginx
 
# Get Nginx (ppa:nginx/stable) source files
sudo apt-get source nginx
 
# Install the build dependencies
sudo apt-get build-dep nginx


$ ls -lah /opt/rebuildnginx
drwxr-xr-x 10 root root   4096 Dec 14 16:37 nginx-1.6.2/
-rw-r--r--  1 root root 934244 Dec 14 02:10 nginx_1.6.2-5+trusty0.debian.tar.gz
-rw-r--r--  1 root root   2798 Dec 14 02:10 nginx_1.6.2-5+trusty0.dsc
-rw-r--r--  1 root root 804164 Sep 18 21:31 nginx_1.6.2.orig.tar.gz
ppa:nginx/stable 提供多个nginx可用包:common, light, full, extras。当执行apt-get install -y nginx时,是安装full版本的。

light 比 common少了 --without-* 的选项包。

编辑/opt/rebuildnginx/nginx-1.6.2/debian/rules文件来添加第三方模块。


full_configure_flags := \
                        $(common_configure_flags) \
                        --with-http_addition_module \
                        --with-http_dav_module \
                        --with-http_geoip_module \
                        --with-http_gzip_static_module \
                        --with-http_image_filter_module \
                        --with-http_spdy_module \
                        --with-http_sub_module \
                        --with-http_xslt_module \
                        --with-mail \
                        --with-mail_ssl_module \
                        --add-module=$(MODULESDIR)/nginx-auth-pam \
                        --add-module=$(MODULESDIR)/nginx-dav-ext-module \
                        --add-module=$(MODULESDIR)/nginx-echo \
                        --add-module=$(MODULESDIR)/nginx-upstream-fair \
                        --add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \
                        --add-module=/opt/httpupload/nginx-upload-module-2.2 \
                        --add-module=/opt/pagespeed/ngx_pagespeed-release-1.9.32.2-beta
重建nginx包

cd /opt/rebuildnginx/nginx-1.6.2
sudo dpkg-buildpackage -b

重建完后,会在/opt/rebuildnginx目录下生产一堆.deb文件,可以使用这些文件来安装nginx。由于我们调整了‘full"包,因此需要使用该包来安装nginx。该包有两个:

nginx-full-dbg_1.6.2-5+trusty0_amd64.deb
nginx-full_1.6.2-5+trusty0_amd64.deb
dbg的是debug版本。

重新安装nginx,可能需要先删除之前安装的nginx。

# .deb files appear one level above the `nginx-1.6.2` directory
cd /opt/rebuildnginx
sudo dpkg --install nginx-full_1.6.2-5+trusty0_amd64.deb

查看已安装的模块


$ nginx -V
nginx version: nginx/1.6.2
TLS SNI support enabled
configure arguments:
    --with-cc-opt="-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2"
    # A bunch of these removed for brevity
    --add-module=/opt/httpupload/nginx-upload-module-2.2            # yay!
    --add-module=/opt/pagespeed/ngx_pagespeed-release-1.9.32.2-beta # yay!

配置pagespeed

 

sudo mkdir -p /var/cache/ngx_pagespeed/
# Stuff up here omitted
server {
    pagespeed On;
    pagespeed FileCachePath "/var/cache/ngx_pagespeed/";
    pagespeed EnableFilters combine_css,combine_javascript;
 
    # Stuff down here omitted
}
$ sudo service nginx configtest
 * Testing nginx configuration            [ OK ]
 
# Restart, assuming it"s OK
$ sudo service nginx restart

本文来源:http://www.bbyears.com/caozuoxitong/82424.html

热门标签

更多>>

本类排行