{ "info": { "author": "John Furr", "author_email": "anouman.dev@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: WSGI" ], "description": "Anouman Overview\n================\n\nAnouman is a django site deployment tool that is designed to greatly\nsimplify the process of deploying\n`Django `__ projects behind\n`gunicorn `__/`nginx `__. In\nthe spirit of reusing great open source software Anouman makes use of\n`virtualenv `__,\n`virtualenvwrapper `__,\nand of course `django `__ to help manage\nthe process of deploying your django projects.\n\nThe easiest way to become familiar with Anouman is to dive in and use it\nby following along with the tutorial below. However, before you begin\nyou will first need to install `vagrant `__\nand `virtualbox `__. You will be using\nthese tools to build a fresh Ubuntu VM to test your django deployment\non.\n\n**Disclaimer:** *Anouman is still very much alpha stage software. As\nsuch it has only been tested on Ubuntu 12.04 using the BASH shell. I'd\nlove to hear from others if they get this working in other OS/SHELL\ncombinations.*\n\nInstall Anouman\n---------------\n\nSwitch to the python virtualenv you use for development. You are using\n`virtualenv `__ for python\ndevelopment right? If not Anouman should still work with your python\nsystem packages.\n\n::\n\n source /path/to/your/virtualenv/activate\n pip install anouman\n\nVirtual Machine Creation and Provisioning\n-----------------------------------------\n\n**Step 1:** VM Creation\n\n::\n\n anouman --vm test1\n\nThis command uses vagrant to create and spin up a virtual machine in a\ndirectory called test1. As part of this process anouman created an\naccount with sudo privileges. Go ahead and login with\nuser/password=\\ *anouman/anouman*:\n\n::\n\n ssh anouman@192.168.100.100 # Password *anouman*\n\n**Step 2:** Final provisioning\n\nIf you are using sqlite as your database you may skip this step.\n\nIf you are using MySQL or Postgres you will need to install them now.\nFor MySQL:\n\n::\n\n sudo apt-get install mysql-server\n\nYou will then need to login to the mysql server and create/setup the\nappropriate database for your django project.\n\nIf you are using\n`Postgres `__ you will\nneed to follow a similar\n`protocal `__ to setup\nyour Postgres database.\n\nAssuming this worked then you are ready to walk through the Anouman\ntutorial and deploy your django project on a fresh virtual machine.\n\nAnouman Setup and Deployment Tutorial\n-------------------------------------\n\nSection 1: Packaging\n~~~~~~~~~~~~~~~~~~~~\n\nThis section will assume you have a django project called *example*.\nMost likely your project is not named *example* so follow along with\nyour own project by simply replacing *example* with your project's name.\n\nBefore you begin make sure to open a new Terminal window.\n\n**Step 1:** Create Anouman Package\n\nIn this step you will use Anouman to create a deployable package from\nyour django project. Start by navigating to the directory containing\nyour django project. This is the directory you originally ran\n*django-admin.py startproject* from. For instance if you ran\n*django-admin start-project example* from your home directory then you\nwant to be in your home directory when you issue the following command:\n\n::\n\n anouman --django-project=example --domainname=example.com\n\nBehind the scenes your django project was copied into a directory named\nexample.com/src. Inside this directory is another file which contains a\nlisting of python packages you are using for your django projects. This\nwas determiend from the output of \"pip freeze\". Lastly this directory\nwas tarred and gzipped. AKA an anouman package/bundle.\n\nSection2: Deploying\n~~~~~~~~~~~~~~~~~~~\n\n**Step 1:** Copy files to server\n\nScp your Anouman bundle to the virtual machine we created above and then\nlog in.\n\n::\n\n scp example.com.tar.gz anouman@192.168.100.100:/home/anouman\n \n\nIf you are using sqlite and it is not contained in your project\ndirectory then you will now need to copy it to the VM as well. *A future\nversion will take care of copying your database to a default location\nand updating your setting file*\n\nReturn to the terminal where you are logged into your vm or relogin\nwith:\n\n::\n\n ssh anouman@192.168.100.100\n\n**Step 2:** Install Anouman into the servers system python repository.\n\n::\n\n sudo pip install anouman\n\n**Step 3:** Setup Anouman and deploy your new project.\n\n*Anouman requires all projects to be installed as a non root user.*\n\nThe first time you run Anouman it will install itself and in the process\ncreate a wrapped '*anouman*\\ ' virtualenv as well as a wrapped\n'*example.com*\\ ' virtualenv.\n\n::\n\n anouman --deploy example.com.tar.gz\n\nFollow the intructions when this command finishes to update/source your\n.bash\\_profile. You should now have your web site deployed behind\nnginx/gunicorn. Your projects system packages are now located in the\ndefault virtualenv wrapper location\n*/home/anouman/.virtualenvs/example.com*. If you are unfamiliar with the\n`virtualenvwrapper `__\nI highly recommend taking a little time to become familiar with it.\n\nAnouman has also modified your STATIC\\_ROOT and MEDIA\\_ROOT variables in\nsettings.py to point to *example.com/static* and *example.com/media*\nrespectively. The goal here is to have each site completely contained in\na single directory with nginx logs, gunicorn logs, static files, and\nyour source code. *This makes it trivial to move your site to a new\nserver using anouman.*\n\nYour site should now be running behind nginx/gunicon with static files\nproperly being servered, however you still have a few steps remaining\nbefore everything will work correctly.\n\n**STep 4:** Ensure your database settings are correct.\n\nYour site should now be deployed into a directory called\n*/home/anouman/example.com*. Your original django project can be found\nin *example.com/src*. Please update the DATABASE section of settings.py\nso that it points to your database. If it was a MySQL or Postgres DB\nrunning on localhost then you may only need to populate the database. If\nit was MySQL or Postgres on a remotely accessible database then you\nlikely have nothing to do.\n\nIf you are using an sqlite database then I recommend you create\nexample.com/DB and copy your sqlite database into this directory. If you\nare following along with the tutorial then you would change the DATABASE\nNAME section in your settings.py file to\n/home/anouman/example.com/DB/{name\\_of\\_your\\_db}\n\n**Step 5** Explore Anouman Shell Commands\n\nAssuming you updated and sourced .bash\\_profile at the end of the\ndeployment step you will now have a few shell commands that were\nappended to the end of your sites virtualenv activate script which is\nlocate in . For instance to check the status of gunicorn/nginx type:\n\n::\n\n site status\n\nNow let's bring it up..\n\n::\n\n site start\n\nLikewise you can stop your site with:\n\n::\n\n site stop\n\nGo ahead and bring the site back up:\n\n::\n\n site start\n\nYou can force nginx to do a reload with:\n\n::\n\n site reload\n\nThese site management commands are specific to the site curently being\nworked on. If you install another django project Anouman will gladly set\nit up for you and ensure that nginx properly directs traffic to the\nappropriate django back end and it's all managed with virtualenv and\nvirtualenvwrapper. To switch between sites deployed with Anouman is as\nsimple as switching wrapped virtualenv's. For ex: workon example.com,\nworkon site2.com, etc.\n\n**Step 6:** Adjust client */etc/hosts* file to simulate DNS for your web\nsite.\n\nFirst make sure your site is running (see step 5). Next, add the\nfollowing line to your */etc/hosts*.\n\n::\n\n 192.168.100.100 www.example.com example.com\n\nIf you setup another site, say site2.com, on the same server then you\nwould add another line to /etc/hsots\n\n::\n\n 192.168.100.100 www.site2.com site1.com\n\nNGINX will now properly direct traffic based on the URL to the correct\ngunicorn/django backend as well as server the correct static files for\nthe given project.\n\n**Step 7:** Now point your browser to example.com and you should see\nyour django website. Enjoy.", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/gnulnx/anouman/tree/0.0.5.1", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gnulnx/anouman", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "anouman", "package_url": "https://pypi.org/project/anouman/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/anouman/", "project_urls": { "Download": "https://github.com/gnulnx/anouman/tree/0.0.5.1", "Homepage": "https://github.com/gnulnx/anouman" }, "release_url": "https://pypi.org/project/anouman/0.0.5.1/", "requires_dist": null, "requires_python": null, "summary": "Rapidly deploy your django project behind gunicorn and nginx", "version": "0.0.5.1" }, "last_serial": 898774, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "9c098831cfe8ffb452b5bd5c2db8bdda", "sha256": "6cd14ef0ce012ffd5b37cb7a8d0c5c8d56df3c0b3112fb7a75c3612a83ffc434" }, "downloads": -1, "filename": "anouman-0.0.1.tar.gz", "has_sig": false, "md5_digest": "9c098831cfe8ffb452b5bd5c2db8bdda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8396, "upload_time": "2013-09-14T21:54:29", "url": "https://files.pythonhosted.org/packages/6f/17/abaf1dcc3a23253688f0549bbaa8c9341f53ce0d8939f7edbf18b67d5645/anouman-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "9a528032cf1d59e5d47a84da569e9c44", "sha256": "06c881273a19daa5de8979a7b23edf572ce0f3c74e55446122fdd5c2a5e0b4aa" }, "downloads": -1, "filename": "anouman-0.0.2.tar.gz", "has_sig": false, "md5_digest": "9a528032cf1d59e5d47a84da569e9c44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15502, "upload_time": "2013-09-22T21:13:39", "url": "https://files.pythonhosted.org/packages/d7/1a/564d7e170c6fc259e1b6241f1209819baace93a44c8f0ef200aa9cf1b752/anouman-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "d695561a3f17576581ff97dfe42b007e", "sha256": "9e754207e6927f92f0bacd459bf551642b0c6d2f48c1fadad73cd94a616177b0" }, "downloads": -1, "filename": "anouman-0.0.3.tar.gz", "has_sig": false, "md5_digest": "d695561a3f17576581ff97dfe42b007e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16092, "upload_time": "2013-09-22T21:23:00", "url": "https://files.pythonhosted.org/packages/19/3f/9aedc8aee94e2a45d621a089fcbcf7fcd0edf672a6ec98c90992598318b7/anouman-0.0.3.tar.gz" } ], "0.0.3.1": [ { "comment_text": "", "digests": { "md5": "da374d3fe6a95d4810ee468487c717ae", "sha256": "e77900d5b9f456c2ae1fe281040bed3a9953cd4f3a2436027274d7d0df67d794" }, "downloads": -1, "filename": "anouman-0.0.3.1.tar.gz", "has_sig": false, "md5_digest": "da374d3fe6a95d4810ee468487c717ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16098, "upload_time": "2013-09-22T21:38:13", "url": "https://files.pythonhosted.org/packages/52/30/4584790ce8128bc29a66590968433cf0092370c292131eff71b938b1da18/anouman-0.0.3.1.tar.gz" } ], "0.0.4.0": [ { "comment_text": "", "digests": { "md5": "e0bd15b1ae8821b340e5ba26ec541f99", "sha256": "7ae9ffab7fc66eb62eaf5f0465a59c3c74e1ed770dc3619e91f0506146c07d84" }, "downloads": -1, "filename": "anouman-0.0.4.0.tar.gz", "has_sig": false, "md5_digest": "e0bd15b1ae8821b340e5ba26ec541f99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19863, "upload_time": "2013-09-29T15:32:12", "url": "https://files.pythonhosted.org/packages/9a/64/9bac92acb26f015d89e78c7138df472d4474d8d587972b83f6cd10083b52/anouman-0.0.4.0.tar.gz" } ], "0.0.5.0": [ { "comment_text": "", "digests": { "md5": "20b08fd7221689557d839069ca2d121d", "sha256": "d38460794bb4816532e594d9a37711688c9ec5e4eea7f58a802a697e5f14773a" }, "downloads": -1, "filename": "anouman-0.0.5.0.tar.gz", "has_sig": false, "md5_digest": "20b08fd7221689557d839069ca2d121d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17920, "upload_time": "2013-10-19T14:19:58", "url": "https://files.pythonhosted.org/packages/05/42/0932f997f468bc48d0e41ea4425e11a2d56f0db419c00416c9726568ac59/anouman-0.0.5.0.tar.gz" } ], "0.0.5.1": [ { "comment_text": "", "digests": { "md5": "7af9052ccf31bf8f51d5eea64bd60722", "sha256": "aebfe600b670275b930749869d3c26a9f8020e729128d744e4163274daeac831" }, "downloads": -1, "filename": "anouman-0.0.5.1.tar.gz", "has_sig": false, "md5_digest": "7af9052ccf31bf8f51d5eea64bd60722", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18894, "upload_time": "2013-10-20T13:41:10", "url": "https://files.pythonhosted.org/packages/24/28/ba57f85b8face8a12f4fa60ba4d6e26c0099c41e810b288a1c0cefb49dbc/anouman-0.0.5.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7af9052ccf31bf8f51d5eea64bd60722", "sha256": "aebfe600b670275b930749869d3c26a9f8020e729128d744e4163274daeac831" }, "downloads": -1, "filename": "anouman-0.0.5.1.tar.gz", "has_sig": false, "md5_digest": "7af9052ccf31bf8f51d5eea64bd60722", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18894, "upload_time": "2013-10-20T13:41:10", "url": "https://files.pythonhosted.org/packages/24/28/ba57f85b8face8a12f4fa60ba4d6e26c0099c41e810b288a1c0cefb49dbc/anouman-0.0.5.1.tar.gz" } ] }