sudo -s
apt-get update
apt-get dist-upgrade
# install Sun java 7
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java7-installer
# install scala
apt-get install scala
# build tools
apt-get install build-essential
# install recent nodejs
sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:richarvey/nodejs #or sudo apt-get-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs nodejs-dev npm
# install nginx
apt-get install nginx
# get play
wget http://downloads.typesafe.com/play/2.2.1/play-2.2.1.zip
# unzip this somewhere
vim .bashrc
# add play to path
export PATH=$PATH:/path/to/play
# install neo4j
# start root shell
sudo -s
# Import our signing key
wget -O - http://debian.neo4j.org/neotechnology.gpg.key | apt-key add -
# Create an Apt sources.list file
echo 'deb http://debian.neo4j.org/repo testing/' > /etc/apt/sources.list.d/neo4j.list
# Find out about the files in our repository
apt-get update
# Install Neo4j, community edition
apt-get install neo4j
# start neo4j server, available at http://localhost:7474 of the target machine
/var/lib/neo4j/bin/neo4j start
# install git
apt-get install git
# clone projects
...
...
# make sure things are good
cd projects/dir/
play compile
# test running the server
play run
# compile staging package
play clean compile stage
# setup your init scripts to keep it alive
vim /etc/init.d/play.myapp
###################################################
## Init Script
###################################################
#!/bin/bash
APPLICATION_PATH=/home/user/projects/myplayapp
start() {
echo -n "Starting"
sudo start-stop-daemon --start --background --pidfile ${APPLICATION_PATH}/RUNNING_PID -d ${APPLICATION_PATH} --exec target/start -- -Dhttp.port=9000
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo " - Success"
else
echo " - Failure"
fi
echo
}
stop() {
echo -n "Stopping"
sudo start-stop-daemon --stop --pidfile ${APPLICATION_PATH}/RUNNING_PID
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo " - Success"
else
echo " - Failure"
fi
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: play-server {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
## END INIT
#make it executable
chmod +x /etc/init.g/play.myapp
# test it
/etc/init.d/play.myapp start
# now make it start on boot
update-rc.d play.myapp defaults
# finally lets get some proxy action
# edit nginx.conf adding servers for each of your projects...
vim /etc/nginx/nginx.conf
######### SAMPLE SECTION TO ADD in http{ ...
# add 1 sever per domain. Also note that you can have wildcards *
server {
listen 80;
server_name *.mysite.com;
location / {
proxy_pass http://localhost:9000/;
proxy_set_header Host $http_host;
}
# 404 ect...
}
# now restart nginx
/etc/init.d/nginx restart
Lets assume you had a number of sites on one server. You could have a number of play applications running on various ports. Then in nginx.conf you would define a sever rule for each site. Also MAKE sure you pass through the Host header or you will run into issues. (ex: secure_socaiul sending redirect urls as "localhost:9000"
Friday, November 29, 2013
Zero to Play with Linux Neo4j, Play2 and nginx
This is a guide for taking your (debian like) linux system from a fresh install to staging server.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment