Smart_container/docs/deploy.md
2022-11-03 02:51:47 +08:00

163 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目部署流程
## 服务端部署
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只留一条数据, 如果全部清空数据上传商品时会报错.