为了在Debian/Ubuntu上构建nginx

与Apache不同,nginx需要将模块静态链接,因此经常需要自己进行构建。
以下是适用于Debian/Ubuntu的nginx构建方法的备忘录。

1. 下载

从 nginx 的官方网站下载页面上获取最新的 nginx 档案(在这里设为 1.9.0)。

接下来,将档案解压并进行 cd 操作。

tar xvpf nginx-1.9.0.tar.gz
cd nginx-1.9.0

2. 建造

首先,安装所需的软件包进行构建。

sudo apt-get update
sudo apt-get install build-essential libpcre3-dev libssl-dev zlib1g-dev

然后,进行配置。
在配置阶段,nginx 决定使用哪些可用模块。在下面的例子中,除了默认模块外,还启用了 http_ssl_module、http_stub_status_module、http_gzip_static_module、http_spdy_module。
此外,各种路径符合 Debian 的 nginx 软件包的路径。但是,prefix 选项指定的是 /usr/local 而不是 /usr。
要查看有哪些选项,可以运行 ./configure –help 来显示。

./configure \
    --with-cc-opt="-O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2" \
    --with-ld-opt="-Wl,-Bsymbolic-functions -Wl,-z,relro" \
    --prefix=/usr/local \
    --conf-path=/etc/nginx/nginx.conf \
    --http-log-path=/var/log/nginx/access.log \
    --error-log-path=/var/log/nginx/error.log \
    --lock-path=/var/lock/nginx.lock \
    --pid-path=/run/nginx.pid \
    --http-client-body-temp-path=/var/lib/nginx/body \
    --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
    --http-proxy-temp-path=/var/lib/nginx/proxy \
    --http-scgi-temp-path=/var/lib/nginx/scgi \
    --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_spdy_module \
    --build=$USER

安装什么东西。

make -j4
sudo make install

由于“make install”无法创建“/var/lib/nginx”,请创建它。

sudo mkdir /var/lib/nginx

3. 安装 SysV init 脚本

为了执行Nginx的自动启动等操作,需要安装SysV init的脚本。可以从Debian包中获取,但在这里我们将使用Nginx Wiki上提到的仓库。

git clone https://github.com/Fleshgrinder/nginx-sysvinit-script.git
cd nginx-sysvinit-script
sudo make

顺便说一句,我对这个 Makefile 中的 shebang 为 /bin/sh 的设定有些忧虑…

4. 启动

sudo service nginx start

如果您执行curl -D – http://localhost/能够正确返回HTML,那就没问题了。