首页 > 其他分享 >第九周随笔

第九周随笔

时间:2024-04-10 10:33:37浏览次数:39  
标签:第九 HTTP name -- nginx IO install 随笔

1.编写一个playbook实现Nginx的两种安装过程,安装方式可通过变量传入控制

第一种:包安装
[root@ubuntu2004 ~]vim install_nginx.yml
---
- hosts: webservers
 
  tasks:
    - name: add group nginx
      group: name=nginx state=present
    - name: add user nginx
      user: name=nginx state=present group=nginx
    - name: Install Nginx
      yum: name=nginx state=present 
    - name: web page
      copy: src=files/index.html dest=/usr/share/nginx/html/index.html
    - name: Start Nginx
      service: name=nginx state=started enabled=yes
[root@ubuntu2004 ~]ansible-playbook install_nginx.yml
 
第二种:源码编译安装
[root@ubuntu2004 ~]vim install_nginx.yml
---
- hosts: webservers
  vars:
    version: "1.20.2"
    url: "http://nginx.org/download/nginx-{{ version }}.tar.gz"
    install_dir: "/app/nginx"
  
  tasks:
    - name: install packages
      yum:
        name: "{{ item }}"
      loop:
        - gcc
        - make
        - pcre-devel
        - openssl-devel
        - zlib-devel
        - perl-ExtUtils-Embed
    - name: get nginx source
      unarchive:
        src: "{{ url }}"
        dest: "/usr/local/src"
        remote_src: yes
 
    - name: compile and install
      shell:
        cmd: "./configure --prefix={{ install_dir }} --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module && make && make install"
        chdir: "/usr/local/src/nginx-{{ version }}"
 
[root@ubuntu2004 ~]ansible-playbook  install_nginx.yml

2.总结http协议版本和工作原理

http协议版本:

HTTP 1.X 协议
HTTP 2.0 协议
HTTP 3.0 协议
工作原理:HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。 WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。

3.总结IO模型和零复制技术的原理

网络 I/O 模型分为:

阻塞型 I/O 模型(blocking IO):阻塞IO模型是最简单的I/O模型,用户线程在内核进行IO操作时被阻塞
非阻塞型 I/O 模型 (nonblocking IO):用户线程发起IO请求时立即返回。但并未读取到任何数据,用户线程需要不断地发起IO请求,直到数据 到达后,才真正读取到数据,继续执行。
I/O 多路复用型 (I/O multiplexing):网络I/O复用是指利用操作系统提供的一种机制,同时监控多个I/O事件(如可读、可写、异常等),当 有I/O事件发生时,通知应用程序进行相应的处理。
信号驱动型 I/O 模型 (signal-driven IO):信号驱动I/O的意思就是进程现在不用傻等着,也不用去轮询。而是让内核在数据就绪时,发送信号通知 进程。
零复制技术的原理:

Direct I/O: 直接I/O绕过了系统缓存,数据可以直接在磁盘和应用程序之间传输,避免了数据在内核态和用户态之间的多次拷贝。
MMAP ( Memory Mapping ):mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空 间后,进程可以向访问普通内存一样对文件进行访问。
SENDFILE:sendfile() 系统调用利用 DMA 引擎将文件中的数据拷贝到操作系统内核缓冲区中,然后数据被拷贝到与 socket 相关的内核缓冲区中去。接下来,DMA 引擎将数据从内核 socket 缓冲区中拷贝到协议引擎中去。
SPLICE:splice 系统调用可以在内核空间的读缓冲区(read buffer)和网络缓冲区(socket buffer)之间建立管道(pipeline),从而避免了两者之间的 CPU 拷贝操作。

标签:第九,HTTP,name,--,nginx,IO,install,随笔
From: https://www.cnblogs.com/meishijia8/p/18125508

相关文章

  • 大菜菜学习RabbitMQ——第九篇
    这篇使用较为easy的方式去声明队列还有交换机所以我们先把上篇文章里面创建的队列还有交换机删除首先我们先把DirectConfiguration这个类的@Configration注解注释然后就可以开始进行删除操作了然后我们就可以开始在Listener里面写代码了@RabbitListener(bindings=@QueueBi......
  • ETL工具-nifi干货系列 第九讲 处理器EvaluateJsonPath,根据JsonPath提取字段
    1、其实这一节课本来按照计划一起学习RouteOnAttribute处理器(相当于java中的ifelse,switchcase控制语句),但是在学习的过程中遇到了一些问题。RouteOnAttribute需要依赖处理器EvaluateJsonPath,所以本节课我们一起来学习下EvaluateJsonPath处理器。如下图所示: 本节课的示例依然......
  • 【随笔】Git 高级篇 -- 提交的技巧(上) rebase & commit --amend(十八)
    ......
  • 力扣经典150题第九题:跳跃游戏
    目录1.简介2.问题描述3.解题思路方法一:贪心算法4.算法实现方法一:贪心算法5.示例与测试6.总结与展望7.结语1.简介本篇博客将讨论力扣经典150题中的跳跃游戏问题。给定一个非负整数数组nums,数组中的每个元素代表在该位置可以跳跃的最大长度,判断是否能够从......
  • 【游戏设计随笔07】游戏设计师怎样防止玩家破坏自己该有的游戏体验?
    一、玩家会重复选择成功率高的策略风险能带来损失,也能带来收益。但是在失败成本过高的情况下(比如在某些一被发现则判定为失败的潜行游戏),大部分玩家并不会选择冒险而是选择成功率更高的方式去游玩,他们会重复选择更加谨慎的选择,导致游戏体验并没有按照收益更高同时风险更大的方式......
  • JS第九天
    今天是第九天,学习了JS中的设置日期和倒计时,计时器以及验证码倒计时,那么话不多说我们开始今天的学习吧一、日期设置1.1日期创建调用 newDate() 来创建一个新的 Date 对象。在调用时可以带有一些参数,创建一个 Date 对象,其时间等于1970年1月1日UTC+0之后经过的......
  • 交换机命令随笔与案例
    会员周边新闻博问AI培训云市场  注册登录微子天明 交换机命令随笔与案例12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505......
  • Java基础知识总结(第九篇):泛型和JUnit5
    声明:        1.本文根据韩顺平老师教学视频自行整理,以便记忆       2.若有错误不当之处,请指出系列文章目录Java基础知识总结(第一篇):基础语法Java基础知识总结(第二篇):流程控制语句(分支控制和循环控制)Java基础知识总结(第三篇):数组、排......
  • 软考中级(网络工程师考核要点)第一章 计算机网络系统(信道特性应用)第九期(海明码和CRC
    第八期的题目分析:1.分析:D。光纤通信的使用是波分复用,T1/E1是同步时分复用,因为它们使用固定的时钟来确定数据的传输速率。同时,T1/E1也支持异步传输,但通常以同步方式使用。WIFI是异步时分复用,因为它使用无线信号传输数据,没有严格的时钟同步要求。WIFI的数据传输速率可以根据......
  • 大学教材《C语言程序设计》(浙大版)课后习题解析 | 第九、十章
    概述    本文主要提供《C语言程序设计》(浙大版)第九、十章的课后习题解析,以方便同学们完成题目后作为参考对照。后续将更新第十一、十二章节的课后习题解析,如想了解更多,请持续关注该专栏。专栏直达链接:《C语言程序设计》(浙大版)_孟俊宇-MJY的博客-CSDN博客​http://......