linux學習-week14--綜合架構(gòu)批量管理服務(wù)/網(wǎng)站web服務(wù)

  1. 綜合架構(gòu)知識概述說明
    1. 劇本編寫擴展說明
    2. 劇本整合功能說明
      方法一: 編寫整合劇本信息
      方法二: 編寫劇本角色信息 ???
    3. 網(wǎng)站服務(wù)概念原理
    4. 網(wǎng)站服務(wù)資源信息
    5. 網(wǎng)站服務(wù)度量方法
    6. 網(wǎng)站服務(wù)軟件程序 nginx
    7. 網(wǎng)站服務(wù)軟件介紹 nginx
    8. 網(wǎng)站服務(wù)軟件部署
      方法一: yum安裝
      方法二: 編譯安裝
    9. 網(wǎng)站服務(wù)配置參數(shù)
  1. 綜合架構(gòu)課程回顧:
    1. 遠程服務(wù)配置文件說明
    2. 批量管理服務(wù)概念說明
    3. 批量管理服務(wù)部署過程
      a 掌握主機清單配置方法 5種
      b 掌握批量管理模塊使用
      ping command shell script file copy fetch yum service user cron mount
      c 掌握劇本編寫過程方法
      3點注意: 縮進(空格) 字典(冒號) 列表(短橫線)
      劇本語法檢查: ansible-playbook --syntax-check
      劇本執(zhí)行過程: ansible-playbook 劇本文件
  1. 批量管理服務(wù)劇本擴展編寫

    1. 劇本變量信息設(shè)置方法 OK

    2. 劇本判斷功能設(shè)置方法 OK

    3. 劇本循環(huán)功能設(shè)置方法 OK

    4. 劇本標簽功能設(shè)置方法 OK 便于調(diào)試劇本

    5. 劇本忽略錯誤設(shè)置方法 OK

    6. 劇本執(zhí)行加速設(shè)置方法

    7. 劇本信息輸出設(shè)置方法

    8. 劇本觸發(fā)功能設(shè)置方法

    9. 劇本變量信息設(shè)置方法
      方法一: 在劇本中設(shè)置變量 其次加載

      • hosts: 172.16.1.31
        vars:
        dir_info: /oldboy
        tasks:
        • name: create file
          file: path={{ dir_info }}/nfs.conf state=touch
        • name: backup file
          copy: src={{ dir_info }}/rsync.conf dest=/backup/rsync.conf.bak remote_src=yes

      方法二: 在主機清單中設(shè)置變量 最后加載
      單獨給某一個主機設(shè)置變量
      172.16.1.31 dir_info=/oldboy
      批量給多個主機設(shè)置變量
      [oldboy]
      172.16.1.31
      172.16.1.32
      172.16.1.33
      [oldboy:vars]
      dir_info=/oldboy

      方法三: 在劇本執(zhí)行命令參數(shù)中設(shè)置變量 優(yōu)先加載
      ansible-playbook -e dir_info=/oldboy test_變量功能.yaml

    10. 劇本判斷功能設(shè)置方法
      setup模塊: 收集遠程主機信息

      • hosts: all
        tasks:
        • name: create dir with backup
          file: name=/etc/backup/ state=directory
          when: ansible_eth1.ipv4.address == "172.16.1.41"
        • name: create dir with data
          file: name=/etc/data/ state=directory
          when: ansible_eth1.ipv4.address == "172.16.1.31"
        • name: create dir with database
          file: name=/etc/database state=directory
          when: ansible_distribution == "CentOS" and ansible_eth1.ipv4.address == "172.16.1.51"
        • name: create dir with zabbix
          file: name=/etc/zabbix state=directory
          when: ansible_distribution == "Debian" or ansible_eth1.ipv4.address == "172.16.1.31"

      常見判斷條件的信息:
      ansible_all_ipv4_addresses: 僅顯示ipv4的信息叁丧。
      ansible_devices: 僅顯示磁盤設(shè)備信息来屠。
      ansible_distribution: 顯示是什么系統(tǒng)捧挺,例:centos,suse等民镜。
      ansible_distribution_major_version: 顯示是系統(tǒng)主版本。
      ansible_distribution_version: 僅顯示系統(tǒng)版本。
      ansible_machine: 顯示系統(tǒng)類型,例:32位刁笙,還是64位。
      ansible_eth0: 僅顯示eth0的信息谦趣。
      ansible_hostname: 僅顯示主機名疲吸。
      ansible_kernel: 僅顯示內(nèi)核版本。
      ansible_lvm: 顯示lvm相關(guān)信息前鹅。
      ansible_memtotal_mb: 顯示系統(tǒng)總內(nèi)存摘悴。
      ansible_memfree_mb: 顯示可用系統(tǒng)內(nèi)存。
      ansible_memory_mb: 詳細顯示內(nèi)存情況舰绘。
      ansible_swaptotal_mb: 顯示總的swap內(nèi)存烦租。
      ansible_swapfree_mb: 顯示swap內(nèi)存的可用內(nèi)存。
      ansible_mounts: 顯示系統(tǒng)磁盤掛載情況除盏。
      ansible_processor: 顯示cpu個數(shù)(具體顯示每個cpu的型號)叉橱。
      ansible_processor_vcpus: 顯示cpu個數(shù)(只顯示總的個數(shù))。

    11. 劇本循環(huán)功能設(shè)置方法
      劇本循環(huán)參數(shù): with_items loop

      簡單循環(huán)書寫方式:

      • hosts: 172.16.1.31
        tasks:
        • name: add user for oldboy01
          user: name={{ item }}
          loop:
          • oldboy01
          • oldboy02
          • oldboy03

      負載循環(huán)書寫方式:

      • hosts: 172.16.1.31
        tasks:
        • name: add user for oldboy01
          user: name={{ item.name }} uid={{ item.uid }} shell={{ item.shell }}
          loop:
          • { name: 'oldboy01', uid: '5001', shell: '/sbin/nologin' }
          • { name: 'oldboy02', uid: '5002', shell: '/sbin/bash' }
          • { name: 'oldboy03', uid: '5003', shell: '/bin/bash' }

      https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html

    12. 劇本標簽功能設(shè)置方法
      設(shè)置標記任務(wù):

    • name: 06:boot rsync server
      service: name=rsyncd state=started enabled=yes
      tags: tag06

      執(zhí)行標記的任務(wù):
      ansible-playbook -i /etc/ansible/hosts.bak01 -t tag06 rsync_auto.yaml
      跳過標記的任務(wù)
      ansible-playbook -i /etc/ansible/hosts.bak01 --skip-tag tag06 rsync_auto.yaml

    1. 劇本忽略錯誤設(shè)置方法

      • hosts: 172.16.1.31
        tasks:
        • name: install software
          shell: yum install -y htop
        • name: create user
          shell: useradd oldboy01
          ignore_errors: yes
        • name: create /data
          shell: mkdir /data
          提示: 由于ansible劇本執(zhí)行具有串行執(zhí)行特定, 可以將預期中錯誤進行忽略, 繼續(xù)執(zhí)行后續(xù)任務(wù)信息
    2. 劇本執(zhí)行加速設(shè)置方法

      • hosts: 172.16.1.41
        gathering_facts: no
        tasks:
        • name: umount /mnt
          mount: path=/mnt state=unmounted
          說明: 取消管理端主機收集被管理主機信息功能, 表示劇本中判斷功能失效
    3. 劇本信息輸出設(shè)置方法
      [root@oldboy-m01 /etc/ansible/playbook]# vim test_輸出功能.yaml

      • hosts: 172.16.1.41
        tasks:
        • name: mount nfs dir
          mount: src=172.16.1.31:/data fstype=nfs path=/mnt state=mounted
        • name: check
          shell: df -h|grep mnt
          register: oldboy
        • name: display mount info
          debug: msg={{ oldboy.stdout_lines }}
    4. 劇本信息觸發(fā)功能說明

      • hosts: 172.16.1.31
        tasks:

        • name: push file
          copy: src=/etc/ansible/file/exports dest=/etc/
          notify: oldboy

        handlers:

        • name: oldboy
          service: name=nfs state=restarted
          說明: 定義一個任務(wù), 只有執(zhí)行時,才會執(zhí)行觸發(fā)器中的任務(wù)
          定義一個任務(wù), 沒有執(zhí)行時,不會執(zhí)行觸發(fā)器中的任務(wù)
