Django部署(Ubuntu20+Django+uwsgi+nginx)

只记录步骤,需要了解更多可以参考其他博客,
比如:手把手教你 - ubuntu 22.04 + django4.0 + uwsgi + nginx 配置完整流程

  1. 创建虚拟环境


    如果直接使用的系统环境,此步骤可跳过。
    安装
 pip install virtualenv

新建

virtualenv venv

激活

source venv/bin/activate

退出

deactivate

删除

rm -rf venv/
  1. 配置uwsgi


    之前用的apt安装,后来改成了pip安装。
pip install uwsgi

到发布日期,uwsgi需要安装一个python插件,我用的python3,所以使用命令:

sudo apt-get install uwsgi-plugin-python3

uwsgi 启动 django 的配置文件,文件名uwsgi.ini,并将其置于项目根目录,即manage.py所在的目录。
uwsgi 的使用命令,可以参考一下uwsgi启动Django详解

# 这个[uwsgi] 表示一个应用,多个应用,则重复多个[uwsgi]及下面的配
[uwsgi]
# **这里用的socket,是配合nginx 使用的。后面配置nginx时要写这个端口号**。 不经过nginx的话,可以使用http-socket参数。
socket=:8008
# 项目根目录,即manage.py所在的目录,绝对路径
chdir=/path/to/your/app
# wsgi.py文件目录,项目中自带的文件,相对于项目根目录的路径
wsgi-file=app/wsgi.py
# 应用名,一般就是包含wsgi.py文件的文件夹名称
# module=应用名.wsgi:application

# 设置python解释器路径 或 虚拟环境路径,虚拟环境路径,截止到第一步创建的虚拟环境名称venv
home=/path/.../venv
# virtualenv=/path/.../venv
# 插件,必须写,上边安装的插件是python3的
plugin=python3
# 静态文件我没有配置。。。
# 实际静态资源应该配置 nginx服务器上
# static-map=/myStatic=/home/admin/Documents/Test_platform/static
# 主应用
master=True
# 退出后同时清理子线程
vacuum=True


# 指定启动的工作进程数
processes=4
# 指定工作进程中的线程数
threads=2
# # 保存启动之后主进程的pid
pidfile=uwsgi.pid
# 如果只是调试,建议不开后台运行,方便查看log
# # 设置uwsgi后台运行,uwsgi.log保存日志信息
daemonize=uwsgi.log

使用wsgi启动django
注意,我是在激活虚拟环境的情况下运行的命令,运行成功后,如果没有配置daemonize参数,是会阻塞并打印log的。可以查看一下打印的信息,看python、application都能识别到没有。

uwsgi --ini uwsgi.ini

如果ini中配置了pidfile,那么可以使用下面的命令操作wsgi:

uwsgi --ini uwsgi.ini    # 启动uwsgi服务
uwsgi --stop uwsgi.pid  # 停止uwsgi服务
uwsgi --reload uwsgi.pid  # 重启uwsgi服务
  1. 配置nginx


    安装
sudo apt install nginx

修改配置,以对接wsgi,编辑/etc/nginx/sites-available/default 文件

listen 8000 default_server;  # 修改为8000端口,只是访问时要写成http://ip:8000
location / {
		include /etc/nginx/uwsgi_params;
		uwsgi_pass 0.0.0.0:8008;  # uwsgi.ini 中配置的socket端口
		# uwsgi_read_timeout 2;
	}

nginx 启动、重启命令:

sudo service nginx reload    # nginx 重新加载配置文件
sudo service nginx restart   # 相当于执行 stop + start
sudo service nginx start
sudo service nginx stop

查看nginx状态,其他服务也通用(如ssh):

sudo systemctl status nginx
  1. 访问验证


    因为在nginx中配置了listen 8000端口,所以浏览器访问 http:服务器ip:8000,即可看到效果。如果访问不了,可以检查一下uwsgi的打印log,是不是提示告警和异常。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值