# uWSGI Example

This guide will show you how to run PowerDNS-Admin via uWSGI and nginx. This guide was written using Debian 8 with the following software versions:
- nginx 1.6.2
- uwsgi 2.0.7-debian
- python 2.7.9

## Software installation:

1. apt install the following packages:
   - `uwsgi`
   - `uwsgi-plugin-python`
   - `nginx`

## Step-by-step instructions
1. Create a uWSGI .ini in `/etc/uwsgi/apps-enabled` with the following contents, making sure to replace the chdir, pythonpath and virtualenv directories with where you've installed PowerDNS-Admin:
 ```ini
 [uwsgi]
 plugins = python27
 
 uid=www-data
 gid=www-data
 
 chdir = /opt/pdns-admin/PowerDNS-Admin/
 pythonpath = /opt/pdns-admin/PowerDNS-Admin/
 virtualenv = /opt/pdns-admin/PowerDNS-Admin/flask 
 
 mount = /pdns=powerdnsadmin:create_app()
 manage-script-name = true
 
 vacuum = true
 harakiri = 20
 buffer-size = 32768
 post-buffering = 8192
 socket = /run/uwsgi/app/%n/%n.socket
 chown-socket = www-data
 pidfile = /run/uwsgi/app/%n/%n.pid 
 
 daemonize = /var/log/uwsgi/app/%n.log
 enable-threads
 ```
2. Add the following configuration to your nginx config:
 ```nginx
 location / { try_files $uri @pdns_admin; } 

 location @pdns_admin {
     include uwsgi_params;
     uwsgi_pass unix:/run/uwsgi/app/pdns-admin/pdns-admin.socket;
 }

 location /pdns/static/ {
     alias /opt/pdns-admin/PowerDNS-Admin/app/static/;
 }
 ```
3. Restart nginx and uwsgi.
4. You're done and PowerDNS-Admin will now be available via nginx.