外观
Linux 部署
安装Linux
以 Ubuntu Server 22.04 LTS 为例,参考:《Linux安装与优化》
安装依赖
点击下载startup-linux.sh安装脚本,上传到服务器并执行。该脚本会自动在服务器上,安装 MySQL、Redis、Python和Nginx
sh
bash deploy-linux.sh
安装后检查
sh
# 检查MySQL
mysql -u mars-mgn -p123456 -e "SHOW DATABASES;"
# 检查Redis
redis-cli -a 123456 ping
redis-cli -a 123456 info server
# 检查Python
python3 -V
pip3 -V
# 检查Nginx
nginx -v
systemctl status nginx
Ubuntu Server 22.04 默认安装版本
名称 | 版本 | 备注 |
---|---|---|
MySQL | 8.0 | 安装脚本中的默认用户名mars-mgn ,密码123456 (按需修改) |
Redis | 6.0 | 安装脚本中的默认密码123456 (按需修改) |
Python | 3.10 | |
Nginx | 1.18 |
部署后端
上传后端文件
上传前准备工作:《运维手册——后端项目打包》
上传方式一:
使用 WindTerm 等SSH工具登录服务器,进入/opt
目录下,上传整个mars-mgn
项目后端目录。注意:不要上传venv
文件夹。
上传方式二:
可以将自己开发的代码上传到Gitee或Gitlab等私人仓库,再从私人代码仓库中下载代码。SSH登录服务器,执行下面命令
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 拉取新代码
修改配置文件
SSH登录服务器,修改Django项目配置文件:/opt/mars-mgn/mysite/mysite/settings.py
- 关闭DEBUG:
DEBUG = False
- 修改数据库配置
- 地址:
DATABASE_HOST = "127.0.0.1"
- 数据库:
"NAME": "mars-mgn"
- 用户名:
"USER": "mars-mgn"
- 默认密码:
"PASSWORD": "123456"
- 地址:
- 修改Redis配置
- 地址:
REDIS_HOST = "127.0.0.1"
- 默认密码:
REDIS_PASSWORD = "123456"
- 地址:
- 修改
NGINX_BASE_URL
配置:填写服务器的IP或域名
创建虚拟环境与初始化
创建并激活虚拟环境
sh
# 创建虚拟环境
cd /opt/mars-mgn && python3 -m venv venv
# 激活虚拟环境:激活后提示(venv) root@ubuntu22:/opt/mars-mgn#
cd /opt/mars-mgn && source venv/bin/activate
python -m pip install -U pip
安装依赖,并初始化数据库数据
sh
# 为操作系统安装mysqlclient依赖
apt update && apt install -y python3-dev default-libmysqlclient-dev build-essential pkg-config zip
# 安装Django依赖与初始化数据库数据
cd /opt/mars-mgn && source venv/bin/activate
bash startup.sh init
当看到下面结果,表示正常。否则,重新检查settings.py
配置文件,然后执行bash startup.sh init
。
启动Django
注意
如果服务器重启,请手动执行下面的命令启动Django
sh
# 激活虚拟环境并启动Django
cd /opt/mars-mgn && source venv/bin/activate
bash startup.sh run
检查Django和Celery运行状态:如果看到下面类似结果,表示正常
sh
root@ubuntu22:~# ps aux | grep gunicorn
root 78944 0.1 0.6 34400 27528 ? S 09:35 0:00 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/gunicorn -b 0.0.0.0:8000 --workers 5 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root 78948 0.7 1.6 84248 64144 ? S 09:35 0:01 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/gunicorn -b 0.0.0.0:8000 --workers 5 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root 78949 0.7 1.6 84316 64148 ? S 09:35 0:01 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/gunicorn -b 0.0.0.0:8000 --workers 5 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root 78950 0.7 1.6 84316 64152 ? S 09:35 0:01 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/gunicorn -b 0.0.0.0:8000 --workers 5 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root 78951 0.7 1.6 84316 64144 ? S 09:35 0:01 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/gunicorn -b 0.0.0.0:8000 --workers 5 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root 78952 0.7 1.6 84316 64152 ? S 09:35 0:01 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/gunicorn -b 0.0.0.0:8000 --workers 5 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root@ubuntu22:~# ps aux | grep celery
root 78945 1.2 2.1 105968 86424 ? S 09:35 0:01 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/celery -A mysite worker -l INFO
root 78946 1.1 2.1 106616 86012 ? S 09:35 0:01 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/celery -A mysite beat -l INFO -S django_celery_beat.schedulers:DatabaseScheduler
root 78947 1.0 2.1 620348 84328 ? Sl 09:35 0:01 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/celery -A mysite flower --port=5555
root 78964 0.0 1.9 108176 77384 ? S 09:35 0:00 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/celery -A mysite worker -l INFO
root 78965 0.0 1.9 108180 77380 ? S 09:35 0:00 /opt/mars-mgn/vevn/bin/python /opt/mars-mgn/vevn/bin/celery -A mysite worker -l INFO
curl命令测试Djanog状态
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
部署前端
上传前端文件
上传前准备工作:《运维手册——前端项目打包》
使用 WindTerm 等SSH工具登录服务器,进入/opt
目录下,新建文件夹mars-mgn-vue
并进入
- 进入前端构建生成的
dist-prod
目录,然后全选拖动上传到服务器 - 上传后效果如下
sh
root@ubuntu22:/opt/mars-mgn-vue# ls /opt/mars-mgn-vue
assets favicon.ico index.html logo.gif
配置Nginx
SSH登录服务器,修改Nginx配置文件
sh
cd /etc/nginx/sites-available/
# 将default文件内容替换为以下内容:
server {
listen 80;
server_name 192.168.0.75; # 替换为服务器IP或域名
# 静态文件配置 (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 /opt/mars-mgn-vue; # 前端构建目录
index index.html;
try_files $uri $uri/ /index.html; # 支持前端路由
}
}
重启Nginx
sh
nginx -t # 检查配置语法
systemctl restart nginx
systemctl status nginx
测试
参考:《生产测试》