mirror of
https://github.com/YunoHost-Apps/ethercalc_ynh.git
synced 2024-09-03 18:26:36 +02:00
Get this application installing again
This commit is contained in:
parent
0e7a4143d4
commit
3e711fd89b
9 changed files with 52 additions and 145 deletions
|
@ -1,78 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: YUNOAPP
|
|
||||||
# Required-Start: $local_fs $remote_fs $network $syslog
|
|
||||||
# Required-Stop: $local_fs $remote_fs $network $syslog
|
|
||||||
# Default-Start: 2 3 4 5
|
|
||||||
# Default-Stop: 0 1 6
|
|
||||||
# Short-Description: starts YUNOAPP
|
|
||||||
# Description: starts YUNOAPP using start-stop-daemon
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
|
|
||||||
LOGFILE="/var/log/ethercalc/YUNOLOG.log"
|
|
||||||
EPLITE_DIR="/var/www/YUNOAPP/node_modules/.bin"
|
|
||||||
EPLITE_BIN="ethercalc"
|
|
||||||
USER="YUNOAPP"
|
|
||||||
GROUP="YUNOAPP"
|
|
||||||
DESC="EtherCalc"
|
|
||||||
NAME="YUNOAPP"
|
|
||||||
export NODE_ENV=production
|
|
||||||
set -e
|
|
||||||
|
|
||||||
. /lib/lsb/init-functions
|
|
||||||
|
|
||||||
start() {
|
|
||||||
echo "Starting $DESC... "
|
|
||||||
start-stop-daemon --start --chuid "$USER:$GROUP" --chdir $EPLITE_DIR --background --make-pidfile --pidfile /var/run/$NAME.pid --startas /bin/bash -- -c "exec $EPLITE_DIR/$EPLITE_BIN --port YUNOPORT --basepath YUNOPATH YUNOEXPIRE > $LOGFILE 2>&1"
|
|
||||||
echo "done"
|
|
||||||
}
|
|
||||||
|
|
||||||
#We need this function to ensure the whole process tree will be killed
|
|
||||||
killtree() {
|
|
||||||
local _pid=$1
|
|
||||||
local _sig=${2-TERM}
|
|
||||||
for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
|
|
||||||
killtree ${_child} ${_sig}
|
|
||||||
done
|
|
||||||
kill -${_sig} ${_pid}
|
|
||||||
}
|
|
||||||
|
|
||||||
stop() {
|
|
||||||
echo "Stopping $DESC... "
|
|
||||||
if test -f /var/run/$NAME.pid; then
|
|
||||||
while test -d /proc/$(cat /var/run/$NAME.pid); do
|
|
||||||
killtree $(cat /var/run/$NAME.pid) 15
|
|
||||||
sleep 0.5
|
|
||||||
done
|
|
||||||
rm /var/run/$NAME.pid
|
|
||||||
fi
|
|
||||||
echo "done"
|
|
||||||
}
|
|
||||||
|
|
||||||
status() {
|
|
||||||
status_of_proc -p /var/run/$NAME.pid "" "$app" && exit 0 || exit $?
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
start
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
stop
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
;;
|
|
||||||
status)
|
|
||||||
status
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: $NAME {start|stop|restart|status}" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
2
conf/ethercalc.env
Normal file
2
conf/ethercalc.env
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node_n/bin"
|
||||||
|
NODE_ENV=production
|
|
@ -1,10 +0,0 @@
|
||||||
YNH_LOGFILE
|
|
||||||
{
|
|
||||||
weekly
|
|
||||||
missingok
|
|
||||||
rotate 12
|
|
||||||
notifempty
|
|
||||||
compress
|
|
||||||
delaycompress
|
|
||||||
copytruncate
|
|
||||||
}
|
|
|
@ -1,7 +1,6 @@
|
||||||
location / {
|
location / {
|
||||||
rewrite ^PATHTOCHANGE$ PATHTOCHANGE/ permanent;
|
proxy_pass http://localhost:__PORT__;
|
||||||
proxy_pass http://localhost:__PORT__;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header Host $host;
|
proxy_buffering off;
|
||||||
proxy_buffering off;
|
include conf.d/yunohost_panel.conf.inc;
|
||||||
include conf.d/yunohost_panel.conf.inc;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
location / {
|
|
||||||
proxy_pass http://localhost:YUNOPORT/;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
# be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
|
|
||||||
proxy_buffering off;
|
|
||||||
include conf.d/yunohost_panel.conf.inc;
|
|
||||||
}
|
|
15
conf/systemd.service
Normal file
15
conf/systemd.service
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Run Ethercalc, the collaborative spreadsheet editor.
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=__APP__
|
||||||
|
Group=__APP__
|
||||||
|
ExecStart=/opt/node_n/bin/ethercalc --port __PORT__ --expire __EXPIRE__
|
||||||
|
EnvironmentFile=/etc/systemd/system/ethercalc.env
|
||||||
|
RuntimeMaxSec=86400
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -1,5 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# COMMON VARIABLES
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
pkg_dependencies="redis-server"
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# YUNOHOST 2.7 FORTHCOMING HELPERS
|
# YUNOHOST 2.7 FORTHCOMING HELPERS
|
||||||
|
|
|
@ -24,26 +24,13 @@ domain=$YNH_APP_ARG_DOMAIN
|
||||||
is_public=$YNH_APP_ARG_IS_PUBLIC
|
is_public=$YNH_APP_ARG_IS_PUBLIC
|
||||||
path_url="/"
|
path_url="/"
|
||||||
expire=$YNH_APP_ARG_EXPIRE
|
expire=$YNH_APP_ARG_EXPIRE
|
||||||
|
|
||||||
# This is a multi-instance app, meaning it can be installed several times independently
|
|
||||||
# The id of the app as stated in the manifest is available as $YNH_APP_ID
|
|
||||||
# The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...)
|
|
||||||
# The app instance name is available as $YNH_APP_INSTANCE_NAME
|
|
||||||
# - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample
|
|
||||||
# - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2
|
|
||||||
# - ynhexample__{N} for the subsequent installations, with N=3,4, ...
|
|
||||||
# The app instance name is probably what you are interested the most, since this is
|
|
||||||
# guaranteed to be unique. This is a good unique identifier to define installation path,
|
|
||||||
# db names, ...
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Check web path availability
|
|
||||||
ynh_webpath_available $domain $path_url
|
ynh_webpath_available $domain $path_url
|
||||||
# Register (book) web path
|
|
||||||
ynh_webpath_register $app $domain $path_url
|
ynh_webpath_register $app $domain $path_url
|
||||||
|
|
||||||
final_path=/var/www/$app
|
final_path=/var/www/$app
|
||||||
|
@ -63,60 +50,66 @@ ynh_app_setting_set $app expire $expire
|
||||||
# FIND AND OPEN A PORT
|
# FIND AND OPEN A PORT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Find a free port
|
|
||||||
port=$(ynh_find_port 8095)
|
port=$(ynh_find_port 8095)
|
||||||
# Open this port
|
|
||||||
sudo yunohost firewall allow --no-upnp TCP $port 2>&1
|
sudo yunohost firewall allow --no-upnp TCP $port 2>&1
|
||||||
ynh_app_setting_set $app port $port
|
ynh_app_setting_set $app port $port
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL NODEJS
|
# INSTALL NODEJS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_install_nodejs 6.0.0
|
ynh_install_nodejs 4.8.7
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL DEPENDENCIES
|
# INSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
apt-get -yy install redis-server
|
|
||||||
|
ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_app_setting_set $app final_path $final_path
|
ynh_app_setting_set $app final_path $final_path
|
||||||
ynh_use_nodejs
|
|
||||||
npm install -g ethercalc
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Create a system user
|
|
||||||
ynh_system_user_create $app
|
ynh_system_user_create $app
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SPECIFIC SETUP
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL ETHERCALC
|
# INSTALL ETHERCALC
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_use_nodejs
|
||||||
|
|
||||||
|
npm install -g ethercalc
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CONFIGURE ETHERCALC
|
# SETUP SYSTEMD BASED SERVICES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_add_systemd_config
|
||||||
|
|
||||||
|
ynh_replace_string --match_string="__PORT__" --replace_string=$port --target_file=/etc/systemd/system/ethercalc.service
|
||||||
|
ynh_replace_string --match_string="__EXPIRE__" --replace_string=$expire --target_file=/etc/systemd/system/ethercalc.service
|
||||||
|
|
||||||
|
cp ../conf/ethercalc.env /etc/systemd/system/ethercalc.env
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=ethercalc --action=enable
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=ethercalc --action=start
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
|
@ -126,7 +119,6 @@ ynh_system_user_create $app
|
||||||
# SETUP LOGROTATE
|
# SETUP LOGROTATE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Use logrotate to manage application logfile(s)
|
|
||||||
ynh_use_logrotate
|
ynh_use_logrotate
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -140,13 +132,12 @@ sudo yunohost service add $app --log "/var/log/ethercalc.log"
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
if [ $is_public -eq 0 ]
|
if [ $is_public -eq 0 ]
|
||||||
then # Remove the public access
|
then
|
||||||
ynh_app_setting_delete $app skipped_uris
|
ynh_app_setting_delete $app skipped_uris
|
||||||
fi
|
fi
|
||||||
# Make app public if necessary
|
|
||||||
if [ $is_public -eq 1 ]
|
if [ $is_public -eq 1 ]
|
||||||
then
|
then
|
||||||
# unprotected_uris allows SSO credentials to be passed anyway.
|
|
||||||
ynh_app_setting_set $app unprotected_uris "/"
|
ynh_app_setting_set $app unprotected_uris "/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -154,4 +145,4 @@ fi
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
sudo systemctl reload nginx
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
|
|
@ -26,7 +26,6 @@ final_path=$(ynh_app_setting_get $app final_path)
|
||||||
# STOP AND REMOVE SERVICE
|
# STOP AND REMOVE SERVICE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove the dedicated systemd config
|
|
||||||
ynh_remove_systemd_config
|
ynh_remove_systemd_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -43,35 +42,30 @@ fi
|
||||||
# REMOVE DEPENDENCIES
|
# REMOVE DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove metapackage and its dependencies
|
|
||||||
ynh_remove_app_dependencies
|
ynh_remove_app_dependencies
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE THE MYSQL DATABASE
|
# REMOVE THE MYSQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove a database if it exists, along with the associated user
|
|
||||||
ynh_mysql_remove_db $db_name $db_name
|
ynh_mysql_remove_db $db_name $db_name
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE APP MAIN DIR
|
# REMOVE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove the app directory securely
|
|
||||||
ynh_secure_remove "$final_path"
|
ynh_secure_remove "$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE NGINX CONFIGURATION
|
# REMOVE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove the dedicated nginx config
|
|
||||||
ynh_remove_nginx_config
|
ynh_remove_nginx_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE LOGROTATE CONFIGURATION
|
# REMOVE LOGROTATE CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove the app-specific logrotate config
|
|
||||||
ynh_remove_logrotate
|
ynh_remove_logrotate
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -90,13 +84,10 @@ fi
|
||||||
# REMOVE THE CRON FILE
|
# REMOVE THE CRON FILE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Remove a cron file
|
|
||||||
ynh_secure_remove "/etc/cron.d/$app"
|
ynh_secure_remove "/etc/cron.d/$app"
|
||||||
|
|
||||||
# Remove a directory securely
|
|
||||||
ynh_secure_remove "/etc/$app/"
|
ynh_secure_remove "/etc/$app/"
|
||||||
|
|
||||||
# Remove the log files
|
|
||||||
ynh_secure_remove "/var/log/$app/"
|
ynh_secure_remove "/var/log/$app/"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -105,5 +96,4 @@ ynh_secure_remove "/var/log/$app/"
|
||||||
# REMOVE DEDICATED USER
|
# REMOVE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Delete a system user
|
|
||||||
ynh_system_user_delete $app
|
ynh_system_user_delete $app
|
||||||
|
|
Loading…
Reference in a new issue