怎么把 Django 项目部署到服务器

发布时间:2021-07-20 10:04:15 作者:chen
来源:亿速云 阅读:450
# 怎么把 Django 项目部署到服务器

## 前言

将 Django 项目部署到生产环境是开发流程中的重要环节。本文将以 Nginx + Gunicorn + Supervisor 的组合为例,详细介绍从本地开发环境到云服务器的完整部署流程,适用于 Ubuntu/Debian 系统。

---

## 一、准备工作

### 1.1 服务器环境要求
- Linux 服务器(推荐 Ubuntu 20.04+)
- Python 3.8+
- 已安装 pip 和 virtualenv
- 开放 80/443(HTTP/HTTPS)和 22(SSH)端口

### 1.2 本地项目准备
```bash
# 导出依赖包
pip freeze > requirements.txt

# 确认关键配置
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com', '服务器IP']

二、服务器初始化

2.1 连接服务器

ssh root@your_server_ip

2.2 创建部署用户(推荐)

adduser deploy
usermod -aG sudo deploy
su - deploy

2.3 安装基础依赖

sudo apt update
sudo apt install -y python3-pip python3-venv nginx supervisor

三、项目部署流程

3.1 上传项目代码

推荐使用 Git 或 SCP:

scp -r /local/path deploy@server_ip:/home/deploy/project

3.2 创建虚拟环境

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

3.3 数据库配置

MySQL 示例:

sudo apt install -y mysql-server
sudo mysql_secure_installation

# 创建数据库
mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8mb4;

修改 Django 配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbname',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

3.4 收集静态文件

python manage.py collectstatic

四、配置 Gunicorn

4.1 安装 Gunicorn

pip install gunicorn

4.2 测试运行

gunicorn --bind 0.0.0.0:8000 project.wsgi:application

4.3 创建配置文件

/home/deploy/project/gunicorn_conf.py

bind = "127.0.0.1:8000"
workers = 3
user = "deploy"
timeout = 120

五、配置 Supervisor

5.1 创建配置文件

/etc/supervisor/conf.d/django.conf

[program:django]
command=/home/deploy/venv/bin/gunicorn -c /home/deploy/project/gunicorn_conf.py project.wsgi:application
directory=/home/deploy/project
user=deploy
autostart=true
autorestart=true
stderr_logfile=/var/log/django.err.log
stdout_logfile=/var/log/django.out.log

5.2 启动服务

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start django

六、配置 Nginx

6.1 创建配置文件

/etc/nginx/sites-available/django

server {
    listen 80;
    server_name yourdomain.com;

    location /static/ {
        alias /home/deploy/project/staticfiles/;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

6.2 启用配置

sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled
sudo nginx -t  # 测试配置
sudo systemctl restart nginx

七、HTTPS 配置(可选)

使用 Let’s Encrypt 免费证书:

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

八、部署后检查

  1. 检查服务状态:

    sudo supervisorctl status
    sudo systemctl status nginx
    
  2. 测试错误页面:

    • 故意触发 404500 错误
    • 检查日志文件 /var/log/django.err.log
  3. 自动化部署建议:

    • 使用 GitHub Actions 或 GitLab CI
    • 编写部署脚本(deploy.sh)

常见问题解决

Q1: 静态文件 404 错误

Q2: 数据库连接失败

Q3: 502 Bad Gateway


结语

通过以上步骤,你的 Django 项目应该已经成功部署。建议定期: - 更新系统安全补丁 - 备份数据库 - 监控服务器资源使用情况

如需更高级的部署方案,可以考虑 Docker 或 Kubernetes 容器化部署。 “`

(全文约1350字)

推荐阅读:
  1. Django + uWSGI+ nginx 用户表单查询项目,只此一篇,绝对干货!
  2. Python-Django基础知识

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

django

上一篇:安装MySQL的详细过程

下一篇:怎么修改gazebo物理参数

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》