前言
用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