当前位置: 首页 > news >正文

Python之Flask开发框架开发项目阿里云部署介绍

1. 准备工作

1.1 购买阿里云ECS服务器

  • 进入阿里云官网,选择“云服务器ECS”。
  • 推荐配置:2核4GB内存(或最低1核2GB),系统盘40GB,操作系统选择Ubuntu 20.04 64位(或CentOS 7/8,本文以Ubuntu为例)。
  • 安全组配置:在创建实例时,或之后在安全组规则中,放行22端口(SSH)、80端口(HTTP)、443端口(HTTPS,如果需要)
  • 购买后,获取服务器的公网IP。

1.2 本地准备

  • 确保您的项目代码已完整并测试通过。
  • 记录数据库文件路径(默认为instance/goals.db),后续需要设置权限。

2. 连接服务器

使用SSH客户端(如终端、PuTTY、Xshell)连接服务器:

sshroot@你的服务器公网IP

(如果使用普通用户,替换root为用户名)


3. 安装基础环境

3.1 更新系统包

aptupdate&&aptupgrade-y

3.2 安装Python3、pip、虚拟环境工具

aptinstallpython3 python3-pip python3-venv-y

3.3 安装Nginx

aptinstallnginx-ysystemctl start nginx systemctlenablenginx

访问http://你的服务器IP应看到Nginx欢迎页。

3.4 安装git(可选,用于代码拉取)

aptinstallgit-y

4. 上传项目代码

方法一:使用scp(从本地复制到服务器)

在本地终端执行:

scp-r/本地路径/goal_tracker root@你的服务器IP:/root/

(如果使用普通用户,替换root和路径)

方法二:使用git

如果代码已托管到Git仓库,在服务器上:

cd/rootgitclone 你的仓库地址

假设项目目录为/root/goal_tracker


5. 配置Python虚拟环境并安装依赖

cd/root/goal_tracker python3-mvenv venvsourcevenv/bin/activate pipinstallflask python-dateutil gunicorn

注:gunicorn用于生产部署。


6. 配置环境变量(SECRET_KEY)

Flask 需要设置一个安全的SECRET_KEY,建议通过环境变量设置。创建.env文件(或直接在shell中export),但为了持久化,可以写入系统环境变量或使用.env文件。

创建.env文件:

cat>/root/goal_tracker/.env<<EOF SECRET_KEY=$(openssl rand-hex32)EOF

然后在app.py中读取该文件(需安装python-dotenv)或直接在代码中从环境变量获取。简单起见,可以在app.py中修改:

importos app.secret_key=os.environ.get('SECRET_KEY','your-secret-key-here')# 生产务必从环境变量获取

并确保在启动服务前设置环境变量(后续在systemd服务文件中设置)。


7. 测试运行

7.1 修改app.py监听地址

app.py末尾,将app.run()修改为:

if__name__=='__main__':app.run(host='0.0.0.0',port=5000,debug=False)# 关闭debug

7.2 运行测试

cd/root/goal_trackersourcevenv/bin/activate python app.py

此时在本地浏览器访问http://服务器IP:5000,应能看到系统登录页面。如果无法访问,检查阿里云安全组是否放行5000端口(测试完成后建议关闭,或使用Nginx反向代理)。


8. 配置Gunicorn

Gunicorn 作为WSGI服务器,可以更好地处理并发请求。

8.1 测试Gunicorn启动

cd/root/goal_trackersourcevenv/bin/activate gunicorn-w4-b127.0.0.1:8000 app:app
  • -w 4:启动4个工作进程(根据CPU核心数调整)
  • -b 127.0.0.1:8000:监听本地8000端口,等待Nginx转发
  • app:app:模块名:Flask实例名

访问http://服务器IP:8000应能看到页面,但此时只能通过本地访问(127.0.0.1),需配合Nginx对外暴露。


9. 配置Nginx反向代理

9.1 创建Nginx站点配置文件

vim/etc/nginx/sites-available/goal_tracker

写入以下内容(注意修改server_name为你的域名或IP):

