作为一个高级的Python Web应用框架,Django可以加快使用Python编程语言构建的Web应用的开发速度。Django应用的部署方式非常多,本教程将演示如何使用Nginx作为反向代理、Gunicorn作为WSGI服务器来部署Django应用。Gunicorn负责高效地提供应用服务,而Nginx则负责负载均衡、缓存以及处理传入请求。Django应用同时结合了两者优势,可获得更强的安全性和更出色的请求处理能力。
一、准备
准备部署Django应用需具备以下条件:
1、一台运行基于Linux的发行版的服务器(本文Ubuntu 22.04服务器)
2、已安装Python 3和PHP
3、服务器上已安装Nginx
4、为Django项目搭建好的虚拟环境
二、安装Gunicorn
Gunicorn是适用于Django应用程序的高效Python WSGI HTTP服务器。
执行安装命令:
pip install gunicorn
安装完成后,导航至Django项目目录并测试Gunicorn:
gunicorn –bind 0.0.0.0:8000 myproject.wsgi:application
此命令将在8000端口上运行Gunicorn,并为Django应用提供服务,通过http://your-server-ip:8000访问。
三、将Gunicorn配置为Systemd服务
为确保Gunicorn作为后台服务运行并在出现故障时自动重启,请先创建一个systemd服务文件:
sudo nano /etc/systemd/system/gunicorn.service
添加以下内容,将‘myuser’和‘myproject’替换为您的详细信息:
[Unit]
Description=Gunicorn instance to serve Django application
After=network.target[Service]
User=myuser
Group=myuser
WorkingDirectory=/home/myuser/myproject
ExecStart=/home/myuser/myproject/venv/bin/gunicorn –workers 3 –bind unix:/home/myuser/myproject/gunicorn.sock myproject.wsgi:application[Install]
WantedBy=multi-user.target
请确保选择正确的WorkingDirectory及所有其他参数。
保存并退出,然后重新加载systemd并启动服务:
sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
四、将Nginx配置为反向代理
Nginx将处理传入的请求,并将其转发给Gunicorn。
创建一个新的Nginx服务器块:
sudo nano /etc/nginx/sites-available/myproject
添加以下配置:
server {
listen 80;
server_name your_domain_or_IP;location / {
proxy_pass http://unix:/root/myproject/gunicorn.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
}
}
启用配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
五、调整防火墙规则
请使用以下命令确保防火墙允许HTTP和HTTPS流量:
sudo ufw allow ‘Nginx Full’
六、验证部署
Django应用现在应可通过Nginx和Gunicorn访问。在浏览器中输入http://your-domain-or-ip即可。
至此,Django应用已通过Gunicorn和Nginx搭建完成。
-
广告合作
-
QQ群号:4114653






