在阿里云 Ubuntu 22.04 上通过宝塔面板(BT Panel)配置 Django 项目,核心思路是利用宝塔的“网站”功能管理 Nginx,配合 Python 虚拟环境运行 Django。以下是详细步骤:
一、前置准备
-
安装宝塔面板(若未安装)
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh安装后登录宝塔面板(默认端口
8888)。 -
安装必要依赖
在宝塔终端中执行:sudo apt update sudo apt install -y python3-pip python3-dev libpq-dev nginx
二、创建 Django 项目
-
创建用户目录与虚拟环境
mkdir -p /www/wwwroot/your_domain.com cd /www/wwwroot/your_domain.com python3 -m venv venv source venv/bin/activate pip install django gunicorn psycopg2-binary✅ 提示:将
your_domain.com替换为你的实际域名。 -
初始化 Django 项目
django-admin startproject myproject . python manage.py migrate python manage.py createsuperuser -
配置
settings.py
编辑/www/wwwroot/your_domain.com/myproject/settings.py:# 允许所有主机访问(生产环境需修改) ALLOWED_HOSTS = ['your_domain.com', 'localhost', '127.0.0.1'] # 静态文件配置 STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # 数据库配置(以 PostgreSQL 为例) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'your_db_name', 'USER': 'your_db_user', 'PASSWORD': 'your_db_password', 'HOST': 'localhost', 'PORT': '5432', } } # 开启 DEBUG=False(生产环境必须关闭) DEBUG = False -
收集静态文件
python manage.py collectstatic --noinput
三、宝塔面板配置
1. 创建网站
- 进入宝塔面板 → 网站 → 添加站点
- 域名:填写你的域名(如
your_domain.com) - 根目录:自动指向
/www/wwwroot/your_domain.com - 数据库:根据需求选择 MySQL/PostgreSQL(若无则跳过)
- 域名:填写你的域名(如
2. 配置 Nginx 反向X_X
- 进入该网站的 设置 → 配置文件
-
替换默认配置为以下内容(关键部分已标注):
server { listen 80; server_name your_domain.com; location / { proxy_pass http://127.0.0.1:8000; # Gunicorn 监听端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 静态文件直接由 Nginx 提供(优化性能) location /static/ { alias /www/wwwroot/your_domain.com/staticfiles/; } # 媒体文件(如有上传) location /media/ { alias /www/wwwroot/your_domain.com/media/; } }⚠️ 注意:确保
staticfiles目录存在且权限正确(见下文)。
3. 启动 Gunicorn 服务
在宝塔终端中:
cd /www/wwwroot/your_domain.com
source venv/bin/activate
gunicorn --bind 127.0.0.1:8000 myproject.wsgi:application &
🔒 生产环境建议使用
systemd管理进程(避免重启失效),示例:[Unit] Description=Gunicorn instance to serve myproject After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/www/wwwroot/your_domain.com Environment="PATH=/www/wwwroot/your_domain.com/venv/bin" ExecStart=/www/wwwroot/your_domain.com/venv/bin/gunicorn --workers 3 --bind unix:/www/wwwroot/your_domain.com/gunicorn.sock myproject.wsgi:application [Install] WantedBy=multi-user.target保存为
/etc/systemd/system/gunicorn.service并启用:sudo systemctl enable gunicorn sudo systemctl start gunicorn
四、权限与安全加固
-
修复目录权限
sudo chown -R www-data:www-data /www/wwwroot/your_domain.com sudo chmod -R 755 /www/wwwroot/your_domain.com -
SSL 证书配置
在宝塔 网站设置 → SSL 中选择 Let’s Encrypt 免费证书,启用 HTTPS。 -
防火墙规则
在阿里云控制台放行80/443端口,宝塔内部可关闭8000端口对外暴露。
五、验证部署
- 访问
http://your_domain.com应看到 Django 欢迎页或首页。 - 检查静态文件是否正常加载(浏览器打开
http://your_domain.com/static/下的 CSS/JS)。 - 测试后台管理:
http://your_domain.com/admin/登录超级用户。
常见问题排查
| 问题 | 解决方案 |
|---|---|
| 502 Bad Gateway | 检查 Gunicorn 是否运行:ps aux | grep gunicorn;查看日志:tail -f /www/wwwlogs/your_domain.com_error.log |
| 静态文件 404 | 确认 STATIC_ROOT 路径正确,且 Nginx alias 指向真实目录 |
| 数据库连接失败 | 检查 settings.py 中的数据库账号密码,以及 PostgreSQL 是否监听本地 |
通过以上步骤,即可在阿里云 Ubuntu 22.04 + 宝塔面板环境中稳定部署 Django 应用。如需进一步优化性能(如 Redis 缓存、Celery 任务队列),可在宝塔应用商店直接安装对应插件。
云服务器