> 文章列表 > 部署安装Nginx服务实例

部署安装Nginx服务实例

部署安装Nginx服务实例

其他服务:

搭建zabbix4.0监控服务实例
普罗米修斯监控mysql数据库实战
Linux安装MySQL数据库步骤

一. Nginx概念介绍

1.介绍Nginx程序

Nginx (engine x) 是一款开源且高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。主要特点是占用内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好,宣称Nginx处理静态文件并发可达5万每秒。

2. Nginx对比Apache的优点

● 高并发,响应速度非常块,官方宣称Nginx处理静态文件并发5万每秒;
● 负载均衡及反向代理性能非常强;
● 系统内存和CPU占用率低;
● 可对后端服务进行健康检查;
● 支持PHPcgi方式和FastCGI方式;
● 可以作为缓存服务器、邮件代理服务器;
● 配置代码简洁且易上手;

3. Nginx的模块功能

Nginx web服务器最主要就是各种模块的工作,模块从结构上分为核心模块,基础模块、第三方模块。
其中这三类模块分别是:
● 核心模块:http模块、EVENT模块和MAIL模块等
● 基本模块:HTTP Access模块、HTTP FastCGI模块、HTTP proxy模块和HTTP REwrite模块
● 第三方模块:HTTP Upstream REquest Hash模块、Notice模块和HTTP Access Key模块、Limit req模块等。

Nginx的模块从功能上分为如下三类:
● Handlers(处理器模块):此类模块直接处理请求,并进行输出内容和修改headers信息等操作,Handlers处理器模块一般只能有一个;
● Filters (过滤器模块):此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出;
● Proxies (代理类模块):此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。

二. Nginx服务的安装

Nginx的安装部署有很多种方法,其中可以通过yum命令进行安装,也可使用源码安装,这里依次来介绍。

2.1 实验环境准备

安装服务都是在虚拟机VMware Workstation上安装,若想都尝试去安装,可以提前先做好配置过环境的快照。
1)查看服务器版本

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

2)IP是否能ping通

[root@localhost ~]# hostname -I
192.168.102.166 192.168.122.1 [root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=53 time=28.2 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=53 time=35.9 ms

3)关闭安全上下文和防火墙

[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce 
Permissive
[root@localhost ~]# iptables -F 
[root@localhost ~]# systemctl stop firewalld

4)准备好要安装的软件包
Nginx的官网:http://nginx.org/
部署安装Nginx服务实例

RPM包:http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
稳定版源码包:http://nginx.org/download/nginx-1.22.1.tar.gz

2.2 通过YUM安装

2.2.1 安装Nginx

需要先安装yum-utils工具包,才能安装epel源,而epel源默认有nginx的软件包,所以可以依次安装这几个软件包。

yum install yum-utils
yum install epel-release -y
yum install nginx -y

2.2.2 查看Nginx

从epel源中下载nginx的版本是1.20.1

[root@localhost ~]# nginx -v
nginx version: nginx/1.20.1

2.2.3 启动nginx服务

systemctl start nginx

启动服务后即可在网页上输入IP查看
部署安装Nginx服务实例
第一种方式已经安装完成了,接下来进行第二种方式的安装,这次是使用rpm包安装,恢复之前配置好的快照,开始第二个实验。

2.3 使用RPM包安装

2.3.1 在官网下载RPM包

前面已经列出所需要的RPM包,先下载好RPM包

wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

部署安装Nginx服务实例
提示OK就是已经下载成功了

2.3.2 安装RPM包

前面下载好了RPM包,可以看到在当前目录下有刚下载好的包,现在开始安装RPM包。

[root@localhost ~]# ls
anaconda-ks.cfg                              公共  视频  文档  音乐
nginx-release-centos-7-0.el7.ngx.noarch.rpm  模板  图片  下载  桌面
[root@localhost ~]# rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
警告:nginx-release-centos-7-0.el7.ngx.noarch.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 7bd9bf62: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:nginx-release-centos-7-0.el7.ngx ################################# [100%]

使用ls查看repo源地址,也能看到这个nginx.repo安装上了
部署安装Nginx服务实例
一共可以看到nginx的源有300多个包,不过我们用不了那么多,只需要安装服务端的nginx程序即可。
部署安装Nginx服务实例

