90 lines
1.8 KiB
Bash
Executable File
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
|