如何用VPS从零部署Django项目?手把手教你避坑实战
卡尔云官网
www.kaeryun.com
如果你正在学习Django开发或想把自己的项目上线,「VPS」和「Django」这两个关键词一定绕不开。但很多新手卡在部署环节——明明本地跑得好好的代码一到服务器就报错?本文用最直白的语言+真实案例拆解全流程!
---
一、先搞懂基础:什么是VPS?为什么选它部署Django?
1. VPS是什么?
简单说就是一台24小时在线的远程电脑(服务器)。你可以通过SSH远程控制它装软件、跑程序。相比传统主机托管价格更低(月付几十元起),还能完全掌控环境配置。
2. Django为什么需要VPS?
- 本地开发≠生产环境:你在自己电脑写的代码(开发环境)直接放到公网会遇到性能差、安全性低等问题
- 长期稳定运行:自己的电脑不能24小时开机联网
- 灵活扩展资源:流量暴增时随时升级CPU/内存
二、手把手实战:5步完成Django+VPS部署
第一步:买台VPS并登录
推荐新手用「腾讯云轻量应用服务器」或「阿里云ECS」,选Ubuntu 22.04系统(兼容性好)。购买后拿到两个关键信息:
- IP地址:如`123.123.123.123`
- root密码:首次登录用
打开终端输入:
```bash
ssh root@你的IP地址
输入密码后进入服务器
```
第二步:配环境——别小看这一步!
很多人卡在这里是因为依赖没装全:
更新软件源
sudo apt update && sudo apt upgrade -y
安装Python3.10(以Ubuntu为例)
sudo apt install python3.10 python3.10-venv
创建虚拟环境(避免包冲突)
python3 -m venv myenv
source myenv/bin/activate
激活环境
第三步:上传代码并装依赖
假设你的项目叫`myproject`:
安装git拉取代码(也可用FileZilla传文件)
sudo apt install git
git clone https://github.com/你的账号/myproject.git
安装依赖包(必须有requirements.txt!)
cd myproject
pip install -r requirements.txt
第四步:改配置!这是80%报错的根源!
打开`settings.py`修改:
```python
DEBUG = False
必须关调试模式!
ALLOWED_HOSTS = ['你的IP地址', '域名']
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
静态文件收集路径
运行收集命令:
python manage.py collectstatic
第五步:上生产级工具——Nginx+Gunicorn组合拳
直接用`python manage.py runserver`只能测试用!真实场景要用:
1. Gunicorn——处理Python请求的服务器
安装并启动:
pip install gunicorn
gunicorn --workers 3 myproject.wsgi:application --bind 0.0.0.0:8000
2. Nginx——反向代理+处理静态文件
安装后修改配置文件`/etc/nginx/sites-available/myproject`:
```nginx
server {
listen 80;
server_name 你的IP或域名;
location /static/ {
alias /path/to/myproject/static/;
static目录绝对路径!
}
location / {
proxy_pass http://127.0.0.1:8000;
转发给Gunicorn端口
proxy_set_header Host $host;
}
重启服务:
sudo systemctl restart nginx
三、必知避坑指南——血泪经验总结
1️⃣ 403 Forbidden错误?
- Nginx没权限读文件 → `chmod 755 static目录`
- SELinux开启 → `sudo setenforce 0`临时关闭
2️⃣ 数据库连不上?
本地用SQLite没问题?但生产环境强烈推荐MySQL或PostgreSQL!记得:
- VPC内安装数据库服务
- `settings.py`中修改连接参数
3️⃣ 网站加载巨慢?
可能是没开缓存!在Nginx中添加:
location /static/ {
expires 365d;
缓存一年
四、进阶操作——让网站更专业
✅ 绑定域名
到域名商处添加A记录指向服务器IP
✅ 免费HTTPS证书
用Let's Encrypt一键获取:
```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
✅ 自动化部署脚本
每次更新代码手动传太麻烦?写个脚本自动拉取并重启服务:
!/bin/bash
cd /path/to/project
git pull origin master
source ../myenv/bin/activate
pip install -r requirements.txt
python manage.py migrate
sudo systemctl restart gunicorn
【总结】为什么推荐这套方案?
相比传统虚拟主机,「VPS+Django」的组合成本低且灵活可控。按本文流程走完一遍后你会发现——原来部署不过如此!遇到问题欢迎评论区交流~
TAG:vps django,卡尔云官网
www.kaeryun.com