为了在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,那就没问题了。