yum install nginx.x86_64 -y

2.4.3 启动nginx服务

[root@localhost ~]# nginx -v
nginx version: nginx/1.22.1

通过RPM包下载的版本是1.22.1
接下来重启服务就行了

systemctl start nginx

在官网输入IP 打开就是到欢迎页面的
部署安装Nginx服务实例
由前后做的实验可以发现1.22.1与1.20.1显示的欢迎页面是不一样滴

2.4 通过源码安装Nginx

通过源码的方式来编译Nginx

2.4.1 在官网下载压缩包

http://nginx.org/en/download.html
下载压缩包并解压到当前目录中

wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar xf nginx-1.22.1.tar.gz
mv nginx-1.22.1 nginx   #重命名

2.4.2 安装所需的依赖包

[root@localhost ~]# yum install openssl openssl-devel gcc -y

2.4.3 开始编译服务

#编译nginx的家目录与所需组件信息
[root@localhost nginx]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
#可以判断是否成功
[root@localhost nginx]# echo $?
0   
#开始安装
[root@localhost nginx]# make
[root@localhost nginx]# make install
[root@localhost nginx]# cd /usr/local/nginx/sbin/
#验证配置文件是否正确
[root@localhost nginx-1.22.1]# ./nginx -t
[root@localhost sbin]# ./nginx -t
nginx: the configuration file 
#提示OK表示没有问题
/usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#然后就能启动服务了
[root@localhost sbin]# ./nginx

如果编译过程中出现问题,也可使用make -B参数强制编译
参数说明:

  • –prefix 表示指定服务的文件目录
  • –with-http_ssl_module 启用支持https的支持
  • –with-http_stub_status_module 支持查看nginx的状态页。
  • –with-pcre 启动pcre库

为什么前面有的模块需要写上with
实际上--with开头的,默认是禁用这个选项的,既是还未开启,若想使用的时候,需要在编译的时候加上;当然还有--without开头的,默认是启用的模块,若不想启动此模块,可以在编译的时候加上这个参数。
若要查看更多模块,可以到官网文档中查看:
参考文档地址:http://nginx.org/en/docs/configure.html

2.4.4 修改Nginx配置文件

[root@localhost sbin]# find / -name nginx.conf
/root/nginx-1.22.1/conf/nginx.conf
/usr/local/nginx/conf/nginx.conf
[root@localhost sbin]# vim /usr/local/nginx/conf/nginx.conf43         location / {44             root   html;45             index  index.html index.htm;46         }47         location /status {48             stub_status on;49             access_log off;50         }

从第47行开始添加状态显示
部署安装Nginx服务实例
如果不确定配置文件是否配置成功,可以使用-t参数验证一下,只要看到OK表示配置没问题

[root@localhost sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2.4.5 加载配置文件

重新加载配置文件,nginx可以做到平滑重启服务,感应不到web网页中断的情况

[root@localhost sbin]# ./nginx -s reload

重启之后在网页就能看到信息了,并且由于加上了status状态的组件,在网页上也能看到访问的流量情况。
部署安装Nginx服务实例
IP/status可以看到网页流量状态
部署安装Nginx服务实例

2.5 在docker上安装Nginx

2.5.1 下载docker源

[root@localhost ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
[root@localhost ~]# yum install docker-ce -y
[root@localhost ~]# docker -v
Docker version 23.0.1, build a5ee5b1

2.5.2 安装镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://mr2x9gr3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.5.3 拉取nginx程序

[root@localhost ~]# docker pull nginx:latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest#查看拉取的内容
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   14 months ago   141MB

2.5.4 启动Nginx容器

[root@localhost ~]# docker run  --name=nginx-test -p 8080:80 -d nginx
28f0a6717d4921459b9bbe438c0ac464b6bff1a42808a5e7032035b3cff24675
#--name nginx-test:容器名称
#-p 8080:80 :端口进行映射,将本地8080端口映射到80
#-d nginx :设置容器在后台运行

使用IP加8080即可查看
部署安装Nginx服务实例

总结

nginx安装部署相对来说也是比较简易的,编译过程会稍微有些难度,若觉得以上内容还行的,可以点赞支持一下!
在这里插入图片描述