文件
fenleixinxi/tmp_img/step3_deploy.py
MiAn bb6418f51b feat: 新增电话拨打功能及相关配置,完善农产品分类与地区数据
- 新增商家/信息详情页电话拨打接口,支持每日额度限制与拨打日志记录
- 新增平台免责声明内容及协议接口,完善用户服务协议相关配置
- 新增农产品分类图标与上市角标展示,优化分类管理界面样式
- 新增全国行政区划工具类与城市选择组件,重构地区数据结构
- 新增SSH自检与部署脚本,完善项目部署流程
2026-10-27 17:05:00 +08:00

29 行
1.6 KiB
Python

# -*- coding: utf-8 -*-
"""第三步:远程部署(解压代码、导入数据库、清缓存、重建菜单、修权限)"""
import paramiko
cli = paramiko.SSHClient()
cli.set_missing_host_key_policy(paramiko.AutoAddPolicy())
cli.connect("8.137.181.63", 22, "root", "liyanxia@6688", timeout=20)
BASE = "/www/wwwroot/fenleixinxi.gzyakj.com.cn"
steps = [
("解压代码", f"cd {BASE} && tar -xzf /tmp/dep/code.tar.gz -C {BASE} && echo OK"),
("导入数据库", f"mysql -ufenleixinxi -pfenleixinxi --default-character-set=utf8mb4 fenleixinxi < /tmp/dep/db_full.sql 2>&1 | grep -v 'insecure' ; echo rc=$?"),
("校验表数量", "mysql -ufenleixinxi -pfenleixinxi -N -e \"SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='fenleixinxi';\" 2>/dev/null"),
("清理runtime缓存", f"cd {BASE} && rm -rf runtime/cache/* runtime/temp/* && echo OK"),
("重建后台菜单", f"cd {BASE} && php think fc:menu 2>&1 | tail -20"),
("修正目录属主", f"chown -R www:www {BASE}/application {BASE}/public {BASE}/extend {BASE}/addons {BASE}/runtime && echo OK"),
("校验national_areas", f"ls -la {BASE}/application/extra/national_areas.json {BASE}/application/common/library/NationalArea.php"),
]
for title, cmd in steps:
_, out, err = cli.exec_command(cmd, timeout=300)
rc = out.channel.recv_exit_status()
o = out.read().decode("utf-8", "ignore").strip()
e = err.read().decode("utf-8", "ignore").strip()
print(f"===== {title} ===== rc={rc}\n{o}")
if e:
print("STDERR:", e[:800])
print("-" * 60)
cli.close()
print("DEPLOY DONE")