Python开发Flask项目如何部署到云服务器_使用Fabric自动化发布脚本

张开发
2026/4/16 20:32:59 15 分钟阅读

分享文章

Python开发Flask项目如何部署到云服务器_使用Fabric自动化发布脚本
Fabric 在 Flask 部署中易现 ConnectionRefusedError主因是云服务器默认禁用密码登录、仅支持密钥认证而 Fabric 2.x 默认尝试密码登录需配置 PubkeyAuthentication、添加公钥、显式指定 key_filename并创建专用部署用户。为什么 Fabric 在 Flask 部署中容易卡在 ConnectionRefusedError不是代码写错了而是默认用 SSH 密码登录时云服务器尤其阿里云、腾讯云新实例通常禁用了密码认证只允许密钥登录。Fabric 2.x 默认尝试密码登录没配密钥就会连不上。实操建议立即学习“Python免费学习笔记深入”确认云服务器的 /etc/ssh/sshd_config 中 PubkeyAuthentication yes 已开启并已将本地公钥如 ~/.ssh/id_rsa.pub追加到服务器的 ~/.ssh/authorized_keysFabric 脚本里必须显式指定密钥路径connect_kwargs{key_filename: /path/to/id_rsa}别用 root 用户直连——创建部署专用用户如 deploy并确保该用户对项目目录有读写权限、能执行 systemctl --user 或 supervisorctlfab deploy 执行后 Flask 进程没起来journalctl -u myapp 显示 ModuleNotFoundError: No module named flask本地开发环境装了 Flask但服务器上压根没装或者装在了错的 Python 环境里。Fabric 默认不自动同步虚拟环境它只传文件、不装依赖。实操建议立即学习“Python免费学习笔记深入”部署脚本里必须包含 pip 安装步骤例如run(pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r /var/www/myapp/requirements.txt)务必用绝对路径调用 pip避免系统多个 Python 版本导致装错地方比如用 /opt/venv/bin/pip 而不是裸写 pip如果用 systemd 管理进程检查 ExecStart 指向的 Python 解释器是否和安装依赖时用的是同一个常见坑用 /usr/bin/python3 启动却在 /opt/venv 里装包静态文件 404、url_for(static, filenameapp.js) 生成的路径总是错Flask 开发时靠调试服务器自动服务 static 目录但生产部署后Nginx 应该接管静态文件Flask 本身不该处理 /static/ 请求。如果 Nginx 没配好请求就落到 Flask而 Flask 在非调试模式下默认不提供静态文件服务。 arXiv Xplorer ArXiv 语义搜索引擎帮您快速轻松的查找保存和下载arXiv文章。

更多文章