Ubuntu 18.04 LTS에서 DOMjudge 5.3.2 설치
1. DOMjudge에 필요한 소프트웨어 설치
1 | sudo apt install -y gcc g++ make zip unzip mysql-server apache2 php php-cli libapache2-mod-php php-gd php-curl php-mysql php-json php-zip php-gmp php-xml php-mbstring bsdmainutils ntp phpmyadmin libcgroup-dev linuxdoc-tools linuxdoc-tools-text groff texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended texlive-lang-european | cs |
관리자 메뉴얼에 나온 명령어에서 php-mcrypt를 제외하고 설치하였다. 19.04 LTS에는 PHP 7.2가 설치되어 있는데 PHP 7.2에서는 php mcrypt가 제거되었다고 한다.(출처: 링크)
다음 명령어를 추가적으로 입력한다.
1 2 | sudo phpenmod json sudo apt install libcurl4-gnutls-dev libjsoncpp-dev libmagic-dev | cs |
다음은 채점에 사용할 컴파일러를 설치한다.
아래 명령어에서 마지막 두줄 gcc g++ ~ fp-compiler 부분을 원하는 언어에 맞는 컴파일러를 설치하면 된다. 아래 예시는 C, C++, Java(OpenJDK), Haskell, Pascal 이다.
1 2 3 4 | sudo apt install make sudo debootstrap libcgroup-dev \ php-cli php-curl php-json php-zip procps \ gcc g++ openjdk-8-jre-headless \ openjdk-8-jdk ghc fp-compiler | cs |
나는 C, C++, Java 언어를 채점할 것이기 때문에, 마지막 두 개는 제외했다.
1 2 3 4 | sudo apt install make sudo debootstrap libcgroup-dev \ php-cli php-curl php-json php-zip procps \ gcc g++ openjdk-8-jre-headless \ openjdk-8-jdk | cs |
여기까지 DOMjudge에 필요한 소프트웨어 설치를 완료했다.
2. 소스 다운로드 및 빌드
DOMjudge 다운로드
1 | wget https://www.domjudge.org/releases/domjudge-5.3.2.tar.gz | cs |
다운받은 파일을 압축해제 한다.
1 | tar -xf domjudge-5.3.2.tar.gz | cs |
압축 해제한 domjudge-5.3.2 디렉토리로 이동하여 소스코드 컴파일 및 설치를 한다.
1 2 3 4 5 6 7 8 9 | cd domjudge-5.3.2/ ./configure --prefix=$HOME/domjudge make domserver && sudo make install-domserver make judgehost && sudo make install-judgehost make docs && sudo make install-docs | cs |
DOMjudge의 domserver와 judgehost 설치 완료
설치를 완료하면 domjudge 디렉토리가 생성되어있다.
3. 데이터베이스 설치
domjudge 디렉토리의 domserver로 이동한 후 데이터 베이스를 설치한다.
1 2 3 | cd domjudge/domserver sudo bin/dj_setup_database -u root -r install | cs |
데이터베이스 설치를 완료하면 다음과 같은 화면을 확인할 수 있다.
4. 웹 서버 설정
DOMjudge는 웹기반 채점 시스템이다. DOMjudge를 운영하기 위한 웹 서버를 설정해야 한다.
etc/apache.conf 파일을 환경에 맞게 수정한다.
1 | sudo vi apache.conf | cs |
나는 DOMjudge를 테스트 하기 위한 목적이기 때문에 apache.conf 파일에서 아래 그림과 같이 일부 주석을 해제하여 사용하였다.
아파치에서 사용할 수 있도록 링크 연결 및 아파치 재시작
1 2 3 4 5 6 7 | sudo ln -s ~/domjudge/domserver/etc/apache.conf /etc/apache2/conf-available/domjudge.conf sudo a2enmod rewrite sudo a2enconf domjudge sudo service apache2 reload | cs |
ln 명령어를 입력할 때, 전체 경로를 제대로 입력해주어야 a2enconf 명령어에서 오류가 발생하지 않는다.
/etc/apache2/conf-available 디렉토리를 보면 제대로 명령어를 제대로 수행하였는지 확인할 수 있다.
<정상 결과>
<잘못된 결과>
domjudge.conf 파일이 빨간색이면 잘못된 것이다.
5. DOMjudge의 domserver 설치 완료
위 과정을 완료한 후 DOMjudge 주소로 접속하면 다음 그림과 같은 메인 화면을 볼 수 있다.
1 | 주소/domjudge/public | cs |
1 | localhost/domjudge/public | cs |
관리자 아이디와 비밀번호인 admin/admin 으로 로그인하면 관리자 페이지로 접속 가능하다.
6. 채점을 위한 judgehost 설치
1 2 | useradd -d /nonexistent -U -M -s /bin/false domjudge-run groupadd domjudge-run | cs |
/etc/default/grub을 편집해야 한다.
에디터를 이용하여 다음과 같이 해당 부분을 수정한다.
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory swapaccount=1" | cs |
수정 후 업데이트 및 재부팅한다.
1 2 | update-grub reboot | cs |
다음 명령어를 입력하여 chroot 설치를 진행한다.
1 | sudo bin/dj_make_chroot | cs |
채점 judgedamon 실행
1 | ./bin/judgedaemon | cs |
데몬을 실행하면 다음 그림과 같이 실행 중인 데몬의 상태를 확인할 수 있다.
7. Example 채점
팀하나를 생성한 후 예제 문제 중 Hello world! 를 출력하는 세번째 문제를 C++, Java를 이용하여 제출해 보았다.
정상적으로 채점하는 것을 확인할 수 있었다.
(작년에 채점 시도했을 땐 Java 언어에서 JVM 메모리 문제로 사용할 수 없었는데, 이번에는 한번에 되었다.)
이상으로 Ubuntu에서 DOMjudge를 설치해 보았습니다.
테스트를 위한 목적으로 메뉴얼을 따라 필수적은 부분만 설정했습니다.
실제 운용을 위해서는 추가적인 설정이 필요합니다.
참고자료
DOMjudge 홈페이지: https://www.domjudge.org
'온라인 저지 > DOMjudge' 카테고리의 다른 글
VMware Workstation + Ubuntu 설치 (0) | 2018.06.18 |
---|