Gunicorn


Gunicorn 是一个由纯Python实现的UNIX类操作系统平台下WSGI服务,它非常容易部署和使用,而且没有别的依赖

我使用的是nginx+gunicorn进行部署,如果你愿意,你用可以只使用Gunicorn

另外,这个方法只适用于linux系统下
pip install gunicorn
你可以单纯使用命令 ``nohup gunicorn deeru.wsgi & `` 运行,但这样一旦gunicorn意外停止,你的网站就无法访问。
官方介绍了Gaffer、Runit、Supervisor等多种工具帮助你以守护进程的方式运行,详见:http://docs.gunicorn.org/en/stable/deploy.html#monitoring
这里使用的是 Systemd 的方式运行
新建 /etc/systemd/system/gunicorn.service

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
PIDFile=/run/gunicorn/pid

# 改为你自己的用户
User=someuser
Group=someuser

RuntimeDirectory=gunicorn

# DeerU路径
WorkingDirectory=/home/xxx/DeerU

# 如果是用了虚拟环境,需要用虚拟环境中gunicorn的绝对路径 '/home/xx/deeru_env/bin/gunicorn'

# workers单核cpu建议不超过2

# 其他参数参照gunicorn文档

# 我socket来进行nginx与gunicorn之间的的通信,你也可以改为tcp方式--bind 127.0.0.1:9001 ,这里不再叙述tcp通信方式的配置

ExecStart=/home/xx/deeru_env/bin/gunicorn  --workers 2 --pid /run/gunicorn/pid  --bind unix:/run/gunicorn/socket  deeru.wsgi

ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

新建 /etc/systemd/system/gunicorn.socket:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn/socket

[Install]
WantedBy=sockets.target

 

新建 /etc/tmpfiles.d/gunicorn.conf 
d /run/gunicorn 0755 someuser somegroup -
设置开机启动并开始gunicorn services:

systemctl enable gunicorn.socket

systemctl start gunicorn.socket

 

修改nginx配置:

...

http {

  ...

  upstream app_server {
    server unix:/tmp/gunicorn.sock fail_timeout=0;

    # TCP 方式改为
    # server 192.168.0.7:8000 fail_timeout=0;
  }



  server {

    ...

    listen 80;

    location / {

      try_files $uri @proxy_to_app;
    }

    location @proxy_to_app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      # we don't want nginx trying to do something clever with
      # redirects, we set the Host: header above already.
      proxy_redirect off;
      proxy_pass http://app_server;
    }

    # 静态文件
    location ~ ^/(static|media)/   {
     root /home/xxx/project/DeerU;
     add_header Access-Control-Allow-Origin *;
     expires 864000;
    }

  }
}

 

重启nginx:

nginx -s reload

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM