From 726b4e25fde3c495d2a8ded8ada8707b9afe000b Mon Sep 17 00:00:00 2001 From: maximesrd <42911617+maximesrd@users.noreply.github.com> Date: Sun, 2 Sep 2018 17:25:28 +0200 Subject: [PATCH 1/4] Update INSTALL.md Rewriting of sysvinit script to make it works properly --- docs/INSTALL.md | 128 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 38 deletions(-) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 024b326d..6c337c0f 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -271,55 +271,107 @@ WantedBy=multi-user.target This script can also be useful if you are using SysVinit. ```bash -#!/bin/bash -# -# chkconfig: 35 90 12 -# description: Plume -# +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start daemon at boot time +# Description: Federated blogging +# Based on https://raw.githubusercontent.com/fhd/init-script-template/master/template +### END INIT INFO -# Get function from functions library -. /etc/init.d/functions +dir="/home/plume/Plume" +cmd="/home/plume/.cargo/bin/cargo run" +user="plume" -# Start Plume -start() { - initlog -c "echo -n Démarrage de Plume: " - cd /home/plume/Plume & cargo run - ### Create the lock file ### - touch /var/lock/subsys/plume - success $"Plume est prêt !" - echo +name=`basename $0` +pid_file="/var/run/$name.pid" +stdout_log="/home/plume/Plume/plume.log" +stderr_log="/home/plume/Plume/plume.err" + +get_pid() { + cat "$pid_file" } -# Restart Plume -stop() { - initlog -c "echo -n Arrêt de Plume: " - killproc cargo run - ### Now, delete the lock file ### - rm -f /var/lock/subsys/plume - echo +is_running() { + [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1 } -### main logic ### case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status FOO - ;; - restart|reload|condrestart) - stop - start - ;; - *) - echo $"Usage: $0 {start|stop|restart|reload|status}" + start) + if is_running; then + echo "Already started" + else + echo "Starting $name" + cd "$dir" + if [ -z "$user" ]; then + sudo $cmd >> "$stdout_log" 2>> "$stderr_log" & + else + sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" & + fi + echo $! > "$pid_file" + if ! is_running; then + echo "Unable to start, see $stdout_log and $stderr_log" + exit 1 + fi + fi + ;; + stop) + if is_running; then + echo -n "Stopping $name.." + kill `get_pid` + for i in 1 2 3 4 5 6 7 8 9 10 + # for i in `seq 10` + do + if ! is_running; then + break + fi + + echo -n "." + sleep 1 + done + echo + + if is_running; then + echo "Not stopped; may still be shutting down or shutdown may have failed" + exit 1 + else + echo "Stopped" + if [ -f "$pid_file" ]; then + rm "$pid_file" + fi + fi + else + echo "Not running" + fi + ;; + restart) + $0 stop + if is_running; then + echo "Unable to stop, will not attempt to start" exit 1 + fi + $0 start + ;; + status) + if is_running; then + echo "Running" + else + echo "Stopped" + exit 1 + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; esac exit 0 + ``` ## Caveats: From 25a1ef09ee2330257170487d133f4f106675e6e4 Mon Sep 17 00:00:00 2001 From: maximesrd <42911617+maximesrd@users.noreply.github.com> Date: Sun, 2 Sep 2018 17:43:20 +0200 Subject: [PATCH 2/4] Update INSTALL.md Missing dependencies to compile Plume --- docs/INSTALL.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 6c337c0f..86288012 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -6,10 +6,11 @@ In order to be installed and to work correctly, Plume needs: - *Git* (to get the code) - *Curl* (for RustUp, the Rust installer) -- *GCC* (to compile C dependencies) +- *GCC* and *make* (to compile C dependencies) - *PostgreSQL* (for the database) - *GetText* (to manage translations) - *Rust* and *Cargo* (to build the code) +- *OpenSSL* and *OpenSSL librairies* (for security) All the following instructions will need a terminal. @@ -20,13 +21,13 @@ On **Debian**: ```bash apt update -apt install gettext postgresql postgresql-contrib libpq-dev git +apt install gettext postgresql postgresql-contrib libpq-dev git curl gcc make openssl libssl-dev ``` On **Fedora**, **CentOS** or **RHEL**: ```bash -dnf install postgresql-server postgresql-contrib mariadb-devel libsq3-devel libpqxx libpqxx-devel +dnf install postgresql-server postgresql-contrib mariadb-devel libsq3-devel libpqxx libpqxx-devel git curl gcc make openssl libssl-dev # TODO: GetText + Git install ``` From 8b1130f0ddbea96c79af3eaed3c2b9f1e5695a77 Mon Sep 17 00:00:00 2001 From: maximesrd <42911617+maximesrd@users.noreply.github.com> Date: Sun, 2 Sep 2018 17:57:18 +0200 Subject: [PATCH 3/4] Update INSTALL.md correction of two errors: about openssl library and deletion omission --- docs/INSTALL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 86288012..e1caf8e8 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -27,8 +27,8 @@ apt install gettext postgresql postgresql-contrib libpq-dev git curl gcc make op On **Fedora**, **CentOS** or **RHEL**: ```bash -dnf install postgresql-server postgresql-contrib mariadb-devel libsq3-devel libpqxx libpqxx-devel git curl gcc make openssl libssl-dev -# TODO: GetText + Git install +dnf install postgresql-server postgresql-contrib mariadb-devel libsq3-devel libpqxx libpqxx-devel git curl gcc make openssl openssl-devel +# TODO: GetText ``` On **Gentoo**: From e5ade7d65916cdab61066cfe4b88ecee135d50f0 Mon Sep 17 00:00:00 2001 From: maximesrd <42911617+maximesrd@users.noreply.github.com> Date: Sun, 2 Sep 2018 18:01:36 +0200 Subject: [PATCH 4/4] Update INSTALL.md adding packages to install for other distributions --- docs/INSTALL.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index e1caf8e8..47391db9 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -27,24 +27,21 @@ apt install gettext postgresql postgresql-contrib libpq-dev git curl gcc make op On **Fedora**, **CentOS** or **RHEL**: ```bash -dnf install postgresql-server postgresql-contrib mariadb-devel libsq3-devel libpqxx libpqxx-devel git curl gcc make openssl openssl-devel -# TODO: GetText +dnf install postgresql-server postgresql-contrib mariadb-devel libsq3-devel libpqxx libpqxx-devel git curl gcc make openssl openssl-devel gettext ``` On **Gentoo**: ```bash emerge --sync -emerge -av postgresql eselect-postgresql -# TODO: GetText + Git install +emerge -av postgresql eselect-postgresql gettext && emerge --ask dev-vcs/git ``` On **Mac OS X**, with [Homebrew](https://brew.sh/): ```bash brew update -brew install postgres -# TODO: GetText + Git install +brew install postgres gettext git ``` ## Creating a new user (optional)