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

《Python实战进阶》No 8:部署 Flask/Django 应用到云平台(以Aliyun为例)

第8集:部署 Flask/Django 应用到云平台(以Aliyun为例)

2025年3月1日更新 增加了 Ubuntu服务器安装Python详细教程链接。

在这里插入图片描述

引言

在现代 Web 开发中,开发一个功能强大的应用只是第一步。为了让用户能够访问你的应用,你需要将其部署到生产环境中。阿里云(Aliyun)作为国内领先的云服务提供商,提供了丰富的工具和服务来支持开发者快速、安全地部署和管理应用。本篇将详细介绍如何将 Flask 或 Django 应用部署到阿里云服务器,并提供完整的操作步骤。


1. 准备工作

在开始部署之前,我们需要完成以下准备工作:

  1. 阿里云账号
    如果你还没有阿里云账号,请先注册并完成实名认证。访问 阿里云官网 进行注册。

  2. 购买 ECS 实例
    阿里云的弹性计算服务(ECS)是部署 Web 应用的核心资源。选择适合的实例类型(如通用型或计算型),操作系统推荐使用 Ubuntu 或 CentOS。

  3. 域名与 SSL 证书
    如果你希望为应用配置 HTTPS,需要提前准备域名并在阿里云上申请免费的 SSL 证书。

  4. 本地开发环境
    确保你的 Flask 或 Django 应用已经完成开发,并能够在本地正常运行。


2. 部署流程概述

以下是部署 Flask/Django 应用到阿里云的基本流程:

  1. 配置 ECS 实例。
  2. 安装必要的软件环境(Python、Nginx、Gunicorn/uWSGI)。
  3. 将代码上传到服务器。
  4. 配置 Web 服务器和应用服务器。
  5. 启动服务并测试。

在ubuntu服务器安装python教程见如下链接:
Ubuntu服务器安装python详细教程

接下来我们将逐一讲解每个步骤。


3. 步骤详解

3.1 配置 ECS 实例
  1. 登录阿里云控制台,进入 ECS 管理页面,启动你的实例。
  2. 使用 SSH 连接到服务器:
    ssh root@<你的服务器公网IP>
    
  3. 更新系统包:
    sudo apt update && sudo apt upgrade -y
    
3.2 安装 Python 和依赖环境
  1. 安装 Python 3 和 pip:
    sudo apt install python3 python3-pip python3-venv -y
    
  2. 创建虚拟环境并激活:
    python3 -m venv venv
    source venv/bin/activate
    
  3. 安装项目依赖:
    pip install -r requirements.txt
    

    注意:确保 requirements.txt 文件包含所有必要的依赖项。

3.3 安装 Nginx 和 Gunicorn/uWSGI
  1. 安装 Nginx:
    sudo apt install nginx -y
    
  2. 安装 Gunicorn(适用于 Flask/Django):
    pip install gunicorn
    
  3. 测试 Gunicorn 是否能运行你的应用:
    gunicorn -w 4 -b 0.0.0.0:8000 app:app
    

    对于 Django 项目,命令可能为:

    gunicorn -w 4 -b 0.0.0.0:8000 your_project.wsgi:application
    
3.4 配置 Nginx
  1. 编辑 Nginx 配置文件:
    sudo nano /etc/nginx/sites-available/myapp
    
  2. 添加以下内容:
    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;
        }
    }
    
  3. 启用配置文件并重启 Nginx:
    sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx
    
3.5 配置 Supervisor(可选)

为了确保应用在后台持续运行,可以使用 Supervisor 来管理进程。

  1. 安装 Supervisor:
    sudo apt install supervisor -y
    
  2. 创建 Supervisor 配置文件:
    sudo nano /etc/supervisor/conf.d/myapp.conf
    
  3. 添加以下内容:
    [program:myapp]
    command=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
    directory=/path/to/your/project
    user=root
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/myapp.err.log
    stdout_logfile=/var/log/myapp.out.log
    
  4. 启动 Supervisor 并加载配置:
    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start myapp
    
3.6 配置 HTTPS(可选)
  1. 在阿里云控制台申请免费 SSL 证书。
  2. 下载证书并上传到服务器。
  3. 修改 Nginx 配置以启用 HTTPS:
    server {
        listen 443 ssl;
        server_name <你的域名>;
    
        ssl_certificate /path/to/your/cert.pem;
        ssl_certificate_key /path/to/your/key.pem;
    
        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;
        }
    }
    
    server {
        listen 80;
        server_name <你的域名>;
        return 301 https://$host$request_uri;
    }
    
  4. 重启 Nginx:
    sudo systemctl restart nginx
    

4. 测试与优化

  1. 访问你的域名或 IP 地址,确认应用是否正常运行。
  2. 检查日志文件以排查潜在问题:
    tail -f /var/log/nginx/access.log
    tail -f /var/log/nginx/error.log
    
  3. 根据实际需求调整 Nginx 和 Gunicorn 的配置参数,例如工作线程数、超时时间等。

5. 总结

通过本篇教程,我们详细介绍了如何将 Flask 或 Django 应用部署到阿里云服务器。从基础环境配置到 Web 服务器的搭建,再到 HTTPS 的启用,每一步都旨在帮助你构建一个稳定、高效的生产环境。如果你在部署过程中遇到任何问题,欢迎在评论区留言讨论!

下一集我们将探讨如何使用 Celery 实现异步任务队列,敬请期待!


参考资料

  • 阿里云官方文档
  • Nginx 官方文档
  • Gunicorn 官方文档
  • Supervisor 官方文档

相关文章:

  • FFmpeg入门:最简单的音频播放器
  • 前端实现上传图片到OSS(Vue3+vant)
  • 网络安全深度剖析
  • GPIO(嵌入式学习)
  • 当AI重构认知:技术狂潮下的教育沉思录
  • 信息学奥赛一本通(C++版)
  • java容器 LIst、set、Map
  • html+js 轮播图
  • Seaborn知识总结
  • ESP32+Mixly-WiFi
  • 22-接雨水
  • Deepseek Api Function Calling解析(tools、tool_calls)Deepseek函数调用流程图、Python代码示例
  • 游戏引擎学习第131天
  • 23种设计模式之《备忘录模式(Memento)》在c#中的应用及理解
  • Qt显示一个hello world
  • linux服务器更新jar包脚本
  • 工程化与框架系列(12)--响应式框架原理
  • 2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析
  • 数据结构课程设计(java实现)---九宫格游戏,也称幻方
  • 热点创意大师智能体
  • 简单的b2c网站/百度网盘app下载安装
  • 知名的网络公司/上海关键词排名优化公司
  • 装门做特卖的网站/如何在百度推广
  • 焦作音响网站建设/品牌策略有哪些
  • 二级网站建设/java成品网站
  • 广州seo网站排名/北京seo服务商找行者seo