ec2 deploy是一个方便的部署工具,可以帮助aws ec2的代码部署和其他任务。
ec2_deplo的Python项目详细描述
ec2 deploy是一个方便的部署工具,可以帮助跨多个aws ec2实例进行服务器设置和代码部署。
为什么不使用git进行部署?
git是一个强大的工具,多年来我一直在尝试用它来部署代码。 在一段时间内,使用裸repo和git钩子是理想的选择,但是随着我的团队和项目的发展,这变得难以管理。 Puppet非常棒,90%的案例都很完美,但对于较小的客户来说可能会很乏味。 EC2 Deploy不能替代这些服务!
主要功能
- 基于服务器模板创建ec2实例。
- 为在项目中使用的不同暂存/生产实例创建环境变量。
- 跨多个服务器部署代码库。
安装步骤
您的项目必须有一个requirements.txt文件,即使您没有!
您的项目必须将Git与master和develop分支一起使用。 master用于发布到生产环境,而develop用于登台服务器。
1-安装EC2部署包
您需要pip在虚拟环境中安装ec2 deploy。 要从pypi获得最新的稳定版本,请输入以下内容:
pip install ec2-deploy
2-导入fabric命令
要在ec2 deploy中使用fabric命令,必须在自己的fabfile.py文件中导入它们。 如果您还没有frabric,ec2 deploy将自动将其作为依赖项安装。 一旦您有了fabfile.py,请将以下导入添加到文件的顶部:
from ec2_deploy.fab import *
3-选择服务器模板
下一个任务是从目录^{tt8}中选择服务器模板$ 并编辑以下文件以反映您自己的远程服务器设置。
例如,模板AWS_Ubuntu14_04_LTS为django应用程序运行nginx、gunicorn和supervisor设置。
< >您可以通过复制现有的服务器模板来创建自己的服务器模板,然后修改文件{TT14}$。 根据您自己设置的需要。
- ^{tt10}$ - Nginx Site File.
- ^{tt11}$.
- ^{tt12}$.
- ^{tt13}$ - Remote server WSGI.
环境变量
ec2 deploy提供了一个非常有用的环境变量文件,python-dotenv,其中 从本地.env文件中读取值并将其作为应用程序的环境变量加载。
对于远程服务器,可以在 使用的服务器模板。ec2 deploy将根据 部署或服务器创建。
例如fab staging deploy将从文件vars_staging.env中复制环境变量 您的服务器模板文件夹为.env。
您至少必须在vars_production.env和vars_staging.env内设置以下环境变量:
EC2_DEPLOY_SERVER_REPO="/srv/[APP_FOLDER]"
将[APP_FOLDER]替换为应用程序位于远程服务器上的文件夹。 当然,您可以使用任何相同的文件来存储您自己的自定义变量 准备和生产环境。
运行应用程序的本地版本需要创建自己的.env文件和一些附加变量。
示例必需本地.env文件:
EC2_DEPLOY_AWS_SECRET_KEY = '' EC2_DEPLOY_SERVER_REPO="/srv/[APP_FOLDER]" EC2_DEPLOY_AWS_KEY = '' EC2_DEPLOY_AWS_PRIVATE_FILE = '' EC2_DEPLOY_LOCAL_REPO = '' EC2_DEPLOY_TEMPLATE = 'ubuntu14custom' EC2_DEPLOY_AWS_USER = 'ubuntu'
结构命令列表
有许多方便的fabric scrip可用于促进aws ec2上的代码部署和其他服务器任务。
注意:必须正确配置本地环境才能运行构造任务(请参阅上面的环境变量)。
- fab staging/production instance-从ami创建ec2实例并基于模板进行配置。
- 创建新的EC2实例。
- 更新操作系统。
- 构建基本包。
- 部署主分支。
- 安装要求。
- 服务器设置、gunicorn、nginx和端口。
- 芹菜套餐。
- 重新启动所有服务。
- fab staging/production deploy-部署API代码库。
- 部署表单主控(暂存)/发布分支。创建释放拉链。
- 更新环境变量。
- 重新启动所有服务。
- fab staging/production celery_setup-更新supervisor和celeriy进程来自celery.conf
- 部署表单主分支。
- 更新每个芹菜工人的启动过程。
- 重新启动服务器上的主管和芹菜工人。
- fab staging/production environment_vars-设置或更新系统环境变量。
- fab staging/production reload-重新启动服务。
- fab staging/production update-更新操作系统站点包。
- fab staging/production requirements-运行pip installrequirements.txt。
- fab staging/production serversetup-运行所有生成服务器任务。
- fab staging/production create_swap-创建交换内存