在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量服务器或 AWS Lightsail)上部署 Python Flask 或 Django 应用,是一个非常实用的技能。以下是为新手设计的详细步骤指南,帮助你从零开始完成部署。
🎯 一、准备工作
1. 购买并连接轻量服务器
- 选择操作系统:推荐 Ubuntu 20.04/22.04 LTS
- 获取公网 IP 和 SSH 登录信息(用户名通常是
ubuntu或root) - 使用终端或工具(如 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 → 安全加固
只要一步步来,即使是新手也能成功上线自己的网站!
需要我为你生成一个完整的脚本或项目模板吗?欢迎继续提问!
CLOUD技术笔记