mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
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:
parent
6eb01409da
commit
4ceb1e4a00
@ -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
|
||||||
=======
|
=======
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user