Linux下nginx的安装部署和配置
本文由 小茗同学 发表于 2016-10-20 浏览(5986)
最后修改 2017-12-19 标签:linux nginx 安装 部署 配置

原文发表于: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查看是否正常。