【Django部署】Nginx+uWsgi部署Django项目

简介: 最近需要部署一个Django项目但是不能用宝塔面板!呜呜呜 不能懒人式一键部署了 那就学习一下黑框框部署吧

Nginx+uWsgi部署Django项目

最近需要部署一个Django项目但是不能用宝塔面板!

呜呜呜 不能懒人式一键部署了

那就学习一下黑框框部署吧

基本原理

  • 首先用户浏览器向nginx发送请求,nginx判断是动态请求还是静态请求,如果是静态请求,则直接返回静态文件。如果是动态请求,则将请求转发给uwsgi服务器,uwsgi调用我们的django进行处理请求,然后一步一步的再返回。
  • WSGI是Web 服务器(uWSGI)与 Web 应用程序或应用框架(Django)之间的一种低级别的接口
  • uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议
  • uwsgi是Nginx服务器和uWSGI服务器的通信协议,规定了怎么把请求转发给应用程序和返回

img

img

使用Xshell完成

1.上传文件到服务器

使用scp命令

scp 文件名 用户名@服务器HOST:上传到服务器的路径
// 需要提供 root 密码
scp name root@82.156.215.40:/root/ipbdTCF/

使用xftp等其他方式也可

2.配置虚拟环境

检查是否安装virtualenv

virtualenv --version

安装virtualenv

pip3 install virtualenv virtualenvwrapper
// 遇到权限问题在前面加上 sudo
sudo pip3 install virtualenv virtualenvwrapper

创建虚拟环境

virtualenv --no-site-packages --python=python3  虚拟环境文件夹名
  • --no-site-packages 这是构建干净,隔离的模块的参数 (如果virtualenv版本大于20默认携带此参数不需要此参数)
  • --python=python3 这个参数是指定虚拟环境以哪一个物理解释器为基础的
  • 最后一个是虚拟环境的名字 会创建这么一个文件夹

激活虚拟环境

source /路径/虚拟环境文件夹名/bin/activate

激活虚拟环境的原理就是修改了PATH变量,path的执行是有顺序的

修改了环境变量的位置

  • echo $PATH 检查环境变量
  • which python3
  • which pip3 检查虚拟环境是否正常

退出虚拟环境

deactivate 

项目依赖都装在虚拟环境中管理!

3.配置uwsgi

检查是否安装uwsgi

# 已安装会显示版本号
uwsgi --version

# 未安装使用 pip 安装一下
# 注意要在虚拟环境中安装
pip install uwsgi

启动项目

  • 注意:启动前先runserver测试一下是否配置完成能够正常运行
# 使用uwsgi启动项目
# --file 指向项目内  wsgi.py 文件
# --static-map 指向静态文件路径
# uwsgi --http 0.0.0.0:80 --file 项目名称/wsgi.py --static-map=/static=static
# 在项目目录下
uwsgi --http 0.0.0.0:80 --file teacher/wsgi.py --static-map=/static=static

启动后可在自己服务器的公网IP访问到Django项目

配置uwsgi

# 在项目目录下创建 uwsgi.ini 作为uwsgi配置文件
vim uwsgi.ini
# uwsgi.ini文件详情
[uwsgi]
# 项目目录
chdir=/opt/project_teacher/teacher/
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 指定项目的application
module=项目名.wsgi:application

# 指定sock的文件路径
# 与nginx通讯使用
socket=/项目绝对路径/uwsgi.sock
# 启用主进程
master=true
# 进程个数
workers=4
pidfile=/项目绝对路径/uwsgi.pid
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=1028

# 设置日志目录
# 日志保存地点
daemonize=/项目绝对路径/uwsgi.log
# 启动: ini 为uwsgi配置文件
uwsgi --ini uwsgi.ini
# 重启: pid 为uwsgi启动后保存uwsgi启动进程的文件
uwsgi --reload uwsgi.pid
# 停止: 
uwsgi --stop uwsgi.pid
# 查看uwsgi是否正常启动
ps aux | grep uwsgi

Nginx配置

nginx的安装请查看另外一篇博客

配置文件

worker_processes  4;
# 指定使用的用户
user root;

events {
    worker_connections  1024;
}

http {
    keepalive_timeout  65;
    server {
        # http 请求的端口
        listen 80;
        # https 请求的端口
        listen 443 ssl http2;
        # 配置的IP与域名
        # 这里随便输入的
        server_name www.abc.com 123.123.24.23;
        charset  utf-8;
        gzip on;
        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;
        # SSL证书配置
        ssl_certificate /usr/local/nginx/conf/cert/tcfapi/tcfapi.snowhouse.space_bundle.pem;
        ssl_certificate_key /usr/local/nginx/conf/cert/tcfapi/tcfapi.snowhouse.space.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        error_page  404           /404.html;
        error_page   500 502 503 504  /50x.html;
        # 指定项目路径uwsgi
        location / {
            include uwsgi_params;
            uwsgi_connect_timeout 30;
            # unix: 刚刚配置好的 uwsgi.sock 路径
            uwsgi_pass unix:/root/IPBDPythonGroup/medicalSys/tichengfen/uwsgi.sock;
        }
        # 指定静态文件路径
        location /static/ {
            alias  /root/IPBDPythonGroup/medicalSys/tichengfen/static/;
            index  index.html index.htm;
        }
    }
}
# 使用时记得配置全局环境变量
# 启动nginx
# 启动之后访问对应的nginx配置好的路径即可
nginx
# 关闭nginx
nginx -s stop
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
96 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
1月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
74 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
1月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
70 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
16天前
|
中间件 应用服务中间件 nginx
Nginx+uWSGI+Django原理
Nginx+uWSGI+Django原理
|
16天前
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
39 1
|
18天前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
36 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
26天前
|
JavaScript 应用服务中间件 开发工具
vue尚品汇商城项目-day07【53.nginx反向代理配置】
vue尚品汇商城项目-day07【53.nginx反向代理配置】
28 4
|
1月前
|
Linux Python
解决django项目报错很离谱的报错之RuntimeError: populate() isn't reentrant
解决django项目报错很离谱的报错之RuntimeError: populate() isn't reentrant
|
8天前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
45 0
|
1月前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
45 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台