本文记录了如何在 CentOS 7 中编译安装 nginx。

安装前准备

对于编译安装nginx,需要先安装编译工具,再安装nginx所需的依赖。

yum -y install gcc gcc-c++ autoconf automake make
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

添加 nginx 用户

我们需要添加运行 nginx 所使用的用户。

groupadd -f nginx
useradd -g nginx nginx

下载nginx源码

nginx官网提供了所有版本的nginx下载。在下载页面可以找到目前推荐下载版本。

2020年8月1日的最新版本为1.19.1,稳定版本为1.18.0。这里我们选择下载稳定版本进行安装。

# 切换到src目录
cd /usr/local/src

# 下载稳定版本
wget http://nginx.org/download/nginx-1.18.0.tar.gz

# 解压
tar xf nginx-1.18.0.tar.gz

配置并安装

# 进入解压后的目录
cd nginx-1.18.0

我们需要对nginx进行配置,即调用./configure。推荐添加的参数如下:

  • --prefix=用于指定安装目录。本教程将选择--prefix=/usr/local/nginx
  • --user=用于指定用户。本教程将使用nginx
  • --group=用于指定用户组。本教程将使用nginx
  • --with-http_stub_status_module将启用状态监测。
  • --with-http_ssl_module将启用ssl模块,用于支持https访问。
  • --with-http_v2_module将启用http_v2模块,用于支持http/2协议。
  • --with-http_realip_module将启动http_realip模块,一般用于反向代理,修改客户端请求头中的IP值。
# 配置
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module

出现如下信息则代表可以进行编译安装了:

configure

# 编译安装
make & make install

如果是升级nginx,则只需要make,并将objs/nginx复制为/usr/local/nginx/sbin/nginx

安装完成后,打开浏览器输入127.0.0.1,如果看到页面,则表明成功。

默认页面

nginx 服务配置

我们可以通过以下命令来操作nginx服务器:

# 启动 nginx
/usr/local/nginx/sbin/nginx
# 停止 nginx
/usr/local/nginx/sbin/nginx -s stop
# 重启 nginx
/usr/local/nginx/sbin/nginx -s reload 

这种方式每次需要输入较多字符才能进行操作。如果我们想要nginx开机启动,我们需要进行以下配置:

# 新建 nginx 服务
vi /lib/systemd/system/nginx.service

输入以下内容并保存:

[Unit]
Description=nginx
After=network.target
  
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target

设置开机启动

systemctl enable nginx

服务启动/停止/重启

# 启动
systemctl start nginx
# 停止
systemctl stop nginx
# 重启
systemctl restart nginx

查看服务状态

systemctl status nginx