image.png
利用劇本擴展功能編寫劇本:
編寫NFS服務(wù)一鍵化部署劇本:
第一個歷程: nfs部署流程:
服務(wù)端:
01. 安裝軟件程序  rpcbind nfs-utils
02. 編寫配置文件
03. 創(chuàng)建存儲目錄  目錄需要進行授權(quán)
04. 啟動程序服務(wù)  rpcbind nfs 

客戶端:
01. 安裝軟件程序 
02. 遠程掛載操作
03. 檢查確認掛載

第二個歷程: 編寫劇本文件
- hosts: all
  tasks:
    - name: 01.install software
      yum: name={{ item }} state=installed
      loop:
        - rpcbind
        - nfs-utils
    - name: 02.push conf file
      copy: src=/etc/ansible/conf/exports dest=/etc
      notify: 
        - restart_server
        - restart_mount
    - name: 03:mkdir dir
      file: path=/data state=directory owner=nfsnobody group=nfsnobody
      when: ansible_eth1.ipv4.address == "172.16.1.31"
    - name: 04:boot server
      service: name={{ item }} state=started enabled=yes
      loop:
        - rpcbind.socket
        - nfs
      when: ansible_eth1.ipv4.address == "172.16.1.31"
    - name: 05:mount dir
      mount: src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted
      when: ansible_eth1.ipv4.address == "172.16.1.41" 
    - name: 06:check mount
      shell: df -h|grep mnt
      register: oldboy
      when: ansible_eth1.ipv4.address == "172.16.1.41" 
    - name: display mount info
      debug: msg={{ oldboy.stdout_lines }}   
      when: ansible_eth1.ipv4.address == "172.16.1.41"      
  handlers:
    - name: restart_server
      service: name=nfs state=reloaded
      when: ansible_eth1.ipv4.address == "172.16.1.31"
    - name: restart_mount
      mount: path={{ item.path }} state={{ item.state }}
      loop:
        - { path: '/mnt', state: 'unmounted' }
        - { path: '/mnt', state: 'mounted' }
      when: ansible_eth1.ipv4.address == "172.16.1.41"
  1. 劇本整合功能說明

    1. 利用整合參數(shù)將多個劇本整合
      方法一: include 將多個劇本進行整合
    • include: rsync_auto.yaml
    • include: nfs_auto.yaml

    方法二: import_playbook 將多個劇本進行整合

    • import_playbook: rsync_auto.yaml
    • import_playbook: nfs_auto.yaml
    1. 利用角色功能叫劇本整合 (規(guī)范)
      第一個歷程: 在 role角色目錄中創(chuàng)建角色信息
      mkdir rsync_server
      mkdir rsync_client
      mkdir nfs

    第二個歷程: 在不同角色目錄中創(chuàng)建子目錄
    mkdir {nfs,rsync_server,rsync_client}/{vars,tasks,templates,handlers,files}

    vars: 定義變量信息文件
    tasks: 定義詳細任務(wù)信息
    templates: 定義模板文件信息 --> 調(diào)用var/main.yaml 變量(分發(fā)文件 需要使用template模塊)
    handlers: 定義觸發(fā)器信息
    files: 定義需要分發(fā)文件

    vars目錄: 編寫文件信息
    方法一: 將所有任務(wù)信息匯總到一個main文件中
    vim tasks/main.yaml

    • name: 01: install
      yum: xxx
    • name: 02: copy
      copy:

    方法二: 編寫多個不同任務(wù)文件, 將多個任務(wù)文件整合到main文件中
    vim tasks/main.yaml

    • include_tasks: yum.ymal
    • include_tasks: copy.yaml

    files: 保存服務(wù)程序分發(fā)文件信息

    ll files/

    total 4
    -rw-r--r-- 1 root root 30 Oct 20 16:31 exports

    handlers: 保存觸發(fā)器配置信息

    cat handlers/main.yaml

    • name: restart_server
      service: name=nfs state=reloaded
      when: ansible_eth1.ipv4.address == "172.16.1.31"
    • name: restart_mount
      mount: path={{ item.path }} state={{ item.state }}
      loop:
      • { path: '/mnt', state: 'unmounted' }
      • { path: '/mnt', state: 'mounted' }
        when: ansible_eth1.ipv4.address == "172.16.1.41"
目錄結(jié)構(gòu)信息:
[root@oldboy-m01 /etc/ansible/roles]# tree

.
├── hosts
├── nfs
│?? ├── files
│?? │?? └── exports
│?? ├── handlers
│?? │?? └── main.yaml
│?? ├── tasks
│?? │?? ├── copy.yaml
│?? │?? ├── main.yaml
│?? │?? └── yum.yaml
│?? ├── templates
│?? └── vars
├── rsync_client
│?? ├── files
│?? ├── handlers
│?? ├── tasks
│?? ├── templates
│?? └── vars
├── rsync_server
│?? ├── files
│?? │?? └── rsyncd.conf
│?? ├── handlers
│?? ├── tasks
│?? │?? └── main.yaml
│?? ├── templates
│?? └── vars
│?? └── main.yaml
└── site.yaml

角色信息匯總文件
# cat site.yaml 
- hosts: rsync_server
  roles:
    - rsync_server
- hosts: all
  roles:
    - nfs
image.png
  1. 網(wǎng)站服務(wù)訪問原理過程
    1. 用戶輸入域名地址信息
    2. 會完成域名解析過程 www.baidu.com --> 39.xx.xx.xx
    3. 建立三次握手
    4. 發(fā)送請求信息 HTTP協(xié)議請求
    5. 回復響應(yīng)信息 HTTP協(xié)議響應(yīng)
    6. 所有回復信息會利用瀏覽器進行解析
    7. 斷開四次揮手
image.png

image.png
HTTP協(xié)議包含信息: 超文本傳輸協(xié)議
HTTP請求報文:
請求行: 請求方法  請求數(shù)據(jù)  協(xié)議版本
eg: 請求行信息
GET / HTTP/1.1

* 請求方法:
  get:  獲得網(wǎng)站數(shù)據(jù)信息(頁面代碼 圖片信息 視頻 音頻)  用戶獲得網(wǎng)站資源
  post: 提交網(wǎng)站數(shù)據(jù)信息(登錄 注冊 發(fā)送圖片)           用戶提到網(wǎng)站資源
  
* 請求數(shù)據(jù):
  /             -- 沒有指定要的數(shù)據(jù)信息   網(wǎng)站會自動給你回復一個首頁文件信息 index.html
  /img/bd.png   -- 想要網(wǎng)站服務(wù)器上面 img/bd.png圖片
  
* 協(xié)議版本:
  1.0   TCP連接建立(TCP短鏈接)
        A用戶  ---   B用戶  視頻聊天
        說了一句話   回復   關(guān)閉視頻
        建立視頻聊天
        說了一句話   回復   關(guān)閉視頻 
        建立視頻
        總結(jié): 一次連接 發(fā)送一次請求
        
  1.1   TCP連接建立(TCP長鏈接)
        A用戶  ---   B用戶  視頻聊天
        第一件事     回復 
        第二件事     回復 
        第三件事     回復 
        斷開會話
        總結(jié): 一次連接 發(fā)送多個請求 
  2.0 

請求頭: 
> User-Agent: curl/7.29.0    --- 訪問者客戶端信息    
> Host: www.baidu.com        --- 請求不同網(wǎng)站頁面
  www.baidu.com
  news.baidu.com              
  map.baidu.com       
> Accept: */*                --- 顯示網(wǎng)站特殊功能  壓縮 加密
空行:
請求主體:
get  方法沒有請求主體
post 方法擁有請求主體   

HTTP響應(yīng)報文:
起始行: 協(xié)議信息 狀態(tài)碼信息 狀態(tài)碼描述信息
eg: 舉例
HTTP/1.1 200 OK
狀態(tài)碼:  告知訪問結(jié)果信息
200:                    訪問成功
301 Moved Permanently:  永久跳轉(zhuǎn)  將域名改寫
302                  :  臨時跳轉(zhuǎn)  將域名改寫 

響應(yīng)頭: 
空行:
響應(yīng)主體: 網(wǎng)頁源代碼信息   
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末者蠕,一起剝皮案震驚了整個濱河市窃祝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踱侣,老刑警劉巖粪小,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件大磺,死亡現(xiàn)場離奇詭異,居然都是意外死亡探膊,警方通過查閱死者的電腦和手機杠愧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逞壁,“玉大人流济,你說我怎么就攤上這事‰绱常” “怎么了绳瘟?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姿骏。 經(jīng)常有香客問我糖声,道長,這世上最難降的妖魔是什么分瘦? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任蘸泻,我火速辦了婚禮,結(jié)果婚禮上嘲玫,老公的妹妹穿的比我還像新娘悦施。我一直安慰自己,他們只是感情好趁冈,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布歼争。 她就那樣靜靜地躺著拜马,像睡著了一般渗勘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俩莽,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天旺坠,我揣著相機與錄音,去河邊找鬼扮超。 笑死取刃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的出刷。 我是一名探鬼主播璧疗,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼馁龟!你這毒婦竟也來了崩侠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤坷檩,失蹤者是張志新(化名)和其女友劉穎却音,沒想到半個月后改抡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡系瓢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年阿纤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夷陋。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡欠拾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肌稻,到底是詐尸還是另有隱情清蚀,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布爹谭,位于F島的核電站枷邪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诺凡。R本人自食惡果不足惜东揣,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腹泌。 院中可真熱鬧嘶卧,春花似錦、人聲如沸凉袱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽专甩。三九已至钟鸵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涤躲,已是汗流浹背棺耍。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留种樱,地道東北人蒙袍。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像嫩挤,于是被迫代替她去往敵國和親害幅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容