Control your gunicorn process with fabric.
The installation is thanks to the Python Package Index and pip really simple.
$ pip install fabric-gunicorn
Add import fabric_gunicorn as gunicorn
to your new or existing fabfile.py. After this you should go in your termianl and run fab -l
in your project directory. You will see something like this:
Available commands: gunicorn.add_worker Increase the number of your gunicorn workers gunicorn.reload Reload gracefully the gunicorn process and the wsgi application gunicorn.remove_worker Decrease the number of your gunicorn workers gunicorn.restart Restart hard the gunicorn process gunicorn.start Start the gunicorn process gunicorn.status Show the current status of your gunicorn process gunicorn.stop Stop the gunicorn process
Befor you can start a gunicorn process on your server you must set the gunicorn_wsgi_app env variable. Edit your fabfile.py and add something like: env.gunicorn_wsgi_app = 'hello.wsgi:app'
. The default workdir is the home directory of the connected user. You can also change this path with the env variable env.remote_workdir
.
Normaly you should now able to run fab gunicorn.start
and the gunicorn server should start on your remote machine. Gunicorn must be installed.
Your wsgi app is now avaiable under http://127.0.0.1:8000
.
fabric-gunicorn take all configuration from the fabric env variable. For gunicorn I added some variables:
- env.remote_workdir
- This is normaly your project path.
- env.virtualenv_dir
- If you want to use a virtualenv than you can here define the path to your env directory.
- env.gunicorn_wsgi_app
- There you set your wsgi app import path.
Example:
mydjangoproject.wsgi:application
- env.gunicorn_bind
- Define on which port or socket gunicorn should bind.
Default:
127.0.0.1:8000
- env.gunicorn_pidpath
- The path for the pidfile of the gunicorn master process.
Default:
remote_workdir/gunicorn.pid
- env.gunicorn_workers
- The number of gunicorn worker processes by start.
Default:
1
- env.gunicorn_worker_class
- The class of worker you want to use. Normal the default
sync
worker should run fine. More under: http://gunicorn.org/design.html - env.django_settings_module
- This is special for django to set the DJANGO_SETTINGS_MODULE path.
Example:
mydjangoproject.settings
- env.paster_config_file
- This should point to your application.ini paster deploy settings file. Setting this will cause gunicorn to execute using gunicorn_paster instead of gunicorn.
Example:
config/application.ini