一、前言
这回我来讲解下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
好啦!教程就到这啦!