题库
比赛
近期比赛
排名
话题
在线编译器
登录
话题
写新话题
Ubuntu 如何安装HappyOJ
HappyOJ
发布于
7 个月前
19936
0
999
happyoj
## Table of contents * [安装jdk](#安装jdk) * [安装mysql和创建数据库](#安装mysql和创建数据库) * [部署OJ网站](#部署OJ网站) * [部署OJ判题核心](#部署OJ判题核心) * [提交代码](#提交代码) * [常用定位方法](#常用定位方法) * [高级配置](#高级配置) ## 安装jdk 下载jdk 8(建议版本) root@7d4e36f7b916:/home/web# wget https://happyoj.com/data/jdk-8u361-linux-x64.tar.gz root@7d4e36f7b916:/home/web# tar zxvf jdk-8u361-linux-x64.tar.gz 配置jdk环境变量: root@7d4e36f7b916:/home/web# vim /etc/profile 配置java环境,在最后增加如下内容,注意路径正确 export JAVA_HOME=/home/web/jdk1.8.0_361/ export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin 使环境变量生效: root@7d4e36f7b916:/home/web# source /etc/profile ## 安装mysql和创建数据库 ubuntu安装mysql root@7d4e36f7b916:/home/web# apt-get install mysql-server 设置密码 root@ip-172-31-7-84:/home/ubuntu# mysql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpwd'; FLUSH PRIVILEGES; 修改sql模式: root@ip-172-31-7-84:/etc/mysql/mysql.conf.d# vim mysqld.cnf sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION ![1699179303414.png](/upload/image/20231105/20231105181503_CA9B5D211A3FE22070965D22DB25B69E.png) 重启mysql root@ip-172-31-7-84:/home/ubuntu# service mysql restart ![1699155387287.png](/upload/image/20231105/20231105113627_9838B82285ACA0B59CFB7E29369DE7BE.png) 下载oj数据库结构文件: root@7d4e36f7b916:/home/web# wget https://happyoj.com/data/gdoj_struct.sql 创建和导入数据库gdoj: root@7d4e36f7b916:/home/web# mysql -uroot -prootpwd -e "CREATE DATABASE gdoj DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" root@7d4e36f7b916:/home/web# mysql -uroot -prootpwd gdoj < gdoj_struct.sql 如果希望能远程访问mysql,需要取消127.0.0.1地址绑定,然后更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%",重启mysql生效 use mysql; update user set host = '%' where user = 'root'; select host, user from user; FLUSH PRIVILEGES; ![1699156026520.png](/upload/image/20231105/20231105114706_7CEF1EFA21446C9A0B2FFBBC1AC1E39D.png) ![1699155518959.png](/upload/image/20231105/20231105113839_28F5AE791CEF932EA0DB6F1A67171670.png) ## 部署OJ网站 1. 下载最新版本的oj运行包 root@7d4e36f7b916:/home/web# wget https://happyoj.com/data/oj-2.0.4.jar 2. 运行如下命令调试启动oj web程序: 注意config相关目录参见“部署OJ判题核心”章节要求 java -Xms128m -Xmx512m -jar oj-2.0.4.jar --server.port=80 --server.redirect-https-enable=false --server.ssl.enabled=false --config.encode=utf-8 —config.judgerIp=127.0.0.1 —config.ojPath=/home/ubuntu/code/web/OJ/ —config.dataPath=/home/ubuntu/code/web/OJ/data/ —config.judgeLogPath=/home/ubuntu/code/web/OJ/logfile/judge_log/ —config.templatePath=//home/ubuntu/code/web/OJ/conf/code_template/ —config.configFile=/home/ubuntu/code/web/OJ/conf/config.json --spring.datasource.url=jdbc:mysql://127.0.0.1:3306/gdoj?useUnicode=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&useSSL=false 建议后台方式运行oj网站: nohup java -Xms128m -Xmx512m -jar oj-2.0.4.jar --server.port=80 --server.redirect-https-enable=false --server.ssl.enabled=false --config.encode=utf-8 —config.judgerIp=127.0.0.1 —config.ojPath=/home/ubuntu/code/web/OJ/ —config.dataPath=/home/ubuntu/code/web/OJ/data/ —config.judgeLogPath=/home/ubuntu/code/web/OJ/logfile/judge_log/ —config.templatePath=//home/ubuntu/code/web/OJ/conf/code_template/ —config.configFile=/home/ubuntu/code/web/OJ/conf/config.json --spring.datasource.url=jdbc:mysql://127.0.0.1:3306/gdoj?useUnicode=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&useSSL=false & 注意:如果数据库是独立部署的记得修改数据库的ip: 如:![1699155982325.png](/upload/image/20231105/20231105114622_02F7A554C1DCCC0FB42276E5E9230F2D.png) 可以编辑一个oj-startup.sh文件,方便以后运行: root@ip-172-31-2-166:/home/ubuntu/code/web# source ./oj-startup.sh ![1699155934924.png](/upload/image/20231105/20231105114535_E171C61E6B42107C228D47EBF85A19E2.png) 到这里web端我们已经部署OK了。 3. 访问OJ 数据库里有默认的A+B题目,默认的administrator超级用户(密码administrator) ![1699155154533.png](/upload/image/20231105/20231105113234_79B0B56CED74F4CE4DCDB8BE51E7C6B1.png) ## 部署OJ判题核心 安装判题程序的程序语言编译环境,如gcc/java等,我这里已经ok。 ![1699161167534.png](/upload/image/20231105/20231105131247_904E90027A2D9BEE934DAE3EFBF80CB6.png) 下载oj判题核心并解压: root@7d4e36f7b916:/home/web# wget https://happyoj.com/data/oj-kernel-v1.1.330.tar.gz root@7d4e36f7b916:/home/web# tar zxvf oj-kernel-v1.1.330.tar.gz ![1699159172924.png](/upload/image/20231105/20231105123933_EF09F4146D482341518D2C1BF6515DF5.png) oj web端启动项增加配置,以便与oj-kernel对接(前面已经配置过了,目录要这正确) --config.judgerIp=127.0.0.1 --config.ojPath=/home/ubuntu/code/web/OJ/ --config.dataPath=/home/ubuntu/code/web/OJ/data/ --config.judgeLogPath=/home/ubuntu/code/web/OJ/logfile/judge_log/ --config.templatePath=//home/ubuntu/code/web/OJ/conf/code_template/ --config.configFile=/home/ubuntu/code/web/OJ/conf/config.json ![1699161026354.png](/upload/image/20231105/20231105131026_AB640AE1AF8AEAA9A0DFE9224389109B.png) 先kill掉java,并重启oj web端: ![1699163260350.png](/upload/image/20231105/20231105134741_5C8744EC132C74889EA1E80E8AB6B4C7.png) ![1699159131225.png](/upload/image/20231105/20231105123851_B3C6701601FCEE7605AFCD8FC392870D.png) 配置oj-kernel: 1)配置数据库地址,编译环境等: 配置编译参数等:可以从这里拷贝最新的配置 https://gitee.com/jungle/online-judge/blob/master/judger-kernel/release/conf/config.json# 进入admin界面进行配置,或者直接修改 ![1699162171619.png](/upload/image/20231105/20231105132931_A460609F2C095664DC7400F137337D3E.png) ![1699159971744.png](/upload/image/20231105/20231105125252_671BE2D9400E72B6DED8DD908BB1F2C5.png) ![1699160015568.png](/upload/image/20231105/20231105125335_37D89F2D6D4A6C29C2CB90B73B537CF5.png) ![1699162237956.png](/upload/image/20231105/20231105133038_FBAB91E38A1C23BF557E92E435DD2D4C.png) 2)启动oj-kernel 后台方式运行nohup ./judger & ![1699160053380.png](/upload/image/20231105/20231105125413_433D617A1110B92B7E7C7DB26614088F.png) 当然,我们也可以直接运行,用于调试使用或者进行judger-kernel高阶配置: ![1699160257479.png](/upload/image/20231105/20231105125737_290F4F338D90868828F58514B2DCDF0E.png) 3)检查启动状态OK ![1699160094947.png](/upload/image/20231105/20231105125455_1174EE32EFDC6451272B5E54E48F2885.png) ## 提交代码 先调试一下 ![1699161560918.png](/upload/image/20231105/20231105131921_1205A6CDC8BFD613BDD5E1EFC52CAC2B.png) 运行成功 ![1699161589143.png](/upload/image/20231105/20231105131949_48501975A751924ECC53337D89DC5811.png) 更换java语言试试: ![1699162451110.png](/upload/image/20231105/20231105133411_3D0ABB30902D7F7C67B4AF137F42F670.png) 去提交代码: ![1699161806103.png](/upload/image/20231105/20231105132326_1FBBBE781050F45EE2217ABF8FC33FCA.png) 提交成功,并通过了: ![1699161826140.png](/upload/image/20231105/20231105132346_9C2339601A7E76958F3434A481E56772.png) ## 常用定位方法 查看web端日志: ![1699160445076.png](/upload/image/20231105/20231105130045_B8AC1C63AE0EE5691968B91B368AD8E9.png) 进入judger核心debug和查询数据: ![1699160557436.png](/upload/image/20231105/20231105130237_CC052662DD59EC055BF463CC34455BC0.png) ![1699162562336.png](/upload/image/20231105/20231105133602_A67AD8A79F35266017A1F3B18F0DFA5D.png) ## 高级配置 更多配置未来得及写成文档,大家先摸索吧~ 1. 第三方账号(github/gitee)登陆 2. 动态增加编译语言环境 3. 采集第三方OJ比赛列表 4. windows平台部署 5. https方式部署 6. 配置归属地IP地址库 。。。 这里以ubuntu举例安装方法 如有其他问题,可以在该文档后面留言
回复话题
Twitter
Hot Tags
dfs
22
implementation
19
dp
15
蓝桥
14
string
11
math
11
big number
10
number theory
9
combinatorics
9
happyoj
5
springboot
4
brute force
4
javascript
3
bfs
3
greedy
3
如梦令
3
divide and conquer
2
linux
2
Copilot
2
graph
2
probabilities
2
sortings
2
data structures
2
xor
2
python
1
telnetlib
1
cron
1
题解
1
docker
1
https
1
→
Top10
南柯
2023
cxlove
1970
vainner
1763
4
1000310428赵成帅
1718
5
XiaoWen
1710
6
1000380213洪伟焕
1701
7
weiben
1684
8
Jungle.Wei
1678
9
1100310131曾翔宇
1664
10
hongwh
1653
→
Topics
vbox Ubuntu无界面动态扩展磁盘空间
###问题:磁盘创建时时动态扩展方式,现在空间已经不足,却没有自动扩展生效磁盘空间
Problem A + B
略微有单简单
python 使用telnetlib登陆telnet服务器
```python
你好,请问如何在Windows下架设WEB?
大大你好,我是一个小白。
Python + openCV去除图片中红色字体
Github Copilot在代码检视内存泄漏上的能力
## 我给了一个带出参的由内存申请的函数,它能够识别函数内没有泄漏,但是需要提醒我调用者有没有释放内存,还是不错。
使用Github Copilot辅助开发的一些感受
## 我先选择了一段比较简单的代码,发现它给出的解释实际上就是代码本身自注释到的
Ubuntu 如何安装HappyOJ
## Table of contents
@Scheduled注解实现启动时延时60秒执行一次定时任务,后续按照cron定义的计划执行
最近遇到一个问题,通过springboot Scheduled定时调度,在启动时就会执行定时任务,导致启动性能较差。
【JS】JS设置粘贴板内容的方法
方法1:
→