题目列表
提交状态
比赛
近期比赛
排名
话题
在线编译器
登录
话题
写新话题
Ubuntu 如何安装HappyOJ
HappyOJ
发布于
7 个月前
19506
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
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
→
Hot Tags
dfs
22
implementation
19
dp
14
蓝桥
13
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
→
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:
→