小白也能学会,零基础Django部署宝塔全攻略

发布时间:2026/7/23 12:48:08
小白也能学会,零基础Django部署宝塔全攻略 摘要本文是一篇面向零基础小白的 Django 项目部署教程详细讲解如何将 Django 项目部署到宝塔面板并使用 Nginx 反向代理实现公网访问。内容涵盖宝塔面板安装、服务器端口放行、LNMP 环境搭建、项目上传、Python 虚拟环境配置、Django 配置修改、MySQL 数据库配置、Nginx 反向代理设置、SSL 证书申请以及常见问题排查全程图文并茂无需 Linux 命令基础即可跟随操作。1. 前言很多刚学Django的朋友写完项目后不知道怎么让其他人也能访问。本教程面向完全零基础的小白手把手教你如何将Django项目部署到宝塔面板上并使用Nginx做反向代理。你不需要懂Linux命令也不需要了解Nginx配置原理跟着步骤一步步操作即可。2. 准备工作在开始之前请确保你已经准备好以下条件一台云服务器推荐CentOS 7.x或Ubuntu 20.04或者Debain一个已经开发完成的Django项目本地能正常运行一个域名可选但推荐方便访问3. 安装宝塔面板首先我们需要在服务器上安装宝塔面板。使用SSH工具如Xshell、Putty或腾讯云/阿里云网页版终端连接你的服务器然后执行以下命令#通用安装脚本 if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec安装完成后终端会显示宝塔面板的登录地址、用户名和密码请务必保存好。然后在浏览器中打开面板地址登录宝塔。3.1 放行服务器端口安装完宝塔面板后还需要在云服务器控制台放行必要的端口宝塔默认端口是8888放行8888端口即可。#宝塔的端口可以在服务器终端中执行以下命令来修改。 bt 8否则无法通过浏览器访问宝塔面板和后续的Django项目。不同云厂商的操作入口略有不同但思路一致。阿里云 / 腾讯云 / 华为云操作步骤登录你的云服务器控制台如阿里云ECS控制台、腾讯云CVM控制台在左侧菜单找到「安全组」或「防火墙」找到你的服务器实例所绑定的安全组点击「配置规则」或「添加规则」添加入方向规则放行以下端口端口协议用途8888TCP宝塔面板访问端口安装时可能不同以安装完成提示为准80TCPHTTP网站访问443TCPHTTPS网站访问8000TCPDjango开发服务器默认端口可选后续Nginx代理后可关闭3306TCPMySQL数据库远程连接如不需要远程连接可不放行以阿里云为例添加规则时填写授权策略允许优先级1数字越小优先级越高协议类型TCP端口范围如 8888/8888单个端口或 80/443端口范围授权对象0.0.0.0/0表示允许所有IP访问生产环境建议按需限制描述自定义如「放行宝塔面板端口」添加完成后点击「保存」或「确定」。规则生效通常需要1-2分钟。宝塔面板自带防火墙宝塔面板本身也带有系统防火墙功能可以在面板左侧「安全」中查看。如果宝塔防火墙拦截了端口同样需要放行在宝塔面板左侧点击「安全」在「系统防火墙」区域点击「添加端口规则」填写端口号如8888协议选择TCP策略选择「允许」点击「提交」完成以上操作后你就可以在浏览器中通过http://服务器IP:8888正常访问宝塔面板了。4. 安装所需软件登录宝塔面板后系统会提示你安装LNMP或LAMP环境。我们选择LNMPLinux Nginx MySQL PHP但Django不需要PHP我们只需要其中的Nginx和MySQL。具体操作如下进入宝塔面板首页点击「软件商店」在「运行环境」分类中找到并安装Nginx选择稳定版、MySQL5.7或8.0均可、Python项目管理器宝塔官方插件用于管理Python项目等待安装完成通常需要5-10分钟5. 上传Django项目接下来将你的Django项目上传到服务器。推荐两种方式方式一通过宝塔文件管理器上传在宝塔面板左侧点击「文件」进入/www/wwwroot/目录点击「上传」将你的Django项目压缩包zip格式上传上传完成后右键压缩包选择「解压」方式二使用Git拉取如果你的项目托管在GitHub/Gitee上可以直接在服务器上拉取cd /www/wwwroot/ git clone https://github.com/你的用户名/你的项目名.git6. 配置Python虚拟环境Django项目需要独立的Python运行环境。我们使用宝塔的「Python项目管理器」来创建在宝塔面板左侧点击「软件商店」找到已安装的「Python项目管理器」并点击「设置」点击「添加项目」填写以下信息项目名称自定义如 myblogPython版本选择与你的Django项目兼容的版本推荐3.8或3.10项目路径选择你上传的项目目录如/www/wwwroot/myproject框架选择 Django启动方式选择 gunicorn推荐或 uwsgi启动文件填写你的Django项目wsgi路径如myproject.wsgi:application将myproject替换为你的项目名点击「确认」系统会自动创建虚拟环境并安装依赖如果自动安装依赖失败可以手动安装# 进入项目目录 cd /www/wwwroot/myproject 激活虚拟环境路径根据实际情况调整 source /www/server/pyproject_env/myblog_venv/bin/activate 安装依赖 pip install -r requirements.txt 安装gunicorn pip install gunicorn7. 配置Django项目在启动项目前需要修改Django的配置文件settings.py# 找到 ALLOWED_HOSTS修改为以下内容 ALLOWED_HOSTS [*] # 生产环境建议填写具体域名 关闭调试模式 DEBUG False 配置静态文件路径如果还没配置 STATIC_ROOT os.path.join(BASE_DIR, static) STATIC_URL /static/ 配置媒体文件路径如果有上传功能 MEDIA_ROOT os.path.join(BASE_DIR, media) MEDIA_URL /media/然后收集静态文件# 激活虚拟环境后执行 python manage.py collectstatic迁移数据库如果使用MySQL请先创建数据库python manage.py makemigrations python manage.py migrate8. 配置MySQL数据库可选如果你的Django项目使用MySQL而不是SQLite需要先在宝塔中创建数据库在宝塔面板左侧点击「数据库」点击「添加数据库」填写数据库名称、用户名和密码并记录下这些信息在Django的settings.py中配置数据库连接DATABASES { default: { ENGINE: django.db.backends.mysql, NAME: 你的数据库名, USER: 你的数据库用户名, PASSWORD: 你的数据库密码, HOST: localhost, PORT: 3306, } }注意使用MySQL前需要安装mysqlclient或pymysqlpip install mysqlclient # 如果安装失败尝试 pip install pymysql9. 启动Django项目回到「Python项目管理器」找到你刚才添加的项目点击「启动」。如果一切正常项目状态会变为「运行中」。此时可以通过http://服务器IP:端口访问你的Django项目端口在项目管理器中设置默认是8000。如果启动失败点击「日志」查看错误信息常见问题包括依赖未安装完整数据库连接失败端口被占用10. 配置Nginx反向代理现在Django项目已经可以通过IP:端口访问了但我们希望用户直接通过域名或IP的80端口访问而不需要加端口号。这就需要Nginx反向代理。10.1 添加站点在宝塔面板左侧点击「网站」点击「添加站点」填写你的域名如果没有域名可以填写服务器IP但后续SSL配置会受限「根目录」选择你的Django项目目录或新建一个空目录作为网站根目录「PHP版本」选择「纯静态」点击「提交」10.2 修改Nginx配置站点添加完成后点击该站点右侧的「设置」然后选择「配置文件」。将默认内容替换为以下配置server { listen 80; server_name 你的域名或IP; # 静态文件处理 location /static/ { alias /www/wwwroot/myproject/static/; expires 30d; access_log off; } 媒体文件处理 location /media/ { alias /www/wwwroot/myproject/media/; expires 30d; access_log off; } 反向代理到Django location / { proxy_pass http://127.0.0.1:8000; # 这里的端口要与Python项目管理器中设置的一致 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; proxy_redirect off; } }请将配置中的你的域名或IP和/www/wwwroot/myproject/替换为你自己的信息。修改完成后点击「保存」。10.3 重载Nginx保存配置后在宝塔面板左侧点击「服务」找到Nginx点击「重载配置」或「重启」。现在你就可以直接通过域名或IP访问你的Django项目了不需要加端口号。11. 配置SSL证书HTTPS为了让网站更安全建议配置SSL证书开启HTTPS。宝塔面板提供了免费SSL证书在「网站」列表中找到你的站点点击「设置」选择「SSL」选项卡选择「Lets Encrypt」免费证书勾选你的域名点击「申请」申请成功后开启「强制HTTPS」宝塔会自动修改Nginx配置无需手动操作。12. 常见问题排查问题1访问网站显示502 Bad Gateway原因Nginx无法连接到Django后端。请检查Django项目是否已启动在Python项目管理器中查看状态Nginx配置中的proxy_pass端口是否与Django启动端口一致防火墙是否放行了对应端口问题2静态文件404原因Nginx找不到静态文件路径。请检查是否执行了python manage.py collectstaticNginx配置中的alias路径是否正确静态文件目录是否存在且有读取权限问题3数据库连接失败原因MySQL配置错误或未启动。请检查MySQL服务是否已启动在宝塔「服务」中查看数据库名、用户名、密码是否与settings.py中一致是否已执行python manage.py migrate13. 总结至此你已经成功将Django项目部署到宝塔面板并通过Nginx反向代理实现了正常访问。回顾一下整个流程安装宝塔面板安装Nginx、MySQL、Python项目管理器上传Django项目配置虚拟环境并安装依赖修改Django配置ALLOWED_HOSTS、DEBUG、静态文件等启动Django项目配置Nginx反向代理可选配置SSL证书以后每次修改代码后只需要在本地修改、提交到Git然后在服务器上拉取最新代码重启Django项目即可。如果遇到问题多看日志Python项目管理器的日志和Nginx的错误日志大部分问题都能找到线索。