原文发表于:2016-02-22
安装
要安装nginx,默认情况下需要安装下面3个依赖项:
- rewrite模块需要
pcre
库 - gzip模块需要
zlib
库 - ssl 功能(例如开启https支持)需要
openssl
库
当然也不是非要安装不可,不想安装也可以通过参数配置来禁用,这是后话。我第一次安装时觉得https暂时用不上就没有安装,只装了前面2个,大家可以根据实际需要决定是否安装,第一个rewirte用到的几率还是比较大的。
依赖安装
pcre 安装
下载pcre-8.38.tar.gz
文件放在/home/nginx/
下面:
cd /home/nginx
tar -zxvf pcre-8.38.tar.gz
cd pcre-8.38
./configure
make & make install
zlib 安装
下载zlib-1.2.8.tar.gz
文件放在/home/nginx/
下面:
cd /home/nginx
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make & make install
openssl 安装
openssl
安装要很久很久,所以建议根据实际需要决定是否需要安装,不需要https
功能的可以跳过此步。
下载openssl-1.0.2n.tar.gz
文件放在/home/nginx/
下面:
cd /home/nginx
tar -zxvf openssl-1.0.2n.tar.gz
cd openssl-1.0.2n
./config
make & make install
nginx 安装
下载nginx-1.8.1.tar.gz
放在/home/nginx
下,然后:
cd /home/nginx
tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
如果上面3个依赖都安装
./configure --prefix=/home/nginx/nginx-1.8.1 --with-pcre=/home/nginx/pcre-8.38 --with-zlib=/home/nginx/zlib-1.2.8 --with-openssl=/home/nginx/openssl-1.0.2n --with-http_ssl_module
make & make install
特别注意结尾的--with-http_ssl_module
,安装ssl的话必须要指定这个,如果只指定了--with-openssl
而没有指定--with-http_ssl_module
的话,启动nginx会报如下错误:
[emerg] 10464#0: unknown directive "ssl" in /home/nginx-1.8.1/conf/nginx.conf
如果只安装pcre和zlib
./configure --prefix=/home/nginx/nginx-1.8.1 --with-pcre=/home/nginx/pcre-8.38 --with-zlib=/home/nginx/zlib-1.2.8 --without-http_ssi_module
make & make install
如果不安装任何模块:
./configure --prefix=/home/nginx/nginx-1.8.1 --without-http_rewrite_module --without-http_gzip_module --without-http_ssi_module
make & make install
不清楚的可以通过./configure --help
查看相关参数介绍。
启动与停止
# cd /home/nginx/nginx-1.8.1/sbin
# ./nginx
这样就启动了,修改了配置文件后可以:
# ./nginx -s reload(重新加载配置文件)
# ./nginx -s stop(或者停止)
nginx配置
关于nginx的配置,另外单独写了一篇博文,请参考:nginx配置总结
nginx更新模块
假如nginx已经安装好了并且平稳运行了一段时间,现在需要新安装一个模块该如何操作呢?这里就以我最近安装ssl模块为例介绍,前面说了,第一次安装nginx的时候觉得https暂时用不到就没安装,现在需要安装就没第一次那么容易了。
nginx安装新模块需要整体重新编译,所以需要知道上一次安装时的编译命令,假设nginx
安装在/home/nginx/nginx-1.8.1
下面,定位到sbin
下面执行./nginx -V
(注意V
是大写)后可以查看安装时使用的命令:
[root@iZ94i7kwlagZ sbin]# ./nginx -V
nginx version: nginx/1.8.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
built with OpenSSL 1.0.2n 7 Dec 2017
TLS SNI support enabled
configure arguments: --prefix=/home/nginx/nginx-1.8.1 --with-pcre=/home/nginx/pcre-8.38 --with-zlib=/home/nginx/zlib-1.2.8 --without-http_ssi_module
然后定位到源码包去重新编译,根据已有的命令再加上我们这次要安装的新模块命令,我这里是--with-openssl=/home/nginx/openssl-1.0.2n --with-http_ssl_module
。注意,如果源码包删了,重新下载一个版本一致的nginx-1.8.1.tar.gz
并解压,为了区分,我解压到/home/nginx/temp-nginx-1.8.1
:
cd /home/nginx/temp-nginx-1.8.1
./configure --prefix=/home/nginx/nginx-1.8.1 --with-pcre=/home/nginx/pcre-8.38 --with-zlib=/home/nginx/zlib-1.2.8 --with-openssl=/home/nginx/openssl-1.0.2n --with-http_ssl_module
make
切记这里仅仅需要make
,不需要make install
。执行完之后我们在/home/nginx/temp-nginx-1.8.1/objs/
下得到了一个新的二进制文件nginx
,上面所有操作都是为了得到这个文件,然后将这个文件覆盖现有nginx文件即可(为了以防万一,最好备份一下):
cd /home/nginx/nginx-1.8.1/sbin/
./nginx -s stop # 先停止
cp ./nginx ./nginx.backup # 备份
cd /home/nginx/
cp temp-nginx-1.8.1/objs/nginx nginx-1.8.1/sbin/nginx # 覆盖
然后启动nginx查看是否正常。