아직미분류2011. 4. 24. 00:54

얼마 전에 hustoj를 설치했다. 아주 최근에 설치한 것은 아니고, 얼마 전에 설치한 것이라 최신 버전과 다른 부분도 있겠지만 많이 다르지는 않을 것이다. 우분투 리눅스 기준으로 설명했지만, 패키지 설치 방법만 제외하면 다른 리눅스라도 거의 비슷할 것이다.
http://code.google.com/p/hustoj/

제 1 단계: 패키지 설치

install.sh에 패키지 설치 코드가 있지만, 사용 환경에 따라서 이게 잘 안 될수도 있다. 예를 들면, 사용 환경에 svn이 없으면 설치 스크립트의 제일 처음에 나오는 svn checkout부터 안 될 수가 있다. 패키지를 설치하려면 subversion도 설치했어야 하는 거 아닌가? 그리고 인스톨 스크립트에 apt-get하고 yum이 같이 적힌 이유도 잘 모르겠다.

$ sudo apt-get update
$ sudo apt-get install subversion
$ sudo apt-get install g++ libmysql++-dev php5 apache2 mysql-server php5-mysql

제 2 단계: mysql 계정 만들기

일단 mysql 계정을 하나 만드는 것이 좋다. 쓸데 없이 root 계정을 쓰는 것은 보안상 안 좋을 수도 있으니까. 그리고 기본적으로는 jol 데이타베이스를 쓰도록 되어 있지만, 필요에 따라 데이타베이스를 다른 이름으로 해야하는 경우도 있다.

$ mysql -uroot -p
Enter password: (암호 입력)
mysql> set names utf8;
mysql> create database my_oj;
mysql> grant usage on *.* to 'db_id' identified by 'db_password';
mysql> grant all on my_oj.* to 'db_id';

제 3 단계: judge 계정 생성

채점 데몬이 실행되는 계정을 만들어야 한다. 사실, install.sh를 보면 계정 생성 명령이 있지만, uid가 겹쳐서 문제가 되는 경우도 있을 수 있다. 그러므로 안전하게 직접 설치하는 방법을 택하자. 여기서 uid를 무엇으로 하든, 그 uid가 뭔지는 알아야 한다. 사실 1536 말고 다른 uid는 안 써봤는데, 만약 uid까지 달라지면 소스 코드를 수정해야 하므로 매우 귀찮아진다. (소스 파일에서 setuid나 setresuid 부분을 수정해야 한다.)

$ sudo useradd -m -u 1536 judge

제 4 단계: 데이타베이스 테이블 생성

먼저 db.sql을 편집기로 열고 jol을 찾아서, my_oj로 고치자. 자칫 잘못하면 가장 위의 두 줄만 수정하고 넘어가기 쉬운데, 파일 아래쪽에도 jol이 등장하니 찾아서 전부 고쳐야 한다.

  • Line 2: 주석처리.
  • Line 3: use my_oj;
  • Line 295
  • Line 298

편집이 잘 된 것 같으면, "mysql -u$ID -p < db.sql"를 실행하자. ($ID는 적절히 대체.)

제 5 단계: 본격적인 설치

먼저 judge.conf를 열고 적절히 고치자.

  • OJ_HOST_NAME은 알아서 고치자.
  • OJ_USER_NAME, OJ_PASSWORD는 mysql 계정이다.
  • OJ_DB_NAME은 제 4 단계에서 생성한 것으로 고치자.
  • OJ_SIM_ENABLE은 코드 유사도 적발 기능이 필요한 경우 1로 하면 된다.

이제 install.sh를 편집기로 열고, 고쳐야 할 것들을 찾아서 고쳐야 한다.

  • 앞선 단계에서 이미 처리한 명령은 주석처리하자.
  • WEBBASE를 적절히 수정하자. 우분투 기본 설정에서는 수정할 필요가 없다.
  • DBUSER, DBPASS를 수정하자.
  • Line 24에 "cd ../.."을 추가해서 make 이후에 원래 경로로 돌아오도록 고치자.
  • 곳곳의 chown, chgrp 명령에서 www-data는 배포판에 따라 알맞게 수정하자.
  • 혹시, 제 3 단계에서 다른 계정명을 생성했다면, 알아서 적질히 고치자.

이제 드디어 "./install.sh"를 하면 된다.

제 6 단계: php 파일 고치기

이제 "/var/www" 디렉토리로 이동하자. 그리고 "JudgeOnline" 디렉토리를 마음에 드는 이름으로 고치고, 그 안으로 이동하자. 여기서 "./include/db_info.inc.php"를 열어 보면 설정할 것들이 남아 있다. 가장 중요한 설정만 적으면 다음과 같다.

static $DB_HOST="127.0.0.1";
static $DB_NAME="my_oj";
static $DB_USER="db_id";
static $DB_PASS="db_password";
static $OJ_NAME="My OJ";
static $OJ_HOME="http://server/path";
static $OJ_ADMIN="mail@server";
static $OJ_DATA="/home/judge/data"; // 혹시 계정명을 다르게 한 경우 수정.
static $OJ_LANG="ko"; // 한국어를 기본으로 한다.
static $OJ_SIM=true; // 카피 적발 기능.
static $OJ_DICT=false; // 이상한 사전이므로 제거하자.

그리고 필요에 따라 아파치 서버를 재시작하고 접속해서 테스트해보자.

다음 글에서 계속: 
2011/04/24 - [분류 전체보기] - hustoj 설치 (2)

hustoj 관련 다른 글
2011/04/24 - [분류 전체보기] - hustoj에서 일부 언어만 허용 (LANGMASK)
2011/04/24 - [분류 전체보기] - hustoj 기타 수정

Posted by asdfzxcv