外观
宝塔部署
宝塔
介绍
宝塔面板(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——极速安装
添加数据库
- 数据库名:mars-mgn
- 用户名:mars-mgn
- 密码:(自定义)
- 访问权限:所有人
安装Redis
登录宝塔面板——数据库——Redis,安装Redis 6.2.19
安装Python
安装Python
登录宝塔面板——网站——Python项目,安装Python 3.11.10
创建虚拟环境:登录宝塔面板——网站——Python项目,点击:Python环境管理——创建虚拟环境
- 名称:venv311
上传后端文件
上传前准备工作:《运维手册——后端项目打包》
上传方式一:
登录宝塔面板——文件,进入/opt
目录下,上传——上传文件夹,选择整个mars-mgn
项目后端目录。
上传方式二:
可以将自己开发的代码上传到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
启动Celery
登录宝塔面板——网站——Python项目,点击项目的设置——协同服务——添加服务
名称 | 启动命令 |
---|---|
celery_worker | celery -A mysite worker -l INFO |
celery_beat | celery -A mysite beat -l INFO -S django_celery_beat.schedulers:DatabaseScheduler |
celery_flower | celery -A mysite flower --port=5555 |
配置系统防火墙
系统防火墙默认开启,如果要直接访问后端,需要放行相应端口。登录宝塔面板——安全——系统防火墙,添加端口规则
排错
登录宝塔面板——网站——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
检查运行状态命令
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 ——极速安装
上传前端文件
上传前准备工作:《运维手册——前端项目打包》
登录宝塔面板——文件,在/www/wwwroot/
目录下,新建文件夹mars-mgn-vue
并进入
- 进入前端打包生成的
dist-prod
目录,然后全选压缩。 - 上传压缩包后,点击解压。上传后效果如下。
添加HTML项目
登录宝塔面板——网站——HTML项目——添加HTML项目
- 绑定域名:填写服务器IP或域名
- 根目录:指向上一步的前端目录
/www/wwwroot/mars-mgn-vue
修改配置文件:刚才添加的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。
测试
参考:《生产测试》