当前位置:文档之家› 阿里云AppDeploy使用手册

阿里云AppDeploy使用手册

阿里云AppDeploy使用手册阿里云– CTO Office –开发者效率团队2015.08版权所有侵权必究目录1 介绍 (3)2 功能 (3)3 安装 (4)4 使用说明 (6)4.1 获取、设置Access Key (7)4.2 环境变量 (8)4.3 执行命令 (9)4.4 并发执行 (10)4.5 文件传输&远端执行&一键更新源 (11)4.6 Web环境安装、应用打包部署 (12)5 最佳实践 (13)5.1 Hello World (14)5.2 Nginx 远程部署 (15)5.3 Shell脚本文件执行 (17)5.4 一键环境安装、应用编译打包发布 (18)6 常见问题 (19)1 介绍阿里云AppDeploy是一个通过SSH实现的流式命令行工具,可用于完成应用部署和远程系统管理,其工作于python2.5-2.7平台上,具有良好的可移植性;AppDeploy将本地应用软件上传到远端服务器,并通过执行用户预定义的产品部署命令,灵活的、便捷的、高效的为阿里云用户实现应用远程部署提供稳定的工作环境。

AppDeploy使用自然语言对部署任务进行描述,通过简单的编辑规则,您可以像书写自然语言一样描述您的部署任务,AppDeploy将依据您写的自然语言描述文件部署、管理您的应用。

2 功能1)远程应用部署:用户可以使用AppDeploy将本地应用软件安装部署到远程云服务器上,软件包可以在本地编译打包好,也可以选择在云服务器编译安装。

2)远程服务管理:您可以使用AppDeploy远程执行shell脚本,让远程机器的操作命令感觉在本地执行一般,大大的提高开发者的工作效率。

3)文件上传下载:您可以在本地主机和远程服务器间实现上传、下载文件的功能。

4)同时控制多台服务器:基于大型软件的部署场景,AppDeploy提供同时在多台服务器部署软件的功能,且可以选择顺序执行或者并发执行的运行模式。

5)一键环境安装:一键安装Web运行环境,支持JDK、Nginx、Apache、Tomcat、PHP、Mysql等多版本,您可以根据业务选择安装;6)一键应用部署:可以一键编译、打包、部署常见的应用,支持Maven、Ant等打包部署的安装方式;7)一键式更新源:执行AppDeploy自定义命令更新系统源,支持Ubuntu、Centos、Redhat、Opensuse、Debian等系统的主流版本;8)账号密码管理:基于用户复杂的应用场景,为用户提供灵活、易用的账号密码管理功能,用户可以设置免密码输入运行,且可为不同主机设置不同密码。

3 安装Linux系统平台安装:预先安装好python2.7(一般在/usr/local/lib/python2.7);1.通过阿里云市场下载AppDeploy源码安装包:AppDeploy-1.0.1.tar.gz;解压压缩包得到:AppDeploy-1.0.1-Linux.tar.gz;2.解压:$ tar –zvxf AppDeploy-1.0.1-Linux.tar.gz;3.执行:$ cd appdeploy-1.0.1 && sudo python setup.py install 安装appdeploy;4.执行:$apde命令,若果能找到命令说明安装完成;Windows系统安装:预先安装好python2.7(一般安装在C:/Python27);1.通过阿里云市场下载AppDeploy windows安装包:AppDeploy-1.0.1.zip;2.解压压缩包,得到AppDeploy-1.0.1-Windows.zip;解压压缩包可以发现一个安装文件setup.exe;3.双击setup.exe(确定预先安装python2.7),出现如下AppDeploy的安装视图,安装目录应该选择Python2.7的安装目录下的Lib\site-packets子目录;4.根据向导直到安装完成;5.设置环境变量:环境变量一般为自动设置,不过这里您可以确认一下,以保证正常运行;右键“计算机”–选择属性–选择“高级系统设置”–选择高级–选择“环境变量”:添加环境变量,名字(APPDEPLOY)值(C:\Python27\Lib\site-packages);在path系统变量中添加“C:\Python27; %APPDEPLOY%;”,为AppDeploy和Python2.7的安装目录;6.验证:打开cmd命令行工具,输入:python,如果能运行,则说明python安装成功;输入:adep,如果显示下面日志,则说明安装成功;Mac系统安装:(请预先安装好python2.7)1.下载AppDeploy-1.0.1.tar.gz,解压可以得到AppDeploy-1.0.1-Mac.zip 的压缩包,解压AppDeploy-1.0.1-Mac.zip,得到pycrypto-2.6.1.tar.gz & AppDeploy-1.0.1.tar.gz;2.若您系统中尚未安装pycrypto-2.6.1.tar.gz,解压后进入pycrypto-2.6.1,执行$ sudo pythonsetup.py install;若已经安装,直接进入步骤3;3.解压AppDeploy-1.0.0.tar.gz,进入appdeploy-1.0.1后执行$ sudo python setup.py install;4.进入命令行执行$ adep,出现如下视图说明安装成功:4 使用说明AppDeploy是一个基于Python实现的命令行工具,通过SSH通道自动执行部署命令、远程管理、传输文件。

执行AppDeploy前您需要准备:应用的安装包、部署脚本、配置文件等。

