【QingdaoUOJ】部署
相关连接 均封装与开源
- Backend后端(Django): https://github.com/QingdaoU/OnlineJudge
- Frontend前端(Vue): https://github.com/QingdaoU/OnlineJudgeFE
- Judger Sandbox判题沙盒(Seccomp): https://github.com/QingdaoU/Judger
- JudgeServer判题服务器(A wrapper封装 for Judger): https://github.com/QingdaoU/JudgeServer
我的部署步骤
把github上的项目克隆下来
git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy
然后启动服务
docker-compose up -d
通过
docker images
可以查看镜像
docker ps -a
可以查看镜像状态
启动服务后
在服务器地址:80
下查看网站
修改前端
参考前端
首先保证nodejs版本为v8.12.0
Linux相关安装方法参考此文章
克隆下来前端项目git clone https://github.com/QingdaoU/OnlineJudgeFE.git
然后在OnlineJudgeFE
中进行npm install
执行里面的package.json
文件
Linux执行下列代码
npm install
export NODE_ENV=development
npm run build:dll
export TARGET=http://Your-backend
#Your-backend填写自己的服务器+端口
npm run dev
等待即可
本地会拉取线上api进行测试,本地修改不影响线上
修改完毕以后可以运行 npm run build
, 会生成一个 dist
文件夹
放在oj的OnlineJudgeDeploy/data/backend/
下
相对应的docker-compose
已经配置好 ,看上面的配置
执行docker-compose up -d
npm install 报错信息与调试整理
Error: Cannot find module
事实上这个报错真正的信息就是这个,熟悉nodejs
这一套的人应该知道,这个在每个版本中都是不一样的,因此该报错信息明显就是版本问题。但是有的朋友可能就问了,自己明明都重新安装过nodejs
版本了也删除了原先的node_modules
,为什么还是不行,我自己也遇到过了这个问题,后来想起来了不知从何时起,使用npm install
安装模块后会产生了package-lock.json
这个文件,正是因为该文件包含了旧版本的信息,才导致了新的npm install
安装失败了。
使用nvm管理npm
nvm可以下载多个npm版本,并随时切换使用。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
下载并重启终端后使用
nvm --version
检查nvm是否成功安装
nvm list-remote
获取npm的可用版本
nvm install 8.12.0
安装v8.12.0版本
nvm ls
列出安装的npm版本
nvm use 12.16.3
切换为v12.16.3的版本
nvm alias default 12.16.3
修改v12.16.3为默认版本
docker语句
docker exec -it 容器ID /bin/bash
进入docker中
exit
推出docker容器 或 快捷键ctrl+Q
挂起