阿里云運(yùn)維部署工具AppDeploy最佳實(shí)踐
阿里云AppDeploy版是一個(gè)通過(guò)SSH實(shí)現(xiàn)的流式命令行工具,可用于完成應(yīng)用部署和遠(yuǎn)程運(yùn)維管理,其工作于python平臺(tái)上,具有良好的可移植性;AppDeploy將本地應(yīng)用軟件上傳到遠(yuǎn)端服務(wù)器,并執(zhí)行用戶預(yù)定義的產(chǎn)品部署命令。
工具當(dāng)前免費(fèi)下載使用,地址:
http://market.aliyun.com/products/53690006/cmgj000331.html
http://market.aliyun.com/products/53690006/cmgj000321.html
本文通過(guò)三個(gè)使用場(chǎng)景介紹AppDeploy:
一、高效運(yùn)維管理命令
1.實(shí)時(shí)監(jiān)控服務(wù)器狀態(tài)
執(zhí)行命令:
- $ adep check_status
將得到服務(wù)器的具體信息,包括ip、route、dns、resolve、iptables、mount、disk、load等。
也可以在命令后面加具體參數(shù)查看部分信息,例如:
當(dāng)前支持:ip、route、dns、resolve、iptables、mount、diskload?! ?/p>
- $ adep check_status:resolve
- $ adep check_status:disk
2.實(shí)時(shí)監(jiān)控服務(wù)器帶寬
在命令行執(zhí)行:
- $ adep check_bandwidth
將會(huì)得到下面動(dòng)態(tài)數(shù)據(jù):
其中紅框內(nèi)的數(shù)據(jù)分別為:
◆提示按”e”字母退出監(jiān)控狀態(tài):此處注意輸入格式。
◆服務(wù)器流入帶寬實(shí)時(shí)數(shù)據(jù)(動(dòng)態(tài)顯示):分別顯示KB/s 和Mb/s兩中常見(jiàn)數(shù)據(jù)格式。
◆服務(wù)器流出帶寬實(shí)時(shí)數(shù)據(jù)(動(dòng)態(tài)顯示):分別顯示KB/s 和Mb/s兩中常見(jiàn)數(shù)據(jù)格式。
3.文件的上傳下載
通過(guò)命令行類似shell命令的方式實(shí)現(xiàn):
具體操作的哪些服務(wù)器、用戶名、密碼信息由appdeploy.py文件定義。
文件上傳命令格式:
- $ adep put:localfile,remoteFolder
◆“put”、”:”、”localFile”、”,”、”remoteFolder”之間都沒(méi)有空格。
◆LocalFile:本地上傳文件路徑及名字,RemoteFolder:上傳到服務(wù)器的具體目錄。
文件下載命令格式:
- $ adep get:remoteFile,localFolder
◆”get”、”:”、”remoteFile”、”,”、”localFolder”之間都沒(méi)有空格。
◆RemoteFile:從服務(wù)器上下載的文件名,localFolder:下載文件本地存放目錄。
例如:
#p#
4.遠(yuǎn)程命令執(zhí)行
通過(guò)命令行類似shell命令的方式實(shí)現(xiàn):
具體操作的哪些服務(wù)器、用戶名、密碼信息由appdeploy.py文件定義。
命令遠(yuǎn)程執(zhí)行格式:
- return (1xx | 2xx | 4xx | 5xx) ["text"];
- $ adep run:shellCommand
◆“run”、”:”、”shellCommand”之間都沒(méi)有空格。
◆ShellCommand:指遠(yuǎn)端執(zhí)行的命令,有空格時(shí)要用引號(hào)引起來(lái)。
5.一鍵更新服務(wù)器源
命令行輸入:
- $ adep update_source
可以更新服務(wù)器端的源配置,支持Ubuntu、Centos、Redhat、Opensuse、Debian等系統(tǒng)的多個(gè)版本源更新功能。
二、一鍵部署Web服務(wù)器之Mysql + Nginx + PHP
1.在appdeploy.py中輸入以下定義
- def runtime():
- componets={“nginx” : “1.4.4″,
- “php” : “5.6.11″,
- “mysql” : “5.6.26″
- }
- install_runtime(componets)
2.在命令行執(zhí)行下面命令,由于全部為源碼安裝,安裝會(huì)占用相對(duì)較長(zhǎng)時(shí)間?! ?/p>
- $ adep runtime
3.應(yīng)用部署上線:上傳您的PHP項(xiàng)目
下面代碼表示將本地PHP項(xiàng)目上傳到服務(wù)器:/aliyun/www/phpwind目錄。
- def deploy_php():
- put(“./php/*”, “/aliyun/www/phpwind/”)
執(zhí)行:
- $ adep deploy_php
4.檢驗(yàn)應(yīng)用部署效果
三、一鍵部署Web服務(wù)器之JDK + Mysql + Nginx + Tomcat
1.在appdeploy.py中輸入以下定義:
- def runtime():
- componets={ “jdk” : “1.8.0″,
- “nginx” : “1.4.4″,
- “tomcat” : “7.0.63″,
- “mysql” : “5.6.26″
- }
- install_runtime(componets)
2.在命令行執(zhí)行下面命令,由于全部為源碼安裝,會(huì)占用相對(duì)較長(zhǎng)時(shí)間?! ?/p>
- $ adep runtime
3.應(yīng)用部署:上傳您的java項(xiàng)目
下面任務(wù)會(huì)將本地java項(xiàng)目編譯、打包、上傳到服務(wù)器(基于Maven,appdeploy會(huì)自動(dòng)檢測(cè)您的maven程序是否安裝,若沒(méi)有安裝,則會(huì)自動(dòng)安裝),***上傳到服務(wù)器的/aliyun/server/tomcat/webapps目錄。
- def pack_deploy():
- componets={“plugin”: “maven”,
- “project_dir” : “./java/myFirstWebApp”,
- “web_dir” : “/aliyun/server/tomcat/webapps”
- }
- package(componets)
- deploy(componets)
執(zhí)行:
- $ adep pack_deploy
4.檢驗(yàn)應(yīng)用部署效果