1. 下载 openssl 并解压,并将解压后的文件夹改名为 openssl-111。
wget https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz
tar -zxvf openssl-1.1.1-pre8.tar.gz
mv openssl-1.1.1-pre8 openssl-111
注意:这个 openssl 解压即可,不要安装。
2. 下载 nginx 并解压,并将解压后的文件夹改名为 nginx-114。
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz
mv nginx-1.14.0 nginx-114
3. 安装 pcre 和 zlib 库,否则安装是会出错。
yum -y install pcre-devel zlib-devel
4. 进入 nginx-114 目录后输入如下命令,进行设置、编译、安装。
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=./openssl-1.0.1e --with-openssl-opt="enable-tlsext"
make
make install
5. 如果仅仅出现 make[1]: Leaving directory `/root/runenv/nginx-114' 这一行错误或者说到这行后看不到后续日志,可忽略。
6. 通过如下过程判断 nginx 是否正常安装。
首先,由于 prefix=/usr/local/nginx,看 /usr/local/ 目录下是否有 nginx 目录?
接着,如果目录存在,看 nginx 能否正常启动?
最后,如果 nginx 启动成功,通过 http://IP 看是否能正常展示 Welcome to nginx! 网页?
如果都可以,则Nginx 安装成功。
7. 编辑 /lib/systemd/system/nginx.service 文件,录入如下内容,以配置系统服务让 nginx 开机启动。
[Unit] #服务说明
Description=nginx - high performance web server #服务描述
Documentation=http://nginx.org/en/docs/ #服务文档
#启动顺序,本服务在这些服务启动前启动
#Before=
#启动顺序,本服务在这些服务启动后启动
After=network.target network-online.target remote-fs.target nss-lookup.target
#推荐使用。这个单元启动了,其需要的单元也会被启动;其需要的单元停止了,对本单元无影响。
Wants=network-online.target
[Service] #服务运行参数设置
Type=forking #后台运行
PIDFile=/run/nginx.pid #用于 systemd 跟踪服务主进程
#指定启动单元的命令或脚本,ExecStartPre和ExecStartPost指定在ExecStart之前或之后用户自定义执行的脚本
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx #启动
ExecReload=/bin/kill -s HUP $MAINPID #重启
ExecStop=/bin/kill -s QUIT $MAINPID #停止
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true #给服务分配独立的临时空间
[Install] #运行级别下服务安装的相关配置
WantedBy=multi-user.target #多用户
8. 通过如下命令设置开机启动或停止开机启动。
systemctl enable nginx.service
systemctl disable nginx.service
9. 通过如下命令启动、重启、停止 nginx服务。
systemctl start nginx.service
systemctl restart nginx.service
systemctl stop nginx.service
10. 通过 /usr/local/nginx/sbin/nginx -V 命令,如果出现 TLS SNI support enabled,则表示可以同一个IP配置多个HTTPS主机了。