数字化技能提升教程,数字化时代生存宝典

首页 / 开发教程 / Gunicorn+Nginx部署Django应用图文教程

Gunicorn+Nginx部署Django应用图文教程

浏览:229

作为一个高级的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

安装Gunicorn

安装完成后,导航至Django项目目录并测试Gunicorn:

gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

测试Gunicorn

此命令将在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搭建完成。

相关文章

猜你喜欢