• 1
  • 2
  • 3
  • 4
  • 5
阿里云主机ECS 首 页  »  帮助中心  »  云服务器  »  阿里云主机ECS
阿里云运维部署工具AppDeploy的最佳实践
发布日期:2016-3-21 23:3:18

  阿里云运维部署工具AppDeploy的最佳实践

  阿里云 AppDeploy版是一个通过SSH实现的流式命令行工具,可用于完成应用部署和远程运维管理,其工作于python平台上,具有良好的可移植性;AppDeploy将本地应用软件上传到远端服务器,并执行用户预定义的产品部署命令。

  工具当前是免费下载使用,地址如下所示:

  http://market.aliyun.com/products/53690006/cmgj000331.html

  http://market.aliyun.com/products/53690006/cmgj000321.html

  本文将通过三个使用场景介绍AppDeploy:

  1. 高效运维管理命令:

  1)实时监控服务器状态

  执行命令:$ adep check_status 将得到服务器的具体信息,包括ip、route、dns、resolve、iptables、mount、disk、load等;

  

  也可以在命令后面加具体参数查看部分信息,例如:

  当前支持:ip、route、dns、resolve、iptables、mount、disk、load;

  $ adep check_status:resolve

  

  $ adep check_status:disk

  

  2)实时监控服务器带宽

  在命令行执行 $ adepcheck_bandwidth 将会得到下面动态数据:

  

  其中红框内的数据分别为:

  提示按”e”字母退出监控状态:此处注意输入格式;

  服务器流入带宽实时数据(动态显示):分别显示KB/s 和Mb/s两中常见数据格式;

  服务器流出带宽实时数据(动态显示):分别显示KB/s 和Mb/s两中常见数据格式;

  3)文件的上传下载:

  通过命令行类似shell命令的方式实现:

  具体操作的哪些服务器、用户名、密码信息由appdeploy.py文件定义;

  文件上传命令格式:$ adep put:localfile,remoteFolder

  “put”、”:”、”localFile”、”,”、”remoteFolder”之间都没有空格;

  LocalFile:本地上传文件路径及名字,RemoteFolder:上传到服务器的具体目录;

  文件下载命令格式:$ adep get:remoteFile,localFolder

  ”get”、”:”、”remoteFile”、”,”、”localFolder”之间都没有空格;

  RemoteFile:从服务器上下载的文件名,localFolder:下载文件本地存放目录;

  例如:

  

  4)远程命令执行:

  通过命令行类似shell命令的方式实现:

  具体操作的哪些服务器、用户名、密码信息由appdeploy.py文件定义;

  命令远程执行格式:$ adep run:shellCommand

  “run”、”:”、”shellCommand”之间都没有空格;

  ShellCommand:指远端执行的命令,有空格时要用引号引起来;

  

  5)一键更新服务器源

  命令行输入 $ adep update_source

  可以更新服务器端的源配置,支持Ubuntu、Centos、Redhat、Opensuse、Debian等系统的多个版本源更新功能;

  

  3. 一键部署Web服务器之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)在命令行执行下面命令,由于全部为源码安装,会占用相对较长时间。

  $ adep runtime

  3)应用部署:上传您的java项目

  下面任务会将本地java项目编译、打包、上传到服务器(基于Maven,appdeploy会自动检测您的maven程序是否安装,若没有安装,则会自动安装),最后上传到服务器的/aliyun/server/tomcat/webapps目录;

  def pack_deploy():

  componets={“plugin”: “maven”,

  “project_dir” : “./java/myFirstWebApp”,

  “web_dir” : “/aliyun/server/tomcat/webapps”

  }

  package(componets)

  deploy(componets)

  执行: $ adep pack_deploy

  4)检验应用部署效果

  

  2. 一键部署Web服务器之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)在命令行执行下面命令,由于全部为源码安装,安装会占用相对较长时间。

  $ adep runtime

  3)应用部署上线:上传您的PHP项目

  下面代码表示将本地PHP项目上传到服务器:/aliyun/www/phpwind目录;

  def deploy_php():

  put(“./php/*”, “/aliyun/www/phpwind/”)

  执行: $ adep deploy_php

  4)检验应用部署效果