Files
server/opt/psa/admin/sbin/modules/nodejs/installer
cutemeli 0bfc6c8425 Initial
2025-12-22 10:32:59 +00:00

90 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
set -eu
die()
{
echo "$*" 1>&2
exit 1
}
NODENV_SRC_PATH="/usr/local/psa/admin/plib/modules/nodejs/libexec/nodenv"
NODENV_DST_BASE_PATH="/usr/libexec"
NODENV_DST_PATH="$NODENV_DST_BASE_PATH/nodenv"
NODENV_TARGET="/usr/bin/nodenv"
HTTPD_SYSTEMD_CONF_DIR="/usr/lib/systemd/system/httpd.service.d"
install_nodenv()
{
chmod 755 "$NODENV_SRC_PATH"/*
cp -rf "$NODENV_SRC_PATH" "$NODENV_DST_BASE_PATH"
if [ ! -e "$NODENV_TARGET" ] ; then
ln -sf "$NODENV_DST_PATH/nodenv" "$NODENV_TARGET"
fi
cp "$NODENV_SRC_PATH/nodenv-init-profile" /etc/profile.d/nodenv.sh
}
remove_nodenv()
{
local nodenv_realpath=$(realpath "$NODENV_TARGET")
if [ "$nodenv_realpath" = "$NODENV_DST_PATH/nodenv" ] ; then
rm $NODENV_TARGET
fi
if [ -d "$NODENV_DST_PATH" ] ; then
rm -rf "$NODENV_DST_PATH"
fi
rm /etc/profile.d/nodenv.sh
if [ "$OS_NAME" = "AlmaLinux" ] && [ "$OS_SHORT_VERSION" = "10" ] && [ -f "$HTTPD_SYSTEMD_CONF_DIR/nodejs.conf" ]; then
rm "$HTTPD_SYSTEMD_CONF_DIR/nodejs.conf"
/bin/systemctl --system daemon-reload
fi
}
do_install()
{
local packages="passenger"
[ "$OS_ARCH" = "x86_64" -o "$OS_ARCH" = "aarch64" ] || die "Unsupported architecture"
case "$OS_PKGTYPE" in
rpm)
packages+=" mod_passenger libatomic"
;;
deb)
packages+=" libapache2-mod-passenger-plesk libatomic1"
;;
*)
die "Unsupported package type $OS_PKGTYPE ($OS_NAME $OS_VERSION): only rpm and deb are supported"
;;
esac
plesk sbin package --install $packages
if [ "$OS_NAME" = "AlmaLinux" -a "$OS_SHORT_VERSION" = "10" ]; then
mkdir -p "$HTTPD_SYSTEMD_CONF_DIR"
cat > "$HTTPD_SYSTEMD_CONF_DIR/nodejs.conf" <<EOF
[Service]
MemoryDenyWriteExecute=no
EOF
/bin/systemctl --system daemon-reload
fi
mkdir -p "/opt/plesk/node"
install_nodenv
}
do_remove()
{
remove_nodenv
}
if [ "${1:-}" = "remove" ] ; then
do_remove
else
do_install
fi