用于在ubuntu/nginx/supervisord/gunicorn堆栈上部署wsgi应用程序的基于结构的工具。
silk-deployment的Python项目详细描述
概述
silk是一个基于Fabric的工具,用于根据我喜欢的设置python wsgi应用程序 调用紧贴堆栈:
- Supervisord用于启动进程并使其保持活动状态。
- Nginx用于在wsgi应用程序和大坏站点之间进行代理。
- Ubuntu作为可选择的操作系统,使用 Debian也可以,但还没有测试过。
- Gunicorn为您的wsgi应用程序提供服务。
(我想也可能是枪堆,但听起来不太友好。)
主要功能
- 使用一个命令(“silk push”)将站点部署到一个或多个服务器。
- 自动配置nginx、supervisord和gunicorn以使您的站点运行。
- 将每个站点隔离成单独的Virtualenv
- 支持不同的应用程序配置,具体取决于您部署到哪个角色(a 例如,与生产阶段不同的数据库)。
安装
使用pip:
pip install silk-deployment
您还可以直接从BitBucket安装当前的开发版本:
pip install hg+http://bits.btubbs.com/silk-deployment#egg=silk-deployment
命令
(几乎)下面的所有命令都要求您指定一个角色名,如 “丝绸剂量计-R DEV”。
命令通常可以从站点根目录或任何子目录运行 是的。
推动
silk push -R rolename这个命令是丝的存在的主要原因。它完成了所需的工作 在给定配置的主机(或一组主机)上运行应用程序 在site.yaml和选定的role.yaml文件中指定。“推”可以 以下内容:
- sshe到角色配置中指定的远程服务器。
- 将站点从本地计算机复制到 远程服务器。
- 为站点创建一个virtualenv。
- 将python依赖项安装到virtualenv中。
- 写入配置文件包括nginx和supervisord。
- 为站点编写一个管理器配置并启动它。
- 向主页发出请求以确保网站正在运行。
- 告诉nginx将流量路由到新实例而不是旧实例。
运行
silk run -R rolename
此命令从本地计算机在端口8000上运行站点。(什么都不是 在的static\u dirs部分中列出的静态目录 还将提供site.yaml。(樱桃是用来施魔法的。)
骨架
silk skel sitename
创建具有基本silk文件和目录结构的目录。
布局
一个支持丝绸的项目应该像这样分层:
mysite.com ├── fabfile.py ├── membrane.py ├── requirements.txt ├── roles │ ├── dev.yaml │ ├── staging.yaml │ └── production.yaml ├── site.yaml └── my-django-project
其中一些文件/文件夹是必需的,其他是可选的:
必需
- site.yaml-这是主配置文件(类似于google中的app.yaml 应用程序引擎)
- requirements.txt-一个与pip兼容的python包名和 版本。
- roles/*.yaml-一个或多个“role”文件,其中包含要 根据部署上下文传入应用程序。
将使用“silk skel”命令为您创建所有必需的文件。
可选
- py-对于django项目来说,有一个小垫片可以暴露是很好的。 作为wsgi应用程序的项目。我喜欢叫我的膜。你可以用 你喜欢什么,或者什么都不喜欢,这取决于你的设置。
- 我的django项目-silk不限于django;上的任何有效wsgi应用程序 您的python路径应该是可维护的。但对于django项目我认为 把它们粘在那里是有道理的。
- fabfile.py-aFabric兼容的fabfile,用于导入丝绸织物 功能。在这里,您可以通过 用你自己的包起来(我这样做是为了运行django的“collectStatic 推动)。或者加入你自己的织物任务。