在 Ubuntu 22.04 上通过宝塔面板(Baota Panel)安装 Python 和 Django,最推荐的方式是直接使用宝塔自带的“网站”功能创建虚拟环境,而不是手动在系统全局安装。这种方式隔离性好、管理方便,且能避免依赖冲突。
以下是详细的操作步骤:
第一步:安装宝塔面板的 Python 运行库
如果你刚刚安装宝塔面板,它通常默认包含 Python 3.x 的运行环境。如果没有,请按照以下步骤操作:
- 登录宝塔面板后台。
- 进入左侧菜单栏的 “软件商店” (Software Store)。
- 在搜索框输入
Python。 - 找到 Python 环境管理器 (通常显示为
Python Environment Manager或类似名称,版本建议选 3.8 或 3.10,Django 4.x 需要 Python 3.8+)。 - 点击右侧的 “安装”。
- 注意:如果已经安装了多个版本,建议保留一个主要版本即可,避免混淆。
第二步:创建网站并绑定 Python 项目
这是最关键的一步,宝塔会自动为你创建独立的虚拟环境(venv)。
- 进入左侧菜单 “网站” (Website)。
- 点击 “添加站点” (Add Site)。
- 填写域名(如果是本地测试,可以填
localhost或你本地的 IP),选择 PHP/Python 类型(这里虽然选的是 Python 相关选项,但宝塔是通过 Nginx/Apache 反向X_X来运行的)。- 关键设置:在“根目录”下方,有一个 “选择程序模板” 或 “运行环境” 选项。
- 确保勾选了 Python,并选择你刚才安装的 Python 版本(例如 Python 3.10)。
- 点击确定创建网站。
第三步:配置 Django 项目
创建好网站后,你需要将你的 Django 代码上传并配置。
1. 上传代码
- 点击该网站的 “文件”。
- 进入默认根目录(通常是
/www/wwwroot/你的域名)。 - 将你的 Django 项目文件夹内的所有文件上传到这里。
- 建议结构:确保
manage.py位于根目录下,或者将项目文件解压到一个子文件夹中,并在后续配置中指定路径。
- 建议结构:确保
2. 安装依赖 (pip install)
宝塔为每个网站提供了独立的终端权限。
- 在网站列表中,点击该站点的 “终端” (Terminal) 图标(通常在“设置”旁边,或者直接在文件页面右上角有终端入口)。
- 进入项目根目录(如果代码不在根目录,先用
cd命令切换进去)。 - 激活虚拟环境(宝塔会自动创建名为
venv的文件夹):source venv/bin/activate(如果找不到 venv,说明宝塔未自动创建,可以在网站设置的“运行目录”里查看)
- 安装 Django 及所需依赖:
pip install django # 如果有 requirements.txt pip install -r requirements.txt
3. 修改 Django 配置 (settings.py)
由于是在生产/半生产环境运行,必须修改 settings.py 中的以下关键配置:
- ALLOWED_HOSTS: 允许访问的域名。
ALLOWED_HOSTS = ['你的域名', 'localhost', '127.0.0.1'] - DEBUG: 生产环境必须关闭。
DEBUG = False - STATIC_ROOT & STATIC_URL: 静态文件收集路径。
import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # 确保这个目录存在且有写入权限 - 数据库配置: 确保数据库账号密码正确,且数据库已创建。
第四步:启动 Django 服务
宝塔面板通常使用 Supervisor 来管理进程,或者让你直接通过 Nginx 反向X_X Gunicorn/uWSGI。
方法 A:使用宝塔自带的“守护进程” (推荐)
- 在宝塔左侧菜单找到 “计划任务” -> “守护进程” (或者在软件商店安装
Supervisor插件)。 - 或者直接在该网站的 “设置” -> “启动方式” 中选择 Gunicorn 或 uWSGI。
- 宝塔通常会自动生成启动命令。
- 如果是手动配置,需要在 Nginx 配置文件 中添加反向X_X规则(宝塔会自动处理大部分,但需确认)。
方法 B:手动使用 Supervisor (更灵活)
-
在终端中安装 supervisor(如果未安装):
sudo apt update && sudo apt install supervisor -
创建配置文件
/etc/supervisor/conf.d/django.conf:[program:my_django] command=/www/wwwroot/你的域名/venv/bin/python /www/wwwroot/你的域名/manage.py runserver 0.0.0.0:8000 directory=/www/wwwroot/你的域名 user=www-data autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/log/my_django.log注意:生产环境强烈建议使用
gunicorn代替runserver。使用 Gunicorn 的正确命令示例:
command=/www/wwwroot/你的域名/venv/bin/gunicorn myproject.wsgi:application --bind 0.0.0.0:8000(请将
myproject替换为你的实际项目名称) -
加载配置:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start my_django
第五步:配置 Nginx 反向X_X
为了让外部用户通过域名访问,需要配置 Nginx。
- 在宝塔 “网站” 列表,点击该站点的 “设置” -> “端口”。
- 确保 Nginx 监听端口是 80 或 443。
- 点击 “伪静态” (Rewrite),选择 Django 模板,保存。
- 点击 “配置文件”,检查
location块是否正确指向了后端端口(如 8000)。- 通常宝塔会自动生成如下配置:
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 配置。
常见问题排查
- Permission Denied: 确保
/www/wwwroot/你的域名目录的所有者是www用户。chown -R www:www /www/wwwroot/你的域名 - Database Error: 检查
settings.py中的数据库连接信息,并确保 MySQL/PostgreSQL 服务已启动且防火墙放行了相应端口。 - Static Files 不显示: 记得运行
python manage.py collectstatic收集静态文件到STATIC_ROOT指定的目录。
通过以上步骤,你就可以在 Ubuntu 22.04 + 宝塔面板上成功部署 Django 应用了。
云服务器