ec2 deploy是一个方便的部署工具,可以帮助aws ec2的代码部署和其他任务。

ec2_deplo的Python项目详细描述


ec2 deploy是一个方便的部署工具,可以帮助跨多个aws ec2实例进行服务器设置和代码部署。

为什么不使用git进行部署?

git是一个强大的工具,多年来我一直在尝试用它来部署代码。 在一段时间内,使用裸repo和git钩子是理想的选择,但是随着我的团队和项目的发展,这变得难以管理。 Puppet非常棒,90%的案例都很完美,但对于较小的客户来说可能会很乏味。 EC2 Deploy不能替代这些服务!

主要功能

  • 基于服务器模板创建ec2实例。
  • 为在项目中使用的不同暂存/生产实例创建环境变量。
  • 跨多个服务器部署代码库。

安装步骤

您的项目必须有一个requirements.txt文件,即使您没有!

您的项目必须将Gitmasterdevelop分支一起使用。 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设置。

  • ^{tt10}$ - Nginx Site File.
  • ^{tt11}$.
  • ^{tt12}$.
  • ^{tt13}$ - Remote server WSGI.
< >您可以通过复制现有的服务器模板来创建自己的服务器模板,然后修改文件{TT14}$。 根据您自己设置的需要。

环境变量

ec2 deploy提供了一个非常有用的环境变量文件,python-dotenv,其中 从本地.env文件中读取值并将其作为应用程序的环境变量加载。

对于远程服务器,可以在 使用的服务器模板。ec2 deploy将根据 部署或服务器创建。

例如fab staging deploy将从文件vars_staging.env中复制环境变量 您的服务器模板文件夹为.env

您至少必须在vars_production.envvars_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-更新supervisorceleriy进程来自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-创建交换内存

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSpringbean已创建但未自动连接   java LibGDX游戏在三星Galaxy Grand Prime上结束   如何在Java中列出字符串句子中所有匹配条件的单词   java在Recyclerview中使用“putExtra”传递数据   java从一个特定的数组中提取特定的JSON对象,以便在Android中通过一个意图放入另一个活动   java需要使用IntelliJ和设置项目SDK的帮助   java springcontextindexer和Swagger 3   java使用indexOf和substring计算数字   java使用xml解析在word文档中查找隐式分页符   在添加<context:componentscan basepackage=“com.young.user”/   java无条件更改JTable单元格的背景色   选择列表中的java调用oracle函数:节点无数据类型   java如何添加缓冲图像作为JFrame的背景,然后在此图像上添加面板?   java Javadoc找不到用scala编写的类   java连接到文件共享程序的IP地址   java将数组元素加载到集合中   Tomcat中的java servlet、过滤器和线程   非Bean对象中的java EJB CDI注入?   java与println和printf的不同舍入