第九周作业

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

第一种:包安装
[root@ubuntu200406 ~]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@ubuntu200406 ~]ansible-playbook install_nginx.yml

第二种:源码编译安装
[root@ubuntu200406 ~]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@ubuntu200406 ~]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 拷贝操作。
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑哈哈666

您的鼓励是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值