Smart_container/docs/deploy.md

163 lines
4.3 KiB
Markdown
Raw Normal View History

2022-11-03 02:51:47 +08:00
# 项目部署流程
## 服务端部署
1. 获取项目代码并安装依赖包
```shell
git clone https://git.openi.org.cn/ColugoMum/Smart_container.git
cd ./Smart_container
pip install -r requirements.txt
```
2. 导入数据库并修改数据库信息
导入 `./Smart_container/container.sql` 数据库
修改 `./Smart_container/djangoProject/settings.py` 数据库信息
```shell
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 要连接的 数据库类型
'HOST': 'localhost', # 要连接的远程数据库的 ip地址
'PORT': '3306', # 数据库连接端口mysql默认3306
'USER': 'SM_C', # 数据库已有用户名`,需要更改
'PASSWORD': 'XXXXX', # 数据库已有用户密码,需要更改
'NAME': 'container', # 要连接的 数据库名
}
}
```
3. 启动Django框架
在终端执行此命令:
```shell
cd ./Smart_container
python manage.py runserver 0.0.0.0:8001
```
## 模型服务化部署
1. 进入到工作目录
```shell
cd ./Smart_container/PaddleClas/deploy/paddleserving/recognition
```
2. 修改配置文件`config.yml`路径(**建议写成绝对路径**
```
op:
rec:
···
#uci模型路径
model_config: /你的项目路径/PaddleClas/deploy/inference_PPLCNet_serving
#计算硬件类型: 空缺时由devices决定(CPU/GPU)0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu
device_type: 1
#计算硬件ID当devices为""或不写时为CPU预测当devices为"0", "0,1,2"时为GPU预测表示使用的GPU卡
devices: "0" # "0,1"
#client类型包括brpc, grpc和local_predictor.local_predictor不启动Serving服务进程内预测
client_type: local_predictor
#Fetch结果列表以client_config中fetch_var的alias_name为准
fetch_list: ["features"]
det:
concurrency: 1
local_service_conf:
client_type: local_predictor
device_type: 1
devices: '0'
fetch_list:
- save_infer_model/scale_0.tmp_1
model_config: /你的项目路径/PaddleClas/deploy/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_serving
```
3. 修改启动服务脚本`recognition_web_service.py` 这里主要修改服务所需的检索库地址(**建议写成绝对路径**)
```shell
···
index_dir = "/你的项目路径/dataset/index_update"
assert os.path.exists(os.path.join(
index_dir, "vector.index")), "vector.index not found ..."
assert os.path.exists(os.path.join(
index_dir, "id_map.pkl")), "id_map.pkl not found ... "
···
```
4. 启动/停止服务
* 进入到工作目录
```shell
cd ./Smart_container/PaddleClas/deploy/paddleserving/recognition
```
* 启动服务
在终端执行此命令:
```python
python recognition_web_service.py &>log.txt &
```
启动服务后, 运行日志保存在 log.txt可查看是否正常运行.
* 停止服务
在终端执行此命令:
```python
python -m paddle_serving_server.serve stop
```
## 客户端运行
进入client文件夹内, 执行以下代码即可运行:
```shell
python client.py
```
注: Linux下运行需要修改client.py文件, 注释掉win32相关代码
修改self.rate = (w, h)
```
class Ui_MainWindow(QtWidgets.QWidget):
def __init__(self):
# hDC = win32gui.GetDC(0)
# # 横向分辨率
# w = win32print.GetDeviceCaps(hDC, win32con.DESKTOPHORZRES)
# # 纵向分辨率
# h = win32print.GetDeviceCaps(hDC, win32con.DESKTOPVERTRES)
self.rate = (800,500)
if self.rate != 1 and self.rate != 1.25 and self.rate != 1.5 and self.rate != 1.75 :
self.rate = 1
super(Ui_MainWindow, self).__init__()
```
修改请求地址
res=requests.post('http://127.0.0.1:8001/reference_client/', data=req)
## 小程序端运行
打开微信开发者工具, 导入系统文件夹下AIContainer文件夹并运行, 即可运行小程序端.
需要修改Smart_container/AIContainer/miniprogram/app.js
改为自己IP地址方可正常请求后台.
小程序商品图片显示问题修改
pages/main/revisepage/revise.js
pages/main/main/revise.wxml
注: 上传商品前数据表t_container只留一条数据, 如果全部清空数据上传商品时会报错.