packages/net/seafile-server/files/seafile-server.init
Jeffery To cbfd166b15 seafile-server: Update to 7.1.2, revamp package
* Package scripts that are shipped by upstream in their binary download

  * Includes setup scripts (setup-seafile.sh to use SQLite,
    setup-seafile-mysql.{sh,py} to use MySQL) and control scripts
    (seafile.sh, seahub.sh)

  * Does not include seafile-admin, which is not shipped in upstream's
    binary download. Combined with the fact that it hasn't been updated
    to Python 3 suggests the script has been abandoned.

* Replace previous init scripts with a simplified script

  * Previous init scripts (seafile.init, seahub.init) were modified from
    older versions of seafile.sh and seahub.sh, but they haven't kept up
    with changes to upstream's scripts

  * New init script (seafile-server.init) start/stops both Seafile and
    Seahub (there is no need to control them separately) by calling
    upstream's control scripts

* Replace previous package config file with new config file

  * Options in previous config file (seafile.conf) were mainly for using
    Seahub in FastCGI mode. FastCGI was deprecated in Django 1.7 and
    removed in 1.9; upstream's control script will only start Seahub
    using Gunicorn. (Options for Gunicorn including port number can be
    changed by editing /etc/seafile/conf/gunicorn.conf.py.)

  * New config file (seafile-server.config) has one option that controls
    where the Seafile/Seahub data directories are stored

* Patch scripts/binaries to use standard, system-wide directory
  locations

  * Script files (wrappers for binaries) in /usr/bin
  * Binaries (not meant to be run directly by the user) in /usr/libexec
  * Config files in /etc/seafile
  * Pid/socket files in /var/run/seafile
  * Logs in /var/log/seafile

* Include a new script to create the first admin account

  * With upstream's original scripts, the user is required to
    interactively create the first admin account when Seahub is started
    for the first time

  * The user will now use the new script (create-seafile-admin.sh) to
    create the first admin account after setup (using setup-seafile.sh
    or setup-seafile-mysql.sh) and before starting Seafile/Seahub

  * seahub.sh is patched to only check if there is at least one admin
    account and exit with an error if there is no admin account

* Remove build config options and add seafile-server-fuse package

  * The console option controls whether the console window is shown when
    Seafile server is run on Windows. It has no use on Linux.

  * The fuse option controls whether seaf-fuse is built. (seaf-fuse is a
    FUSE implementation that allows the Seafile database/file system to
    be mounted to a local directory.) seaf-fuse is now always built and
    is available in a separate package (seafile-server-fuse).

* Add myself as a maintainer

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-03-16 17:46:30 +08:00

74 lines
1.8 KiB
Bash

#!/bin/sh /etc/rc.common
START=99
STOP=01
EXTRA_COMMANDS="generate_uci_conf"
TOPDIR=/usr/share/seafile
INSTALLPATH=$TOPDIR/seafile-server
uci_conf=/var/run/seafile/uci.conf
default_data_dir=$TOPDIR
seafile_server_latest_symlink=$TOPDIR/seafile-server-latest
seafile_data_dir_symlink=$TOPDIR/seafile-data
seahub_avatars_symlink=$INSTALLPATH/seahub/media/avatars
seahub_custom_media_symlink=$INSTALLPATH/seahub/media/custom
read_uci_section() {
local cfg="$1"
local data_dir
config_get data_dir "$cfg" data_dir "$default_data_dir"
uci_data_dir="$data_dir"
}
generate_uci_conf() {
local uci_data_dir="$default_data_dir"
config_load seafile-server
config_foreach read_uci_section seafile-server
mkdir -p "$uci_data_dir"
mkdir -p "${uci_conf%/*}"
cat <<- EOF > "$uci_conf"
export SEAFILE_UCI_CONF_DIR=/etc/seafile
export SEAFILE_UCI_DATA_DIR="$uci_data_dir"
export SEAFILE_UCI_LOG_DIR=/var/log/seafile
export SEAFILE_UCI_PID_DIR=/var/run/seafile
export SEAFILE_UCI_SOCKET_DIR=/var/run/seafile
EOF
[ ! -L "$seafile_server_latest_symlink" ] || rm -f "$seafile_server_latest_symlink"
[ ! -L "$seafile_data_dir_symlink" ] || rm -f "$seafile_data_dir_symlink"
[ ! -L "$seahub_avatars_symlink" ] || \
[ "$(readlink -f "$seahub_avatars_symlink")" = "$uci_data_dir/seahub-data/avatars" ] || \
ln -snf "$uci_data_dir/seahub-data/avatars" "$seahub_avatars_symlink"
[ ! -L "$seahub_custom_media_symlink" ] || \
[ "$(readlink -f "$seahub_custom_media_symlink")" = "$uci_data_dir/seahub-data/custom" ] || \
ln -snf "$uci_data_dir/seahub-data/custom" "$seahub_custom_media_symlink"
}
start() {
seafile start || return
if ! seahub start; then
seafile stop
return 1
fi
}
stop() {
seahub stop
seahub_ret=$?
seafile stop
seafile_ret=$?
[ "$seahub_ret" -eq 0 ] && [ "$seafile_ret" -eq 0 ]
}
restart() {
stop
sleep 2
start
}