Skip to content

宝塔部署

宝塔

介绍

宝塔面板(BT Panel)是一款图形化服务器运维工具,通过Web界面简化Linux/Windows服务器的管理,支持一键部署网站、数据库、运行环境等。

参考资料:

安装

以Ubuntu Server 22.04系统为例,安装宝塔面板

sh
wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ed8484bec

安装完成后记录显示的面板地址、用户名及密码

安装MySQL

登录宝塔面板——数据库——安装MySQL 8.0.36——极速安装

image-20250718143735506

添加数据库

  • 数据库名:mars-mgn
  • 用户名:mars-mgn
  • 密码:(自定义)
  • 访问权限:所有人

image-20250718145454436

安装Redis

登录宝塔面板——数据库——Redis,安装Redis 6.2.19

image-20250718145623861

安装Python

安装Python

登录宝塔面板——网站——Python项目,安装Python 3.11.10

image-20250718150149980

创建虚拟环境:登录宝塔面板——网站——Python项目,点击:Python环境管理——创建虚拟环境

  • 名称:venv311

image-20250718153320795

上传后端文件

上传前准备工作:《运维手册——后端项目打包》

上传方式一:

登录宝塔面板——文件,进入/opt目录下,上传——上传文件夹,选择整个mars-mgn项目后端目录。

image-20250718172824850

上传方式二:

可以将自己开发的代码上传到Gitee或Gitlab等私人仓库,再从私人代码仓库中下载代码。登录宝塔面板——终端,执行下面命令

sh
cd /opt
git clone https://gitee.com/zhulj993/mars-mgn.git  # 替换为您的私人仓库地址
# git clone -b develop https://gitee.com/zhulj993/mars-mgn.git # 替换为您的私人仓库地址(克隆指定分支)

# 如果有代码更新,运行 git pull 拉取新代码

修改配置文件

登录宝塔面板——文件,修改Django项目配置文件:/opt/mars-mgn/mysite/mysite/settings.py

  • 关闭DEBUG:DEBUG = False
  • 修改MySQL数据库地址、端口、用户名、密码
    • IP:127.0.0.1
    • 用户名:mars-mgn
  • 修改Redis数据库地址、端口、用户名、密码
    • IP:127.0.0.1
  • 修改NGINX_BASE_URL配置:填写服务器的IP或域名

添加Python项目

登录宝塔面板——网站——Python项目,点击:添加Python项目

  • 项目名称:mars-mgn
  • Python环境:venv311
  • 项目路径:/opt/mars-mgn/mysite
  • 启动命令:
sh
gunicorn -b 0.0.0.0:8000 --workers 3 -k uvicorn.workers.UvicornWorker mysite.asgi:application
  • 启动用户:root
  • 安装依赖包:/opt/mars-mgn/requirements.txt
  • 项目初始化命令
sh
python manage.py collectstatic --noinput
python manage.py migrate --no-input
python manage.py loaddata myapp_system.json myapp_infra.json
python manage.py loaddata django_celery_beat.json django_celery_results.json

image-20250718175051314

启动Celery

登录宝塔面板——网站——Python项目,点击项目的设置——协同服务——添加服务

名称启动命令
celery_workercelery -A mysite worker -l INFO
celery_beatcelery -A mysite beat -l INFO -S django_celery_beat.schedulers:DatabaseScheduler
celery_flowercelery -A mysite flower --port=5555

image-20250718183837013

配置系统防火墙

系统防火墙默认开启,如果要直接访问后端,需要放行相应端口。登录宝塔面板——安全——系统防火墙,添加端口规则

image-20250718184252425

排错

登录宝塔面板——网站——Python项目,点击项目的终端,手动执行下面命令。如果执行命令报错,重新检查Django配置文件、MySQL、Redis的状态。

sh
python manage.py collectstatic --noinput
python manage.py migrate --no-input
python manage.py loaddata myapp_system.json myapp_infra.json
python manage.py loaddata django_celery_beat.json django_celery_results.json

image-20250718182826452

检查运行状态命令

sh
# 检查Django
(mysite) root@ubuntu22:/opt/mars-mgn/mysite# ps aux | grep gunicorn
root       49063  0.0  0.7  34452 29012 ?        S    10:32   0:00 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/gunicorn -b 0.0.0.0:8000 --workers 3 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root       49064  0.2  1.9 246472 78892 ?        Sl   10:32   0:03 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/gunicorn -b 0.0.0.0:8000 --workers 3 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root       49065  0.2  1.9 246472 78904 ?        Sl   10:32   0:03 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/gunicorn -b 0.0.0.0:8000 --workers 3 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root       49066  0.2  1.7  89324 69576 ?        S    10:32   0:03 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/gunicorn -b 0.0.0.0:8000 --workers 3 -k uvicorn.workers.UvicornWorker mysite.asgi:application

# 检查Celery
(mysite) root@ubuntu22:/opt/mars-mgn/mysite# ps aux | grep celery
root       49109  0.3  2.3 113876 94264 ?        S    10:35   0:03 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/celery -A mysite worker -l INFO
root       49112  0.0  2.1 113900 83664 ?        S    10:35   0:00 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/celery -A mysite worker -l INFO
root       49113  0.0  2.1 113904 83784 ?        S    10:35   0:00 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/celery -A mysite worker -l INFO
root       49117  0.2  2.3 112148 92552 ?        S    10:35   0:02 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/celery -A mysite beat -l INFO -S django_celery_beat.schedulers:DatabaseScheduler
root       49123  0.2  2.3 627860 91660 ?        Sl   10:35   0:02 /www/server/pyporject_evn/venv311/bin/python3.11 /www/server/pyporject_evn/venv311/bin/celery -A mysite flower --port=5555

curl命令测试

sh
curl -X GET http://127.0.0.1:8000/admin-api/system/dict-type/simple-list

curl -X POST http://127.0.0.1:8000/admin-api/system/auth/login

安装Nginx

安装Nginx

登录宝塔面板——网站——HTML项目,安装Nginx 1.26.3 ——极速安装

image-20250718150854130

上传前端文件

上传前准备工作:《运维手册——前端项目打包》

登录宝塔面板——文件,在/www/wwwroot/目录下,新建文件夹mars-mgn-vue并进入

  • 进入前端打包生成的dist-prod目录,然后全选压缩。
  • 上传压缩包后,点击解压。上传后效果如下。

image-20250721151508884

添加HTML项目

登录宝塔面板——网站——HTML项目——添加HTML项目

  • 绑定域名:填写服务器IP或域名
  • 根目录:指向上一步的前端目录/www/wwwroot/mars-mgn-vue

image-20250721173655241

修改配置文件:刚才添加的HTML项目——设置——配置文件。配置文件示例如下,按需修改相应IP、路径。

sh
server
{
    listen 80;
    server_name 192.168.0.74;
    
    # 静态文件配置 (CSS, JS, images)
    location /static/ {
        alias /opt/mars-mgn/mysite/static/;  # 替换为实际的 Django 静态文件路径
        expires 1d;
        access_log off;
    }
    
    
    # 媒体文件配置 (用户上传内容)
    location /media/ {
        alias /opt/mars-mgn/mysite/media/;  # 替换为实际的 Django 媒体文件路径
        expires 1d;
        access_log off;
    }
    
    # 前端配置
    location / {
        root /www/wwwroot/mars-mgn-vue;  # 前端构建目录
        index index.html;
        try_files $uri $uri/ /index.html;   # 支持前端路由
    }
    access_log  /www/wwwlogs/192.168.0.74.log;
    error_log  /www/wwwlogs/192.168.0.74.error.log;
}

修改后保存生效。若不生效,检查配置文件或重启一下Nginx。

测试

参考:《生产测试》