分享好友 最新动态首页 最新动态分类 切换频道
项目部署 Nginx+Docker
2024-12-27 11:24

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分配,端口不会冲突,不管哪种映射都会影响性能,因为涉及到映射。

③ 端口映射命令

 

随机映射

 

指定映射

 

最新文章
网站建设免费书/seo优化方案报价
转载 2016年02月24日 13:58:30 5605 博客分类: 性能及调优LinuxJava   对于jps较熟悉可以直接查看第二部分的分析   1、jps的作用 jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准
游戏行业迎来AI变革:大模型助力创意与效率双提升
2024年注定是一个充满机遇与挑战的年份。在大模型技术不断成熟的背景下,游戏行业正经历着前所未有的变革。这一轮科技创新,不仅仅是为了降本增效,更多的是为了探索创意的新边界。根据南方财经全媒体记者吴立洋在北京的报道,人工智能(AI
成都微博热搜榜怎么做
成都微博热搜榜怎么做一:话题策划-微博热搜榜根据客户需求,策划出符合平台规则的创意,提高上榜率二:微博热搜执行方案成都微博热搜榜话题营销流程:1.需要客户提供项目背景、核心诉求、产品资料(主要卖点)等资料2.根据客户需求策划冲榜
用AI生成美女写真!简单易用的教程与工具推荐
DALL-E:这一AI工具由OpenAI开发,以其令人惊艳的图像生成能力而闻名。用户只需提供描述,系统便能生成多种样式的美女图片,效果多样且极具艺术感。然而,生成高质量的图像需要经过多次尝试,用户可能需耐心调整描述才能达到理想效果。Midj
【Excel视频教学】rank函数制作成绩排名
【推荐阅读】大家好,本视频主要讲解利用rank函数制作成绩排名首先我们来看一下案例,在本案例中有253条数据需要对这253条数据进行排名,在排名制作过程中需要注意的是成绩并列的情况,比如说两个80分为并列第二名,那下一位就是第四名。好
淘宝店铺怎么做老顾客营销?
1、结合买家心理和收货期待,玩好宣传单在日常生活中,当我们收到宣传单可能不太会多关注,反而网上购物收到的货会比较关注,因为会对自己买的东西抱有强烈的期待,正是由于这份收货心理,关于买的产品,一些相关的传单会有很大几率去看。
Python 人狗大 CSDN:一个 Python 开发者的学习交流社区
Python 人狗大 CSDN 社区汇聚了来自世界各地的 Python 爱好者和专业开发者。无论是初出茅庐的新手,还是经验丰富的高手,都能在这里找到自己的位置。对于新手来说,这里是他们开启 Python 编程之旅的起点。丰富的入门教程、详细的基础知识
百度蜘蛛池效果:揭秘蜘蛛池推广词,如何高效利用蜘蛛池提升关键词排名
百度蜘蛛池推广词助力关键词排名提升,通过高效利用蜘蛛池,可迅速提升网站权重,优化搜索引擎排名。本文揭秘蜘蛛池推广词的使用方法,教你如何发挥蜘蛛池最大效用,实现高效关键词推广。本文目录导读:什么是蜘蛛池推广词蜘蛛池推广词的特
推广宝
推广宝竞价排名传统seo推广费用每年固定费用,无额外点击费,成本可控,高性价比。按点击量收费,竞争激烈的词,单次点击费用可达数元甚至数百元,一个词单月就要消费数千元甚至上十万元。按词付费,价格根据词的热度来决定,难度高的词优
谷歌Jules:新一代AI代码助手重塑开发者工作流程
在技术迅速发展的今天,人工智能的应用已经深入各行各业,尤其是在软件开发领域。谷歌于2024年12月12日推出的AI代码助手——Jules,标志着AI在开发者工具中应用的新里程碑。Jules不仅能够帮助开发者快速修复代码错误,还能优化每个程序员的
相关文章
推荐文章
发表评论
0评