Anson's blog Anson's blog
首页
  • 日记

    • 年制
  • 摄影

    • 自然风光
  • 读书

    • 宗教哲学
  • 搞搞开发

    • 搞搞开发
  • 关于本站

    • 关于本站
  • 技术文档

    • 技术文档
  • 学习

    • 学习
  • 跳舞

    • 跳舞
  • 其他

    • 面试
    • 友情链接
  • 网站
  • 分类
  • 标签
  • 归档
关于

Anson Pei

行中悟道
首页
  • 日记

    • 年制
  • 摄影

    • 自然风光
  • 读书

    • 宗教哲学
  • 搞搞开发

    • 搞搞开发
  • 关于本站

    • 关于本站
  • 技术文档

    • 技术文档
  • 学习

    • 学习
  • 跳舞

    • 跳舞
  • 其他

    • 面试
    • 友情链接
  • 网站
  • 分类
  • 标签
  • 归档
关于
  • 教人编程

  • 搞搞开发

    • 解决BUG的方法论
    • ZKZH-OJ说明文档
      • OnlineJudeg—ZKZH
      • 一、项目了解
        • 1. 技术栈构成
        • 2. 碰到的问题
        • 1. Docker
        • 2. 数据库
        • 3. 服务器路径问题
        • 4. 本地部署前端问题
        • 5. 导包问题
      • 二、开发流程文档
        • 1. 修改后端代码
        • 1.1 修改yml文件
        • 1.2启动Docker
        • 1.3 修改后端代码
        • 1.4 修改model
        • 1.5 启动失败等异常
        • 2. 修改前端代码
        • 2.1 步骤
        • 2.2 附件页面路径
        • 2.3 Git 提交流程
        • 3.打包镜像重新上传
        • 4. 打包状态查看
        • 5. 服务器部署
      • 三、其他
        • widows 相关指令
        • Git
      • 四、TODO
    • ZKZH-智龙微课硬件开发笔记
  • 其他杂活

  • 工作
  • 搞搞开发
Anson
2022-12-01
目录

ZKZH-OJ说明文档

# OnlineJudeg—ZKZH

需要时打开翻看

# 一、项目了解

# 1. 技术栈构成

  • 前端:VUE框架
    • vue2-2.5.16
    • UI-----elementui
  • 后端:Django框架 + DRF框架
    • django-2.1.7
    • django-restframework
    • aliyun
  • 数据库:PostgreSQL + redis
  • 运维部署:nginx+docker(在线编译的沙箱环境)
    • docker沙箱编译环境

# 2. 碰到的问题

# 1. Docker

项目中docker用到镜像不是ubuntu而是alpine

docker inspect --format

#输出running则为运行 d5f1da0223fb为容器id

  • docker 进入不同的容器命令不同,正常进入:docker exec -it 容器名 /bin/bash alpine制作的镜像得:docker exec -it 容器名 /bin/sh
# 2. 数据库

postgresql 数据库之前没有怎么了解过,需要重新学习

由于这个数据库是和ubuntu账户单独分离的,所以第一步要更换账户

  1. 更换账户

    sudo -i -u postgres
    
    1
  2. 登录到postgresql数据库中

    psql
    
    1
  3. 创建用户和密码

    CREATE USER onlinejudge WITH PASSWORD 'onlinejudge';
    
    1
  4. 创建数据库

    CREATE DATABASE XXXXXX;
    
    1
  5. 更换数据库所有权

    GRANT ALL PRIVILEGES ON DATABASE XXXXXX to onlinejudge;
    
    1
# 3. 服务器路径问题
  • nginx

    • /app/deploy/nginx
    • 目录中https文件里最后一个的指定的 / 是vue打包生成的dist后的文件夹
  • 4个固定容器的位置

    • /var/lib/docker/containers
# 4. 本地部署前端问题
  • 前置准备

    • npm install 的时候会碰见GitHub无法访问的情况
      • 需要手动安装一下git(可能去仓库拉去) 去git官网下载那个gitbash即可
  • 重跑流程

    • 删除 node_modul 和package-lock && npm cache clean --force 强制清楚所有缓存

    • 项目文件夹中需要初始化git

      • git init

      • 去.git文件夹中找到config文件添加以下内容

        [user]
        	email=your email
        	name=your name
        
        1
        2
        3
      • git commit --allow-empty -n -m "Commit"

    • set NODE_ENV=development

    • npm run build:dll

    • export TARGET=http://127.0.0.1

    • npm run dev

# 5. 导包问题
  1. can not import six 把导包from django.utils import six 直接改为 import six 是因为djagno 3 版本中吧这个six单独作为了一个包

# 二、开发流程文档

# 1. 修改后端代码

# 1.1 修改yml文件

修改文件中注释掉的部分,将本地的后端代码挂载进去

