由于目前负责公司 DevOps 平台的前端开发工作的原因,工作中会经常遇到 nginx 服务器相关的维护工作,通过学习和工作实践积累了一些 nginx 服务器的相关配置经验和知识积累。

在《如何在 Nginx 服务器中配置 GZip 压缩?》一文中就给大家介绍过如何在 nginx 中开启 gzip。并且也介绍过《如何将 Nginx 配置为 Windows 系统服务?》的方法。

今天就再来介绍一下如何在 CentOS 系统中安装和配置 nginx 服务?

启用 network 服务

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

我们需要先用 vi 编辑器打开 network 服务的配置文件,命令如下:

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 -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 服务后,我们可以用以下命令查看 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

到此为止,我们就完成了在 CentOS 安装和配置 nginx 服务全部基础操作了。

分类: Blog