一、前言

这回我来讲解下CentOS7.x 下如何安装和配置 Nginx 服务。

Nginx的历史不在此赘述,更多信息可在网络上查询;它的特点在于轻量、快、支持并发数高是它的特性。

本篇教程将以Nginx源码的方式进行服务的安装!!

建议: 全程使用root用户进行操作。

二、安装依赖工具

首先在正式安装Nginx服务时,我们先来安装其依赖的一些工具,如果你的系统已经安装了这些工具,可以忽略此步骤:

1)Nginx源码是以gcc的环境进行编译,所以centos中需要安装该环境来编译Nginx 。

yum install gcc-c++

2)Nginx的http模块需要使用pcre来解析正则表达式。

yum -y install pcre pcre-deve

3)安装依赖的解压包

yum -y install zlib zlib-devel

4)可选的https安全协议安装

yum install -y openssl openssl-devel

三、安装与测试Nginx服务

1)看和下载最新的Nginx源码

地址:https://nginx.org/en/download.html

作为新手,我在这里建议大家下载官网中提供的 stable version 版本,该版本是稳定版可以让新手避免一些不必要的问题。

这里直接在终端下用命令进行下载:

wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

注意:nginx-1.12.2.tar.gz 字符请根据官网当前提供的最新版本进行更改。

2)解压下载好的Nginx源码压缩包

tar -zxvf nginx-1.12.2.tar.gz

3)进入解压缩后的Nginx源码目录

cd nginx-1.12.2.tar.gz

这里就是 Nginx 的所有源码了,有兴趣的朋友可深入去研究一下,后续有机会我再推出相关的博文。

4)编译和安装Nginx源码

到目前为止我们已经拿到了 Nginx 的源码了,下面就开始对源码进行编译和安装:

编译和安装共3步,分别是(注意去掉#号):

# ./configure
# make
# make install

执行完以上的3步后,Nginx 服务我们就已经安装完成了,下面开始启动 Nginx 服务并进行访问测试,是不是想想就激动了呢!

5)启动Nginx服务

一般编译安装完的软件都会放在/usr目录中,注意是 usr 不是 user,这是Unix System Resource,是Unix系统资源的缩写。

我们安装的 Nginx 服务就在 /usr/local/nginx 目录中,如果你实在找不到该目录,可使用 whereis nginx 指令进行显示,它会告诉你 Nginx安 装目录在哪里。

好,下面我们就进入该服务目录中:

cd /usr/local/nginx/

Nginx 服务的控制命令都存放于/usr/local/nginx/sbin文件夹中,下面对Nginx服务的启动、停止等操作做个简单的介绍:

./nginx # 启动
./nginx -s stop # 停止
./nginx -s quit # 停止
./nginx -s reload # 重载

说明:

  • ./nginx -s quit : 此方式停止步骤是待nginx进程处理任务完毕进行停止。
  • ./nginx -s stop : 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

这时我们只需将终端的工作目录切换到sbin下,并执行 ./nginx 即可启动 Nginx 服务。

cd ./sbin
./nginx

6)查看Nginx服务进程

ps aux|grep nginx

如果看到类似以下的提示,那么恭喜你Nginx启动成功了。

root    19763  0.0  0.0  20496  572 ?     Ss  16:31  0:00 nginx: master process ./nginx

nobody   19766  0.0  0.1  23024  1572 ?     S   16:31  0:00 nginx: worker process

7)远程访问测试

在远程主机浏览器的地址栏中输入 localhost本机的 IP 地址就可看到访问情况。

当网页显示 Welcome to nginx!... 字样表示 Nginx 服务访问正常。

如果无法访问,这是因为 CentOS 系统的防火墙禁用了80/8080/443 这些端口,你可以选择关闭防火墙 或者 配置防火墙监听 80/8080/443/ 这些端口即可!

以下以关闭防火墙为例:

systemctl stop firewalld.service      # 关闭防火墙
systemctl disable firewalld.service       # 禁止防火墙开机启动

执行完以上的操作后,再次输入IP地址访问,如无异常就可以获得Nginx的服务了!!

四、防火墙知识拓展

在上文中,我们为了让Nginx服务正常运行,而关闭了 CentOS 服务器的防火墙,这就带来一个问题,那就是‘服务器安全’问题,为了解决这个问题,我们将在这里展开谈论:

在 CentOS 系列的系统中,CentOS_7.x 以上默认 firewall 为防火墙配置,为了解决防火墙安全这个问题,我们使用 iptables 配置 来代替原有的 firewall 配置。

1)首先查看默认防火墙状态

firewall-cmd --state

(关闭后显示 not running,开启后显示 running)

如果 firewall 正在运行,那么我们先将它关闭,命令如下:

systemctl stop firewalld.service
systemctl disable firewalld.service

下面在给大家提供一些关于默认 firewlall 防火墙的操作指令:

# 添加 
# 注意:--permanent 表示永久生效,没有此参数系统重启后失效
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重载 
firewall-cmd --reload
# 查看 
firewall-cmd --zone=public --query-port=80/tcp
# 删除 
firewall-cmd --zone= public --remove-port=80/tcp --permanent

2)配置 iptables 规则

在配置iptables前,我们需要安装iptables服务:

yum install iptables-services

安装好后,开始编辑这个防火墙配置文件,该文件存放在 /etc/sysconfig/iptables 目录中:

vim /etc/sysconfig/iptables

加入以下代码:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

说明:

(1) 80,8080 是 http 服务访问端口,443 是 https 服务访问端口。

(2) iptables 配置文件默认 开启了22 端口,即 ssh 远程访问控制服务。

添加成功后,保存、重启 iptables 防火墙服务:

systemctl restart iptables.service3

3)配置防火墙开机启动

systemctl enable iptables.service

好啦!教程就到这啦!

最后修改:2021 年 04 月 03 日 09 : 10 AM