【109】后端模块获取与运行

获取代码

访问官方代码仓库:
GitHub - QingdaoU/OnlineJudge: Open source online judge based on Vue, Django and Docker. | 青岛大学开源 Online Judge | QQ群 496710125 | admin@qduoj.com
复制仓库的下载地址:
image.png

https://github.com/QingdaoU/OnlineJudge.git

下载到本地

打开 WSL Ubuntu,打开专门放这个 OJ 代码的文件夹,并进入这个文件夹:
image.png
将 OnlineJudge 代码仓库下载到本地(直接复制下面的命令):

git clone https://github.com/QingdaoU/OnlineJudge.git && cd OnlineJudge

慢慢等待下载到本地就可以了,不行的话多试几遍:
image.png

目录结构

.
├── Dockerfile																		Docker容器配置文件,定义了如何构建和运行应用的容器
├── LICENSE
├── README-CN.md
├── README.md
├── account																				账户应用
│   ├── __init__.py												
│   ├── decorators.py															装饰器函数,用于修改或扩展函数/方法的行为
│   ├── middleware.py															中间件
│   ├── migrations																数据库迁移文件,记录数据库结构变更(数字代表迁移的顺序)
│   │   ├── 0001_initial.py
│   │   ├── 0002_auto_20170209_1028.py
│   │   ├── 0003_userprofile_total_score.py
│   │   ├── 0005_auto_20170830_1154.py
│   │   ├── 0006_user_session_keys.py
│   │   ├── 0008_auto_20171011_1214.py
│   │   ├── 0009_auto_20171125_1514.py
│   │   ├── 0010_auto_20180501_0436.py
│   │   ├── 0011_auto_20180501_0456.py
│   │   ├── 0012_userprofile_language.py
│   │   └── __init__.py
│   ├── models.py																	数据模型,对应数据库中的表
│   ├── serializers.py														序列化器,用于转换模型实例到可传输的格式
│   ├── tasks.py																	任务定义
│   ├── templates																	模板文件,用于渲染HTML页面
│   │   └── reset_password_email.html
│   ├── tests.py																	测试用例
│   ├── urls																			URL路由配置,定义URL到视图的映射
│   │   ├── __init__.py
│   │   ├── admin.py															
│   │   └── oj.py																	
│   └── views																			视图函数和类,处理请求并返回响应
│       ├── __init__.py
│       ├── admin.py
│       └── oj.py
├── announcement																	公告
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_auto_20171011_1214.py
│   │   ├── 0003_auto_20180501_0436.py
│   │   └── __init__.py
│   ├── models.py
│   ├── serializers.py
│   ├── tests.py
│   ├── urls
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   └── oj.py
│   └── views
│       ├── __init__.py
│       ├── admin.py
│       └── oj.py
├── conf
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_auto_20171011_1214.py
│   │   ├── 0003_judgeserver_is_disabled.py
│   │   ├── 0004_auto_20180501_0436.py
│   │   └── __init__.py
│   ├── models.py
│   ├── serializers.py
│   ├── tests.py
│   ├── urls
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   └── oj.py
│   └── views.py
├── contest																					竞赛
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_auto_20170209_0845.py
│   │   ├── 0003_auto_20170217_0820.py
│   │   ├── 0004_auto_20170717_1324.py
│   │   ├── 0005_auto_20170823_0918.py
│   │   ├── 0006_auto_20171011_1214.py
│   │   ├── 0007_contestannouncement_visible.py
│   │   ├── 0008_contest_allowed_ip_ranges.py
│   │   ├── 0009_auto_20180501_0436.py
│   │   ├── 0010_auto_20190326_0201.py
│   │   └── __init__.py
│   ├── models.py
│   ├── serializers.py
│   ├── tests.py
│   ├── urls
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   └── oj.py
│   └── views
│       ├── __init__.py
│       ├── admin.py
│       └── oj.py
├── data																						项目数据目录
│   ├── config																			配置文件
│   ├── log																					日志文件
│   ├── public																			公共资源,如图片、图标等
│   │   ├── avatar
│   │   │   └── default.png
│   │   ├── upload
│   │   └── website
│   │       └── favicon.ico
│   ├── ssl																					SSL证书和密钥
│   └── test_case																		测试用例数据
├── deploy																					部署相关脚本和配置
│   ├── entrypoint.sh																容器的入口脚本
│   ├── health_check.py															健康检查脚本
│   ├── nginx																				Nginx配置目录
│   │   ├── api_proxy.conf
│   │   ├── https_redirect.conf
│   │   ├── locations.conf
│   │   └── nginx.conf
│   ├── requirements.txt														Python依赖列表
│   ├── supervisord.conf														Supervisor配置文件,管理服务进程
│   └── test_case_rsync															同步测试用例的Docker相关配置
│       ├── Dockerfile
│       ├── docker-compose.yml
│       ├── rsyncd.conf
│       └── run.sh
├── docs
│   └── data.json
├── fps
│   ├── __init__.py
│   ├── fps.xml
│   └── parser.py
├── init_db.sh
├── judge																						评测系统相关
│   ├── __init__.py
│   ├── dispatcher.py
│   ├── languages.py
│   └── tasks.py
├── manage.py																				Django管理脚本
├── oj
│   ├── __init__.py
│   ├── dev_settings.py
│   ├── production_settings.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── options																					选项或设置应用
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_auto_20180501_0436.py
│   │   ├── 0003_migrate_languages_options.py
│   │   └── __init__.py
│   ├── models.py
│   ├── options.py
│   ├── tests.py
│   └── views.py
├── problem																					题目应用
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_problem__id.py
│   │   ├── 0003_auto_20170217_0820.py
│   │   ├── 0004_auto_20170501_0637.py
│   │   ├── 0005_auto_20170815_1258.py
│   │   ├── 0006_auto_20170823_0918.py
│   │   ├── 0008_auto_20170923_1318.py
│   │   ├── 0009_auto_20171011_1214.py
│   │   ├── 0010_problem_spj_compile_ok.py
│   │   ├── 0011_fix_problem_ac_count.py
│   │   ├── 0012_auto_20180501_0436.py
│   │   ├── 0013_problem_io_mode.py
│   │   ├── 0014_problem_share_submission.py
│   │   └── __init__.py
│   ├── models.py
│   ├── serializers.py
│   ├── tests.py
│   ├── urls
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   └── oj.py
│   ├── utils.py
│   └── views
│       ├── __init__.py
│       ├── admin.py
│       └── oj.py
├── run_test.py
├── submission																				代码提交应用
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_auto_20170509_1203.py
│   │   ├── 0005_submission_username.py
│   │   ├── 0006_auto_20170830_1154.py
│   │   ├── 0007_auto_20170923_1318.py
│   │   ├── 0008_submission_ip.py
│   │   ├── 0009_delete_user_output.py
│   │   ├── 0011_fix_submission_number.py
│   │   ├── 0012_auto_20180501_0436.py
│   │   └── __init__.py
│   ├── models.py
│   ├── serializers.py
│   ├── tests.py
│   ├── urls
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   └── oj.py
│   └── views
│       ├── __init__.py
│       ├── admin.py
│       └── oj.py
└── utils																							工具和辅助功能目录
    ├── __init__.py
    ├── api																						API相关的工具和序列化器
    │   ├── __init__.py
    │   ├── _serializers.py
    │   ├── api.py
    │   └── tests.py
    ├── cache.py																			缓存相关的工具
    ├── captcha																				验证码相关
    │   ├── Menlo.ttc
    │   ├── __init__.py
    │   ├── timesbi.ttf
    │   └── views.py
    ├── constants.py																	常量定义
    ├── management
    │   ├── __init__.py
    │   └── commands
    │       ├── __init__.py
    │       └── inituser.py
    ├── migrate_data.py
    ├── models.py
    ├── serializers.py
    ├── shortcuts.py
    ├── tasks.py
    ├── throttling.py
    ├── urls.py
    ├── views.py
    └── xss_filter.py																		XSS过滤

