记录:ubuntu系统下django+uwsgi+nginx的环境部署

前言

用yolox跑了一个手机正反面检测的模型,之前一直是本地调用识别,现在需要做成api调用。
我是在极链AI云平台租的服务器所以全程以它为示例,看自己情况用什么服务器配置流程应该都差不多。

云服务器购买

极链AI云服务器
配置一切看自己需求在这里插入图片描述
在这里插入图片描述
没有yolox,我选了yolov5在这里插入图片描述在这里插入图片描述
创建实例之后点击JupyterLab在这里插入图片描述
新建一个终端在这里插入图片描述

关闭tensorboard服务

目前服务器预装的服务 jupyter / tensorboard 是可以通过浏览器直接访问的。
jupyter 在服务器上的端口默认是 8888
tensorboard 在服务器上的端口默认是 6006
由于服务器没有公网IP, 所以通过内网穿透把 8888/ 6006 端口映射到 net.videojj.com , 一旦实例创建成功这个映射就固定了,除非使用重置端口功能来修改
如果需要通过浏览器直接访问自定义的服务,那么就需要把 jupyter / tensorboard 停掉其中不需要的,然后把自定义的服务启动端口修改为 8888 或者 6006.
这样就可以通过点击 后台 “我的实例” 中的 “第三方工具” jupyter 或 tensorboard 来访问自定义服务了。

为了外网可以调用到我的api,需要先把tensorboard服务关闭,自己使用6006端口。

supervisorctl stop tensorboard     # 关闭 tensorboard

django+uwsgi+nginx环境部署

1. 安装,初始化一个django项目

root@623c1c563dd3f5f43298e6db:~/project# pip install django==2.0.4
root@623c1c563dd3f5f43298e6db:~/project# mkdir code
root@623c1c563dd3f5f43298e6db:~/project# cd code/
root@623c1c563dd3f5f43298e6db:~/project/code# django-admin startproject mmcsite
root@623c1c563dd3f5f43298e6db:~/project/code# cd mmcsite/
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# python manage.py runserver 0.0.0.0:6006
直接点击Tensorboard访问

在这里插入图片描述

2. 安装,并使用uwsgi启动这个服务

1.安装uwsgi
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# pip install uwsgi
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# ln -s /opt/conda/bin/uwsgi /usr/bin/uwsgi
2.配置uwsgi.ini启动文件
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# vim uwsgi.ini
[uwsgi]
socket = 0.0.0.0:3031
chdir = /root/project/code/mmcsite
wsgi-file = /root/project/code/mmcsite/wsgi.py
processes = 5
threads = 30
master = true
daemonize = /root/project/code/mmcsite/uwsgi.log
module=mmcsite.wsgi
pidfile = /root/project/code/mmcsite/uwsgi.pid
chmod-socket=666
enable-threads = true
3.使用uwsgi启动django,一定要在这个项目目录中
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# uwsgi --http 127.0.0.1:6006 --file mmcsite/wsgi.py --static-map=/static=static
直接点击Tensorboard访问
2.1 uwsgi安装报错,解决办法

错误原因:gcc版本过高在这里插入图片描述
解决步骤:

#查看当前系统安装所有版本的gcc
ls /usr/bin/gcc* -l 
#如果gcc有5以下的版本,则不用在安装,负责安装4.8版本
apt-get  install gcc-4.8
#设置4.8为优先使用版本
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
2.2 uwsgi启动报错,解决办法

错误原因:找不到对应包在这里插入图片描述
解决步骤:

1. 找到uwsgi的位置
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# which uwsgi
/opt/conda/bin/uwsgi
2.ldd查看缺少的包,看not found
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# ldd /opt/conda/bin/uwsgi
        linux-vdso.so.1 (0x00007ffffa3e9000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbd8e9cd000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbd8e62f000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbd8e42b000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fbd8e20e000)
        libpcre.so.1 => not found
        libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fbd8de4d000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fbd8dc4a000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fbd8da12000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbd8d621000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fbd8ebec000)
        libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007fbd8d269000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fbd8d043000)
        libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007fbd8b49a000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbd8b111000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbd8aef9000)
3.建立软连接
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# ln -s /opt/conda/lib/libpcre.so.1 /lib/x86_64-linux-gnu/libpcre.so.1

3. 安装配置nginx

安装nginx

apt update
apt install nginx

配置nginx

root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# vim /etc/nginx/conf.d/django.conf
server {
    listen       6006;
    server_name  127.0.0.1;
    client_max_body_size 5M;
    gzip on;
    gzip_buffers 32 4K;#压缩在内存中缓冲32块 每块4K
    gzip_comp_level 6 ;#压缩级别 推荐6
    gzip_min_length 4000;#开始压缩的最小长度4bit
        gzip_types text/plain application/json application/javascript application/x-javascript application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-ms-bmp;
        location / {
              include uwsgi_params;
              uwsgi_pass 127.0.0.1:3031;
              uwsgi_ignore_client_abort on;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

}

4. 启动项目

root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# nginx	# 启动nginx
# nginx -s stop	停止
# nginx -s reload	重启
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# uwsgi --ini uwsgi.ini	# 启动uwsgi的django项目
# 直接点击Tensorboard访问
root@623c1c563dd3f5f43298e6db:~/project/code/mmcsite# uwsgi --stop uwsgi.pid	# 关闭uwsgi

总结

环境部署完成,之后只需要上传模型配置调用即可。
菜鸟的学习记录,有任何问题或者不对的地方可私信我,感谢观看。
参考链接1
参考链接2
参考链接3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值