Created Ubuntu init.d for Haste Server (markdown)
							
								
								
									
										137
									
								
								Ubuntu-init.d-for-Haste-Server.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
										
											
											
										
										
									
								
							
						
						
									
										137
									
								
								Ubuntu-init.d-for-Haste-Server.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,137 @@ | ||||
| This is a basic init.d script for haste-server running on Ubuntu. This has been tested on Ubuntu 14.04 and 16.04. | ||||
|  | ||||
| 	#!/bin/sh | ||||
|  | ||||
| 	### BEGIN INIT INFO | ||||
| 	# Provides:          hasteserver | ||||
| 	# Required-Start:    $local_fs $network | ||||
| 	# Required-Stop:     $local_fs | ||||
| 	# Default-Start:     2 3 4 5 | ||||
| 	# Default-Stop:      0 1 6 | ||||
| 	# Short-Description: Starts Hastebin Server | ||||
| 	# Description:       Starts Hastebin Server for Ubuntu 14.04 or higher | ||||
| 	### END INIT INFO | ||||
|  | ||||
|  | ||||
| 	. /lib/lsb/init-functions | ||||
|  | ||||
| 	# Change the value of "USER" to linux user name who runs | ||||
| 	USER=root | ||||
|  | ||||
| 	# Change the value of "DAEMON" to Node.js process path | ||||
| 	DAEMON="/usr/local/bin/node" | ||||
| 	# Change the value of "ROOT_DIR" to hasteserver installation path | ||||
| 	ROOT_DIR="/var/www/haste" | ||||
|  | ||||
| 	# Only change these variables if you intentionally modified Haste Server | ||||
| 	SERVER="$ROOT_DIR/server.js" | ||||
| 	LOG_FILE="/var/log/hasteserver/server.js.log" | ||||
|  | ||||
| 	do_start() | ||||
| 	{ | ||||
| 			if [ ! -f "$LOCK_FILE" ] ; | ||||
| 		  then | ||||
| 			echo `date` >> $LOG_FILE | ||||
| 					echo " Starting Hastebin Server ...\n" | tee -a $LOG_FILE | ||||
| 					cd $ROOT_DIR | ||||
| 					nohup $DAEMON $SERVER >> $LOG_FILE 2>&1 & | ||||
| 			RETVAL=$? | ||||
| 			pid=`ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}'` | ||||
| 			if [ ${RETVAL} -eq 0 ]; | ||||
| 			  then | ||||
| 				log_success_msg " Hastebin Server Started ($pid)" | tee -a $LOG_FILE | ||||
| 			  else | ||||
| 				log_failure_msg " Hastebin Server failed with exit code ${RETVAL}" | tee -a $LOG_FILE | ||||
| 			  fi | ||||
| 					#[ $RETVAL -eq 0 ] && sudo touch $LOCK_FILE | tee -a $LOG_FILE | ||||
| 			  else | ||||
| 					echo "$SERVER is locked. LOCK_FILE: $LOCK_FILE" | tee -a $LOG_FILE | ||||
| 					RETVAL=1 | ||||
| 			  fi | ||||
| 	} | ||||
| 	do_stop() | ||||
| 	{ | ||||
| 			echo `date` >> $LOG_FILE | ||||
| 		echo " Stopping Hastebin Server ..." | tee -a $LOG_FILE | ||||
| 			pid=`ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}'` | ||||
| 			if [ -z "$pid" ]; | ||||
| 			  then | ||||
| 				log_success_msg " Hastebin Server was not running\n" | tee -a $LOG_FILE; | ||||
| 				exit | ||||
| 			  else | ||||
| 				echo " Terminating PID $pid ..." | tee -a $LOG_FILE | ||||
| 					kill -9 $pid >> $LOG_FILE 2>&1 | ||||
| 				RETVAL=$? | ||||
| 				if [ ${RETVAL} -eq 0 ]; | ||||
| 				  then | ||||
| 					log_success_msg " Hastebin Server has stopped\n" | tee -a $LOG_FILE; | ||||
| 				  else | ||||
| 					log_failure_msg " ERROR: Hastebin Server failed to stop - PID $pid could not be terminated\n" | tee -a $LOG_FILE; | ||||
| 				  fi | ||||
| 			  fi | ||||
| 	} | ||||
| 	do_status() | ||||
| 	{ | ||||
| 		pid=`ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}'` | ||||
| 		node=`node -v` | ||||
| 		if [ -z "$pid" ]; | ||||
| 			  then | ||||
| 				log_failure_msg " Hastebin Server is not running" | ||||
| 				echo " Location: $ROOT_DIR" | ||||
| 				echo " Node.js: $node at $DAEMON" | ||||
| 				echo " User: $USER" | ||||
| 				exit | ||||
| 			  else | ||||
| 				log_success_msg "Hastebin Server is running" | ||||
| 				echo " Location: $ROOT_DIR" | ||||
| 				echo " Node.js: $node at $DAEMON" | ||||
| 				echo " User: $USER"			 | ||||
| 				echo " Process ID: $pid" | ||||
| 				uptime=`ps -p "$pid" -o etime= | xargs` | ||||
| 				echo " Uptime: $uptime" | ||||
| 			  fi | ||||
| 	} | ||||
|  | ||||
| 	case "$1" in | ||||
| 			start) | ||||
| 					do_start | ||||
| 			;; | ||||
| 			stop) | ||||
| 					do_stop | ||||
| 			;; | ||||
| 		status) | ||||
| 					do_status | ||||
| 			;; | ||||
| 			restart) | ||||
| 					do_stop | ||||
| 					do_start | ||||
| 			;; | ||||
| 			*) | ||||
| 					echo "Usage: $0 {start|stop|status|restart}" | ||||
| 					exit 0 | ||||
| 		;; | ||||
| 	esac | ||||
| 	exit | ||||
|  | ||||
| Copy and paste the script into `/etc/init.d/hasteserver` and then edit these variables in the script according to your installation of haste-server: | ||||
| * USER | ||||
| * DAEMON | ||||
| * ROOT_DIR | ||||
| * LOG_FILE | ||||
|  | ||||
| Make the script executable and owned by root: | ||||
|  | ||||
| 	sudo chmod 755 /etc/init.d/hasteserver | ||||
| 	sudo chown root:root /etc/init.d/hasteserver | ||||
|  | ||||
| Now you should be able to use the commands: | ||||
|  | ||||
| 	service hasteserver start | ||||
| 	service hasteserver stop | ||||
| 	service hasteserver status | ||||
| 	service hasteserver restart | ||||
|  | ||||
| If you would like for Haste Server to start at boot, use the command: | ||||
|  | ||||
| 	sudo /usr/lib/insserv/insserv hasteserver | ||||
|  | ||||
		Reference in New Issue
	
	Block a user