Sharif Judge × OpenCV 4.0.1 연동 사용기 – Part 1

설치를 해보자

Sharif Judge는 온라인 채점 프로그램을 Web과 Bash 코드로 구현한 Application이다. 모 교수님이 이걸로 채점을 하고 계신다지 실제로 써보면 백준과 비슷하다. 다만 간단하게 과제 풀이 형식으로만 되어있고, 언어도 Python2/3, Java, C, C++ 이렇게만 지원한다. 정말 과제 내기엔 딱좋은 어플리케이션이다…

준비물

맨땅에 헤딩

먼저 필요한 패키지를 설치하는 것부터 시작해보자. 여기서는 Ubuntu 18.04에 PHP 7.2를 사용한다.

sudo apt-get install apache2 libapache2-mod-php7.2 \
    php7.2 php7.2-mysql mysql-server mysql-client

다음은 MySQL 서버를 세팅해보자. mysql_secure_installation을 사용하여 기본적인 권한 세팅을 해주자.

sudo mysql_secure_installation

그런데 이제 mysql에 root계정으로 접속하려니까 안된다. 알아보니 MySQL 5.7 이상으로는 기본적으로는 root 계정 접속에 auth_socket 플러그인이 활성화되어있는데, 비밀번호 없이 socket으로 로그인하는 플러그인이다. 우리는 기존 legacy한 방법(패스워드 로그인)으로 변경을 해보자.

$ sudo mysql -uroot -p
> SELECT User,Host FROM mysql.user;
> ALTER USER "root"@"localhost" IDENTIFIED BY "<password>";

이제 마음껏 로그인할 수 있을것 같다. Sharif Judge가 사용할 수 있도록 데이터베이스와 여기에 접근하는 별도의 사용자를 만들자(보안상의 이유로).

$ mysql -uroot -p
> CREATE DATABASE sharif;
> CREATE USER "sharif"@"localhost" IDENTIFIED BY "<sharif-password>";
> GRANT ALL PRIVILEGES ON sharif.* TO "sharif"@"localhost";

DB 세팅은 끝났지만, 아직 한국에 최적화(?)되어 있지 않다. 유니코드를 기본 charset으로 설정해보도록 하자.

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
i (입� � 모드)
... 40번째 줄
character-set-server = utf8
... 추가 후
ESC (명� � 모드)
:wq! (강� � � �장후 종료)
$ sudo service mysql restart

이제 DB 세팅은 끝났다. sharif-judge를 설치해보도록 하자.

wget https://github.com/mjnaderi/Sharif-Judge/archive/v1.4.1.tar.gz
tar xzf v1.4.1.tar.gz
sudo cp -R Sharif-Judge-1.4.1/ /var/www/
cd /var/www/
sudo rm -rf html/
sudo mv Sharif-Judge-1.4.1 html
sudo chown www-data:www-data -R html/

다운로드와 압축을 풀었다면, 설정 파일을 수정해 DB와 연결하도록 하자.

$ sudo vi /var/www/html/application/config/database.php
i (입� � 모드)
... 86번째 줄
        /*  Enter database connection settings here:  */
        'dbdriver' => 'mysqli',     // database driver (mysqli, postgre)
        'hostname' => 'localhost',  // database host
        'username' => '',           // database username
        'password' => '',           // database password
        'database' => '',           // database name
        'dbprefix' => 'shj_',       // table prefix
        /**********************************************/
... 수� � 후
ESC (명� � 모드)
:wq! (강� �로 � �장 후 닫기)

헤딩도 쉬어가면서

Part 1에서는 MySQL, Apache2, PHP7.2를 설치하고, MySQL을 설정 완료하고 Sharif Judge까지 세팅해두었다. Apache2와 PHP.2는 따로 세팅이 필요하지 않으므로 스킵-

다음 Part2에서는 Sharif Judge의 Installation을 진행하고, 거기에 OpenCV를 연동하는 고난작업을 해보도록 하자.