部署需要提供以下环境
- 操作系统:Ubuntu 20.04.4 LTS
- Nginx:nginx 1.18.0 (Ubuntu)
- 数据库:MySQL 8.0 版本及以上
- Anaconda:conda 4.10.3
- Python:Python 3.8.1
此项目依赖 LibCity 运行,所以事先还需要安装配置 LibCity 环境,推荐 LibCity 的依赖和此项目的依赖放同一个虚拟环境进行管理。
LibCity 安装文档:https://bigscity-libcity-docs.readthedocs.io/zh_CN/latest/get_started/install.html
推荐使用 Conda 创建虚拟环境并配置使用。
-
将虚拟环境切换为运行 LibCity 的虚拟环境
conda activate admin
-
将后端代码上传至服务器,进入项目目录,并安装依赖
pip install -r requirements.txt
-
安装 Uwsgi
pip install uwsgi
-
在项目文件夹同级目录下创建 uwsgi 工作目录
mkdir uwsgi
-
创建 uwsgi.ini 配置文件
vim uwsgi.ini
写入以下内容;其中 chdir、virtualenv、pidfile、daemonize 四项需要根据实际情况配置相应路径
[uwsgi] # chdir 是后端项目路径 chdir = /home/houge/Bigscity-LibCity-WebTool/smartcityms_backend # 你的 conda 虚拟环境路径 virtualenv = /home/houge/anaconda3/envs/admin module = backend.wsgi:application master = True processes = 1 harakiri = 60 max-requests = 5000 socket = 127.0.0.1:8090 plugin = python3 # 你的 uwsgi 进程 pid 文件存放路径 pidfile = /home/houge/Bigscity-LibCity-WebTool/uwsgi/master.pid # uwsgi 后台启动后日志存放路径 daemonize = /home/houge/Bigscity-LibCity-WebTool/uwsgi/backend.log vacuum = True # 启用多线程 enable-threads = true
-
对项目配置文件进行配置
vim smartcityms_backend/backend/settings.py
需要修改的项有:
# 邮件发送相关 # 邮件发送者邮箱地址 SENDER_ADDRESS = '' # 邮箱授权码 SENDER_AUTHORIZATION_CODE = '' # SMTP 服务器地址 例如:smtp.163.com SMTP_SERVER_ADDRESS = '' # SMTP 服务器端口 SMTP_SERVER_PORT = 0 # 建议修改为服务器 IP = ? ALLOWED_HOSTS = ['?'] # 数据库 注意修改数据库的 HOST USER PASSWORD DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django', # 指定的数据库名 'USER': 'root', # 数据库登录的用户名 'PASSWORD': '123456', # 登录数据库的密码 'HOST': '192.168.3.1', 'PORT': '3366', } } # 跨域设置 这里配置的是前端的请求地址 修改为前端项目的 IP 和端口 CORS_ORIGIN_WHITELIST = ( 'http://?:8000', ) # libcity 库程序相关 # libcity 程序目录 LIBCITY_PATH = '/home/houge/Bigscity-LibCity-WebTool/Bigscity-LibCity' # 激活 libcity 库虚拟环境命令 配置为 None 代表就是当前环境(启动 uwsgi 时的虚拟环境) ACTIVE_VENV = None # 样例文件相关 分别是 数据集样例文件 和 参数配置样例文件 DATASET_EXAMPLE_PATH = '/home/houge/Bigscity-LibCity-WebTool/smartcityms_backend/sample/T_DRIVE_SMALL.zip' TASK_PARAM_EXAMPLE_PATH = '/home/houge/Bigscity-LibCity-WebTool/smartcityms_backend/sample/config.json' # 前端项目路径 配置为前端打包后项目的存储路径 ADMIN_FRONT_HTML_PATH = "/home/houge/Bigscity-LibCity-WebTool/smartcityms_front/dist/"
-
导入基本数据表
登录mysql数据库,创建名为django的数据库,将
django.sql
输入导入。命令如下:
create database django; use django; source django.sql;
前端项目可以自己编译打包再部署,也可以直接使用打包好的部署包,如果直接使用打包好的部署包,可以直接看 2.2 的内容。
-
所需环境
- node:v16.5.0
- yarn:1.22.17
-
node 安装
下载地址:https://nodejs.org/download/release/v16.5.0/
下载文件:node-v16.5.0-linux-x64.tar.gz
解压并配置环境变量:
# 解压 tar -zxvf node-v16.5.0-linux-x64.tar.gz # 配置环境变量 cd /etc/profile.d vim my_env.sh # 写入以下内容 NODE_HOME 要配置成你的解压路径 export NODE_HOME=/home/houge/node-v16.5.0 export PATH=$PATH:$NODE_HOME/bin # 保存后 使环境变量生效 source /etc/profile # 验证 node -v
-
yarn 安装
npm install --global yarn # 验证 yarn -v
-
进入前端项目代码目录
# 安装依赖 yarn # 打包 yarn build:prod
打包后会在项目代码目录下多出一个 dist 文件夹,这就是部署包
建议将打包好的 dist 部署包放入和后端项目同级的目录下,方便项目查找及管理。
-
配置 Nginx
进入 Nginx 的站点配置目录,并创建站点配置文件
cd /etc/nginx/sites-enabled # 创建站点配置文件 vim mysite.conf
写入以下内容,需要修改的地方只有 libcity 管理平台的 server 下的 root 配置,需要修改为前端项目的部署包 dist 文件夹路径。
server { listen 8080; server_name 127.0.0.1; #charset koi8-r; #access_log logs/host.access.log main; location / { # 配置 uwsgi 转发 include /etc/nginx/uwsgi_params; uwsgi_pass 127.0.0.1:8090; # root html; # index index.html index.htm; } } # libcity 管理平台 server { listen 8000; server_name 127.0.0.1; charset utf-8; proxy_buffer_size 8192k; proxy_buffers 32 8192k; proxy_busy_buffers_size 8192k; gzip on; gzip_buffers 32 4k; gzip_comp_level 6; gzip_min_length 200; gzip_types text/css text/xml application/javascript; gzip_vary on; location ~* \.(asp|aspx|php|jsp|cgi|7z)$ { return 404; } location ~* \.map$ { return 404; } # 需要修改为前端项目的部署包 dist 路径 root /home/houge/Bigscity-LibCity-WebTool/smartcityms_front/dist; index index.html; location ^~ / { add_header Access-Control-Allow-Origin '*'; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'Authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; if ($request_method = 'OPTIONS') { return 204; } try_files $uri $uri/ /index.html?/$request_uri; } }
-
进入 dist 目录,需要修改后端请求地址
cd /home/houge/Bigscity-LibCity-WebTool/ai-admin-front/dist vim static/serverconfig.js # 只需要把 IP 修改为服务器 IP 即可 window.global_url = { Base_url: 'http://?:8080/api' }
-
Nginx 重启验证
sudo nginx -s reload
-
进入 uwsgi 的目录,启动项目
uwsgi uwsgi.ini
-
访问页面进行验证:http://ip:8000
-
管理员用户
账号:admin
密码:123456