「青岛大学 Online Judge」是js的写的前端,框架是vue.js,在node.js上部署运行,其实整体运行还是建立在docker的容器虚拟环境里,这里暂时不需要Docker。安装环境是Ubuntu 18.04-64bit
1.安装一大堆软件
sudo apt-get update
sudo apt-get install git vim wget
sudo apt-get install redis-server
sudo apt-get install postgresql
#openssl是后边部署OJ必须
sudo apt-get install openssl libssl-dev
#这是一个完整的开发工具包,提供了gcc,libc等乱七八糟的工具和软件
sudo apt-get install build-essential
2.开始搞事情
首先fock前端到你的github,这样以后可以自己改并且自己推送,然后Git到本地机器。我的WSL(Windows Linux子系统)运行的Ubuntu 18.04-64bit。后边的命令如果需要权限就把sudo加上,root用户就主动忽略吧。
git clone your_url(fork到你自己的github上的url)
3.安装node.js
因为qduoj2.0说明需要nodejs version 8.12.0,我已开始直接下载的源码包本地编译安装,可是装好了在后边的oj部署时候总是出错,也可能是其他版本的npm没有删干净,所以最后我用的nvm,这是nodejs的版本管理器,挺方便的。
wget -O- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
等命令运行完安装好了,需要关闭WSL,再次启动nvm才会生效。
#这里不要急着运行!最后的这个.0挺有意思,因为要符合nvm的语义,不写的话就默认安装8.12.x中最新的那个
nvm install 8.12.0
#如果上边的命令安装太慢就用这个taoao的镜像安装!
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node nvm install 8.12.0
nvm默认使用的nodejs版本是最近一次安装的版本,如果你有很多版本可以用下边的命令来选择
nvm use 8.12.0
node --version
安装依赖包
npm install
#如果这一步过于慢就用taobao的镜像
npm config set registry https://registry.npm.taobao.org
npm install
4.部署前端
都装好了,现在可以部署前端了,cd到刚才的git好的文件夹根目录
如果在上一步npm install一直失败报错,要不你就多运行几次这个命令,可能是网络不稳定导致的,有时候就算是淘宝的源也没法救你,那就只好把nvm和nodejs和npm统统的删除干净,重启,然后手动去官网下载nodejs的源码包
wget https://npm.taobao.org/mirrors/node/v6.11.1/node-v8.12.0-linux-x64.tar.xz
#这里去找你需要的版本,里边同时包含了对应的npm 注意,一定要下载.tar.xz拓展名的版本,这个不用编译安装,直接建立软链接即可。
tar xvf
#解压之
ln -s /opt/download/node-v8.12.0-linux-x64/bin/node /usr/local/bin/
ln -s /opt/download/node-v8.12.0-linux-x64/bin/npm /usr/local/bin/
然后测试一下
node -v
npm -v
如果没有上边的问题,就继续:
NODE_ENV=development npm run build:dll
#也可以把地址定义到自己已部署好的OJ上
export TARGET=http://127.0.0.1
npm run dev
然后在浏览器输入localhost:8080就出现了前端。
5.更改界面
如何更改页面呢,咱们先来看看vue.js框架的网站目录结构:
文件夹 | 作用 |
---|---|
build | 项目构建(webpack)相关代码 |
config | 配置目录,包括端口号等。我们初学可以使用默认的。 |
node_modules | npm 加载的项目依赖模块 |
src | 这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件: |
assets | 放置一些图片,如logo等。 |
components | 目录里面放了一个组件文件,可以不用。 |
App.vue | 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录。 |
main.js | 项目的核心文件 |
static | 静态资源目录,如图片、字体等。 |
index.html | 首页入口文件,你可以添加一些 meta 信息或统计代码啥的。 |
package.json | 项目配置文件。 |
README.md | 项目的说明文档,markdown 格式。 |
所以自定义页面基本就是在src/pages/oj/这里进行,当然src/里边的其他目录,比如styles/common.less就是css文件,还有static/css/loader.css这个是加载页面的css。
6.尾声
就先这样,之后我在补上打包成Docker镜像上传部署的笔记。
打包上传整合笔记在这里:https://www.zklcdc.top/2020/02/03/41.html
非常感谢以下前辈!
qduoj ~ 前端 ~ 二次开发 ~ 笔记:https://my.oschina.net/finchxu/blog/1930017
最新评论