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

张开发
2026/5/5 9:03:36 15 分钟阅读
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 更新系统包aptupdateaptupgrade-y3.2 安装Python3、pip、虚拟环境工具aptinstallpython3 python3-pip python3-venv-y3.3 安装Nginxaptinstallnginx-ysystemctl start nginx systemctlenablenginx访问http://你的服务器IP应看到Nginx欢迎页。3.4 安装git可选用于代码拉取aptinstallgit-y4. 上传项目代码方法一使用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_KEYFlask 需要设置一个安全的SECRET_KEY建议通过环境变量设置。创建.env文件或直接在shell中export但为了持久化可以写入系统环境变量或使用.env文件。创建.env文件cat/root/goal_tracker/.envEOF SECRET_KEY$(openssl rand-hex32)EOF然后在app.py中读取该文件需安装python-dotenv或直接在代码中从环境变量获取。简单起见可以在app.py中修改importos app.secret_keyos.environ.get(SECRET_KEY,your-secret-key-here)# 生产务必从环境变量获取并确保在启动服务前设置环境变量后续在systemd服务文件中设置。7. 测试运行7.1 修改app.py监听地址在app.py末尾将app.run()修改为if__name____main__:app.run(host0.0.0.0,port5000,debugFalse)# 关闭debug7.2 运行测试cd/root/goal_trackersourcevenv/bin/activate python app.py此时在本地浏览器访问http://服务器IP:5000应能看到系统登录页面。如果无法访问检查阿里云安全组是否放行5000端口测试完成后建议关闭或使用Nginx反向代理。8. 配置GunicornGunicorn 作为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为你的域名或IPserver { 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] DescriptionGunicorn instance to serve goal tracker Afternetwork.target [Service] Userroot Grouproot WorkingDirectory/root/goal_tracker EnvironmentPATH/root/goal_tracker/venv/bin EnvironmentSECRET_KEY你的随机密钥 # 或者从文件读取 ExecStart/root/goal_tracker/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 app:app [Install] WantedBymulti-user.target注意将EnvironmentSECRET_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.db12. 配置防火墙可选但推荐如果系统防火墙如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安装Certbotaptinstallcertbot 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.log和error.log。可配置logrotate管理日志轮转。16. 常见问题排查16.1 访问出现502 Bad Gateway检查Gunicorn是否运行systemctl status goal_tracker查看Gunicorn日志journalctl -u goal_tracker -f确认Nginx反向代理地址是否正确127.0.0.1:800016.2 静态文件404检查Nginx配置中location /static的路径是否正确。确认静态文件目录权限是否可读。16.3 数据库无法写入检查instance目录和数据库文件的权限。查看应用日志是否有权限错误。16.4 无法登录/注册检查数据库是否初始化表结构是否存在。可手动删除数据库文件重启应用系统会自动重建表。17. 部署完成现在您的目标管理系统已正式上线。可以通过域名或IP访问所有数据持久化存储服务自动重启。如需更新代码重新拉取或上传后重启Gunicorn即可systemctl restart goal_tracker如有任何问题欢迎查阅阿里云文档或咨询技术支持。

更多文章