新手如何在轻量服务器上部署Python Flask或Django应用?

在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量服务器或 AWS Lightsail)上部署 Python Flask 或 Django 应用,是一个非常实用的技能。以下是为新手设计的详细步骤指南,帮助你从零开始完成部署。


🎯 一、准备工作

1. 购买并连接轻量服务器

  • 选择操作系统:推荐 Ubuntu 20.04/22.04 LTS
  • 获取公网 IP 和 SSH 登录信息(用户名通常是 ubunturoot
  • 使用终端或工具(如 PuTTY / Terminal / VS Code Remote SSH)连接:
ssh ubuntu@你的公网IP

🧰 二、基础环境搭建

1. 更新系统包

sudo apt update && sudo apt upgrade -y

2. 安装 Python 和 pip

sudo apt install python3 python3-pip python3-venv -y

3. 安装 Web 服务器和反向(Nginx + Gunicorn)

安装 Nginx(用于反向)

sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

安装 Gunicorn(WSGI 服务器)

pip3 install gunicorn

✅ Flask/Django 都需要 Gunicorn 来运行生产环境服务。


📁 三、上传你的项目代码

方法一:使用 Git 克隆

如果你的项目在 GitHub/Gitee 上:

git clone https://github.com/yourname/your-flask-or-django-app.git /home/ubuntu/myapp
cd /home/ubuntu/myapp

方法二:本地上传(使用 SCP)

scp -r 本地项目路径 ubuntu@你的IP:/home/ubuntu/myapp

🔐 四、创建虚拟环境并安装依赖

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

确保你的项目中有 requirements.txt 文件,可通过以下命令生成:

pip freeze > requirements.txt

⚙️ 五、配置数据库(以 Django 为例)

1. 安装 PostgreSQL(推荐)或使用 SQLite(简单)

安装 PostgreSQL(可选)

sudo apt install postgresql postgresql-contrib -y
sudo -u postgres psql
# 创建用户和数据库(示例)
CREATE DATABASE myproject;
CREATE USER myuser WITH PASSWORD 'mypass';
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'Asia/Shanghai';
GRANT ALL PRIVILEGES ON DATABASE myproject TO myuser;
q

2. 修改 Django 的 settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'myproject',
        'USER': 'myuser',
        'PASSWORD': 'mypass',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

3. 迁移数据库

python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic  # Django 专用

🌐 六、测试应用是否能通过 Gunicorn 启动

Flask 示例启动命令:

gunicorn -w 4 -b 127.0.0.1:8000 app:app

假设主文件是 app.py,Flask 实例名为 app

Django 示例启动命令:

gunicorn -w 4 -b 127.0.0.1:8000 myproject.wsgi:application

替换 myproject 为你项目的名称

✅ 测试成功后按 Ctrl+C 停止。


🔄 七、使用 systemd 管理 Gunicorn 进程(开机自启)

创建服务文件:

sudo nano /etc/systemd/system/myapp.service

内容如下(以 Django 为例):

[Unit]
Description=Gunicorn for my Django app
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/myapp
ExecStart=/home/ubuntu/myapp/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 myproject.wsgi:application
Restart=always
Environment=PYTHONPATH=/home/ubuntu/myapp

[Install]
WantedBy=multi-user.target

保存后启用服务:

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp  # 查看状态

🌍 八、配置 Nginx 反向

编辑默认站点配置:

sudo nano /etc/nginx/sites-available/default

修改 location / 部分:

server {
    listen 80;
    server_name your_domain_or_ip;  # 可填你的公网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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 静态文件(Django 专用)
    location /static/ {
        alias /home/ubuntu/myapp/static/;
    }

    location /media/ {
        alias /home/ubuntu/myapp/media/;
    }
}

测试并重启 Nginx:

sudo nginx -t
sudo systemctl restart nginx

🔐 九、安全设置(重要!)

1. 防火墙(UFW)

sudo apt install ufw
sudo ufw allow 'Nginx Full'  # 开放80和443
sudo ufw enable

2. 关闭调试模式(Django)

确保 settings.py 中:

DEBUG = False
ALLOWED_HOSTS = ['your_ip', 'your_domain']

🪄 十、绑定域名 & HTTPS(可选但推荐)

1. 域名解析

将域名 A 记录指向你的服务器公网 IP。

2. 使用 Certbot 配置免费 HTTPS

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com

自动配置 SSL 证书并重定向 HTTP → HTTPS。


✅ 最终验证

打开浏览器访问:

  • http://你的服务器IP
  • https://yourdomain.com

你应该看到你的 Flask/Django 页面!


🧩 小贴士(新手常见问题)

问题 解决方法
页面 502 Bad Gateway 检查 Gunicorn 是否运行:systemctl status myapp
静态文件不显示(Django) 确保 collectstatic 已运行,且 Nginx 正确指向目录
数据库权限错误 检查 PostgreSQL 用户权限和密码
DEBUG=True 导致报错 务必关闭 DEBUG=False 并添加 ALLOWED_HOSTS

📚 推荐学习资源

  • Gunicorn 官方文档
  • Nginx 中文指南
  • Django 部署文档

🎯 总结:
部署流程 = 准备服务器 → 传代码 → 装依赖 → 配数据库 → Gunicorn 运行 → Nginx → 安全加固

只要一步步来,即使是新手也能成功上线自己的网站!

需要我为你生成一个完整的脚本或项目模板吗?欢迎继续提问!