其他服务:
一. 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/
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查看
第一种方式已经安装完成了,接下来进行第二种方式的安装,这次是使用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
提示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的源有300多个包,不过我们用不了那么多,只需要安装服务端的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 打开就是到欢迎页面的
由前后做的实验可以发现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.conf
43 location / {
44 root html;
45 index index.html index.htm;
46 }
47 location /status {
48 stub_status on;
49 access_log off;
50 }
从第47行开始添加状态显示
如果不确定配置文件是否配置成功,可以使用-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状态的组件,在网页上也能看到访问的流量情况。
IP/status可以看到网页流量状态
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安装部署相对来说也是比较简易的,编译过程会稍微有些难度,若觉得以上内容还行的,可以点赞支持一下!