在阿里云 Ubuntu 22.04 服务器上安装宝塔面板后配置 Django,通常有两种主流方案:通过宝塔“软件商店”一键部署(推荐新手) 或 手动配置(适合进阶用户/需要精细控制)。
以下是基于宝塔面板环境的具体操作步骤:
前置准备
- 登录宝塔:访问
http://你的服务器IP:8888,输入用户名密码登录。 - 安装基础环境:
- 进入左侧菜单 【软件商店】。
- 搜索并安装 Nginx(建议版本 1.20+)、MySQL(建议 5.7 或 8.0)或 MariaDB、Python 3.9+(宝塔默认可能已预装,若未找到可手动安装)。
- 注意:Ubuntu 22.04 对 Python 3.10+ 支持较好,宝塔通常会自动处理依赖。
方案一:使用宝塔“网站”功能自动部署(推荐)
这是最快捷的方式,宝塔会自动创建虚拟环境、配置 Nginx 和 Gunicorn/Uwsgi。
1. 创建网站
- 点击左侧菜单 【网站】 -> 【添加站点】。
- 域名:填写你的域名(若无域名,直接填服务器 IP)。
- 根目录:保持默认(如
/www/wwwroot/你的域名)。 - 数据库:选择“有”,创建一个 MySQL/MariaDB 数据库,记录好账号密码。
- PHP版本:选择 “纯静态” 或 "Python"(如果列表中有 Python 选项),或者直接选“纯静态”后手动上传代码(推荐选纯静态,后续用 Gunicorn 运行)。
- 点击提交。
2. 上传 Django 项目代码
- 进入 【文件】 菜单,打开刚才创建的网站根目录。
- 将你的 Django 项目代码(包含
manage.py,requirements.txt,myproject文件夹等)上传到该目录。- 建议结构:
/www/wwwroot/你的域名/myproject/(将代码放在子文件夹中,避免根目录混乱)。
- 建议结构:
- 确保
.gitignore中的敏感文件(如__pycache__,*.pyc)已被忽略。
3. 安装 Python 依赖
- 打开宝塔左侧菜单 【终端】(或 SSH 连接服务器)。
- 切换到网站目录并创建虚拟环境:
cd /www/wwwroot/你的域名 python3 -m venv venv source venv/bin/activate pip install --upgrade pip # 安装依赖 (假设 requirements.txt 在项目根目录) pip install -r requirements.txt注意:如果代码在子目录,请
cd进去后再执行。
4. 配置 Django (settings.py)
- 在代码编辑器中修改
settings.py:- ALLOWED_HOSTS:必须添加域名或 IP。
ALLOWED_HOSTS = ['你的域名', 'localhost', '127.0.0.1'] - STATIC_ROOT 和 MEDIA_ROOT:确保路径正确。
- DEBUG:生产环境必须设置为 False。
DEBUG = False - SECRET_KEY:确保是一个随机生成的长字符串。
- DATABASES:填入你在步骤 1 中创建的数据库信息。
- ALLOWED_HOSTS:必须添加域名或 IP。
5. 收集静态文件
在终端执行以下命令收集静态资源:
python manage.py collectstatic --noinput
此时,静态文件会生成在 staticfiles 目录下(或你配置的 STATIC_ROOT 路径)。
6. 启动 Django 应用 (Gunicorn)
宝塔通常推荐使用 Gunicorn 作为 WSGI 服务器。
-
方法 A:使用宝塔面板的“进程管理”或“计划任务”启动
- 进入 【计划任务】 -> 【添加任务】 -> 类型选 Shell。
- 名称:启动 Django
- 执行周期:按周/天(或者手动触发,这里主要为了测试,生产环境建议配合 Supervisor)。
- 脚本内容:
cd /www/wwwroot/你的域名 source venv/bin/activate gunicorn myproject.wsgi:application --bind 127.0.0.1:8000 --workers 4 - 注意:将
myproject替换为你的实际项目名称。
-
方法 B:使用 Supervisor 管理(更稳定,推荐)
- 在软件商店安装 Supervisor。
- 在 Supervisor 界面添加守护进程。
- 配置文件示例 (
/etc/supervisor/conf.d/django.conf):[program:djangoproject] command=/www/wwwroot/你的域名/venv/bin/gunicorn myproject.wsgi:application --bind 127.0.0.1:8000 --workers 4 directory=/www/wwwroot/你的域名 user=root autostart=true autorestart=true redirect_stderr=true stdout_logfile=/www/wwwroot/你的域名/logs/gunicorn.log - 保存后,点击 Supervisor 界面的 重载配置 和 启动。
7. 配置 Nginx 反向X_X
- 回到宝塔 【网站】 列表,点击对应网站的 【设置】 -> 【配置文件】。
-
找到
location /部分,修改为如下内容(确保指向 127.0.0.1:8000):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 已经 collectstatic 且由 Gunicorn 处理,可不配;但为了性能建议让 Nginx 直接托管) location /static/ { alias /www/wwwroot/你的域名/staticfiles/; # 根据实际 collectstatic 输出路径调整 expires 30d; access_log off; } # 媒体文件处理 location /media/ { alias /www/wwwroot/你的域名/media/; expires 30d; access_log off; } - 保存并重启 Nginx。
方案二:手动配置 (适合已有复杂架构)
如果你不想用宝塔的一键部署逻辑,可以完全手动操作:
- 安装环境:在终端手动安装
python3-pip,python3-venv,gunicorn,nginx,mysql-client。 - 创建目录:在
/var/www/下建立项目目录。 - 上传代码:使用 FTP 工具或
scp上传。 - 配置虚拟环境:同方案一的步骤 3。
- 配置 Supervisor:编写 systemd 服务文件或 supervisor 配置来管理 Gunicorn。
- 配置 Nginx:编辑
/etc/nginx/sites-available/your_domain,配置 upstream 指向本地端口,并启用该站点 (ln -s ... /etc/nginx/sites-enabled/)。 - 防火墙:在阿里云控制台和安全组放行 80 和 443 端口(Django 内部监听 8000 不需要对外开放)。
常见问题排查
-
502 Bad Gateway:
- 检查 Gunicorn 是否正在运行 (
ps aux | grep gunicorn)。 - 检查 Nginx 错误日志 (
/www/wwwlogs/你的域名_error.log),看是否能连通 127.0.0.1:8000。 - 确认
settings.py中DEBUG=False时,ALLOWED_HOSTS是否正确。
- 检查 Gunicorn 是否正在运行 (
-
权限问题:
- 如果无法写入数据库或上传文件,可能需要修改目录权限:
chown -R www:www /www/wwwroot/你的域名 chmod -R 755 /www/wwwroot/你的域名
- 如果无法写入数据库或上传文件,可能需要修改目录权限:
-
安全组:
- 务必去阿里云控制台 -> 云服务器 ECS -> 安全组,确保 80 (HTTP) 和 443 (HTTPS) 端口对
0.0.0.0/0开放。不要直接暴露 Django 的 8000 端口给公网。
- 务必去阿里云控制台 -> 云服务器 ECS -> 安全组,确保 80 (HTTP) 和 443 (HTTPS) 端口对
-
SSL 证书:
- 在宝塔 【网站】 -> 【SSL】 标签页,申请免费 Let’s Encrypt 证书,开启强制 HTTPS 即可。
通过以上步骤,你的 Django 应用应该可以在 Ubuntu 22.04 + 宝塔环境下稳定运行了。
云知道CLOUD