0%

安裝與運作 Contest Management System (ubuntu Desktop 版)

前言

縮寫同樣都是 CMS,Contest Management System 與 Content Management System 的全名僅有一字之差,但功能上卻有很大的不同。

今天要架設的是 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, scorings, etc. Nonetheless, CMS has been explicitly build to be used in the 2012 International Olympiad in Informatics, held in September 2012 in Italy.

安裝過程截圖

以下是在 VirtualBox 的安裝過程截圖(點圖至 Flickr 瀏覽相簿) contestManagementSystem

安裝流程

跟安裝過程截圖的步驟不太一樣,我回顧之後,把整個流程大致分成 3 個階段:

  1. 第一階段,多半是在 Terminal 下指令就可以搞定。(下面的紀錄中,我使用 gedit 編輯 cms.conf 才跳出 Terminal,如果選用 vim 編輯,那就可以持續待在 Terminal 裡)
  2. 第二階段,絕大部分是用 Web Browser 做完後續的設定。
  3. 第三階段,算是一個小 Lab,這個 Lab 可以測試能不能從其他的電腦主機,登入同一區域網路裡,我們所安裝、設定與開始運作的 CMS。

第一階段

wget https://github.com/cms-dev/cms/releases/download/v1.4.rc1/v1.4.rc1.tar.gz

tar xvf v1.4.rc1.tar.gz

cd cms

sudo apt update

sudo apt install build-essential openjdk-8-jdk-headless fp-compiler postgresql postgresql-client python3.6 cppreference-doc-en-html cgroup-lite libcap-dev zip python3.6-dev libpq-dev libcups2-dev libyaml-dev libffi-dev python3-pip python3-setuptools python3-tornado python3-psycopg2 python3-sqlalchemy python3-psutil python3-netifaces python3-crypto python3-six python3-bs4 python3-coverage python3-mock python3-requests python3-werkzeug python3-gevent python3-bcrypt python3-chardet patool python3-babel python3-xdg python3-future python3-jinja2 python3-yaml python3-sphinx python3-cups python3-pypdf2

//python3 的相關套件很多。
//如果想要方便的話,比較建議可以用複製貼上的方式服用。

sudo python3 prerequisites.py install

sudo reboot

cd cms

sudo python3 setup.py install

sudo su - postgres

createuser –username=postgres –pwprompt cmsuser //這個「設定密碼」等一下會用到。

createdb –username=postgres –owner=cmsuser cmsdb

psql –username=postgres –dbname=cmsdb –command=’ALTER SCHEMA public OWNER TO cmsuser’

psql –username=postgres –dbname=cmsdb –command=’GRANT SELECT ON pg_largeobject TO cmsuser’

exit

cd /usr/local/etc/

ls

sudo vim cms.conf //如果沒有先安裝 vim 套件,也可以跟截圖下一樣指令:sudo gedit cms.conf。 //重點是記得用剛才「設定密碼」把 your_password_here 置換掉。

cmsInitDB

cmsAddAdmin [name/帳號名稱] //[name/帳號名稱] 的意思是給即將要新增的 Admin 一個名字,在這裡我的命名是:cmsadmin。 //下完指令後,請記下新增 Admin 後系統給的密碼,等會兒就會用到。 //也可以直接下指令,指定一個自己認為好記的密碼:cmsAddAdmin -p [password/密碼] [name/帳號名稱]

cmsLogService

cmsAdminWebServer

第二階段

開啟 Web Browser,在網址列打 http://localhost:8889 進入 Admin 頁面。

使用第一階段新增的 Admin 帳號、密碼登入。

新增 Contest。

新增 User。

選擇加入 Contest 的 User。

回到 Terminal,執行 cmsResourceService -a。

開啟 Web Browser,在網址列打 http://localhost:8888 進入 Contest 的首頁。

第三階段

sudo apt install net-tools //我習慣下 ifconfig 這道指令,而 ubuntu 的 Desktop 通常要另外安裝。

ifconfig -a //看一下自己設定的 IP 是什麼,本次的例子所顯示的是 192.168.56.101。

從另外一部電腦,去 ping 一下 CMS Server 的 IP 看看。

從另外一部電腦,用 Web Browser 登入設定好的 CMS Server 試試看,本例為 http://192.168.56.101:8888

後記

  1. Contest Management System
  2. Welcome to CMS’s documentation! — CMS 1.4.rc1 documentation
  3. 本次紀錄所使用的是在 VirtualBox 上安裝的 ubuntu 18.04.6 LTS Desktop,如果不是很有把握,我也滿建議先在 VirtualBox 嘗試看看。
  4. 滿建議使用 ubuntu Server 版本,並且在上頭安裝 SSH,以遠端登入的方式,完成 CMS Server 的安裝與相關設定,這一次,我是安裝完 Desktop 版本之後,才再安裝 SSH 充當 Server 使用。 connecttoMyCMSServerwithSSH