项目部署 Nginx+Docker

   日期:2024-12-27    作者:ruishuomeng 移动:http://mip.riyuangf.com/mobile/quote/71362.html

Nginx(发音同engine x)是一款基于异步框架的轻量级/高性能的Web服务器/反向代理服务器/缓存服务器/电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·赛索耶夫)所开发,最初供俄国大型网站Rambler.ru及搜寻引擎Rambler使用。

特点
优点

高并发量:基于 epoll/kqueue 模型开发,支持高并发量,官方说其支持高达 5w 并发连接数的响应
内存消耗少:善于处理静态文件,相较于其他web(比如:apache),占用更少的内存及资源
简单稳定:配置简单(一个conf文件),运行简单(nginx命令),而且运行稳定
模块化程度高:功能模块插件化设计,可以自由配置相应的功能
低成本:Nginx的负载均衡功能很强大而且免费开源,相较于几十万的硬件负载均衡器成本相当低
缺点

动态处理差:nginx善于处理静态文件,但是处理动态页面相较于Apache之类重量级的web软件能力稍欠缺

项目定位:静态文件展示、动静分离

基本操作

① 安装Nginx

 

② 检查效果

 

③ 服务器相关命令

 
  • 角色:Web服务器/反向代理服务器/缓存服务器/邮件代理服务器
  • 特点:高并发、简单稳定、模块化、低成本

配置解析

 
 
 
 

作用:指定客户端请求的html文件所在目录路径

默认:root /var/www/html;

④ index属性

作用:指定客户端请求时默认返回的文件

默认:index index.html index.htm index.nginx-debian.html;
5. location 配置段
作用:location 主要是根据server匹配到的请求路径去处理和响应

 
 

② 匹配优先级


样例配置
进入/etc/nginx/conf.d目录下,并创建server.conf配置文件

 

进阶实践:root和alias区别

root和alias所起的作用都是指定响应请求所用文件的路径,只是他们有些许的区别

 

结果

 

反向代理

① 从用途上来讲

正向代理:为局域网客户端向外访问Internet服务,可以使用缓冲特性减少网络使用率。
反向代理:为局域网服务器向外提供Internet服务,可以使用负载平衡提高客户访问量,还可以基于高级URL策略和管理技术对服务进行高质量管控。
② 从用途上来讲

正向代理:必须采取安全措施确保内网客户端通过它访问外部网站,隐藏客户端的身份。
反向代理:对外提供服务是透明的,客户端并不知道自己访问的是一个代理,隐藏服务端的身份。

配置介绍

① 配置示例

 

② 属性详解
proxy_pass指令设置被代理服务器的地址和被映射的URI,地址可以使用主机名或IP加端口号的形式

③ uwsgi模块

nginx善于做静态文件相关的代理,而不擅长动态相关的代理,所以nginx的uwsgi模块就出现了,它主要做动态相关的代理工作

 
 

负载均衡是什么

我们之前使用proxy_pass的方式实现了nginx代理请求到后端的效果,随着我们的网站访问量越来越多,一个后端就不现实了,那么接下来我们应该如果在访问量日渐增大的情况下,满足线上业务的稳定呢

解决方法就是:负载均衡

负载均衡简单说来人多力量大,打群架。

