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