SSH as a user with sudo access, update package lists and upgrade packages (new install only)
sudo apt-get update
sudo apt-get upgrade
Either use an existing sandboxed user account, or create a deploy user and disable password authentication. Instead, authenticate with a keypair.
sudo adduser deploy
sudo passwd -l deploy
sudo apt-get install apache2 apache2-mpm-prefork
Now create the required directories, e.g. /var/www/virtual/ensl.org/deploy
You may need to re-configure MySQL. Use sudo dpkg-reconfigure mysql-server-5.5
sudo apt-get install mysql-server mysql-client libmysqlclient-dev memcached
Login to mysql as root, and create the database and user account:
CREATE DATABASE `ensl`;
CREATE USER 'xxx'@'localhost' IDENTIFIED BY 'xxx';
GRANT ALL PRIVILEGES ON ensl.* TO 'xxx'@'localhost' WITH GRANT OPTION;
As a user with sudo, install dependencies
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev imagemagick libmagickwand-dev
Switch user to deploy, and install rbenv
su deploy
cd ~
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
rbenv install 2.1.3
rbenv global 2.1.3
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
gem install bundler
Create the .env
file by copying .env.example
with the appropriate credentials.
cp /var/www/virtual/ensl.org/deploy/shared/.env.example /var/www/virtual/ensl.org/deploy/shared/.env
Use capistrano to deploy:
bundle exec cap production deploy