forked from coolaj86/node-installer.sh
add nginx, forever and clone app from github
This commit is contained in:
parent
cd92653f6c
commit
5379b3b577
|
@ -7,7 +7,10 @@ Works for any recent version of Ubuntu or OS X.
|
|||
|
||||
```bash
|
||||
# Specify the version of node to install
|
||||
echo "v0.11.14" > /tmp/NODE_VER
|
||||
echo "v4.2.3" > /tmp/NODE_VER
|
||||
|
||||
# Specify the Github url of your app
|
||||
echo "https://github.com/<user>/<project>" > /tmp/APP_URL
|
||||
|
||||
# And install away!
|
||||
curl -fsSL bit.ly/easy-install-node | bash
|
||||
|
@ -29,6 +32,8 @@ This is what gets installed:
|
|||
* xcode / brew / build-essential / pkg-config / gcc
|
||||
* node
|
||||
* jshint
|
||||
* nginx
|
||||
* forever
|
||||
|
||||
Screencast
|
||||
==========
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# description: DevShelf service
|
||||
# processname: node
|
||||
# pidfile: /var/run/devshelf.pid
|
||||
# logfile: /var/log/devshelf.log
|
||||
#
|
||||
# Based on https://gist.github.com/jinze/3748766
|
||||
#
|
||||
# To use it as service on Ubuntu:
|
||||
# sudo cp devshelf.sh /etc/init.d/devshelf
|
||||
# sudo chmod a+x /etc/init.d/devshelf
|
||||
# sudo update-rc.d devshelf defaults
|
||||
#
|
||||
# Then use commands:
|
||||
# service devshelf <command (start|stop|etc)>
|
||||
|
||||
NAME=devshelf # Unique name for the application
|
||||
SOUREC_DIR=/home/node-app # Location of the application source
|
||||
COMMAND=node # Command to run
|
||||
SOURCE_NAME=index.js # Name os the applcation entry point script
|
||||
USER=root # User for process running
|
||||
NODE_ENVIROMENT=production # Node environment
|
||||
|
||||
pidfile=/var/run/$NAME.pid
|
||||
logfile=/var/log/$NAME.log
|
||||
forever=forever
|
||||
|
||||
start() {
|
||||
export NODE_ENV=$NODE_ENVIROMENT
|
||||
echo "Starting $NAME node instance : "
|
||||
|
||||
touch $logfile
|
||||
chown $USER $logfile
|
||||
|
||||
touch $pidfile
|
||||
chown $USER $pidfile
|
||||
|
||||
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
|
||||
sudo -H -u $USER $forever start --pidFile $pidfile -l $logfile -a --sourceDir $SOUREC_DIR -c $COMMAND $SOUREC_DIR/$SOURCE_NAME
|
||||
|
||||
RETVAL=$?
|
||||
}
|
||||
|
||||
restart() {
|
||||
echo -n "Restarting $NAME node instance : "
|
||||
sudo -H -u $USER $forever restart $SOUREC_DIR/$SOURCE_NAME
|
||||
RETVAL=$?
|
||||
}
|
||||
|
||||
status() {
|
||||
echo "Status for $NAME:"
|
||||
sudo -H -u $USER $forever list
|
||||
RETVAL=$?
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n "Shutting down $NAME node instance : "
|
||||
sudo -H -u $USER $forever stop $SOUREC_DIR/$SOURCE_NAME
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
*)
|
||||
echo "Usage: {start|stop|status|restart}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit $RETVAL
|
|
@ -0,0 +1,31 @@
|
|||
##
|
||||
# You should look at the following URL's in order to grasp a solid understanding
|
||||
# of Nginx configuration files in order to fully unleash the power of Nginx.
|
||||
# http://wiki.nginx.org/Pitfalls
|
||||
# http://wiki.nginx.org/QuickStart
|
||||
# http://wiki.nginx.org/Configuration
|
||||
#
|
||||
# Generally, you will want to move this file somewhere, and start with a clean
|
||||
# file but keep this around for reference. Or just disable in sites-enabled.
|
||||
#
|
||||
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
|
||||
##
|
||||
|
||||
upstream project {
|
||||
server localhost:3000;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server ipv6only=on;
|
||||
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
|
||||
# Make site accessible from http://localhost/
|
||||
server_name localhost;
|
||||
|
||||
location / {
|
||||
proxy_pass http://project;
|
||||
}
|
||||
}
|
37
setup.bash
37
setup.bash
|
@ -3,23 +3,34 @@
|
|||
# curl -fsSL https://example.com/setup.bash | bash
|
||||
# wget -nv https://example.com/setup.bash -O - | bash
|
||||
|
||||
echo ""
|
||||
echo "Script starting..."
|
||||
|
||||
BASE_URL="https://raw.githubusercontent.com/coolaj86/node-install-script/master"
|
||||
|
||||
if [ -n "$(which node 2>/dev/null || false)" ]; then
|
||||
echo ""
|
||||
echo "HEY, LISTEN:"
|
||||
echo "node is already install as $(node -v | grep v)"
|
||||
echo "node is already installed as $(node -v | grep v)"
|
||||
echo ""
|
||||
echo "to reinstall please first run: rm $(which node)"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
if [ -f "/tmp/NODE_VER" ]; then
|
||||
NODE_VER=$(cat /tmp/NODE_VER | grep v)
|
||||
NODE_VER=$(cat /tmp/NODE_VER)
|
||||
fi
|
||||
if [ -f "/tmp/APP_URL" ]; then
|
||||
APP_URL=$(cat /tmp/APP_URL)
|
||||
fi
|
||||
|
||||
echo "app url: $APP_URL"
|
||||
echo "node version: $NODE_VER"
|
||||
|
||||
if [ -z "$NODE_VER" ]; then
|
||||
NODE_VER="v0.11.14"
|
||||
NODE_VER="v4.2.3"
|
||||
fi
|
||||
|
||||
OS="unsupported"
|
||||
ARCH=""
|
||||
|
||||
|
@ -146,4 +157,24 @@ else
|
|||
echo "jshint already installed"
|
||||
fi
|
||||
|
||||
# clone app
|
||||
if [[ $APP_URL ]]; then
|
||||
sudo bash -c "cd /home/ && git clone ${APP_URL} node-app && cd node-app && npm install"
|
||||
fi
|
||||
|
||||
# forever
|
||||
sudo bash -c "npm -g install forever"
|
||||
wget --quiet "${BASE_URL}/config-files/forever-node-init.sh" -O /etc/init.d/forever || echo 'error downloading forever config script'
|
||||
sudo bash -c "chmod a+x /etc/init.d/forever"
|
||||
sudo bash -c "update-rc.d forever defaults"
|
||||
if [[ $APP_URL ]]; then
|
||||
sudo bash -c "forever start /home/node-app/index.js"
|
||||
fi
|
||||
|
||||
# nginx
|
||||
echo "installing nginx..."
|
||||
sudo bash -c "apt-get install -qq -y nginx < /dev/null" > /dev/null
|
||||
wget --quiet "${BASE_URL}/config-files/nginx-config" -O /etc/nginx/sites-enabled/default || echo 'error configuring nginx'
|
||||
sudo bash -c "service nginx reload"
|
||||
|
||||
echo ""
|
||||
|
|
Loading…
Reference in New Issue