Skip to content

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 默认安装版本

名称版本备注
MySQL8.0安装脚本中的默认用户名mars-mgn,密码123456 (按需修改)
Redis6.0安装脚本中的默认密码123456 (按需修改)
Python3.10
Nginx1.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

image-20250806110617163

启动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

测试

参考:《生产测试》