{ "info": { "author": "Brent Tubbs", "author_email": "brent.tubbs@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "Overview\n--------\n\nSilk is a Fabric_ based tool for setting up Python WSGI apps on what I like to\ncall the SNUG stack:\n\n* Supervisord_ for starting processes and keeping them alive.\n* Nginx_ for proxying between your WSGI app and the big bad web.\n* Ubuntu_ as the OS of choice, enabling resolution of system dependencies with\n apt. Debian might work as well but hasn't been tested.\n* Gunicorn_ for serving your WSGI app.\n\n(I suppose it could also be the GUNS stack but that sounds far less friendly.)\n\nKey Features\n~~~~~~~~~~~~\n\n* Deploy your site to one or more servers with a single command ('silk push').\n* Automatic configuration of Nginx, Supervisord, and Gunicorn to get your site running.\n* Isolation of each site into a separate Virtualenv_\n* Support for differing app config depending on which role you deploy to (a \n different DB in staging than production, for example).\n\nInstallation\n~~~~~~~~~~~~\n\nUse pip::\n\n pip install silk-deployment\n\nYou can also install the current development version straight from bitbucket::\n\n pip install hg+http://bits.btubbs.com/silk-deployment#egg=silk-deployment\n\nCommands\n--------\n\n(Almost) all of the commands below require that you specify a role name, like\n'silk dosomething -R dev'.\n\nCommands can generally be run from the site root directory or any subdirectory\nof it.\n\npush\n~~~~\n\n::\n\n silk push -R rolename\n\nThis command is the main reason for Silk's existence. It does the work required\nto get your app running on a host (or set of hosts) given the configuration\nspecified in site.yaml and the selected role .yaml file. 'push' does the\nfollowing:\n\n1. SSHes to the remote server(s) specified in the role config.\n2. Copies the site from your local machine to a temporary directory on the\n remote server.\n3. Creates a virtualenv for the site.\n4. Installs python dependencies into the virtualenv.\n5. Writes config file includes for nginx and supervisord.\n6. Writes a supervisord config for the site and starts it up.\n7. Makes a request to the homepage to ensure the site is running.\n8. Tells nginx to route traffic to the new instance instead of the old one.\n\nrun\n~~~\n\n::\n\n silk run -R rolename\n\nThis command runs the site from the local machine, on port 8000. (Nothing is\npushed of copied.) Static directories listed in the *static_dirs* section of\nsite.yaml will also be served. (CherryPy is used for this magic.)\n\nskel\n~~~~\n\n::\n\n silk skel sitename\n\nCreates a directory with a basic Silk file and directory structure.\n\nLayout\n------\n\nA silk-enabled project should be layed out something like this::\n\n mysite.com\n \u251c\u2500\u2500 fabfile.py\n \u251c\u2500\u2500 membrane.py\n \u251c\u2500\u2500 requirements.txt \n \u251c\u2500\u2500 roles\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 dev.yaml\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 staging.yaml\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 production.yaml\n \u251c\u2500\u2500 site.yaml\n \u2514\u2500\u2500 my-django-project\n\nSome of those files/folders are required, other are optional:\n\nRequired\n~~~~~~~~\n\n1. site.yaml - This is the main config file (comparable to app.yaml in Google\n App Engine)\n2. requirements.txt - A pip-compatible list of Python package names and\n versions.\n3. roles/\\*.yaml - One or more 'role' files that contain the config to be \n passed into your app depending on the deployment context.\n\nAll of the required files will be created for you with the 'silk skel' command.\n\nOptional\n~~~~~~~~\n\n1. membrane.py - For Django projects it's nice to have a little shim to expose\n the project as a WSGI app. I like to call mine membrane.py. You can use \n whatever you like, or nothing at all, depending on your setup.\n2. my-django-project - Silk isn't restricted to Django; any valid WSGI app on \n your Python path should be servable. But for Django projects I think it \n makes sense to stick them right there.\n3. fabfile.py - A Fabric_-compatible fabfile that imports Silk's Fabric \n functions. This is where you can customize Silk's 'push' function by\n wrapping it with your own (I do this to run Django's \"collectstatic\" on\n push), or add in your own Fabric tasks.\n\n.. _Supervisord: http://supervisord.org/\n.. _Nginx: http://nginx.org/\n.. _Ubuntu: http://www.ubuntu.com/\n.. _Gunicorn: http://gunicorn.org/\n.. _Fabric: http://docs.fabfile.org/\n.. _Virtualenv: http://virtualenv.openplans.org/", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bits.btubbs.com/silk-deployment", "keywords": null, "license": "LICENSE.txt", "maintainer": null, "maintainer_email": null, "name": "silk-deployment", "package_url": "https://pypi.org/project/silk-deployment/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/silk-deployment/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://bits.btubbs.com/silk-deployment" }, "release_url": "https://pypi.org/project/silk-deployment/0.3.14/", "requires_dist": null, "requires_python": null, "summary": "A Fabric-based tool for deploying WSGI apps on an Ubuntu/Nginx/Supervisord/Gunicorn stack.", "version": "0.3.14" }, "last_serial": 799540, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1f1d51d0937c913a70586b2167d44b71", "sha256": "5dcadc1bf1e71c502798a83c1ca52fb60261ab4ae194e336b6d801cb830e236b" }, "downloads": -1, "filename": "silk-deployment-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1f1d51d0937c913a70586b2167d44b71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15036, "upload_time": "2010-12-12T21:02:36", "url": "https://files.pythonhosted.org/packages/3f/74/88f8c32ecde166cb2321d46a022ac8717588a1d81739f7c1838c356b1232/silk-deployment-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9f86cc15db46ddf755e8e32d0a859b35", "sha256": "05867635ff4458228e91f7911214580f7ed533d86045de08aba99a1df4aa74fc" }, "downloads": -1, "filename": "silk-deployment-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9f86cc15db46ddf755e8e32d0a859b35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14996, "upload_time": "2010-12-12T21:19:23", "url": "https://files.pythonhosted.org/packages/ef/bb/7005cdd61f0b70fbf578fabf5b7beab7bcb8918c6184bcbed57220b34a85/silk-deployment-0.1.1.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "e2f976b869b30c700f8b2ccc4b30ecf9", "sha256": "5954dc67bd299f3c9429c67c2918692e55bf5acc411e0cbcb7418c2f71e1dddc" }, "downloads": -1, "filename": "silk-deployment-0.2.1.tar.gz", "has_sig": false, "md5_digest": "e2f976b869b30c700f8b2ccc4b30ecf9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17531, "upload_time": "2011-01-24T17:51:06", "url": "https://files.pythonhosted.org/packages/c4/cc/bde374206b9e93d2ef245bef5df5ff08e57a68ce7f4bf23ff48edc19a812/silk-deployment-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "e77ef37bbd8316dbb45a02bd0ec5ceed", "sha256": "d99ddc098e438ff30d6a01982f16ad78b64a63ae049d56344fde735f0845d3b9" }, "downloads": -1, "filename": "silk-deployment-0.2.2.tar.gz", "has_sig": false, "md5_digest": "e77ef37bbd8316dbb45a02bd0ec5ceed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17574, "upload_time": "2011-01-24T19:11:24", "url": "https://files.pythonhosted.org/packages/55/2e/d78e7e867bd68737f44686bddfaf71db6aef77f618f3303e4334a9eba2e4/silk-deployment-0.2.2.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "06bae9c9bbd878c16d9325634792b734", "sha256": "6df0e1918ec67dc493e3d7696fcefcd3fbd6397368f9856b7eaf3000fb4ab5ed" }, "downloads": -1, "filename": "silk-deployment-0.2.4.tar.gz", "has_sig": false, "md5_digest": "06bae9c9bbd878c16d9325634792b734", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17668, "upload_time": "2011-01-31T19:47:57", "url": "https://files.pythonhosted.org/packages/fa/26/3129394b4eba7ef2fded2c4ef8c0b5f92e8273b391bbd58dfecc4c0b746e/silk-deployment-0.2.4.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "2f25cc451f117aa7b9594c546debb086", "sha256": "913bf4854e28d041d128dd18179efd6f6e8942a3467b915359d3170cb4e10ffa" }, "downloads": -1, "filename": "silk-deployment-0.2.6.tar.gz", "has_sig": false, "md5_digest": "2f25cc451f117aa7b9594c546debb086", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16353, "upload_time": "2011-03-24T22:14:38", "url": "https://files.pythonhosted.org/packages/77/02/d364e21301aef7de469d6ea8ea7452589497104f3fc03793b35e2623f3dc/silk-deployment-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "149751816e3f9cf79558ac001570db2d", "sha256": "7a2064ac25109dd238f15dae553fa2bbf6dc7a07af06b6af97b6087b045dc065" }, "downloads": -1, "filename": "silk-deployment-0.2.7.tar.gz", "has_sig": false, "md5_digest": "149751816e3f9cf79558ac001570db2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16351, "upload_time": "2011-03-24T22:16:58", "url": "https://files.pythonhosted.org/packages/d8/08/89555d935cc2ba8c18417d39367d478c72c3426ad26f1bb01fc3faea2716/silk-deployment-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "876aa99235c0e0911d20dadc5b096a07", "sha256": "23676b5f5b2ccb0978f9d53085d04df8afdf7dc6b8e39a48f70595afeca4014a" }, "downloads": -1, "filename": "silk-deployment-0.2.8.tar.gz", "has_sig": false, "md5_digest": "876aa99235c0e0911d20dadc5b096a07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17655, "upload_time": "2011-03-25T18:26:06", "url": "https://files.pythonhosted.org/packages/6e/e0/d5d75aeca911a4e20a0dfd2de638326ff4354b4f35ba59c240ef60d657f9/silk-deployment-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "c6b58427e95c05653ec243c006cba76b", "sha256": "f8bf72c0eb114656e219cfc53cc9d61d191bab01aab54b9b616475a3c1a5e74e" }, "downloads": -1, "filename": "silk-deployment-0.2.9.tar.gz", "has_sig": false, "md5_digest": "c6b58427e95c05653ec243c006cba76b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17806, "upload_time": "2011-05-20T02:11:35", "url": "https://files.pythonhosted.org/packages/b8/12/c9b201e75aaf59940ae8d78bdee267f2d58e4ef17e2a0ea578a5d30e2e0d/silk-deployment-0.2.9.tar.gz" } ], "0.3.11": [ { "comment_text": "", "digests": { "md5": "b6b43b9e6482073beeb7befbdf4d3491", "sha256": "38b6f55428c2f190f1e33f0e9438e1c8968f991b9fe020796051df159a536606" }, "downloads": -1, "filename": "silk-deployment-0.3.11.tar.gz", "has_sig": false, "md5_digest": "b6b43b9e6482073beeb7befbdf4d3491", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 524978, "upload_time": "2012-01-19T02:16:46", "url": "https://files.pythonhosted.org/packages/5b/85/b5de4be90eb9106c7fe41cccf074e645386ecc434fff084a3496c0909c19/silk-deployment-0.3.11.tar.gz" } ], "0.3.12": [ { "comment_text": "", "digests": { "md5": "ee74047bc12b177b723e62b03431348e", "sha256": "0e7810501232daf127696465fe99af9fa91ec7e62ac2e173fe1f486bd20e1369" }, "downloads": -1, "filename": "silk-deployment-0.3.12.tar.gz", "has_sig": false, "md5_digest": "ee74047bc12b177b723e62b03431348e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 524999, "upload_time": "2012-02-07T01:01:39", "url": "https://files.pythonhosted.org/packages/6f/f5/dede4b1b8cd8704d23f9a8f45b0f93780c034d0870d689008310a4ccf189/silk-deployment-0.3.12.tar.gz" } ], "0.3.13": [ { "comment_text": "", "digests": { "md5": "fffa2013da344167a6e08351f7f5fb47", "sha256": "5cfacbbe89e7e3f0b34f763795e0bbd966cf4a50a229f9aaf5e0912de81b048b" }, "downloads": -1, "filename": "silk-deployment-0.3.13.tar.gz", "has_sig": false, "md5_digest": "fffa2013da344167a6e08351f7f5fb47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 527138, "upload_time": "2012-03-19T16:44:37", "url": "https://files.pythonhosted.org/packages/ab/45/56d64be009145ab3cd896feb20d1a5032fcf9738b2ac022fe2c8caf754da/silk-deployment-0.3.13.tar.gz" } ], "0.3.14": [ { "comment_text": "", "digests": { "md5": "5809f41a9505927402da63a4aafe776a", "sha256": "43759a6413dcf444f9721c2134ac5e56d9366729a75f3c2cbe18206b0c0c37fc" }, "downloads": -1, "filename": "silk-deployment-0.3.14.tar.gz", "has_sig": false, "md5_digest": "5809f41a9505927402da63a4aafe776a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 527107, "upload_time": "2012-03-19T16:47:54", "url": "https://files.pythonhosted.org/packages/28/33/2d539eb22d78fd814ca0373a87b6243fc5485a3c85e9c72449ea20aa2cf3/silk-deployment-0.3.14.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5809f41a9505927402da63a4aafe776a", "sha256": "43759a6413dcf444f9721c2134ac5e56d9366729a75f3c2cbe18206b0c0c37fc" }, "downloads": -1, "filename": "silk-deployment-0.3.14.tar.gz", "has_sig": false, "md5_digest": "5809f41a9505927402da63a4aafe776a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 527107, "upload_time": "2012-03-19T16:47:54", "url": "https://files.pythonhosted.org/packages/28/33/2d539eb22d78fd814ca0373a87b6243fc5485a3c85e9c72449ea20aa2cf3/silk-deployment-0.3.14.tar.gz" } ] }