#!/bin/bash # # See: https://github.com/simpx/scripts/blob/master/stackscript # Install: Ruby 1.9.3, Nodejs 0.8.15, Mongodb and Nginx # Reference: https://www.linode.com/stackscripts/view/?StackScriptID=1291 # # # # exec &> /root/stackscript.log # Update packages and install essentials cd /tmp echo "Start to install! Good Luck!" apt-get update apt-get -y install aptitude aptitude -y full-upgrade apt-get -y install build-essential zlib1g-dev libssl-dev libreadline-gplv2-dev openssh-server libyaml-dev libcurl4-openssl-dev libxslt-dev libxml2-dev libpcre3 libpcre3-dev aptitude -y install wget vim less sed -i -e 's/^#PS1=/PS1=/' /root/.bashrc # enable the colorful root bash prompt sed -i -e "s/^#alias ll='ls -l'/alias ll='ls -al'/" /root/.bashrc # enable ll list long alias <3 echo "alias cl='clear&&ls'" >> /root/.bashrc echo "Essentials installed" # Install nodejs for javascript runtime export NODEJS_VERSION="v0.8.15" echo "Installing Nodejs $NODEJS_VERSION" echo "Downloading: (from calling wget http://nodejs.org/dist/$NODEJS_VERSION/node-$NODEJS_VERSION.tar.gz)" wget http://nodejs.org/dist/$NODEJS_VERSION/node-$NODEJS_VERSION.tar.gz echo "Extracting the file" tar xzf node-$NODEJS_VERSION.tar.gz cd node-$NODEJS_VERSION echo "current directory: `pwd`" echo "Nodejs Configuration output: (from calling ./configure)" ./configure echo "Nodejs make output: (form calling make)" make echo "Nodejs make install output: (from calling make install)" make install cd .. echo "Nodejs installed" # Install Redis export REDIS_VERSION="redis-2.6.7" echo "Installing Redis $REDIS_VERSION" echo "Downloading: (from calling wget http://redis.googlecode.com/files/$REDIS_VERSION.tar.gz)" wget http://redis.googlecode.com/files/$REDIS_VERSION.tar.gz tar xzf $REDIS_VERSION.tar.gz cd $REDIS_VERSION ./configure make make install # Download Configuration for redis echo "Downloading Configuration files" wget https://raw.github.com/simpx/scripts/master/redis.conf wget https://raw.github.com/simpx/scripts/master/redis-server mv redis-server /etc/init.d/redis-server chmod +x /etc/init.d/redis-server mv redis.conf /etc/redis.conf # Add redis user echo "Add Redis user" mkdir -p /var/lib/redis mkdir -p /var/log/redis useradd --system --home-dir /var/lib/redis redis chown redis.redis /var/lib/redis chown redis.redis /var/log/redis # Start redis-server during boot and stop during shutdown update-rc.d redis-server defaults cd .. # Installing Ruby export RUBY_VERSION="ruby-1.9.3-p194" echo "Installing Ruby $RUBY_VERSION" echo "Downloading: (from calling wget http://ftp.ruby-lang.org/pub/ruby/1.9/$RUBY_VERSION.tar.gz)" wget http://ftp.ruby-lang.org/pub/ruby/1.9/$RUBY_VERSION.tar.gz echo "tar output:" tar xzf $RUBY_VERSION.tar.gz cd $RUBY_VERSION echo "current directory: `pwd`" echo "Ruby Configuration output: (from calling ./configure)" ./configure echo "Ruby make output: (from calling make)" make echo "Ruby make install output: (from calling make install)" make install cd .. echo "Ruby installed!" # Set up Nginx export NGINX_VERSION="nginx-1.2.5" echo "Installing Nginx $NGINX_VERSION" echo "Downloading: (from calling wget http://nginx.org/download/$NGINX_VERSION.tar.gz)" wget http://nginx.org/download/$NGINX_VERSION.tar.gz echo "tar output:" tar xzf $NGINX_VERSION.tar.gz cd $NGINX_VERSION echo "current directory: `pwd`" ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module make make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin wget https://raw.github.com/simpx/scripts/master/nginx mv nginx /etc/init.d/nginx chmod +x /etc/init.d/nginx cd .. # Start nginx during boot and stop during shutdown update-rc.d -f nginx defaults # Install git echo "Installing Git" apt-get -y install git-core # Set up rails environment if [ ! -n "$RR_ENV" ]; then RR_ENV="production" fi cat >> /etc/environment << EOF RAILS_ENV="$RR_ENV" RACK_ENV="$RR_ENV" EOF # Installing Rails 3 gem update --system # Install rails echo "Installing Rails3 and gems" gem install rails --no-ri --no-rdoc #Install sqlite apt-get -y install sqlite3 libsqlite3-dev gem install sqlite3 --no-ri --no-rdoc #Install mongo gem gem install mongoid bson_ext --no-ri --no-rdoc # Install mongodb echo "Installing Mongodb" apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" >> /etc/apt/sources.list apt-get update apt-get install mongodb-10gen # Install mosh apt-get -y install python-software-properties add-apt-repository -y ppa:keithw/mosh apt-get update apt-get -y install mosh # Install supervisor apt-get -y install python-setuptools easy_install supervisor mkdir -p /etc/supervisor/conf.d mkdir -p /var/log/supervisor wget -P /etc https://raw.github.com/simpx/scripts/master/supervisord.conf wget -P /etc/supervisor/conf.d https://raw.github.com/simpx/scripts/master/supervisor-sample.conf supervisord # Add deploy user if [ ! -n "$DEPLOY_USER" ]; then DEPLOY_USER="deploy" fi if [ ! -n "$DEPLOY_PSW" ]; then DEPLOY_PSW="OMG_ITS_MY_PASSWORD!" fi echo "Add deploy user: $DEPLOY_USER" echo "$DEPLOY_USER:$DEPLOY_PSW:1000:1000::/home/$DEPLOY_USER:/bin/bash" | newusers cp -a /etc/skel/.[a-z]* /home/$DEPLOY_USER/ chown -R $DEPLOY_USER /home/$DEPLOY_USER # Add to sudoers without password echo "$DEPLOY_USER ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers # Goodstuff sed -i -e 's/^#PS1=/PS1=/' /home/$DEPLOY_USER/.bashrc # enable the colorful bash prompt sed -i -e "s/^#alias ll='ls -l'/alias ll='ls -al'/" /home/$DEPLOY_USER/.bashrc # enable ll list long alias <3 echo "alias cl='clear&&ls -p'" >> /home/$DEPLOY_USER/.bashrc echo "alias s='sudo supervisorctl'" >> /home/$DEPLOY_USER/.bashrc # Finished echo "StackScript Finished!"