devilbox/autostart/run-node-js-projects.sh-example
2018-12-29 13:12:38 +01:00

47 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# This is a generic example to startup your NodeJS projects with
# pm2 (https://github.com/Unitech/pm2)
#
# Important: As everything is run by the root user, you must explicitly direct the
# commands to the devilbox user.
#
# Add the full paths of your Nodejs projects startup files into this array
# Each project separated by a newline and enclosed in double quotes. (No commas!)
# Paths are internal paths inside the PHP container.
NODE_PROJECTS=(
#"/shared/httpd/my-rhost/js/index.js"
#"/shared/httpd/my-node-hello-world/name/run.js"
#"/shared/httpd/another-node-project/javascript/run.js"
)
# Check if any projects have been defined
if [ ${#NODE_PROJECTS[@]} -eq 0 ]; then
echo "No projects defined. Exiting."
exit 0
fi
# This loops over the paths, separates base directory and filename and will run it in the background
# as the user devilbox. There shouldn't be any need to change anything here.
for item in ${NODE_PROJECTS[*]}; do
NODE_PATH="$( dirname "${item}" )"
NODE_FILE="$( basename "${item}" )"
if [ ! -d "${NODE_PATH}" ]; then
>&2 echo "[Warning], skipping startup, directory does not exist: ${NODE_PATH}"
continue;
fi
if [ ! -f "${NODE_PATH}/${NODE_FILE}" ]; then
>&2 echo "[Warning], skipping startup, file does not exist: ${NODE_PATH}/${NODE_FILE}"
continue;
fi
echo "su -c \"cd ${NODE_PATH}; pm2 start ${NODE_FILE}\" -l devilbox"
su -c "cd ${NODE_PATH}; pm2 start ${NODE_FILE}" -l devilbox
done