From f8d988883fc40be6536075586705284815a44448 Mon Sep 17 00:00:00 2001 From: Masahiko AMANO Date: Sun, 22 Jan 2023 17:22:21 +0300 Subject: [PATCH] chore(dbms): add tdbms server installation script and systemd service config --- tdbms/install.sh | 77 +++++++++++++++++++++++++++++++++++++++++++++ tdbms/tdbms.service | 14 +++++++++ 2 files changed, 91 insertions(+) create mode 100644 tdbms/install.sh create mode 100644 tdbms/tdbms.service diff --git a/tdbms/install.sh b/tdbms/install.sh new file mode 100644 index 0000000..9f067ea --- /dev/null +++ b/tdbms/install.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# This script performs the installation of the TDBMS server + +if [ "$EUID" -ne 0 ]; then + echo "Please run as root" + exit 1 +fi + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +getent group tanabata &>/dev/null || groupadd -g 42776 tanabata +id tanabata &>/dev/null || useradd -u 42776 -g 42776 tanabata +if [ ! "$(id -nG 42776 | grep -w tanabata)" ]; then + echo "FATAL: failed to create user and group 'tanabata'" + exit 1 +fi + +if [ ! -d /etc/tanabata ]; then + mkdir /etc/tanabata + if [ ! -d /etc/tanabata ]; then + echo "FATAL: failed to create directory '/etc/tanabata'" + exit 1 + fi +fi +chown 42776:42776 /etc/tanabata +chmod 2755 /etc/tanabata + +if [ ! -d /var/lib/tanabata ]; then + mkdir /var/lib/tanabata + if [ ! -d /var/lib/tanabata ]; then + echo "FATAL: failed to create directory '/var/lib/tanabata'" + exit 1 + fi +fi +chown 42776:42776 /var/lib/tanabata +chmod 2755 /var/lib/tanabata + +if [ ! -d /var/lib/tanabata/tdbms ]; then + mkdir /var/lib/tanabata/tdbms + if [ ! -d /var/lib/tanabata/tdbms ]; then + echo "FATAL: failed to create directory '/var/lib/tanabata/tdbms'" + exit 1 + fi +fi +chown 42776:42776 /var/lib/tanabata/tdbms +chmod 2755 /var/lib/tanabata/tdbms + +if [ ! -d /var/log/tanabata ]; then + mkdir /var/log/tanabata + if [ ! -d /var/log/tanabata ]; then + echo "FATAL: failed to create directory '/var/log/tanabata'" + exit 1 + fi +fi +chown 42776:42776 /var/log/tanabata +chmod 2755 /var/log/tanabata + +if [ ! -d "$SCRIPT_DIR/../build" ]; then + mkdir "$SCRIPT_DIR/../build" +fi +if ! (cmake -S "$SCRIPT_DIR/.." -B "$SCRIPT_DIR/../build" && cmake --build "$SCRIPT_DIR/../build" --target tdbms); then + echo "FATAL: failed to build TDBMS server" + exit 1 +fi +mv -f "$SCRIPT_DIR/../build/tdbms" /usr/bin/ +chown 0:0 /usr/bin/tdbms +chmod 0755 /usr/bin/tdbms + +if ! cp "$SCRIPT_DIR/tdbms.service" /etc/systemd/system/; then + echo "FATAL: sailed to copy 'tdbms.service' to '/etc/systemd/system'" +fi +chown 0:0 /etc/systemd/system/tdbms.service +chmod 0644 /etc/systemd/system/tdbms.service + +echo "TDBMS server successfully installed." +echo "Start it with 'systemctl start tdbms'" diff --git a/tdbms/tdbms.service b/tdbms/tdbms.service new file mode 100644 index 0000000..a83bad8 --- /dev/null +++ b/tdbms/tdbms.service @@ -0,0 +1,14 @@ +[Unit] +Description=Tanabata Database Management System service +After=network.target +AssertPathIsDirectory=/var/lib/tanabata/tdbms +AssertPathIsDirectory=/var/log/tanabata + +[Service] +Type=simple +Restart=no +User=tanabata +ExecStart=/usr/bin/tdbms + +[Install] +WantedBy=multi-user.target