리눅스 서버, 그 첫 번째 이야기 | 알고리즘 대회 운영을 위한 CMS 설치  By junukwon7

Language :

이 글은 언어로 작성되어 있습니다.
사용하실 언어를 선택하십시오.

This post is written in Language.
Select the language you want to use.

この文は言語で作成されています。
使用する言語を選択してください。


현재 한국에서 이루어지고 있는 대부분의 정보과학 대회등은 Competitive Programming과 가까운 경우가 많고, 이를 가장 효과적으로 대비하는 방법 중 하나는 실제로 대회에 참가하여 보는 것이다. 이를 위해 대회를 열어보자.

 

CMS 소개

 

대표적인 대회 운영 시스템인 CMS는 KOI, IOI 등 정보올림피아드들이 이용하는 오픈소스 대회 시스템이다. 굉장히 강력하고, Contest 페이지와 Admin 페이지가 완벽하게 분리되어 있다는 특성이 있다.

 

 

PS러들에게는 많이 익숙한 화면일 것이다.

 

자세한 정보는 누구나 아래 링크에서 확인할 수 있다.

http://cms-dev.github.io/

 

CMS :: Main

CMS :: Main Contest Management System CMS, or Contest Management System, is a distributed system for running and (to some extent) organizing a programming contest. CMS has been designed to be general and to handle many different types of contests, tasks, s

cms-dev.github.io

 

메인 페이지에서 볼 수 있듯이, 현재 1.4.1이 안정화 버전이며 1.5가 개발 중인 버전으로, 회원 가입 등 새로운 기능들이 추가되었다. 정말 중요한 대회를 열고, 수많은 접속자들을 다룰 것이 아니라면 1.5를 이용해도 괜찮을 것이다. 따라서 이 글은 1.5 버전을 기준으로 작성한다.

 

CMS 운영을 위한 준비물은 다음과 같다.

  • 4코어 이상의 CPU, 4GB 이상의 RAM을 가진 컴퓨터와 sudo 계정
  • Ubuntu 20.04
  • 인터넷 환경. (또는 아래 설치 과정에서 필요한 모든 패키지가 설치된 컴퓨터)

 

지금 당장 설치해 주세요. 현기증 난단 말이에요!

 

만약 지금 이 글을 읽는 당신이 숙련된 리눅스 사용자가 아니라면, 저자는 사용자가 우분투 서버에 cms를 직접 설치하면서 terminal과 친숙해지고 cms의 구조를 익히기를 바란다. (그리고 직접 굴러보기를 바란다)

 

만약 이미 숙련되었거나 설치가 급하다면, 경기과학고등학교 정보교사 전현석 선생님과 37기 권준우 학생이 GitHub CSL에 만들어 놓은 설치 스크립트가 있다.

 

sudo 권한이 있는 계정으로, 아래 두 명령어를 차례로 실행한다.

wget https://raw.githubusercontent.com/melongist/CSL/master/CMS/cms150dev1.sh
bash cms150dev1.sh
wget https://raw.githubusercontent.com/melongist/CSL/master/CMS/cms150dev2.sh
bash cms150dev2.sh

 

이후 CMS 운영(추가 예정) 글로 직행하면 된다.

 

 

이하는 직접 자신의 예쁜 서버에 CMS를 설치하기로 마음먹은 용사들을 위한 글이다.

 

사전에 필요한 패키지 설치

 

CMS를 돌리기 위해서 서버에 미리 설치해야 할 것들이 있다. 다음 명령어를 실행하면 된다. (대부분의 경우, 모두 한번에 붙여 넣어도 무방할 것이다.)

sudo apt update
sudo apt -y upgrade
sudo apt -y autoremove

sudo apt -y install build-essential
sudo apt -y install openjdk-11-jdk-headless
sudo apt -y install fp-compiler
sudo apt -y install postgresql
sudo apt -y install postgresql-contrib
sudo apt -y install postgresql-client
sudo apt -y install python3.8
sudo apt -y install cppreference-doc-en-html
sudo apt -y install cgroup-lite
sudo apt -y install libcap-dev
sudo apt -y install zip

sudo apt -y install python3.8-dev
sudo apt -y install libpq-dev
sudo apt -y install libcups2-dev
sudo apt -y install libyaml-dev
sudo apt -y install libffi-dev
sudo apt -y install python3-pip

sudo apt -y install nginx-full
sudo apt -y install python2.7
sudo apt -y install php7.4-cli
sudo apt -y install php7.4-fpm
sudo apt -y install phppgadmin
sudo apt -y install texlive-latex-base
sudo apt -y install a2ps
sudo apt -y install haskell-platform
sudo apt -y install rustc
sudo apt -y install mono-mcs

sudo apt -y install fp-units-base
sudo apt -y install fp-units-fcl
sudo apt -y install fp-units-misc
sudo apt -y install fp-units-math
sudo apt -y install fp-units-rtl

sudo apt install -y python3-setuptools
sudo apt install -y python3-tornado
sudo apt install -y python3-psycopg2
sudo apt install -y python3-crypto
sudo apt install -y python3-sqlalchemy
sudo apt install -y python3-psutil
sudo apt install -y python3-netifaces
sudo apt install -y python3-pycryptodome
sudo apt install -y python3-bs4
sudo apt install -y python3-coverage
sudo apt install -y python3-requests
sudo apt install -y python3-werkzeug
sudo apt install -y python3-gevent
sudo apt install -y python3-bcrypt
sudo apt install -y python3-chardet
sudo apt install -y patool
sudo apt install -y python3-babel
sudo apt install -y python3-xdg
sudo apt install -y python3-jinja2

sudo apt install -y python3-yaml
sudo apt install -y python3-sphinx
sudo apt install -y python3-cups
sudo apt install -y python3-pypdf2

 

Github에서 CMS 가져오기

 

원래는 git clone을 이용하는 것이 정상적이지만, 현재 cms-dev/isolate가 clone되지 않는 문제가 있다. 따라서 CSL에서 tar 파일을 가져오고, 압축을 풀자.

wget https://raw.githubusercontent.com/melongist/CSL/master/CMS/cms-master-20201123CSL.tar
tar xvf cms-master-20201123CSL.tar
mv cms-master-20201123CSL cms
cd cms

 

이제, 본격적인 CMS 설치에 앞서 먼저 다음 스크립트를 실행하여 python dependency를 설치하자. 마지막에 Y를 눌러줘야 한다.

sudo python3 prerequisites.py install

 

이제 설치 준비가 끝났다. 혹시 모르니 재부팅을 하자.

sudo reboot

 

CMS 설치

 

cms 디렉토리에서 다음 명령어를 통해 cms 설치를 준비한다. 이 과정은 파이선으로 작동되는 페이지를 웹에 올리기 위해 필요한 것들을 설치한다.

sudo pip3 install -r requirements.txt

 

잘 진행 되었다면 다음 명령어를 통해 cms를 설치한다. 이 과정에서 cms의 각종 명령어들을 binary에 추가한다.

sudo python3 setup.py install

이때 마지막에 add user to group cmsuser?에서 Y를 누르도록 하자.

나중에 다른 계정에서 cms를 운영하게 되면, 다음 명령어를 이용하면 된다.

sudo usermod -aG cmsuser <사용자 이름>

 

이제 CMS의 설치가 완료되었다. 그러나 postgresql과 cms.conf의 connection string을 설정하지 않았기 때문에 CMS를 시작할 수 없다. 이후 내용은 다음 글에서 다루도록 하겠다.

 

 

 

댓글()