背景
前面的研发+测试步骤完成后,需要将Python部署到生产环境
- 使用Python3 创建基础镜像
- 设置工作目录
- 安装镜像依赖
- 启动Flask应用
当上面步骤执行完成后,你会发现产品、运营、客服会不断的完善修改faq的内容,如果每次修改都要发一次python后台,那开发+测试+运维部署都是一个连环动作。
所以需要一个无需运维发布,产品运营只需提供md文件即可直接更新线上的脚本
脚本
设计更新线上时要注意几点,防止被恶意篡改、非法来源:
- 需要域名、IP白名单
- 增加动态秘钥
- 增加签名
- 请求头
IP限制
secret_pro_key = kami_ntlk.get_update_faq_sql_secret()
# Handle IPv4-mapped IPv6 addresses
remote_addr = request.remote_addr
# Check if the request is from a local network
if not ('192.168.xxx' in remote_addr or
'10.xxx.xxx' in remote_addr or
'172.xxx.xx.xx' in remote_addr):
return jsonify({'code': -10003, 'data': 'Access denied', 'addr': remote_addr}), 403
动态秘钥检查
# Check for secret key
secret_key = request.headers.get('X-Secret-Key')
if secret_key != secret_pro_key:
return jsonify({'code': -10003, 'data': 'Invalid secret key'}), 403
参数签名
每个公司的签名不同,使用自己公司的统一签名方式