使用 Gunicorn 部署 Django 项目
准备工作. 安装 Gunicorn
pip install gunicorn
1. 使用配置文件
创建 gunicorn_conf.py
文件:
import multiprocessingbind = "127.0.0.0:8001"
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = "gthread"
threads = 4
max_requests = 1000
timeout = 30
keepalive = 2
accesslog = "/var/log/gunicorn/access.log"
errorlog = "/var/log/gunicorn/error.log"
然后运行:这是手动测试
gunicorn -c gunicorn_conf.py zhiliaoblog.wsgi:application
2. 结合 Nginx
Nginx 配置示例:
nginx
upstream django_app {server 127.0.0.1:8001;
}server {listen 80;server_name blog.larance.xyz;location / {proxy_pass http://django_app;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;proxy_redirect off;}location /static/ {alias /home/ubuntu/zhiliaoblog/static/;}location /media/ {alias /home/ubuntu/zhiliaoblog/media/;}
}
3. 创建 Supervisor 配置文件
/etc/supervisor/conf.d/zhiliaoblog.conf
:
[program:zhiliaoblog]
command=/home/ubuntu/zhiliaoblog/blog_env/bin/gunicorn -c /home/ubuntu/zhiliaoblog/gunicorn_conf.py zhiliaoblog.wsgi:application
directory=/home/ubuntu/zhiliaoblog
user=ubuntu
autostart=true
autorestart=true
startsecs=5
startretries=3
redirect_stderr=true
stdout_logfile=/var/log/supervisor/zhiliaoblog.log
environment=DJANGO_SETTINGS_MODULE="zhiliaoblog.settings",PATH="/home/ubuntu/zhiliaoblog/blog_env/bin:%(ENV_PATH)s",PYTHONPATH="/home/ubuntu/zhiliaoblog"
启用并启动服务:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start zhiliaoblog