server { listen 80; server_name 你的服务器IP; # 如果有域名,填写域名 location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 静态文件(如果有)可以直接由Nginx处理 location /static { alias /root/goal_tracker/static; expires 30d; } }

9.2 启用站点

ln-s/etc/nginx/sites-available/goal_tracker /etc/nginx/sites-enabled/ nginx-t# 测试配置systemctl reload nginx

现在访问http://你的服务器IP,应该看到系统首页。


10. 使用Systemd管理Gunicorn服务

为了让应用在后台持续运行并开机自启,创建systemd服务文件。

10.1 创建服务文件

vim/etc/systemd/system/goal_tracker.service

内容如下(注意路径和用户):

[Unit] Description=Gunicorn instance to serve goal tracker After=network.target [Service] User=root Group=root WorkingDirectory=/root/goal_tracker Environment="PATH=/root/goal_tracker/venv/bin" Environment="SECRET_KEY=你的随机密钥" # 或者从文件读取 ExecStart=/root/goal_tracker/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 app:app [Install] WantedBy=multi-user.target

注意:将Environment="SECRET_KEY=..."替换为实际的密钥,或通过其他方式设置。

10.2 启动并设置开机自启

systemctl start goal_tracker systemctlenablegoal_tracker systemctl status goal_tracker# 查看状态

11. 设置文件权限

SQLite数据库文件需要可写权限。默认位置为instance/goals.db,需确保运行用户(root)有读写权限:

chown-Rroot:root /root/goal_tracker/instancechmod755/root/goal_tracker/instance

如果数据库文件已存在,也需设置权限:

chmod664/root/goal_tracker/instance/goals.db

12. 配置防火墙(可选但推荐)

如果系统防火墙(如UFW)已启用,放行80端口:

ufw allow80/tcp ufw allow22/tcp# SSHufwenable

阿里云安全组已放行80和22,系统防火墙可以保持关闭或相应配置。


13. 配置域名和HTTPS(可选)

13.1 购买域名并解析

  • 在域名服务商处将域名解析到服务器IP。

13.2 修改Nginx配置中的server_name为域名

server_name yourdomain.com;

13.3 申请SSL证书(Let’s Encrypt)

安装Certbot:

aptinstallcertbot python3-certbot-nginx-ycertbot--nginx-dyourdomain.com

按照提示完成证书申请,Certbot会自动修改Nginx配置启用HTTPS。


14. 数据库备份策略

SQLite是一个文件,定期备份即可。可编写cron任务每天备份:

crontab-e

添加一行(每天凌晨2点备份):

0 2 * * * cp /root/goal_tracker/instance/goals.db /root/backups/goals_$(date +\%Y\%m\%d).db

记得提前创建/root/backups目录。


15. 日志管理

  • Gunicorn的日志默认输出到journal,可使用journalctl -u goal_tracker查看。
  • Nginx日志在/var/log/nginx/access.logerror.log
  • 可配置logrotate管理日志轮转。

16. 常见问题排查

16.1 访问出现502 Bad Gateway

  • 检查Gunicorn是否运行:systemctl status goal_tracker
  • 查看Gunicorn日志:journalctl -u goal_tracker -f
  • 确认Nginx反向代理地址是否正确(127.0.0.1:8000)

16.2 静态文件404

  • 检查Nginx配置中location /static的路径是否正确。
  • 确认静态文件目录权限是否可读。

16.3 数据库无法写入

  • 检查instance目录和数据库文件的权限。
  • 查看应用日志是否有权限错误。

16.4 无法登录/注册

  • 检查数据库是否初始化(表结构是否存在)。
  • 可手动删除数据库文件重启应用,系统会自动重建表。

17. 部署完成

现在您的目标管理系统已正式上线。可以通过域名或IP访问,所有数据持久化存储,服务自动重启。

如需更新代码,重新拉取或上传后,重启Gunicorn即可:

systemctl restart goal_tracker

如有任何问题,欢迎查阅阿里云文档或咨询技术支持。

http://www.jsqmd.com/news/617886/

相关文章:

  • 在openEuler 22.03上离线部署Nginx 1.28.0,我踩过的坑和总结的完整流程
  • 终极微信读书笔记同步指南:Obsidian Weread插件完整教程
  • 哑铃型制样机优质供应商评选:专业生产商的综合实力探析 - 品牌推荐大师1
  • 她拿过枪,打过丧尸,现在用一座“记忆宫殿”拿下了AI记忆系统的世界第一
  • 【图灵完备(Turing Complete)】四、处理器架构2:从逻辑门到LEG指令集
  • 射频链的构成
  • 极致窗口收纳神器:Traymond让Windows任务栏瞬间清爽
  • 如何用Traymond将Windows窗口轻松收纳到系统托盘?
  • Akebi-GC终极指南:三步解锁原神高效游戏体验,告别重复劳动烦恼
  • 从水桶比喻到数学公式:深入理解施密特触发器RC振荡电路中的电容充放电
  • 太阳能电池缺陷检测数据集:2624张EL图像标准化基准
  • Day17——类与对象
  • TMSpeech:Windows上完全离线的实时语音转文字终极指南
  • Cursor Pro破解终极指南:3步实现AI编程神器永久免费使用
  • Speechless:你的微博记忆守护者 - 3步完成永久备份的终极指南
  • 如何用10分钟语音数据突破AI语音转换的极限?Retrieval-based-Voice-Conversion-WebUI实战深度解析
  • Dify 1.11.0升级后,我的企业知识库终于能看懂PPT截图了:多模态RAG实战踩坑记录
  • AI股票分析师案例分享:快速生成包含风险与展望的简明报告
  • 售后服务定胜负!大地网测试仪企业服务能力深度对比与推荐 - 品牌推荐大师
  • 8个主流漫画网站批量下载工具:comics-downloader实战指南
  • Outlook 2010 邮箱告急?三步高效清理与压缩实战指南
  • 拥抱家庭维修新选择:一号房医家庭维修如何用专业与透明守护千家万户 - 品牌评测官
  • Unidbg Hook框架怎么选?从HookZz到Dobby,搞清Arm32与Arm64下的性能差异
  • QQ截图独立版:逆向工程的艺术与实用主义的完美结合
  • 从CUDA到MUSA(五)GPU内存模型——理解数据流动的奥秘
  • 2026年光学产线革新:柔性抓取如何适配隐形眼镜等精密镜片 - 品牌2026
  • 模拟IC设计进阶指南:MOS开关电路的非理想特性与优化策略
  • 35个AI自动化脚本:彻底解决设计师的重复劳动难题
  • 从窗口限制到创意自由:如何用SRWE实现Windows应用的无界扩展
  • 2026年贵阳装修公司挑选指南:3招教你省钱选对靠谱家居品牌 - 精选优质企业推荐榜