打开后端项目

使用 PyCharm 打开项目

为了方便,我们使用 PyCharm 打开,首先打开资源管理器:
image.png
找到后端项目所在的位置,右键使用 PyCharm 打开:
image.png
image.png
image.png
image.png

创建虚拟环境

先打开命令行:
image.png
输入以下命令创建并使用虚拟环境:

python3 -m venv .venv && source .venv/bin/activate

image.png

解释器配置

image.png
image.png
image.png
image.png
image.png
两个选一个,一个不行就换一个。
image.png
image.png

安装依赖

pip3 install -r deploy/requirements.txt

image.png
等待安装完成即可。
更新一下重新安装就行了,比较慢的话可以实用 pip 镜像源:
pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

-i https://pypi.tuna.tsinghua.edu.cn/simple

image.png
image.png

数据库配置

查看数据库配置

打开 oj 目录,dev_settings.py 中有数据库的配置:
image.png
数据库名、用户、密码均是:

onlinejudge

端口是:

5435

数据库创建

打开宝塔面板,添加一个数据库:
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

数据库连接

切回 PyCharm:
image.png
image.png
image.png

初始化数据库

python3 manage.py migrate

image.png
但是有个问题:
image.png
创建一个 secret.key,就可以执行了:
image.png
刷新数据库,就可以看见数据库已经建表了:
image.png

运行项目

输入:

python3 manage.py runserver

可以看见已经运行了,地址为:

http://127.0.0.1:8000/

image.png
将这个地址放到前端工程里,就可以了

export TARGET=http://127.0.0.1:8000/

与前端搭配成功:
image.png

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值