# Camera应用 **Repository Path**: sdan/camerayingyong ## Basic Information - **Project Name**: Camera应用 - **Description**: 利用小程序实现手机拍照,同时后端实现存储和展现照片 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2019-07-29 - **Last Updated**: 2022-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 介绍 odoo传输图片比较麻烦.本项目利用小程序,把图片上传到了服务器,然后odoo接收 #### 软件架构 - 前端是微信小程序 - 后台是Python结合flask接收微信小程序发来的图片,重命名后保存 #### 必要接口与参数说明 1. 后端模块**image/controllers/main.py** - Image为接收图片并且把图片传入数据库的接口. - Ordertoshow负责查询一个单号内的所有图片. - appid,secret请填入到 **backend/flask/wxupload.py**中,作用是验证服务器联通微信小程序. 2. 前端参数(解压upload文件后进行导入): - **app.js**内需要填入带有'https://的域名'+'flask/userinfo/' - **index.js**内填入'https://域名'+'/postada'(代码中有注释说明) - **order.js**内填入'https://域名'+'/show'(代码中有注释说明) #### FLASK与后台使用说明 1. 前端代码需要在小程序开发器上面运行 2. 后台必须运行在有域名验证后的服务器才能运行,后台框架基于FLASK,可以自己进行控制台拼接. Flask配置 因该项目是测试非生产环境,在引入flask时以简洁原则引入,因此没有另外引入uWSGI 首先定义flask服务的入口文件:app.py ``` import wxupload.py wxupload.py.app.run(host='0.0.0.0') # 此处需声明host='0.0.0.0',否则会导致外网无法访问服务器资源 接下来需要为flask开启进程守护: vim /lib/systemd/system/wxupload.service 编辑内容如下: [Unit] Description=wxupload#这里随便改你自己的文件名,方便后面启动使用 After=odoo.service [Service] Type=simple User=root Group=root ExecStart=/usr/bin/python3 /root/odoo-dev/wxpay/app.py #这里为启动flask的程序入口。1.不能太长2.必须是绝对完整路径 Restart=always [Install] WantedBy=multi-user.target 注册进程守护: systemctl enable wxupload.service 开启进程守护: service wxupload start 查看进程守护状态: service wxupload status 浏览器测试端口: 120.79.147.13:5000 # IP:port 开启成功的页面内容为: ``` ``` Not Found The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. ``` 接下来进入到nginx的配置 # nginx配置 使用nginx来为不同的服务所对应的不同的端口来提供反向代理,因只有一台服务器就没有配置负载均衡 首先安装nginx: ``` sudo apt-get install nginx -y sudo service nginx start # 如尚未启动,启动Nginx服务 ``` Nginx配置文件和Apache的方式基本相同,存储在/etc/nginx/available-sites/中,并可通过在/etc/nginx/enabled-sites/中添加软链接来激活。注意应同时关闭Nginx安装时默认带有的配置: ``` sudo rm /etc/nginx/sites-enabled/default sudo touch /etc/nginx/sites-available/odoo sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo ``` 使用nano或vi等编辑器来编辑 Nginx配置文件: `vim /etc/nginx/sites-available/odoo` 配置内容如下: ``` upstream odoo { server 120.79.147.13:8069; # 反向代理端口 } upstream odoochat { server 120.79.147.13:8072; #此处填写的IP地址,为您的服务器地址 } upstream wxpay { server 120.79.147.13:5000; } server { listen 80; server_name odoo.wanbowen.com www.ai-solution.cn;# 更改为自己的域名 # Add Headers for odoo proxy mode proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; # log access_log /var/log/nginx/odoo.access.log; error_log /var/log/nginx/odoo.error.log; # 匹配flask路由 location /flask/ { proxy_set_header Host $host; proxy_pass http://wxpay; } # 匹配文件后缀名 location ~ \.(txt|gif|jpg|jpeg|png)$ { proxy_set_header Host $host; root /root/odoo-dev/wxpay; } # Redirect longpoll requests to odoo longpolling port location /longpolling { proxy_set_header Host $host; proxy_pass http://odoochat; } # 通配符匹配 location / { proxy_redirect off; proxy_set_header Host $host; proxy_pass http://odoo; } # common gzip gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript; gzip on; } ``` 对nginx配置文件中location部分有不理解的请查阅 nginx的location配置详解 在配置文件的最后,可以看到两条gzip相关的命令,它们用于对一些文件进行压缩,提升性能。可通过如下命令测试配置是否正确: nginx -t 返回如下内容: `nginx: the configuration file /etc/nginx/nginx.conf syntax is ok` nginx: configuration file /etc/nginx/nginx.conf test is successful 接下来重启nginx服务: ``` sudo /etc/init.d/nginx reload or ``` `sudo systemctl reload nginx` 通过如下命令可确认 Nginx 是否将访问流量重定向到了后台Odoo服务中: `curl http://localhost` 返回如下: `
` 运行到这一步nginx的配置也完成了,接下来开始项目的运行 项目运行 首先关闭之前开启的服务: 这里统一使用service来管理服务(与systemctl效果一致,只是指令不同) ``` service odoo stop service wxpay stop ``` 更新odoo模块: `~/odoo-12/odoo-bin -c /etc/odoo/odoo.conf -u base --stop-after-init` 开启flask进程: `service wxpay start` 现在所有的端口及服务都已开启,接下来进入浏览器进行测试。 输入: http://120.79.147.13:5000 # 返回Not Found 则flask正常开启 http://120.79.147.13:8069 # 返回odoo官方登录页 则odoo正常开启 输入: http://www.ai-solution.cn # 返回odoo官方登录页 则正常 #### 参与贡献 1. Dryao 2. Wanbowen ### 神坑1. Python3环境下,import cv2 提示 ImportError: libSM.so.6: cannot open shared object file: No such file or directory 解决步骤 ``` sudo apt-get update sudo apt-get install -y python-qt4 import cv2 提示 ImportError: No module named cv2 sudo apt-get install opencv-python ```