如何在 CentOS 系统中安装和配置 nginx 服务?

530 阅读5分钟

《前端性能优化 - 启用 Gzip 压缩》一文中给大家介绍过如何在 nginx 服务器中开启 gzip。今天就再来介绍一下如何在 CentOS 系统中安装和配置 nginx 服务?

启用 network 服务

如果你要维护的 CentOS 服务器是采用最小化安装的,那么系统安装完毕后,甚至连网络都是不可用的。所以在使用 CentOS 的包管理工具 yum 安装 nginx 服务之前,首先要开启 CentOS 的 network 网络服务。

我们需要先用 vi 编辑器打开 network 服务的配置文件,命令如下(vi 编辑器的一些基础操作不在本文的介绍范围内):

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

打开配置文件后,按 i 键,进入编辑模式。找到文件中的最后一行 NOBOOT=no,将 no 改为 yes,然后按 : 键,接着输入 wq,保存并退出 vi 编辑器。

接着我们就可以启动 network 网络服务了,命令如下:

# 设置为系统服务
sudo systemctl enable network

# 启动网络服务
sudo service network start

这样 CentOS 系统就可以访问网络了,我们就可以使用 yum 命令安装我们需要的软件了。我们可以安装 net-tools 工具看看效果:

# ifconfig 命令就在这个软件包中 
sudo yum install -y net-tools

如果一切正常,你会看到 CentOS 可以通过网络从 CentOS 包仓库安装网络工具了(net-tools)包了。

安装 EPEL 仓库

现在已经可以访问网络了,但是还不能直接安装 nginx 服务器。因为 nginx 服务器软件的安装包默认不在 CentOS 的 yum 包安装源仓库中,需要手动添加 CentOS 7 EPEL 仓库,nginx 服务器软件的安装包在 EPEL 仓库里。安装 EPEL 仓库的命令如下:

sudo yum install -y epel-release

安装 nginx

在安装完 EPEL 仓库后,我们就可以直接使用 yum 在安装 nginx 了,命令如下:

sudo yum install -y nginx

基础 nginx 命令

安装完 nginx 服务器的软件包后,我们就可以使用 nginx 的一些命令来进行相关的控制操作了。这里我就直接把所有 nginx 命令给出。

显示帮助

nginx -h

显示 nginx 版本

# 仅显示版本
nginx -v 

# 显示版本、构建信息和配置信息 
nginx -V

检测 nginx.conf 配置是否正确

# 检测 nginx.conf 配置是否正确 
nginx -t # 

检测 nginx.conf 配置并显示出来 
nginx -T

信号控制命令

# 启动
nginx -s start 

# 停止
nginx -s stop

# 重启
nginx -s reload

# 打开错误日志
nginx -s reopen

# 退出
nignx -s quite

这些命令中,我们用的比较多的应该是信号控制命令以及 nginx -t 了。

启动 nginx 服务

在实际的工作中很少直接用信号控制命令来控制 nginx 服务器的启动与重启等操作。通常都是将 nginx 配置为系统服务,使用 CentOS 系统的 service 命令来控制 nginx 服务的启动与重启等操作。命令如下:

# 设置为系统服务
sudo systemctl enable nginx

# 启动 nginx 服务使用 start,还有 stop、restart 以及 reload
sudo service nginx start

将 nginx 服务配置为 CentOS 的系统服务的好处是在维护服务器的时候。重启 CentOS 服务器后,nginx 作为系统服务会自动重启。而使用信号控制命令来则需要每次在 CentOS 服务器重启后,手动敲命令启动 nginx 服务。

启动 nginx 服务后,我们可以用以下命令查看 nginx 服务的运行状态:

# 验证查看服务状态 
sudo service nginx status

nginx 服务器的关键配置文件

除了前文介绍的 nginx 常用命令,使用 nignx 服务另外一个需要了解的基础知识就是 nginx 服务的一些关键文件的路径和作用(PS:以下这些 nginx 关键文件的路径,都是指使用 yum 直接安装 nginx 的默认路径。):

  • /etc/nginx:nginx 配置文件的根目录,nginx 的所有配置文件都在这个目录下面;
  • /etc/nginx/nginx.conf:nginx 主配置文件,所有 nginx 的基础和全局配置都应该在这个文件中配置;
  • /etc/nginx/conf.d:nginx 默认站点配置文件所在目录;
  • /var/log/nginx:nginx 日志文件目录,访问日志 access.log 和 错误日志 error.log 都在这个目录中;

防火墙配置

到目前为止,我们已经启动了 nginx 服务了。不过如果想要外网能够访问我们在 nginx 服务器中配置的 Web 站点,我们还需要做一些额外的操作,那就是做防火墙配置。让 CentOS 系统对外网公开 80 端口和允许外部访问 http 服务。命令如下:

# 开启 80 端口 
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent 
sudo firewall-cmd --zone=public --add-service=http --permanent 

# 保存防火墙配置 
sudo firewall-cmd --reload

如果你的 Web 站点启用 HTTPS 协议,那么你还需要让防火强对外公开 443 端口和 https 服务。

# 开启 443 端口 
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent 
sudo firewall-cmd --zone=public --add-service=https --permanent 

# 保存防火墙配置 
sudo firewall-cmd --reload

至此,如果你的 DNS 服务器上做域名解析,将域名解析到目前 CentOS 服务器的 IP 地址,那么其他用户就可以通过域名访问你的 Web 站点了。

selinux 配置

通常,我们都会用 nginx 服务器做反向代理设置,配置 Web 站点集群,实现站点的高可用。那么这个时候我们还需要配置 selinux 配置,允许 http 服务间的通信。

# 允许 http 服务间的通信 
sudo setsebool -P httpd_can_network_connect 1

OK,现在就已经完成了在 CentOS 安装和配置 nginx 服务全部基础操作了。你可以通过域名或者 nginx 服务中默认的 http://localhost 访问自己的 web 站点了。