一个基于Fabric的工具,用于在Ubuntu/Nginx/Supervisord/Gunicorn堆栈上部署WSGI应用程序。
项目描述
概述
Silk是一个基于Fabric的工具,用于在所谓的SNUG堆栈上设置Python WSGI应用程序。
Supervisord用于启动进程并保持其运行。
Nginx用于在您的WSGI应用程序和大型网络之间进行代理。
Ubuntu作为首选操作系统,通过apt解决系统依赖关系。Debian也可能适用,但尚未经过测试。
Gunicorn用于托管您的WSGI应用程序。
(我想它也可以是GUNS堆栈,但这个名字听起来不够友好。)
主要功能
使用单个命令(“silk push”)将您的网站部署到一台或多台服务器。
自动配置Nginx、Supervisord和Gunicorn,以便使您的网站运行。
将每个网站隔离到单独的Virtualenv
根据您部署到的角色支持不同的应用程序配置(例如,在测试和生产中使用不同的数据库)。
安装
使用pip
pip install silk-deployment
您还可以直接从Bitbucket安装当前的开发版本
pip install hg+http://bits.btubbs.com/silk-deployment#egg=silk-deployment
命令
以下大多数命令都需要您指定一个角色名称,例如“silk dosomething -R dev”。
通常可以从网站根目录或其任何子目录中运行命令。
push
silk push -R rolename
此命令是Silk存在的主要原因。它执行在site.yaml中指定的配置和所选角色.yaml文件中指定的配置下在主机(或主机集)上运行应用程序所需的工作。‘push’执行以下操作
通过SSH连接到角色配置中指定的远程服务器。
将本地机器上的站点复制到远程服务器上的临时目录。
为站点创建一个 virtualenv。
将 Python 依赖项安装到 virtualenv 中。
为 nginx 和 supervisord 编写配置文件包含项。
为站点编写 supervisord 配置文件并启动它。
向主页发送请求以确保站点正在运行。
告诉 nginx 将流量路由到新实例而不是旧实例。
运行
silk run -R rolename
此命令从本地机器上的端口 8000 运行站点。(不会推送或复制任何内容。)site.yaml 文件中的 static_dirs 部分列出的静态目录也将被提供。(这里使用 CherryPy 来实现这一功能。)
骨架
silk skel sitename
创建一个包含基本 Silk 文件和目录结构的目录。
布局
一个启用 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 Engine 中的 app.yaml)
requirements.txt - 一个与 pip 兼容的 Python 包名称和版本列表。
roles/*.yaml - 一个或多个包含根据部署上下文传递给您的应用程序的配置的 'role' 文件。
使用 'silk skel' 命令将创建所有必需文件。
可选
membrane.py - 对于 Django 项目,有一个小型的 shim 来将项目公开为 WSGI 应用程序很有用。我喜欢称它为 membrane.py。您可以使用任何您喜欢的名称,或者根本不使用任何名称,这取决于您的设置。
my-django-project - Silk 不限于 Django;您的 Python 路径上的任何有效 WSGI 应用程序都应可提供。但在我看来,对于 Django 项目来说,将其放在那里是有意义的。
fabfile.py - 一个与 Fabric 兼容的 fabfile,它导入 Silk 的 Fabric 函数。您可以在其中自定义 Silk 的 'push' 函数(我这样做是为了在推送时运行 Django 的 "collectstatic"),或者添加您自己的 Fabric 任务。
项目详情
silk-deployment-0.3.14.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 43759a6413dcf444f9721c2134ac5e56d9366729a75f3c2cbe18206b0c0c37fc |
|
MD5 | 5809f41a9505927402da63a4aafe776a |
|
BLAKE2b-256 | 28332d539eb22d78fd814ca0373a87b6243fc5485a3c85e9c72449ea20aa2cf3 |