CentOS7 Nginx安装配置


Nginx (engine x) 是一个高性能、轻量级的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强。

环境准备

gcc

gcc是linux下的编译器,可以编译 C,C++,Ada,Object C和Java等语言,一般阿里云centos7环境自带安装。

1
yum -y install gcc

pcre、pcre-devel安装

pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式.

1
yum install -y pcre pcre-devel

gzip

zlib库提供了很多种压缩和解压缩方式,nginx允许使用zlib对http包的内容进行gzip,避免资源过大加载过慢

1
yum install -y zlib zlib-devel

openssl

openssl是web安全通信的基石,需要安装

1
yum install -y openssl openssl-devel

编译安装

安装有直接yum安装和源码编译安装两种,个人更喜欢源码编译安装,以下为源码编译安装的步骤

安装

Ngnix默认安装在/usr/local下,新建并切换至nginx目录

1
mkdir /usr/local/nginx && cd /usr/local/nginx

前往官网获取安装包下载路径:http://nginx.org/download/
nginx-1.21.3.tar.gz为例,获取安装包

1
wget http://nginx.org/download/nginx-1.21.3.tar.gz

解压

1
tar -zxvf nginx-1.21.3.tar.gz

编译

进入解压后的文件夹

1
cd nginx-1.21.3

编译源码文件时,通过configure命令进行配置,若不添加参数,直接输入如下命令即可编译成功

1
./configure

如果需要配置时添加其他模块,需要在后面跟上相关配置,如配置https所必须的http_ssl_module模块

1
./configure --with-http_ssl_module

配置相关参数和模块可参考:http://www.weixueyuan.net/a/604.html
编译后执行安装命令,默认在/usr/local/创建nginx文件夹并安装到此位置

1
2
make
make install

这里因为我已经事先创建了nginx文件夹并处于/usr/local/nginx/nginx-1.21.3,所以nginx自动被安装到了上一层目录内,回到上一层目录

1
cd ..

配置环境变量

nginx的执行文件位于/usr/local/ngnix/sbin,里面只有一个nginx,很好确认,为了方便操作我需要将他加入环境变量

新增nginx环境变量文件

1
vim /etc/profile.d/nginx.sh

配置文件内容

1
export PATH=$PATH:/usr/local/nginx/sbin

重启服务器生效

nginx常用相关参数

1
2
3
4
5
6
7
8
nginx -s reload # 重新加载配置文件后,重启nginx
nginx -s reopen # 强制重启nginx
nginx -s quit # 处理完所有任务后,停止nginx
nginx -s stop # 强制停止nginx
nginx -t # 检测配置文件正确性
nginx -c filename #为nginx指定配置文件
nginx -v # 查看nginx版本信息
nginx -V # 查看nginx版本信息及配置模块信息

错误踩坑及处理

nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)

需要指定配置文件位置

1
nginx -c /usr/local/nginx/conf/nginx.conf

执行后再次执行nginx -s reload即可

注册为系统服务并开机自启动

为了方便nginx应用进程的维护和管理,这里将其注册为系统服务,由systemd进行服务管理

新建nginx服务配置文件

1
vim /usr/lib/systemd/system/nginx.service

设置如下配置内容(记得删掉#后的注释)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[Unit]
Description = The Nginx HTTP and reverse proxy server
After = network.target remote-fs.target nss-lookup.target

[Service]
Type = forking
# Nginx服务的pid文件位置
PIDFile = /run/nginx.pid
# Nginx服务启动前删除旧的pid文件
ExecStartPre = /usr/bin/rm -f /run/nginx.pid
# Nginx服务启动前执行配置文件检测
ExecStartPre = /usr/local/nginx/sbin/nginx -t -q
ExecStart = /usr/local/nginx/sbin/nginx -g "pid /run/nginx.pid ;"
ExecReload = /usr/local/nginx/sbin/nginx -t -q
ExecReload = /usr/local/nginx/sbin/nginx -s reload -g "pid /run/nginx.pid ;"

ExecStop = /bin/kill -s HUP $MAINPID
KillSignal = SIGQUIT
TimeoutStopSec = 5
KillMode = process
PrivateTmp = true

[Install]
WantedBy = multi-user.target

详细配置文件内容参考另一篇文章centos系统服务相关

配置结束后执行下面命令就ok

1
2
3
4
# 注册为开机自启动服务
systemctl enable nginx
# 启动服务
systemctl start nginx

错误踩坑及处理

错误信息:[error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"

前往错误提示文件,发现为空文件

1
vim /usr/local/nginx/logs/nginx.pid

查看nginx运行的pid

1
ps -ef |grep nginx

nginx运行的pid
将获取的pid写入nginx.pid文件

1
echo 18628 > /usr/local/nginx/logs/nginx.pid

重新加载nginx

1
nginx -s reload

参考

Nginx配置简述 - 微学苑