在nginx中的负载均衡主要有两种:四层负载(ip:port)、七层负载(http://xxx)

① 配置示例

 

② 属性详解

upstream:主要是定义一个后端服务地址的集合列表,每个后端服务使用一个server命令表示

upstream {} 和 server {} 两部分内容属于平级关系。
uwsgi.ini 配置文件

 

进入uwsgi.ini 启动服务

 

基本配置

 

后端状态

在upstream模块中,可以使用server命令指定后端服务器的地址,同时还可以设置后端服务器在负载均衡调度中的状态,常用的状态有以下几种

down:表示当前server主机暂时不参与负载均衡。
backup:后备主机,当所有非backup机器出现故障或者繁忙的时候,才会请求backup机器。
max_fails:允许请求的最大失败数,默认为1,配合fail_timeout一起使用
fail_timeout:经历max_fails次失败后,暂停服务的时间,默认为10s。

调度算法

官方资料:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#example

Nginx提供的负载均衡策略有两大类

内置策略:nginx自带的算法
雨露均沾型:轮训、加权轮训、哈希
定向服务型:ip_hash、least_conn、cookie、route、lean
商业类型:ntlm、least_time、queue、stick
扩展策略:各种结合业务场景自定义的算法或者第三方算法
自定义算法
第三方算法:fair、url_hash
常用算法简介

轮询(默认):请求按顺序逐一分配到不同的后端服务器。
weight:指定轮询权重,值越大,分配到的几率就越高,适用于后端服务器性能不均衡情况。
ip_hash:按访问IP的哈希结果分配请求,分配后客户端访问固定后端服务器,有效的解决动态网页会话共享问题。
fair:基于后端服务器的响应时间来分配请求,响应时间短的优先分配。
url_hash:按访问URL的哈希结果分配请求,使同一URL定向到同一台后端服务器,可提高后端缓存服务器的效率。

nginx 日志

① 日志简介

nginx默认提供了两个日志文件:access.log和error.log。
access.log:可以得到用户请求的相关信息
error.log:可以获得某个web服务故障或其性能瓶颈等信息

② 基本配置

 

日志配置格式

 

默认日志格式

 
 

基本知识

Docker是一个开源的容器引擎,它基于LXC容器技术,使用Go语言开发。源代码托管在Github上,并遵从Apache2.0协议。

Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

简单来说:Docker就是一种快速解决业务稳定环境的一种技术手段,可以快速构建项目运行所依赖的环境。

Docker官网:http://www.docker.com

Github Docker源码:https://github.com/docker/docker

角色组成
Docker镜像(image:它是一个只读的文件,就类似于我们安装操作系统时候需要的那个iso光盘镜像,通过运行这个镜像来完成各种应用的部署。这里的镜像就是一个能被docker运行起来的一个程序。
Docker容器(container:容器就类似于我们运行起来的一个操作系统,而且这个操作系统启动了某些服务。这里的容器指的是运行起来的一个Docker镜像。
Docker仓库(repository):仓库就类似于我们在网上搜索操作系统光盘的一个镜像站。这里的仓库指的是Docker镜像存储的地方。

Docker安装

2.1 安装过程
① 使用阿里云的安装源

 

② 安装依赖软件

 

③ 安装docker软件

 

apt-get install docker-ce= -y
④ 查看docker服务状态

systemctl status docker
:ubuntu安装完毕后,默认就开启服务了

⑤ 网卡区别

安装前:只有ens33和lo网卡

安装后:docker启动后,多出来了docker0网卡,网卡地址172.17.0.1

⑥ docker服务命令

systemctl [参数] docker
参数详解
start 开启服务
stop 关闭
restart 重启
status 状态

镜像管理

操作命令

1)搜索镜像

 

2) 获取镜像

 

3)查看本地镜像

 

镜像的ID唯一标识了镜像,如果ID相同,说明是同一镜像。TAG信息来区分不同发行版本,如果不指定具体标记,默认使用latest标记信息。
4)查看镜像历史

 
重命名、删除

1)镜像重命名

 

2)删除镜像

 

3)导出、导入
1)导出镜像
将已经下载好的镜像,导出到本地,以备后用

 
 

2)导入镜像

 

容器管理

基本命令

1)查看容器

 

2)创建容器

 
 

启动命令参数详解

  • –name:给容器指定一个名称
  • -i:让容器的标准输入保持打开
  • -t:让docker分配一个伪终端,并绑定到容器的标准输入上
  • /bin/bash:容器其中时执行一个命令
    3)停止、启动容器
 

4)进入正在运行的容器

 

5)删除容器

 
基于容器创建镜像
 
容器运行日志和详细信息

1)容器运行过程中产生的日志

 

2)查看容器信息

 

数据管理

在容器运行过程中,可能会产生一些数据,当容器被停止,重启或者删除时,容器中的这些数据就会丢失,若想要将这些数据持久化保存,就需要用到数据卷和数据卷容器

  • 数据卷
    将宿主机的某个文件或目录,映射到容器中,作为数存储的目录或者文件,那么我们就可以在宿主机进行数据的存储
    -v:参数的作用是将宿主机的一个目录或文件(绝对路径)作为容器的数据卷挂载到docker容器中,使宿主机和容器之间可以共享一个目录,如果本地路径不存在,docker也会自动创建。
    命令格式
 

创建两个容器 vc-test1 和 vc-test,同时挂载vc-test 数据卷容器

 

网络管理

默认情况下,容器和宿主机之间的网络是隔离的,为了让容器使用网络,我们可以采用两种方式端口映射和网络模式

  • 端口映射
    可以通过端口映射的方式,将容器中的端口,映射到宿主机的某个端口上。可以通过ip:port
    ② 端口映射种类

随机映射
指定映射
注意:生产场景一般不使用随机映射,但是随机映射的好处就是由docker分配,端口不会冲突,不管哪种映射都会影响性能,因为涉及到映射。

③ 端口映射命令

 

随机映射

 

指定映射

 

 

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号