用nginx 和 gunicorn 部署Django

本文详细介绍了如何在Linux(Ubuntu 20.04)上使用Nginx和Gunicorn部署Django应用。内容包括软件安装、Django工程准备、Gunicorn服务验证、systemd套接字和服务文件创建、Nginx代理配置以及故障排除。文章适用于已经有一定Django基础的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍在linux (ubuntu20) 上用nginx 和 gunicorn 部署 Django 的方法。 我的原机上安装了LEMP上的wordpress, 参见 在ubuntu 20 上安装 wordpress lemp ,主页面是worpress 同时也安装了django的应用。当然 wordpress 不是必要的。

本文没有介绍 django 工程的建立,只是介绍其部署,当然在部署前还是需要验证django 应用的。

参考原文是 How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 20.04  原文介绍得很多,也比较难看懂,但本文只是集中在django 的部署。

软件安装和工程准备

执行下面的安装命令:

sudo apt update
sudo apt install python3-pip python3-dev libpq-dev  nginx curl

libpq-dev 在我主机有点问题,就不安装他了,用下面命令:

sudo apt install python3-pip python3-dev  nginx curl

建立虚拟空间,先安装软件:

sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv

建立工程目录 :

mkdir ~/mysite
cd ~/mysite

建立虚拟空间:

virtualenv mysiteenv

激活虚拟空间:

source mysiteenv/bin/activate

界面是这样的:

leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ source myproject/myprojectenv/bin/activate
(myprojectenv) leon@ubuntu-s-1vcpu-1gb-tor1-01:~$

这样提示行有虚拟环境名。

在虚拟环境里安装 Django gunicorn 。注意这里安装用pip 而不是pip3:

pip install django gunicorn 

建立django 和应用

建立工程,设置等等,这里就不多说。可以参看:python 的web框架 django 的入门教程 1

确保防火墙打开8000端口:

sudo ufw allow 8000

启动应用:

~/mysite/manage.py runserver 0.0.0.0:8000

验证,在浏览器输入你的应用名,比如:http://127.0.0.1:8000/polls/

或者:http://138.197.144.170/covid/

这里应该看到你的应用运行正常。

测试Gunicorn服务的功能

先看看工程mysite 目录下的内容:

leon@ubuntu-s-1vcpu-1gb-tor1-01:~/mysite/mysite$ ls
__init__.py  __pycache__  asgi.py  settings.py  urls.py  views.py  views.py.save  wsgi.py

我们用到 wsgi.py 这个文件

guniorn 的服务验证是这样的:

cd ~/mysite
gunicorn --bind 0.0.0.0:8000 mysite.wsgi
这样用gunicorn 启动django 应用服务。和上面启动django 应用效果一样的。

在浏览器输入你的应用名,比如:http://127.0.0.1:8000/polls/

或者:http://138.197.144.170/covid/

这里应该看到你的应用同样运行正常。

退出虚拟空间用下面命令:

deactivate

为Gunicorn创建systemd套接字和服务文件

sudo nano /etc/systemd/system/gunicorn.socket

在这里,我们将创建一个[Unit]节来描述套接字,一个[Socket]节来定义套接字位置,并创建一个[Install]节以确保在正确的时间创建了套接字:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

接下来,在文本编辑器中创建并使用sudo权限打开Gunicorn的systemd service文件。service文件名应与socket文件名匹配,但扩展名不一样:

sudo nano /etc/systemd/system/gunicorn.service

从[Unit]部分开始,该部分用于指定元数据和相关性。 我们将在此处对我们的服务进行描述,并告诉init系统仅在达到网络目标后才启动此服务。 因为我们的服务依赖于套接字文件中的套接字,所以我们需要包含一个Re

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值