2017年2月7日 星期二

在 Ubuntu 16.04 上安裝 Domjudge 5.1.2 的幾個注意事項

在 Ubuntu 16.04 上安裝 Domjudge 5.1.2 的時候,會遇到 "domserver 上的 domjudge 資料庫未完整建立" 以及 "judgehost 上的 chroot 環境未完整建立" 等二個問題。解法如下:

1. 在 domserver 上建立 domjudge 資料庫:
這個問題出在 Ubuntu 16.04 上的 MySQL (Ver 14.14 Distrib 5.7.17) 採用了較嚴格的資料篩選
原則,使得 "/opt/domjudge/domserver/bin/dj-setup-database -u root -r install" 指令無法成功執行完畢 (停止在匯入日期錯誤!)。

解法的方法是在執行 "/opt/domjudge/domserver/bin/dj-setup-database -u root -r install" 之前,先修改 "/etc/mysql/mysql.conf.d/mysql.cnf" 的內容,在 [mysqld] 的下方加入一行 "sql_mode=",用以抑制 MySQL 的嚴格篩選原則,如下。
[mysqld]
sql_mode=
存檔後,重新啟動 MySQL 服務,使變更生效。
$sudo service mysql restart
2. 在 judgehost 主機上建立 chroot 環境:
這個問題出在 Ubuntu 16.04 上預設的 java run-time environment 已經是第 8 版了,而 Domjudge 5.1.2 版的 "/opt/domjudge/judgehost/bin/dj_make_chroot" 指令稿中,所指定的 java run-time environment 是第 7 版。於是 dj_make_chroot 無法成功地建立 domjudge 的 chroot 環境。

解決之道是修改 "/opt/domjudge/judgehost/bin/dj_make_chroot" 指令稿,將其中出現 2 次的 "INSTALLDEBS="openjdk-7-jre-headless locales" 都修改成 "INSTALLDEBS="default-jre-headless locales",如下:
INSTALLDEBS="default-jre-headless locales"
改好後,再執行一次即可,如下:
$sudo /opt/domjudge/judgehost/bin/dj_make_chroot

本解法的參考文件是: https://github.com/DOMjudge/domjudge/blob/master/misc-tools/dj_make_chroot.in


2017年2月6日 星期一

How to Increase max_connections of MySQL service on Ubuntu 16.04

From: http://stackoverflow.com/questions/30901041/can-not-increase-max-open-files-for-mysql-max-connections-in-ubuntu-15, by Fredik

As of MySQL 5.7.7, this is what the documentation recommends for Red Hat Enterprise Linux 7, Oracle Linux 7, CentOS 7, SUSE Linux Enterprise Server 12, Fedora 24 and 25:

https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

On Ubuntu 16.04 the service is called mysql, not mysqld, so this is what Fredik did:
sudo mkdir /etc/systemd/system/mysql.service.d
sudo vi /etc/systemd/system/mysql.service.d/override.conf
Added this in the new file override.conf:
[Service]
LimitNOFILE=5000
Then restarted the service:
sudo systemctl daemon-reload
sudo systemctl restart mysql