Created
October 7, 2012 21:13
-
-
Save tsmango/3849611 to your computer and use it in GitHub Desktop.
2012 Rails Rumble - "Full Stack, Deployment Ready" - StackScript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| source <ssinclude StackScriptID="1"> | |
| # <UDF name="db_password" Label="MySQL root Password" /> | |
| # <UDF name="db_name" Label="Create Database" default="railsrumble_production" example="Production Database Name" /> | |
| logfile="/root/log.txt" | |
| RUBY_VERSION='ruby-1.9.3-p194' | |
| RUBYGEMS_VERSION='1.8.24' | |
| export logfile | |
| echo "StackScript Starting" >> $logfile | |
| echo "********************" >> $logfile | |
| system_update | |
| echo "System Updated" >> $logfile | |
| echo "" >> $logfile | |
| postfix_install_loopback_only | |
| echo "Configured: postfix_install_loopback_only" >> $logfile | |
| echo "" >> $logfile | |
| mysql_install "$DB_PASSWORD" && mysql_tune 40 | |
| echo "Installed: MySQL" >> $logfile | |
| echo "" >> $logfile | |
| mysql_create_database "$DB_PASSWORD" "$DB_NAME" | |
| echo "Configured: MySQL" >> $logfile | |
| echo "" >> $logfile | |
| apache_install && apache_tune 40 && apache_virtualhost_from_rdns && a2enmod rewrite | |
| echo "Installed: apache" >> $logfile | |
| echo "" >> $logfile | |
| goodstuff | |
| echo "Installed: goodstuff" >> $logfile | |
| echo "" >> $logfile | |
| apt-get -y install build-essential | |
| apt-get -y install libssl-dev | |
| apt-get -y install libreadline5-dev | |
| apt-get -y install zlib1g-dev | |
| apt-get -y install libyaml-dev | |
| apt-get -y install libxslt-dev | |
| apt-get -y install git | |
| apt-get -y install git-core | |
| apt-get -y install memcached | |
| apt-get -y install libcurl4-openssl-dev | |
| apt-get -y install apache2-prefork-dev | |
| apt-get -y install libapr1-dev | |
| apt-get -y install libaprutil1-dev | |
| apt-get -y install libreadline-dev | |
| echo "Installed: various libraries" >> $logfile | |
| echo "" >> $logfile | |
| # Install Ruby | |
| echo "Installing: Ruby" | |
| echo "$RUBY_VERSION.tar.gz" >> $logfile | |
| echo "$RUBY_VERSION" >> $logfile | |
| echo "" >> $logfile | |
| echo "Downloading: (from calling wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/$RUBY_VERSION.tar.gz)" >> $logfile | |
| echo "" >> $logfile | |
| wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/$RUBY_VERSION.tar.gz >> $logfile | |
| echo "" >> $logfile | |
| echo "tar output:" >> $logfile | |
| tar xzf $RUBY_VERSION.tar.gz >> $logfile | |
| rm $RUBY_VERSION.tar.gz | |
| cd $RUBY_VERSION | |
| echo "" >> $logfile | |
| echo "Current Directory:" >> $logfile | |
| pwd >> $logfile | |
| echo "" >> $logfile | |
| echo "Ruby configure output: (from calling ./configure --disable-ucontext --enable-pthread)" >> $logfile | |
| echo "" >> $logfile | |
| ./configure --disable-ucontext --enable-pthread >> $logfile | |
| echo "" >> $logfile | |
| echo "Ruby make output: (from calling make)" >> $logfile | |
| echo "" >> $logfile | |
| make >> $logfile | |
| echo "" >> $logfile | |
| echo "Ruby make install output: (from calling make install)" >> $logfile | |
| echo "" >> $logfile | |
| make install >> $logfile | |
| cd | |
| rm -rf $RUBY_VERSION | |
| echo "" >> $logfile | |
| echo "Downloading Ruby Gems with wget http://production.cf.rubygems.org/rubygems/rubygems-$RUBYGEMS_VERSION.tgz" >> $logfile | |
| echo "" >> $logfile | |
| wget http://production.cf.rubygems.org/rubygems/rubygems-$RUBYGEMS_VERSION.tgz >> $logfile | |
| echo "" >> $logfile | |
| echo "tar output:" >> $logfile | |
| tar xzvf rubygems-$RUBYGEMS_VERSION.tgz >> $logfile | |
| rm rubygems-$RUBYGEMS_VERSION.tgz | |
| echo "" >> $logfile | |
| echo "Installing: RubyGems" >> $logfile | |
| cd rubygems-$RUBYGEMS_VERSION | |
| ruby setup.rb >> $logfile | |
| cd | |
| rm -rf rubygems-$RUBYGEMS_VERSION | |
| echo "" >> $logfile | |
| echo "gem update --system:" >> $logfile | |
| gem update --system >> $logfile | |
| gem install rails --version 3.2.8 --no-ri --no-rdoc >> $logfile | |
| gem install passenger --version 3.0.17 --no-ri --no-rdoc >> $logfile | |
| echo "Installed: rails, passenger gems" >> $logfile | |
| echo "" >> $logfile | |
| echo "Installing: passenger" >> $logfile | |
| passenger-install-apache2-module --auto | |
| wget http://railsrumble.com.s3.amazonaws.com/2012/linode/apache2.conf >> $logfile | |
| wget http://railsrumble.com.s3.amazonaws.com/2012/linode/passenger.conf >> $logfile | |
| mv apache2.conf /etc/apache2/apache2.conf | |
| mv passenger.conf /etc/apache2/passenger.conf | |
| echo "" >> $logfile | |
| echo "Configured: apache, passenger" >> $logfile | |
| echo "" >> $logfile | |
| echo "Deployment Setup:" >> $logfile | |
| mkdir -p /var/www/apps/railsrumble/releases | |
| mkdir -p /var/www/apps/railsrumble/shared/config | |
| mkdir -p /var/www/apps/railsrumble/shared/log | |
| chown www-data:www-data -R /var/www/apps | |
| echo "Setup: Deployment Directory" >> $logfile | |
| touch /var/www/apps/railsrumble/shared/config/database.yml | |
| echo "production: | |
| adapter: mysql2 | |
| encoding: utf8 | |
| reconnect: false | |
| database: $DB_NAME | |
| pool: 5 | |
| username: root | |
| password: $DB_PASSWORD | |
| host: localhost | |
| socket: /var/run/mysqld/mysqld.sock" >> /var/www/apps/railsrumble/shared/config/database.yml | |
| echo "Configured: database.yml" >> $logfile | |
| ssh -T -oStrictHostKeyChecking=no [email protected] | |
| echo "Configured: github.com as known host" >> $logfile | |
| mkdir -p ~/.ssh | |
| ssh-keygen -N '' -f ~/.ssh/github-deploy-key -t rsa -q | |
| echo "Generated: SSH key for deployment (you need to add ~/.ssh/github-deploy-key.pub to your GitHub repository's deploy keys)" >> $logfile | |
| touch ~/.ssh/config | |
| echo "Host github.com | |
| IdentityFile ~/.ssh/github-deploy-key" >> ~/.ssh/config | |
| echo "Configured: ~/.ssh/config (this ensures the above deploy key is used for github.com)" >> $logfile | |
| touch ~/.ssh/authorized_keys | |
| curl http://railsrumble.com.s3.amazonaws.com/rumblebot.pub >> ~/.ssh/authorized_keys | |
| chmod 0700 ~/.ssh/ | |
| chmod 0644 ~/.ssh/authorized_keys | |
| echo "Configured: ~/.ssh/authorized_keys (do not remove the key for [email protected], this is necessary for verification)" >> $logfile | |
| restartServices | |
| echo "********************" >> $logfile | |
| echo "StackScript Finished" >> $logfile |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment