真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

七、用playbook安裝Nginx、playbook管理配-創(chuàng)新互聯(lián)

一、用playbook安裝Nginx

創(chuàng)新互聯(lián)公司網絡公司擁有10年的成都網站開發(fā)建設經驗,成百上千家客戶的共同信賴。提供做網站、網站設計、網站開發(fā)、網站定制、賣友情鏈接、建網站、網站搭建、響應式網站開發(fā)、網頁設計師打造企業(yè)風格,提供周到的售前咨詢和貼心的售后服務

思路:先在一臺機器上編譯安裝好nginx、打包,然后再用ansible去下發(fā)

#?cd?/etc/ansible???進入ansible配置文件目錄 #?mkdir??nginx_install???創(chuàng)建一個nginx_install的目錄,方便管理 #?cd?nginx_install #?mkdir?-p?roles/{common,install}/{handlers,files,meta,tasks,templates,vars}

說明:roles目錄下有兩個角色,common為一些準備操作,install為安裝nginx的操作。每個角色下面又有幾個目錄,handlers下面是當發(fā)生改變時要執(zhí)行的操作,通常用在配置文件發(fā)生改變,重啟服務。files為安裝時用到的一些文件(拷貝到對方機器的文件),meta為說明信息,說明角色依賴等信息(可以留空),tasks里面是核心的配置文件,templates通常存一些配置文件,啟動腳本等模板文件,vars下為定義的變量。

需要事先準備好安裝用到的文件,具體如下:

1、在一臺機器上事先編譯安裝好nginx,配置好啟動腳本,配置好配置文件。

2、安裝好后,我們需要把nginx目錄打包,并放到/etc/ansible/nginx_install/roles/install/files/下面,名字為nginx.tar.gz

3、啟動腳本、配置文件都要放到/etc/ansible/nginx_install/roles/install/templates下面

nginx、啟動腳本,nginx配置文件。

#?ls?/usr/local/nginx/ client_body_temp??conf??fastcgi_temp??html??logs??proxy_temp??sbin??scgi_temp??uwsgi_temp [root@fuxi01?nginx_install]#?ls?/etc/init.d/nginx? /etc/init.d/nginx [root@fuxi01?nginx_install]#?ls?/usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf 編譯好的nginx,啟動腳本,配置文件。 然后打包: #?cd?/usr/local/ [root@fuxi01?local]#?tar?czvf?nginx.tar.gz?--exclude?"nginx.conf"?--exclude?"vhost"?nginx/????//過濾掉nginx.conf和vhost目錄不要。 [root@fuxi01?local]#?mv?nginx.tar.gz?/etc/ansible/nginx_install/roles/install/files/???//移動到該目錄下 [root@fuxi01?local]#?cp?nginx/conf/nginx.conf?/etc/ansible/nginx_install/roles/install/templates/ [root@fuxi01?local]#?cp?/etc/init.d/nginx?/etc/ansible/nginx_install/roles/install/templates/

定義common的tasks,nginx是需要一些依賴包的,用到了yum模塊,安裝zlib和pcre包。

#?cd??/etc/ansible/nginx_install/roles #?vim??./common/tasks/main.yml?//內容如下 -?name:?Install?initializtion?require?software ??yum:?name={{?item?}}?state=installed ??with_items: ????-?zlib-devel ????-?pcre-devel

定義變量

為什么要把它放到模板里?

因為模板里支持變量的。

在部署的時候,可以根據機器環(huán)境的不同,定義不同的值。比如第一臺機器定義的www,第二臺機器定義的是Apache。左邊是變量名,右邊是變量值(www)。

#?vim?/etc/ansible/nginx_install/roles/install/vars/main.yml?//內容如下 nginx_user:?www nginx_port:?80 nginx_basedir:?/usr/local/nginx

首先要把所有用到的文檔拷貝到目標機器

#?vim?/etc/ansible/nginx_install/roles/install/tasks/copy.yml?//內容如下 -?name:?Copy?Nginx?Software ??copy:?src=nginx.tar.gz?dest=/tmp/nginx.tar.gz?owner=root?group=root -?name:?Uncompression?Nginx?Software ??shell:?tar?zxf?/tmp/nginx.tar.gz?-C?/usr/local/ -?name:?Copy?Nginx?Start?Script ??template:?src=nginx?dest=/etc/init.d/nginx?owner=root?group=root?mode=0755 -?name:?Copy?Nginx?Config ??template:?src=nginx.conf?dest={{?nginx_basedir?}}/conf/?owner=root?group=root?mode=0644

這里的nginx.tar.gz沒有寫絕對路徑,因為copy模塊默認就會在install/files目錄下去找,template模塊會到templates下面去找。

接下來會建立用戶,啟動服務,刪除壓縮包。(這就是一個總的yml。)

#?vim???/etc/ansible/nginx_install/roles/install/tasks/install.yml??//內容如下 -?name:?Create?Nginx?User ??user:?name={{?nginx_user?}}?state=present?createhome=no?shell=/sbin/nologin -?name:?Start?Nginx?Service ??shell:?/etc/init.d/nginx?start -?name:?Add?Boot?Start?Nginx?Service ??shell:?chkconfig?--level?345?nginx?on -?name:?Delete?Nginx?compression?files ??shell:?rm?-rf?/tmp/nginx.tar.gz

說明:

模塊user,變量nginx_user,在install/vars/main.yml中定義的,present已存在的,createhome是否創(chuàng)建用戶的家目錄。

創(chuàng)建用戶,啟動nginx服務,開機啟動nginx服務,刪除nginx的壓縮包。

再創(chuàng)建main.yml并且把copy和install調用

#?vim?/etc/ansible/nginx_install/roles/install/tasks/main.yml?//內容如下 -?include:?copy.yml -?include:?install.yml

到此兩個roles:common和install就定義完成了,接下來要定義一個入口配置文件

#?vim?/etc/ansible/nginx_install/install.yml??//內容如下 --- -?hosts:?testhost ??remote_user:?root ??gather_facts:?True ??roles: ????-?common ????-?install

執(zhí)行: ansible-playbook /etc/ansible/nginx_install/install.yml

執(zhí)行這一步以前,一定要保證對方機器上是沒有安裝nginx的,執(zhí)行成功后,到對方機器上查看nginx進程是這樣的才為正確:

[root@yw03?~]#?ps?aux?|grep?nginx root???????1127??0.0??0.0??45912??1284??????????Ss???11月21???0:00?nginx:?master?process?/usr/local/nginx/sbin/nginx?-c?/usr/local/nginx/conf/nginx.conf nobody?????1128??0.0??0.2??48404??4168??????????S????11月21???0:43?nginx:?worker?process nobody?????1129??0.0??0.2??48404??3912??????????S????11月21???0:00?nginx:?worker?process root???????8061??0.0??0.0?112732???972?pts/0????S+???22:02???0:00?grep?--color=auto?nginx

思路圖1:

七、用playbook安裝Nginx、playbook管理配

思路圖2:

七、用playbook安裝Nginx、playbook管理配

二、playbook管理配置文件

生產環(huán)境中大多時候是需要管理配置文件的,安裝軟件包只是在初始化環(huán)境的時候用一下。下面寫一個管理nginx配置文件的playbook。

#?mkdir?-p?/etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}

其中new為更新時用到的,old為回滾時用到的,files下面為nginx.conf和vhosts目錄,handlers為重啟nginx服務的命令。

關于回滾,就是改錯了配置文件需要回滾到原來的配置文件,然后把對應的服務進行加載。需要在執(zhí)行playbook之前先備份一下舊的配置,所以對于老配置文件的管理一定要嚴格,千萬不能隨便去修改線上機器的配置,并且要保證new/files下面的配置和線上的配置一致。

先把nginx.conf和vhosts目錄放到files目錄下面

#?cd?/usr/local/nginx/conf/ #?cp?-r?nginx.conf?vhost??/etc/ansible/nginx_config/roles/new/files/ #?vim?/etc/ansible/nginx_config/roles/new/vars/main.yml???//定義變量 nginx_basedir:?/usr/local/nginx #?vim?/etc/ansible/nginx_config/roles/new/handlers/main.yml??//定義重新加載nginx服務 -?name:?restart?nginx ??shell:?/etc/init.d/nginx?reload #?vim?/etc/ansible/nginx_config/roles/new/tasks/main.yml?//這是核心的任務 -?name:?copy?conf?file ??copy:?src={{?item.src?}}?dest={{?nginx_basedir?}}/{{?item.dest?}}?backup=yes?owner=root?group=root?mode=0644 ??with_items: ????-?{?src:?nginx.conf,?dest:?conf/nginx.conf?} ????-?{?src:?vhost,?dest:?conf/?} ??notify:?restart?nginx ??說明: ??這里的循環(huán)對象有兩個子對象。一個是src,一個是dest,item.src的只循環(huán)items里的src,item.dest的只循環(huán)items里的dest。 ??將nginx.conf拷貝到/usr/local/nginx/conf/nginx.conf。 ??notify,這里就是handlers,用的是restart?nginx????在該文件內:/etc/ansible/nginx_config/roles/new/handlers/main.yml #?vim?/etc/ansible/nginx_config/update.yml?//?最后是定義總入口配置 --- -?hosts:?testhost ??user:?root ??roles: ??-?new

執(zhí)行: ansible-playbook /etc/ansible/nginx_config/update.yml

當變更了某個文件內容時,再次執(zhí)行此命令,只會對那一個變更的文件進行更新。

而回滾的backup.yml對應的roles為old

#?rsync?-av??/etc/ansible/nginx_config/roles/new/?/etc/ansible/nginx_config/roles/old/

回滾操作就是把舊的配置覆蓋,然后重新加載nginx服務, 每次改動nginx配置文件之前先備份到old里,對應目錄為/etc/ansible/nginx_config/roles/old/files

#?vim?/etc/ansible/nginx_config/rollback.yml?//?最后是定義總入口配置 --- -?hosts:?testhost ??user:?root ??roles: ??-?old

順序為:更改配置文件內容前,先rsync備份到old下,然后再對/new/files下的配置文件進行更改,更改后執(zhí)行ansible-playbook update.yml,如果沒問題,那就OK,如果有問題,再執(zhí)行ansible-playbook rollback.yml回滾到前面的配置。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


網站名稱:七、用playbook安裝Nginx、playbook管理配-創(chuàng)新互聯(lián)
網頁URL:http://weahome.cn/article/djoche.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部