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

在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

时间: 2025-01-05 09:43:30

linux下把组件与模块编译到nginx包中的教程的相关文章

《深入理解Nginx:模块开发与架构解析》一3.3 如何将自己的HTTP模块编译进Nginx

3.3 如何将自己的HTTP模块编译进Nginx Nginx提供了一种简单的方式将第三方的模块编译到Nginx中.首先把源代码文件全部放到一个目录下,同时在该目录中编写一个文件用于通知Nginx如何编译本模块,这个文件名必须为config.它的格式将在3.3.1节中说明.这样,只要在configure脚本执行时加入参数--add-module=PATH(PATH就是上面我们给定的源代码.config文件的保存目录),就可以在执行正常编译安装流程时完成Nginx编译工作.有时,Nginx提供的这种

CentOS6.3编译安装Nginx+ MySQL5+ PHP5环境教程

[准备工作] #在编译安装lnmp之前,首先先卸载已存在的rpm包.  代码如下 复制代码 rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd yum -y remove mysql-server mysql yum -y remove php yum -y remove php-mysql #禁用SeLinux,Selinux可能会致使编译安装失败,我们先禁用它. #sed -i 's/SELINUX=enforcing/SELIN

linux 编译安装nginx,配置自启动脚本

在公司的suse服务器装nginx,记录下安装过程: 参照这篇文章:Linux 从源码编译安装 Nginx: 1.1.准备 pcre 库 pere 是为了让 nginx 支持正则表达式.只是准备,并不安装,是为了避免在64位系统中出现错误.  代码如下 复制代码 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.11.tar.gz  tar -zxf pcre-8.11.tar.gz 1.3.准备 zlib 库 同

linux 模块编译步骤

本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂.之所以要写这篇文章,主要是因为从书本上学的话,可能要花更长的时间才能学会整个过程,因为看书的话是一个学习过程,而我这篇文章更像是一个培训.所以实践性和总结性更强.通过本文你将会学到编译一个模块和模块makefile的基本知识.以及加载(卸载)模块,查看系统消息的一些知识: 声明:本文为初学者所写,如果你已经是一个linux模块编译高手,还请指正我文章中的错误和不足,谢谢 第一步:准备

Linux 6下安装编译安装Nginx

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一.能够支持高达50,000个并发连接数的响应,而且内存开销极小.这也是Nginx广受欢迎的重要原因.本文演示了基于Linux 6下编译安装Nginx,供大家参考. 一.安装环境 # cat /etc/issue Red Hat Enterprise Linux Server r

Linux内核升级及内核编译

一:Linux内核: 操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件.一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割.计算机的硬件,含有外围设备.处理器.内存.硬盘和其他的电子设备组成计算机的发动机.但是没有软件来操作和控制它,自身是不能工作的.完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为"内核",也可以称为"核心".Linux内核的主要模块(或组件)分以下几个部分:存储管理.CPU和进程管理.文件系统

linux搭建nginx WEB服务器的教程

  下文来为各位介绍一篇在linux搭建nginx WEB服务器的教程,如果各位不想使用apache环境了,想用nginx环境就可以和小编一起来看看. 1.下载nginx 命令:wget http://nginx.org/download/nginx-0.8.54.tar.gz 2.解压 命令:tar zxvf nginx-0.8.54.tar.gz 3.进入目录 命令:cd nginx-0.8.54 4.安装依赖包 命令:yum -y install gcc pcre-devel openss

CentOS6.6 32位 Minimal版本纯编译安装Nginx Mysql PHP Memcached

声明:部分编译指令在博客编辑器里好像被处理了,如双横线变成单横线了等等,于是在本地生成了一个pdf版本,在下面地址可以下载. LNMP+Memcached CentOS是红帽发行的免费的稳定Linux版本,在企业服务器应用中都会选用Minimal版本,因为Minimal是CentOS"最纯洁"的服务器系统,因为Minimal版本连vim编辑器都需要自己安装,Minimal组件最少,无桌面,扩展灵活,非常适合做服务器. 1.配置网卡 Minimal版本的CentOS被安装后,网卡驱动默认

《精通Nginx》——第1章 安装Nginx及第三方模块1.1 使用包管理器安装Nginx

第1章 安装Nginx及第三方模块 Nginx最初的设计是成为一个Http服务器,一个能够解决C10K问题的Http服务器.关于C10K这个问题,Daniel Kegel设计一个同时连接处理10000连接的web服务器.为了实现这个目标,Nginx通过基于事件的处理机制并且操作系统也要使用相应的事件机制,便可以解决C10K问题. 在我们开始探索如何配置Nginx之前,首先我们要安装它,这一章将详细讲述如何安装Nginx,以及如何获取正确的模块并且安装和配置它们.Nginx是模块化设计的,并且有非