在 Ubuntu 22.04 上通过宝塔面板(BT Panel)安装 Python 和 Django,通常不需要手动编译源码,而是利用宝塔自带的“网站”管理功能来快速部署。以下是标准操作流程:
1. 安装并配置 Python 环境
宝塔面板默认支持多版本 Python 共存,建议先安装所需的 Python 版本(推荐 3.8+)。
- 登录宝塔面板,进入左侧菜单的 “软件商店”。
- 在搜索框输入
Python,找到 Python 应用(通常由宝塔官方提供)。 - 点击 “安装”,选择版本号(例如
Python 3.9或3.10),等待安装完成。- 注意:如果系统提示需要安装依赖库(如
gcc,make等),请根据提示确认安装,或者在终端执行sudo apt update && sudo apt install -y build-essential libssl-dev zlib1g-dev libncurses5-dev libreadline-dev libsqlite3-dev libbz2-dev liblzma-dev以完善编译环境。
- 注意:如果系统提示需要安装依赖库(如
- 安装完成后,在宝塔主界面右侧可以看到已安装的 Python 版本列表。
2. 创建网站项目目录
Django 项目需要运行在 Web 服务器(Nginx/Apache)下,因此需要先创建一个网站站点。
- 点击左侧菜单 “网站” -> “添加站点”。
- 填写域名(如果没有域名,可以填本地 IP 或
localhost),设置 根目录(例如/www/wwwroot/my_django_project)。 - 数据库部分:Django 可以连接 MySQL/PostgreSQL,也可以先用 SQLite 测试。如果选 SQLite,后续代码中需配置
db.sqlite3;如果选 MySQL,请在下方创建对应的数据库账号。 - 点击 “提交” 创建站点。
3. 上传 Django 项目代码
你有两种方式将代码放入服务器:
方式 A:使用宝塔文件管理器(适合小项目)
- 进入 “文件” 菜单,打开刚才创建的站点根目录。
- 点击右上角的 “上传” 按钮,将你的 Django 项目文件夹(包含
manage.py,requirements.txt,settings.py等)打包成.zip上传,然后右键解压。
方式 B:使用 SSH 命令行(推荐,适合大项目)
- 在宝塔左侧菜单点击 “终端” 或使用本地的 SSH 工具(如 Xshell, PuTTY)登录服务器。
- 切换到站点目录并拉取代码:
cd /www/wwwroot/你的域名文件夹 # 如果你有 git 仓库 git clone <你的仓库地址> . # 或者直接上传 zip 后解压
4. 配置虚拟环境与安装依赖
为了避免污染系统 Python,建议在项目目录下创建独立的虚拟环境(Virtualenv)。
- 在终端中进入项目目录:
cd /www/wwwroot/你的域名文件夹 - 激活宝塔安装的 Python 环境(假设你安装了 Python 3.9):
source /www/server/panel/virtualenvs/python39/bin/activate注:如果不确定路径,可以在宝塔“软件商店”->"Python"详情里查看安装路径,或者直接使用系统默认的
python3命令。 -
创建虚拟环境并安装依赖:
# 创建虚拟环境 python -m venv venv # 激活虚拟环境 source venv/bin/activate # 升级 pip pip install --upgrade pip # 安装 requirements.txt (如果你有的话) pip install -r requirements.txt # 如果没有 requirements.txt,手动安装 Django pip install django gunicorn psycopg2-binary # 如果是 MySQL 用户
5. 配置 Django Settings
确保你的 settings.py 配置正确:
- ALLOWED_HOSTS: 必须包含你的域名或 IP。
ALLOWED_HOSTS = ['your_domain.com', 'localhost', '127.0.0.1'] - 静态文件配置: 确保
STATIC_ROOT指向一个绝对路径,例如/www/wwwroot/你的域名文件夹/staticfiles。 - 数据库配置: 如果使用 MySQL,确保
DATABASES中的用户名、密码与宝塔创建的数据库一致。
6. 迁移数据库与收集静态文件
在虚拟环境激活状态下执行以下命令:
# 迁移数据库结构
python manage.py migrate
# 收集静态文件到 STATIC_ROOT
python manage.py collectstatic --noinput
# (可选) 如果有超级管理员需求
python manage.py createsuperuser
7. 启动服务 (Gunicorn + Nginx)
Django 不能直接处理高并发请求,需要通过 WSGI 服务器(如 Gunicorn)配合 Nginx。
方法一:使用宝塔面板图形化配置(推荐新手)
- 回到宝塔 “网站” 页面,点击你刚创建的站点的 “设置” -> “PHP 版本”(这里其实是用来配置反向X_X的,但宝塔对 Python 有专门的处理逻辑,通常在 “其他” 或 “配置文件” 中)。
- 修正:宝塔对 Python 项目的原生支持不如 PHP 直观。更稳妥的方式是手动配置 Nginx 反向X_X。
方法二:手动配置 Nginx 反向X_X(最稳定)
-
启动 Gunicorn(后台运行):
在项目目录下执行:gunicorn your_project_name.wsgi:application --bind 127.0.0.1:8000 --workers 3注意:将
your_project_name替换为你实际的项目包名(即包含wsgi.py的那个文件夹名)。为了让它在开机自启且后台运行,建议使用 Supervisor 或 systemd。宝塔面板有一个插件叫 "Supervisor",可以在软件商店安装它,然后添加守护进程来管理这个 Gunicorn 命令。
-
配置 Nginx:
- 进入 “网站” -> 点击站点名的 “设置” -> “配置文件”。
-
在
location /块中添加以下内容(替换your_project_name和端口):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; # 如果使用了 WebSocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
静态文件直接由 Nginx 托管(性能更好)
location /static/ {
alias /www/wwwroot/你的域名文件夹/staticfiles/;
expires 30d;
add_header Cache-Control "public, immutable";
}*注意:请将 `/www/wwwroot/你的域名文件夹/staticfiles/` 替换为你实际收集的静态文件路径。* -
保存并重启 Nginx。
8. 验证
打开浏览器访问你的域名。如果看到 Django 的欢迎页面或你的项目首页,说明部署成功。
💡 常见问题排查
- 权限问题:如果报错
Permission denied,尝试给项目目录赋予所有者权限:chown -R www:www /www/wwwroot/你的域名文件夹(宝塔默认 Web 用户通常是
www) - Gunicorn 无法启动:检查是否端口被占用,或者
wsgi.py路径是否正确。 - 数据库连接失败:检查
settings.py中的密码是否正确,以及 MySQL 用户是否有远程连接权限(宝塔创建的 MySQL 用户默认允许本地连接,如果是远程部署需注意防火墙)。
通过以上步骤,你可以在 Ubuntu 22.04 上利用宝塔面板高效地运行 Django 项目。
CLOUD云枢