第九周作业-Ansible与Nginx入门介绍

一、Ansible实例展示--编写playbook实现通过变量传入控制Nginx安装

#Rocky-test1为控制端,Rocky-test2,Rocky-test3为被控制端

#安装软件配置ansible环境

[root@Rocky-test1 ~]# yum -y install ansible                                #安装ansible软件

[root@Rocky-test1 ~]# cd /etc/ansible/
[root@Rocky-test1 ansible]# ansible-config init --disabled -t all > ansible.cfg        #红帽系列需要使用该命令生成默认配置文件

[root@Rocky-test1 ansible]# vim hosts                                           #分组添加被控制端主机

[webserver]
10.0.0.152
10.0.0.153

[root@Rocky-test1 ansible]# vim /etc/ssh/ssh_config                    #建立远程密钥验证

StrictHostKeyChecking no

[root@Rocky-test1 ansible]# ssh-keygen -f /root/.ssh/id_rsa -P ' '

[root@Rocky-test1 ansible]# ssh-copy-id 10.0.0.152

[root@Rocky-test1 ansible]# ssh-copy-id 10.0.0.153

[root@Rocky-test1 ansible]# ansible all -m ping                        #检测ansible配置是否成功
10.0.0.153 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
10.0.0.152 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

#编写playbook

[root@Rocky-test1 ansible]# vim nginx.yml

---
- hosts: webserver
  remote_user: root
  vars:
    version: "1.24.0"
    user: "nginx"
    url: "https://nginx.org/download/nginx-{{ version  }}.tar.gz"
    dir: "/root/"
    azdir: "/home/app/nginx"

  tasks:
    - name: install  packages
      yum:
        name: "{{ item }}"
        state: present
      loop:
        - "gcc"
        - "make"
        - "pcre-devel"
        - "openssl-devel"
        - "perl-ExtUtils-Embed"

    - name: download
      unarchive:
        src: "{{ url }}"
        dest: "{{ dir }}"
        remote_src: yes

    - name: prepare group
      group:
        name: "{{ user }}"
        gid: 88
        state: present

    - name: prepare user
      user:
        name: "{{ user }}"
        uid: 88
        group: "{{ user }}"
        shell: "/sbin/nologin"
        create_home: no
        system: yes
        state: present

    - name: prepare dir
      file:
        path: "{{ azdir }}"
        owner: "{{ user }}"
        group: "{{  user }}"
        state: directory

    - name: install
      shell:
        chdir: "{{ dir }}/nginx-{{ version }}/"
        cmd: ./configure --prefix={{ azdir }} --user={{ user }} --group={{ user }} --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 && ln -s {{ azdir }}/sbin/nginx /usr/sbin/

    - name: prepare service

- name: prepare service
      copy:
        src: /etc/ansible/nginx.service
        dest: lib/systemd/system/
        owner: "{{ user }}"
        group: "{{ user }}"
    - shell:
        cmd: systemctl daemon-reload

    - name: start service
      service:
        name: nginx
        state: started
        enabled: yes

[root@Rocky-test1 ansible]# vim nginx.service

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/home/app/nginx/logs/nginx.pid
ExecStartPre=/bin/rm -f /home/app/nginx/logs/nginx.pid
ExecStartPre=/home/app/nginx/sbin/nginx -t
ExecStart=/home/app/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP \$MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target

二、http协议版本和工作原理总结

版本工作原理特性
HTTP/1.0客户端发送请求,服务器返回响应,并在响应后关闭连接每次请求都需要建立新的TCP连接,效率较低,所有数据传输都是明文,安全性低
HTTP/1.1个TCP连接可以传输多个HTTP请求和响应,减少了TCP连接的建立和关闭次数;客户端可以在不等待响应的情况下发送多个请求,减少了请求-响应的等待时间;允许服务器将数据分块发送引入持久连接、请求管道、分块传输编码等现代特性,提高了性能,减少了TCP连接次数,降低了延迟,所有数据传输都是明文
HTTP/2.0使用二进制格式且压缩头部信息,降低了传输延迟;在单一连接上并行处理多个请求和响应,优先处理重要资源;允许服务器未经客户端明确请求的情况下发送资源支持明文发送也可以加密数据

三、IO模型和零复制技术的原理总结

3.1,IO模型总结

IO模型描述

阻塞IO

程序向内核发送I/O请求后一直等待内核响应,如果内核IO操作不能立即返回,则进程将 一直等待并不再接受新的请求,并由进程轮询查看I/O是否完成
非阻塞IO程序向内核发送I/O请求后一直等待内核响应,如果内核IO操作不能立即返回,则进程将 不再等待,继续处理其他请求,此时依旧轮询查看I/O是否完成
IO多路复用程序向内核发送I/O请求后会由select、poll或epoll等系统调用监听一个或多个IO条件,内核执行IO请求
信号驱动IO程序向内核发送I/O请求后直接处理其他请求,如果IO操作不能立即返回,则内核将等待结果完成后通知进程
异步IO程序向内核发送I/O请求后直接处理其他请求,如果IO操作不能立即返回,内核会继续处理其他事务,IO完成后会通知内核,内核再将结果传递给进程

3.2,零复制技术原理

名称原理
MMAP
将内存内的文件或者其它对象映射到进程的地址空间,实现文件磁盘
地址和进程虚拟地址空间中一段虚拟地址的一一对映关系
SENDFILE在内核空间直接将文件复制到网络套接字,省去了数据从内核缓冲区拷贝到用户缓冲区的步骤,提高了数据传输的效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值