AppDeploy是根据您当前工作目录下的纯文本描述文件(默认appdeploy.txt)作为执行依据工作的。

AppDeploy有两种使用方式:●通过命令行,执行一条命令,格式:$ adep [options] -- [shell command]Option为命令选项,“--”为分割符,后面的字符都会当做shell命令在远端执行;例如:查看远程机器nginx运行情况$ adep -H '101.200.184.144' -u root -p xxxx -- ps -aux | grep nginx还可以通过命令行格式执行文件传输和远程命令,详见4.3节;PS:这种方式使用方便,可以灵活、快速的执行您想执行的命令,但实现的功能相对简单,大部分情况下,您可以使用下面的方式实现您的具体任务;●通过编辑描述文件(appdeploy.txt)文件,在文件中定义任务(任务的实现细节),并在命令行执行$ adep task1 task2(文件中定义的任务名)的方式执行定义的任务;任务描述文件(默认为./appdeploy.txt)的编写规则:下面分别介绍AppDeploy定义的环境变量、操作命令、并发执行等细节:4.1 获取、设置Access Key第一步:登录阿里云首页,并登录账号;第二步:点击进入管理控制台和Access keys页面;第三步:读取Access Key ID和Access Key Secret的值,如果没有则需要先创建一个。

得到的Access Key ID和Access Key Secret通过以下方式配置到AppDeploy中。

在Appdeploy.py描述文件中设置ak_id(Access Key ID)和ak_sec(Access Key Secret)变量;4.2 环境变量Hosts变量详细说明:用来定义需要连接的服务器集合,在执行appdeploy.txt中任务时会在Hosts定义的每个服务器上运行一遍;也可以定义为:hosts = ['host1', 'user2@host2', 'host3'],表示一共三个远端服务器host1、host2、host3,其中host2使用user2登录,host1和host3使用user定义的值;例如:在appdeploy.txt中定义:hosts = ['host1', 'host2']@ task1run(‘ls’)则执行:$ adep task1时,会在host1、host2上分别执行ls命令;User详细说明:定义远程服务器的登录名,如果没有定义,则默认为当前机器的用户名;例如:user = 'user1'Password & Passwords详细说明:首先推荐使用SSH提供的密钥管理机制来实现免密码输入模式,可查阅相关资料;AppDeploy提供了两层管理密码的机制:如果您的servers的密码都相同,可以通过在password中设置统一默认密码;如果每个server的密码不同,可以在passwords中设置host:password对应表,对每个server 设置单独的密码;host的格式:user@host:port;例如:password=’xxxxx’passwords={'root@101.200.184.144:22':’xxx’, 'root@123.57.228.240:22':’yyy’}parallel详细说明:详见并发执行章节;4.3 执行命令您可以通过一些常用的命令集快速书写您的部署描述文件;Get命令详细说明:Put命令详细说明:Prompt命令详细说明:4.4 并发执行Appdeploy默认是串行执行所有命令的。

其本身不是线程安全的,所以它用多进程的方式为每个任务启动一个新进程。

AppDeploy有两种方式执行并发执行任务:1)在命令行执行任务时添加-P 选项,则执行的所有任务都会在不同的服务器之间并发执行,但不同任务之间依然按照顺序执行进行;例如:$ adep -P -H host1,host2 update reload执行结果update on host1 and host2reload on host1 and host22)通过在appdeploy.txt文件中设置parallel=True来表明任务会被并行执行;例如:parallel=True@ task1pass@ task2pass$ adep -H host1,host2,host3 task1 task2结果:Task1 on host1, host2, and host3Task2 on host1, host2, and host34.5 文件传输&远端执行&一键更新源AppDeploy通过两种方式实现文件的上传、下载,以及shell命令在远端执行;1)通过命令行类似shell命令的方式实现:具体操作的哪些服务器、用户名、密码信息由appdeploy.txt文件定义;文件上传命令格式:$ adep put:localfile,remoteFolder“put”、”:”、”localFile”、”,”、”remoteFolder”之间都没有空格;LocalFile:本地上传文件路径及名字,RemoteFolder:上传到服务器的具体目录;文件下载命令格式:$ adep get:remoteFile,localFolder”get”、”:”、”remoteFile”、”,”、”localFolder”之间都没有空格;RemoteFile:从服务器上下载的文件名,localFolder:下载文件本地存放目录;命令远程执行格式:$ adep run:shellCommand“run”、”:”、”shellCommand”之间都没有空格;ShellCommand:指远端执行的命令,有空格时要用引号引起来;下面以文件上传为例:appdeploy.txt中变量定义为:user = 'root' # userpassword= 'xxx' # passwordhosts = ['101.200.184.144','123.57.228.240'] # hosts执行$ adep put:./install.sh,/root/执行结果:adep把install.sh分别上传到两台服务器上的/root目录下;2)通过在描述文件中put、get、run命令实现,具体实现细节参考“4.2 执行命令”;一键更新源功能可以执行命令:$ adep update_source可以更新服务器端的源配置,支持Ubuntu、Centos、Redhat、Opensuse、Debian等系统的多个版本源更新功能;4.6 Web环境安装、应用打包部署AppDeploy可以实现一键Web环境安装和应用打包部署的功能。

相关主题