Nginx安装

本文基于CentOS7系统

安装前的环境准备

  • 主要是编译环境的准备,gcc, make,g++等
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++

确定安装位置

  • 可以是任何目录,这里选择/usr/local/src为安装目录
cd /usr/local/src

安装PCRE

  • PCRE下载地址:ftp.csx.cam.ac.uk/pub/software/programming/pcre/
  • PCRE版本有PCRE2和PCRE两个大版本,有时PCRE2会导致nginx make时报错,可更换PCRE版本 这里选择pcre-8
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz 
tar -zxvf pcre-8.42.tar.gz
cd pcre-8.42
./configure
make
make install

安装zlib库

  • 到http://zlib.net 下载最新的zlib包
cd /usr/local/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

安装SSL

  • 查看本机是否已安装好openssl,若没有,则进行安装
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
tar -zxvf openssl-1.1.0e.tar.gz

安装Nginx

  • nginx有稳定版和开发版两个版本,根据我们需求自由选择。
  • 我们将/usr/local/nginx作为nginx的安装目录
cd /usr/local/src
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2

./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.42 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.1.0e
 
make
make install
  • 安装成功后,/usr/local/nginx目录内容如下:

nginx启动关闭

  • 启动,查看端口
/usr/local/nginx/nginx
ss -lnut
  • 从容关闭,处理所有请求后关闭
ps -ef |grep nginx
kill -QUIT  nginx主进程号
  • 快速停止,立即关闭
ps -ef |grep nginx
kill -TERM nginx主进程号 
  • 强制停止
ps -ef|grep nginx
kill -9 nginx主进程号
  • 重新加载配置文件
/usr/local/nginx/nginx -s reload

注意:在编译过程中可能会报ssl错误,如:

/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127

出错是因为Nginx在编译时并不能在/usr/local/ssl/.openssl/ 这个目录找到对应的文件,其实我们打开/usr/local/ssl/这个目录可以发现这个目录下是没有.openssl目录的,因此我们修改Nginx编译时对openssl的路径选择就可以解决这个问题了,解决方法:

打开nginx源文件下的/usr/local/src/nginx-1.9.9/auto/lib/openssl/conf文件,找到如下代码:


CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

将 .openssl删掉,保存,再次编译即可。