请选择 进入手机版 | 继续访问电脑版

广西大学ACM-ICPC竞赛论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 610|回复: 1

广西大学OJ开发入门:qduoj非docker部署指南

[复制链接]

1

主题

1

帖子

5

积分

版主

Rank: 7Rank: 7Rank: 7

积分
5
发表于 2019-11-21 14:01:54 | 显示全部楼层 |阅读模式
本帖最后由 JingleBell 于 2019-11-21 14:05 编辑

      qduoj(西大OJ基于qduoj建立)采用了docker部署方式,有它的优势,但造成了新手想改代码还得学习docker等额外知识,为了让学习OJ开发的同学快速上手,这里给出了非Docker部署的方式,看完做一遍,很快就可以在你的机器上部署oj代码,用你趁手的任意IDE修改OJ代码,增加新功能了!
步骤如下(对于初学者来说,有些地方可能过于简略,有问题就跟帖问吧):


1、github上git clone或者下载qduoj源码(网址:https://github.com/QingdaoU/OnlineJudge)
进入deploy目录,运行下面命令安装OJ运行所需的依赖包:
pip pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
(注意可能会遇到缺少fcntl的问题,解决办法见https://blog.51cto.com/13670314/2378496?source=dra

2、安装postgresql服务器,
由于pgsql在Windows上装常常容易失败,新手搞不定,强烈建议绿色版:https://www.cnblogs.com/qiumingcheng/p/10624922.html
并按照该文指导安装、运行和建立数据库以及管理账户,然后对应修改qduoj源码的dev_settings.py文件中DATABASES字段的数据库连接信息

3、按照init_db.sh中执行如下命令:
echo `cat /dev/urandom | head -1 | md5sum | head -c 32` > data/config/secret.key
注意上面这句随便创建一个secret.key文件,放入OnlineJudge-master\data\config
secret.key内容任意,比如: '_5c1zg+tvx(o+6e=@%)7^if8f^c0r^_6ajyqz4at+%j(q='
然后在命令行窗口进入manage.py所在目录(比如OnlineJudge-master)执行下面命令创建数据库:
   python manage.py migrate
执行完后会创建OJ所需的user等各类数据表


4、创建OJ管理账号   
python manage.py inituser --username root --password rootroot --action create_super_admin


5、python manage.py runserver 127.0.0.1:8001
然后在浏览器访问 127.0.0.1:8001 ,可以用上面4的创建的管理员账号登录
注意可能会有路由问题导致部分页面显示不出来,需要处理一下

总之,做完上面步骤,你已经有一个可以随便玩的OJ系统了,好好研读源代码学习和修改它吧。
(当然还有很多没提到的东西,比如前端技术、redis、judger等等)
另外,qduoj仓库上很多用户提出的issue(https://github.com/QingdaoU/OnlineJudge/issues)中希望开发者添加的新功能,
你能不能给他们加上,并且为qduoj源代码社区贡献你的代码呢?
Just do it!












回复

使用道具 举报

6

主题

10

帖子

32

积分

新手上路

Rank: 1

积分
32
发表于 2019-11-21 19:12:20 | 显示全部楼层
感谢大佬,我已经开始读qduoj后台Django相关的代码了
另外有个问题,redis数据库的作用是什么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|GXU-ACM

GMT+8, 2020-7-4 23:01 , Processed in 0.021337 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表