version: "3"
services:
  oj-redis:
    image: redis:4.0-alpine
    container_name: oj-redis
    restart: always
    volumes:
      - ./data/redis:/data
 
  oj-postgres:
    image: postgres:10-alpine
    container_name: oj-postgres
    restart: always
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=onlinejudge
      - POSTGRES_USER=onlinejudge
      - POSTGRES_PASSWORD=onlinejudge
      
  judge-server:
    image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/judge_server
    container_name: judge-server
    restart: always
    read_only: true
    cap_drop:
      - SETPCAP
      - MKNOD
      - NET_BIND_SERVICE
      - SYS_CHROOT
      - SETFCAP
      - FSETID
    tmpfs:
      - /tmp
    volumes:
      - ./data/backend/test_case:/test_case:ro
      - ./data/judge_server/log:/log
      - ./data/judge_server/run:/judger
    environment:
      - SERVICE_URL=http://judge-server:8080
      - BACKEND_URL=http://oj-backend:8000/api/judge_server_heartbeat/
      - TOKEN=CHANGE_THIS
      - judger_debug=1
 
  oj-backend:
    image: registry.cn-hangzhou.aliyuncs.com/zkzh/zkoj_backend
    container_name: oj-backend
    restart: always
    depends_on:
      - oj-redis
      - oj-postgres
      - judge-server
    volumes:
      - ./data/backend:/data
      # 后端开发的时候把前面的部分改成后端代码所在文件夹
      # - /home/xxx/yyy/OnlineJudge:/app
    environment:
      - PYTHONUNBUFFERED=TRUE
      - POSTGRES_DB=onlinejudge
      - POSTGRES_USER=onlinejudge
      - POSTGRES_PASSWORD=onlinejudge
      - JUDGE_SERVER_TOKEN=CHANGE_THIS
      - ACCESS_KEY_ID=LTAI5tE1GeJcBFwwTaGC1FhF
      - ACCESS_KEY_SECRET=rfw20Qst3N8mFTtW5ZPFgJvjUnvEfX
      - APPID=wxf267110a56485ab3
      - APPSECRET=e3c748c66b121323f7ffc2ff856f1009
      # 强制HTTPS注释掉,为了防止跨域
      # - FORCE_HTTPS=1
      # - STATIC_CDN_HOST=cdn.oj.com
    ports:
      - "0.0.0.0:80:8000"
      - "0.0.0.0:443:1443"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# 1.2启动Docker
docker stop $(docker ps -q)   
docker rm -f $(docker ps -aq)
docker-compose up -d
1
2
3
# 1.3 修改后端代码
  • 重启docker则修改生效
# 1.4 修改model

如果修改的是后端的model部分,需要执行以下操作

docker exec -it oj-backend /bin/sh
docker exec -it yjy-backend /bin/sh
python manage.py makemigrations
python manage.py migrate
exit
1
2
3
4
5
# 1.5 启动失败等异常

查看 /data/backend/log 下面的日志

# 2. 修改前端代码

# 2.1 步骤
npm install 

set NODE_ENV=development 
// 这一步用来生成vendor-manifest.json文件的
npm run build:dll

export TARGET=http://127.0.0.1/
npm run dev

npm run build   

打包为dist文件放到后端根目录下

打包之后的dist文件,需要将static目录复制到mobile中一份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 2.2 附件页面路径
  • 在 /src/pages/oj/views/attachment 下添加新的页面
  • 在 /src/pages/oj/views/index.js 中导出
  • 在 /src/pages/oj/router/routes.js 中添加路由
# 2.3 Git 提交流程
git add .  提交所有变动
git commit -am '修改信息注释'
git push https://gitee.com/zkzh8888/OnlineJudgeFE.git BrandNew:BrandNew    后面是分支名
1
2
3

# 3.打包镜像重新上传

  • 注意这里阿里云会自动检测后端代码的提交
git commit -am '提交信息'

git push 本地分支:远程分支
1
2
3

# 4. 打包状态查看

  1. 登录阿里云查看

  2. 等待自动构建镜像成功

# 5. 服务器部署

  1. 切换到项目所在文件夹
cd /home/admin/OnlineJudgeDeploy/
1
  1. 执行以下docker命令
docker stop $(docker ps -q)
docker rm -f $(docker ps -aq)
docker pull registry.cn-hangzhou.aliyuncs.com/zkzh/zkoj_backend
docker-compose up -d
1
2
3
4

# 三、其他

# widows 相关指令

export 在win下无用应该用: set TARGET
win下查看端口:
1
2

# Git

初始化
git init
删除远程仓库
git remote rm origin
新增远程仓库
git remote add origin https://github.com/test/test.git 

设置全局账号
git config --global user.email xxxx@.com
git config --global user.name xxxx

1
2
3
4
5
6
7
8
9
10
11

# 四、TODO

async await
mapGetters
$confirm 原理  
调用api之后的.catch()方法
this.$store 中间存的是什么

1
2
3
4
5
6
上次更新: 2022/12/28, 07:42:52
解决BUG的方法论
ZKZH-智龙微课硬件开发笔记

← 解决BUG的方法论 ZKZH-智龙微课硬件开发笔记→

最近更新
01
数据结构与算法
12-28
02
12月阳性过程记录
12-15
03
ZKZH-智龙微课硬件开发笔记
12-09
更多文章>
Theme by Vdoing | Copyright © 2022-2022 Anson Pei | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式