当前位置: 首页 > 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.cnnetsun.cn/news/1800582.html

相关文章:

  • 你的SSH密钥可能已经过期了烙
  • 3个高效技巧:快速掌握漫画下载工具的终极指南
  • AI赋能轨道交通智能巡检 轨道交通故障检测 轨道缺陷断裂检测 轨道裂纹识别 鱼尾板故障识别 轨道巡检缺陷数据集深度学习yolo第10303期
  • QueryExcel:颠覆传统Excel查询思维,让数据查找效率提升90%的认知革命
  • Linux屏幕翻译神器CuteTranslation:免费高效的取词翻译终极指南
  • 如何构建网易云音乐永久直链解析服务
  • Xilinx 7系列Clock IP核的动态重配置实战:AXI4接口调频与调相
  • 紧急!PHP医疗脱敏工具未启用“双向可逆控制开关”将导致等保复查一票否决——3步完成合规性自检清单
  • Obsidian Style Settings插件:可视化界面定制的终极指南
  • Java 开发转型 AI Agent 开发之认识 Agent
  • 网盘下载限速终结者:八大平台一键极速下载的完整解决方案
  • Qwen3-0.6B-FP8极速对话工具:MySQL安装配置与数据交互
  • 终极原神圣遗物管理指南:椰羊cocogoat工具箱完整教程
  • 保姆级教程:用MATLAB Simscape给刚体小球和平面添加碰撞效果(附避坑指南)
  • 接收迭代器begin函数的返回值为什么只能是复制
  • 告别论文格式噩梦:南航学位论文LaTeX模板3步搞定专业排版
  • 2026年教培GEO推广公司TOP5评测:谁才是精准获客之王?
  • 链表初始化节点
  • 中烟创新正式通过《数据企业评估规范》评估,获评“数据企业”
  • WeChatMsg:如何让微信聊天记录成为你的数字记忆宝库?
  • 如何高效使用智能助手:英雄联盟玩家必备的终极指南
  • 为什么Ubuntu 22.04终端行距会变大?深入解析vte3组件与语言环境的关系
  • AFSIM依赖库升级实战:如何用vcpkg+VS2022一键更新所有第三方库(附完整脚本)
  • 【立煌】G213QAN02.0友达21.3寸LCD医疗设备液晶屏参数
  • ArcGIS实战:批量提取多个坐标点栅格值的高效工作流(含坐标系转换技巧)
  • 终极指南:如何使用Legacy-iOS-Kit为旧iPhone/iPad降级恢复流畅体验
  • 别再只用L298N了!手把手教你用IR2104和互补MOS管搭建高效H桥电机驱动板
  • DDD难落地?就让AI干吧! - cleanddd-skills介绍然
  • OBS虚拟摄像头:让你的直播画面变身万能视频源
  • RK3566部署sherpa-onnx流式语音识别:解决RKNN兼容性问题的深度实战指南