1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/timeoff_ynh.git synced 2024-09-03 20:35:59 +02:00

Do not depend on common /opt/node_n/bin, use only specific version

This commit is contained in:
Julien Malik 2018-04-04 11:38:47 +02:00
parent 6414a7d25c
commit 1aa91d3fb2
5 changed files with 47 additions and 40 deletions

View file

@ -6,11 +6,9 @@ After=syslog.target network.target
Type=simple Type=simple
User=__APP__ User=__APP__
Group=__APP__ Group=__APP__
ExecStartPre=__NODEJS__
Environment="PATH=__ENV_PATH__"
Environment="PORT=__PORT__" Environment="PORT=__PORT__"
WorkingDirectory=__FINAL_PATH__ WorkingDirectory=__FINAL_PATH__
ExecStart=/opt/node_n/n/versions/node/8/bin/npm start ExecStart=__NODE_DIR__/node bin/wwww
Restart=always Restart=always
[Install] [Install]

View file

@ -57,27 +57,26 @@ SOURCE_SUM=2ba3c9d4dd3c7e38885b37e02337906a1ee91febe6d5c9159d89a9050f2eea8f" > "
PREFIX=$N_PREFIX make install 2>&1) PREFIX=$N_PREFIX make install 2>&1)
} }
ynh_use_nodejs () { # ynh_use_nodejs () {
nodejs_version=$(ynh_app_setting_get $app nodejs_version) # nodejs_version=$(ynh_app_setting_get $app nodejs_version)
#
load_n_path="[[ :$PATH: == *\":$n_install_dir/bin:\"* ]] || PATH=\"$n_install_dir/bin:$PATH\"; N_PREFIX="$n_install_dir"" # load_n_path="[[ :$PATH: == *\":$n_install_dir/bin:\"* ]] || PATH=\"$n_install_dir/bin:$PATH\"; N_PREFIX="$n_install_dir""
#
nodejs_use_version="$n_install_dir/bin/n -q $nodejs_version" # nodejs_use_version="$n_install_dir/bin/n -q $nodejs_version"
#
# "Load" a version of node # # "Load" a version of node
eval $load_n_path; $nodejs_use_version # eval $load_n_path; $nodejs_use_version
#
# Get the absolute path of this version of node # # Get the absolute path of this version of node
nodejs_path="$(n bin $nodejs_version)" # nodejs_path="$(n bin $nodejs_version)"
#
# Make an alias for node use # # Make an alias for node use
ynh_node_exec="eval $load_n_path; n use $nodejs_version" # ynh_node_exec="eval $load_n_path; n use $nodejs_version"
} # }
ynh_install_nodejs () { ynh_install_nodejs () {
# Use n, https://github.com/tj/n to manage the nodejs versions # Use n, https://github.com/tj/n to manage the nodejs versions
nodejs_version="$1" nodejs_version="$1"
local n_install_script="https://git.io/n-install"
# Create $n_install_dir # Create $n_install_dir
mkdir -p "$n_install_dir" mkdir -p "$n_install_dir"
@ -129,22 +128,28 @@ ynh_install_nodejs () {
# Build the update script and set the cronjob # Build the update script and set the cronjob
ynh_cron_upgrade_node ynh_cron_upgrade_node
ynh_use_nodejs # ynh_use_nodejs
}
# print the path of node/npm binaries for a specific version of node
ynh_get_nodejs_bindir () {
nodejs_version="$1"
dirname $(/opt/node_n/bin/n bin $nodejs_version)
} }
ynh_remove_nodejs () { ynh_remove_nodejs () {
ynh_use_nodejs # ynh_use_nodejs
# Remove the line for this app # Remove the line for this app
sed --in-place "/$YNH_APP_ID:$nodejs_version/d" "$n_install_dir/ynh_app_version" sed --in-place "/$YNH_APP_ID:$nodejs_version/d" "$n_install_dir/ynh_app_version"
# If none another app uses this version of nodejs, remove it. # If no another app uses this version of nodejs, remove it.
if ! grep --quiet "$nodejs_version" "$n_install_dir/ynh_app_version" if ! grep --quiet "$nodejs_version" "$n_install_dir/ynh_app_version"
then then
n rm $nodejs_version n rm $nodejs_version
fi fi
# If none another app uses n, remove n # If no another app uses n, remove n
if [ ! -s "$n_install_dir/ynh_app_version" ] if [ ! -s "$n_install_dir/ynh_app_version" ]
then then
ynh_secure_remove "$n_install_dir" ynh_secure_remove "$n_install_dir"
@ -307,15 +312,15 @@ ynh_add_fail2ban_config () {
failregex=$2 failregex=$2
max_retry=${3:-3} max_retry=${3:-3}
ports=${4:-http,https} ports=${4:-http,https}
test -n "$logpath" || ynh_die "ynh_add_fail2ban_config expects a logfile path as first argument and received nothing." test -n "$logpath" || ynh_die "ynh_add_fail2ban_config expects a logfile path as first argument and received nothing."
test -n "$failregex" || ynh_die "ynh_add_fail2ban_config expects a failure regex as second argument and received nothing." test -n "$failregex" || ynh_die "ynh_add_fail2ban_config expects a failure regex as second argument and received nothing."
finalfail2banjailconf="/etc/fail2ban/jail.d/$app.conf" finalfail2banjailconf="/etc/fail2ban/jail.d/$app.conf"
finalfail2banfilterconf="/etc/fail2ban/filter.d/$app.conf" finalfail2banfilterconf="/etc/fail2ban/filter.d/$app.conf"
ynh_backup_if_checksum_is_different "$finalfail2banjailconf" 1 ynh_backup_if_checksum_is_different "$finalfail2banjailconf" 1
ynh_backup_if_checksum_is_different "$finalfail2banfilterconf" 1 ynh_backup_if_checksum_is_different "$finalfail2banfilterconf" 1
sudo tee $finalfail2banjailconf <<EOF sudo tee $finalfail2banjailconf <<EOF
[$app] [$app]
enabled = true enabled = true
@ -335,7 +340,7 @@ EOF
ynh_store_file_checksum "$finalfail2banjailconf" ynh_store_file_checksum "$finalfail2banjailconf"
ynh_store_file_checksum "$finalfail2banfilterconf" ynh_store_file_checksum "$finalfail2banfilterconf"
systemctl restart fail2ban systemctl restart fail2ban
local fail2ban_error="$(journalctl -u fail2ban | tail -n50 | grep "WARNING.*$app.*")" local fail2ban_error="$(journalctl -u fail2ban | tail -n50 | grep "WARNING.*$app.*")"
if [ -n "$fail2ban_error" ] if [ -n "$fail2ban_error" ]

View file

@ -108,8 +108,8 @@ ynh_use_logrotate
#================================================= #=================================================
# Install dependencies and proceed with the installation # Install dependencies and proceed with the installation
ynh_use_nodejs nodedir=$(ynh_get_nodejs_bindir $nodejs_version)
(cd $final_path && npm install --production > $install_log 2>&1) (cd $final_path && PATH=$nodedir:$PATH npm install --production > $install_log 2>&1)
#================================================= #=================================================
# CONFIGURE # CONFIGURE
@ -135,8 +135,8 @@ chmod 600 "$final_path/config/db.json" # Restrict access to db.json
# SETUP SYSTEMD # SETUP SYSTEMD
#================================================= #=================================================
ynh_replace_string "__NODEJS__" "$nodejs_use_version" "../conf/systemd.service" #ynh_replace_string "__NODEJS__" "$nodejs_use_version" "../conf/systemd.service"
ynh_replace_string "__ENV_PATH__" "$PATH" "../conf/systemd.service" ynh_replace_string "__NODE_DIR__" "$nodedir" "../conf/systemd.service"
ynh_replace_string "__PORT__" "$port" "../conf/systemd.service" ynh_replace_string "__PORT__" "$port" "../conf/systemd.service"
ynh_replace_string "__FINAL_PATH__" "$final_path" "../conf/systemd.service" ynh_replace_string "__FINAL_PATH__" "$final_path" "../conf/systemd.service"
ynh_add_systemd_config ynh_add_systemd_config
@ -145,6 +145,8 @@ ynh_add_systemd_config
# ENABLE SERVICE IN ADMIN PANEL # ENABLE SERVICE IN ADMIN PANEL
#================================================= #=================================================
systemctl start $app.service
# Add service to YunoHost monitoring panel # Add service to YunoHost monitoring panel
yunohost service add $app yunohost service add $app

View file

@ -89,11 +89,11 @@ ynh_restore_file "/etc/logrotate.d/$app"
ynh_install_nodejs $nodejs_version ynh_install_nodejs $nodejs_version
#================================================= #=================================================
# INSTALL ETHERPAD DEPENDENCIES # INSTALL DEPENDENCIES
#================================================= #=================================================
nodedir=$(ynh_get_nodejs_bindir $nodejs_version)
ynh_use_nodejs PATH=$nodedir:$PATH npm cache clean
npm cache clean PATH=$nodedir:$PATH npm update
#================================================= #=================================================
# ENABLE SERVICE IN ADMIN PANEL # ENABLE SERVICE IN ADMIN PANEL
@ -108,6 +108,7 @@ yunohost service add $app --log "/var/log/$app/timeoff.log"
ynh_restore_file "/etc/systemd/system/$app.service" ynh_restore_file "/etc/systemd/system/$app.service"
## Démarrage auto du service ## Démarrage auto du service
systemctl enable $app.service systemctl enable $app.service
systemctl start $app.service
#================================================= #=================================================
# RESTORE FAIL2BAN CONFIGURATION # RESTORE FAIL2BAN CONFIGURATION

View file

@ -19,7 +19,6 @@ app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain) domain=$(ynh_app_setting_get $app domain)
path_url=$(ynh_app_setting_get $app path) path_url=$(ynh_app_setting_get $app path)
admin=$(ynh_app_setting_get $app admin)
final_path=$(ynh_app_setting_get $app final_path) final_path=$(ynh_app_setting_get $app final_path)
port=$(ynh_app_setting_get $app port) port=$(ynh_app_setting_get $app port)
@ -78,9 +77,9 @@ ynh_install_nodejs $nodejs_version
#================================================= #=================================================
# UPGRADE NPM MODULES # UPGRADE NPM MODULES
#================================================= #=================================================
nodedir=$(ynh_get_nodejs_bindir $nodejs_version)
npm cache clean PATH=$nodedir:$PATH npm cache clean
npm update PATH=$nodedir:$PATH npm update
#================================================= #=================================================
# SPECIFIC UPGRADE # SPECIFIC UPGRADE
@ -135,6 +134,8 @@ ynh_replace_string "__PORT__" "$port" "../conf/systemd.service"
ynh_replace_string "__FINAL_PATH__" "$final_path" "../conf/systemd.service" ynh_replace_string "__FINAL_PATH__" "$final_path" "../conf/systemd.service"
ynh_add_systemd_config ynh_add_systemd_config
systemctl restart $app.service
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
#================================================= #=================================================