[온라인저지] Online Judge 시스템 구축 (HUST OJ) - Ubuntu 18.04 (2022)

Seohyun-kim·2022년 8월 12일
0

Online Judge System

목록 보기
1/9
post-thumbnail

사용 OS: Ubuntu 18.04 server


1. 오픈소스

아래 오픈소스를 기반으로 한다.

HUST OJ 오픈소스 Github
https://github.com/zhblue/hustoj



2. 지원하는 Ubuntu version

현재(2022-08) 기준, 최신 master brach에 있는 버전 목록이다.

  • 우분투의 경우 18.04, 20.04, 22.04 세 가지 경우에 대해 지원하고 있고

  • 보아하니 centos나 debian 등등의 계열도 지원하고 있는 듯하다.

  • 그 이전 버전의 경우는 커밋 기록 따라서 찾아서 가면 된다. 우분투 14.04 ~ 20.04



3. git clone

  • git이 설치되지 않았다면
    $ sudo apt install git 
  • 최신 레파지토리 복사
	$ git clone https://github.com/zhblue/hustoj
  • 이전 버전이 필요하다면 이전 커밋 기록 들어가야함


4. install

  • clone 한 파일의 install 디렉토리로 경로 이동
	$ cd ~(생략)~/hustoj/trunk/install


  • 내 버전에 맞는 .sh 파일을 실행해주면 설치가 시작된다.
	$ bash ./install-ubuntu16+.sh

  • 좀... 오래걸린다..!

  • 사진 찍어둔 건 없지만
    이런 비슷한 QR코드 같은 문양이 나오면 설치가 다 됐다는 소리!

  • /home 아래에 judge 라는 이름의 디렉토리가 생성된다.


5. 접속 확인

  • 설치가 잘 됐다면 judge 데몬이 돌아가고있는 상태일 것이다.

  • 브라우저 접속을 통해 확인해보자!

    • 일단 나는 Ubuntu server로 설치해서 GUI가 없다.
    • 그래서 CLI 환경의 브라우저인 links를 통해 확인해 볼 것이다.
    • links 설치
      $ sudo apt install links
    • localhost 접속
      $ links 127.0.0.1

  • GUI로 쓰고 있다면 그냥 브라우저 들어가서
    127.0.0.1 이라고 치면 아래와 같은 화면이 잘 나온다~


6. db info 수정

  • 언어 변경
    • 초기에 나는 영어로 되어있었다.
    • 경로 이동
        $ cd /home/judge/src/web/include
    • db_info.inc.php 파일 편집기로 열기
        $ nano db_info.inc.php
    • OJ 이름, 언어 등을 변경
      참고로 한국어는 'kr'이 아니라 'ko'다!


7. 관리자 계정 만들기

7.1 일단 계정을 하나 만들어 준다.

  • localhost 접속해서

  • Register 들어가서 정보 입력

  • * 붙은 필수 항목만 입력해주면 된다.


7.2 관리자 권한 부여

  • db는 mysql을 사용하고 있는 듯하다.

  • 별도의 설치과정없이 아까 설치 잘 됐다면 잘 알아서 되어있을것이다.


  • mysql root로 접속
    $ mysql -u root -p


  • jol database에 접근
    > use jol;


  • 관리자 계정 table인 privilege 에 방금 만든 user를 추가
> INSERT INTO privilege(user_id, rightstr) VALUES('아이디, 'administrator'); 

  • 다음과 같이 추가될 것이다.

  • 그리고 로그인을 해 보면 admin 탭이 하나 생겨있을 것이다.


8. 문제 만들기

8.1 문제 등록

  • 관리자 탭 들어가보면 아래와 같은 화면이 나온다.
  • 문제 등록(add-problem) 클릭

  • 문제 내용을 입력

8.2 테스트 케이스 추가

  • 테스트 케이스를 추가하고자 하면 아래에서 .in 과 .out 파일을 만들어주면 된다.

8.3 문제 공개 여부 설정

  • 문제를 만들었으면 다음과 같이 Reserved 되어있는 상태일 것이다.

  • 안내와 같이 클릭해주면 초록색 Available로 바뀐다.

  • Available로 된 문제는 문제 리스트에서 확인 가능하고, 일반 사용자 계정이 접근이 가능하다.

  • 만들어 둔 문제리스트가 화면에 잘 보인다.


8.4 모든 사용자가 제출한 status 확인

  • 어떤 사용자가 어떤 문제를 언제 풀었는지 확인 가능하다.

0개의 댓글