diff --git a/web/install.sh b/web/install.sh new file mode 100644 index 0000000..f63255d --- /dev/null +++ b/web/install.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# This script performs the installation of Tanabata web server + +if [ "$EUID" -ne 0 ]; then + echo "Please run as root" + exit 1 +fi + +cd "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" + +../tdbms/install.sh || exit 1 + +usermod -a -G tanabata www-data + +if [ ! -d /var/lib/tanabata/tweb ]; then + mkdir /var/lib/tanabata/tweb + if [ ! -d /var/lib/tanabata/tweb ]; then + echo "FATAL: failed to create directory '/var/lib/tanabata/tweb'" + exit 1 + fi +fi +chown 42776:42776 /var/lib/tanabata/tweb +chmod 2755 /var/lib/tanabata/tweb + +if [ -d ../build ]; then + rm -r ../build/* +else + mkdir ../build + if [ -d ../build ]; then + echo "FATAL: failed to create build directory" + exit 1 + fi +fi +cd ./server +echo "Building Tweb server..." +if ! go build -o ../build; then + echo "FATAL: failed to build Tweb server" + exit 1 +fi +cd .. +mv -f ../build/tweb /usr/bin/ +chown 0:0 /usr/bin/tweb +chmod 0755 /usr/bin/tweb + +if ! cp ./tweb.service /etc/systemd/system/; then + echo "FATAL: failed to copy 'tweb.service' to '/etc/systemd/system'" + exit 1 +fi +chown 0:0 /etc/systemd/system/tweb.service +chmod 0644 /etc/systemd/system/tweb.service + +if ! cp -r ./public/* /srv/www/tanabata/; then + echo "FATAL: failed to copy public files to '/srv/www/tanabata'" + exit 1 +fi + +echo "Tweb server successfully installed." +echo "Start it with 'systemctl start tweb'" diff --git a/web/server/tweb.service b/web/server/tweb.service new file mode 100644 index 0000000..88c49a8 --- /dev/null +++ b/web/server/tweb.service @@ -0,0 +1,13 @@ +[Unit] +Description=Tanabata Project web server +After=tdbms.service +Requires=tdbms.service + +[Service] +Type=simple +Restart=no +User=www-data +ExecStart=/usr/bin/tweb + +[Install] +WantedBy=multi-user.target