Docs/system d change (#1376)

* expanded and clarified systemd deployment instructions

* fixed typo

* fixed typo

* fixed my stuff going past the 80-char page-width
This commit is contained in:
David McInnis 2016-10-27 23:37:10 -07:00 committed by Benoit Chesneau
parent 6eb01409da
commit 4ceb1e4a00

View File

@ -188,8 +188,8 @@ Another useful tool to monitor and control Gunicorn is Supervisor_. A
Upstart Upstart
------- -------
Using Gunicorn with upstart is simple. In this example we will run the app "myapp" Using Gunicorn with upstart is simple. In this example we will run the app
from a virtualenv. All errors will go to /var/log/upstart/myapp.log. "myapp" from a virtualenv. All errors will go to /var/log/upstart/myapp.log.
**/etc/init/myapp.conf**:: **/etc/init/myapp.conf**::
@ -208,10 +208,12 @@ from a virtualenv. All errors will go to /var/log/upstart/myapp.log.
Systemd Systemd
------- -------
A tool that is starting to be common on linux systems is Systemd_. Here A tool that is starting to be common on linux systems is Systemd_. Below are
are configurations files to set the Gunicorn launch in systemd and configurations files and instructions for using systemd to create a unix socket
the interfaces on which Gunicorn will listen. The sockets will be managed by for incoming Gunicorn requests. Systemd will listen on this socket and start
systemd: gunicorn automatically in response to traffic. Later in this section are
nstructions for configuring Nginx to forward web traffic to the newly created
unix socket:
**/etc/systemd/system/gunicorn.service**:: **/etc/systemd/system/gunicorn.service**::
@ -225,7 +227,8 @@ systemd:
User=someuser User=someuser
Group=someuser Group=someuser
WorkingDirectory=/home/someuser/applicationroot WorkingDirectory=/home/someuser/applicationroot
ExecStart=/usr/bin/gunicorn --pid /run/gunicorn/pid --bind unix:/run/gunicorn/socket applicationname.wsgi ExecStart=/usr/bin/gunicorn --pid /run/gunicorn/pid \
--bind unix:/run/gunicorn/socket applicationname.wsgi
ExecReload=/bin/kill -s HUP $MAINPID ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true PrivateTmp=true
@ -240,15 +243,13 @@ systemd:
[Socket] [Socket]
ListenStream=/run/gunicorn/socket ListenStream=/run/gunicorn/socket
ListenStream=0.0.0.0:9000
ListenStream=[::]:8000
[Install] [Install]
WantedBy=sockets.target WantedBy=sockets.target
**/usr/lib/tmpfiles.d/gunicorn.conf**:: **/etc/tmpfiles.d/gunicorn.conf**::
d /run/gunicorn 0755 someuser someuser - d /run/gunicorn 0755 someuser somegroup -
Next enable the services so they autostart at boot:: Next enable the services so they autostart at boot::
@ -261,10 +262,57 @@ Either reboot, or start the services manually::
systemctl start gunicorn.socket systemctl start gunicorn.socket
After running ``curl http://localhost:9000/``, Gunicorn should start and you After running ``curl --unix-socket /run/gunicorn/socket http:``, Gunicorn
should see something like that in logs:: should start and you should see something like that in logs::
2013-02-19 23:48:19 [31436] [DEBUG] Socket activation sockets:
unix:/run/gunicorn/socket,http://0.0.0.0:9000,http://[::]:8000
If you are also using Nginx with Systemd make sure to pass incoming traffic to
the new Gunicorn socket. Below is the http section of my nginx.conf
**/etc/tmpfiles.d/gunicorn.conf**::
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
disable_symlinks off;
server {
listen 8000;
server_name 127.0.0.1;
location /static/ {
alias /static/;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/run/gunicorn/socket;
}
}
Now make sure you enable the nginx service so it automatically starts at boot:
systemctl enable nginx.service
Either reboot, or start Nginx with the following command:
systemctl start nginx
Now you should be able to test Nginx with Gunicorn by visiting
http://127.0.0.1:8000/ in any web browser. Please note that the listen and
server_name used here are configured for a local machine. In a production
server you will most likely listen on port 80, and use your URL as the
server_name. Apache or any other web-server can be used instead of Nginx.
2013-02-19 23:48:19 [31436] [DEBUG] Socket activation sockets: unix:/run/gunicorn/socket,http://0.0.0.0:9000,http://[::]:8000
Logging Logging
======= =======