apt-get -y update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties vim mc ImageMagick
# nginx
add-apt-repository ppa:nginx/stable
apt-get -y update
apt-get -y install nginx
service nginx start
# PostgreSQL
add-apt-repository ppa:pitti/postgresql
apt-get -y update
apt-get -y install postgresql postgresql-contrib libpq-dev
sudo -u postgres psql
# \password
# create user apps with password 'secret';
# ALTER USER apps CREATEDB;
# \q
# Mysql
apt-get install mysql-server mysql-client libmysqlclient-dev
# Sphinx search
apt-get install libmysqlclient-dev sphinxsearch
# disable autostart
vim /etc/default/sphinxsearch
START=no
sudo service sphinxsearch stop
# Redis
apt-get install tcl8.5
wget http://download.redis.io/releases/redis-stable.tar.gz
tar xzf redis-stable.tar.gz
cd redis-stable
make
make test
sudo make install
cd utils
sudo ./install_server.sh
sudo update-rc.d redis_6379 defaults
sudo vim /etc/redis/6379.conf
# set bind option to 127.0.0.1
# Postfix
apt-get -y install telnet postfix
# Node.js
add-apt-repository ppa:chris-lea/node.js
apt-get -y update
apt-get -y install nodejs
# Add deployer user
groupadd deployer
adduser deployer --ingroup deployer
sudo adduser deployer sudo
su deployer
cd
# configure SSH key login for user
mkdir .ssh
cat ~/.ssh/id_rsa.pub | ssh deployer@hostname 'cat >> ~/.ssh/authorized_keys'
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
# Disable root login https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04
sudo vim /etc/ssh/sshd_config
PermitRootLogin no
sudo service ssh restart
# firewall https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-ubuntu-14-04-servers
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 25/tcp
sudo ufw show added
sudo ufw enable
sudo dpkg-reconfigure tzdata
# rbenv https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rbenv-on-ubuntu-14-04
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
rbenv install -v 2.2.3
rbenv global 2.2.3
ruby -v
echo "gem: --no-document" > ~/.gemrc
gem install bundler rails
rbenv rehash
# Get to know github.com
ssh git@github.com
# modify sudoers (capistrano 3)
sudo vim deployer
deployer ALL=NOPASSWD:/etc/init.d/nginx
deployer ALL=(ALL) NOPASSWD: /usr/sbin/service nginx start,/usr/sbin/service nginx stop,/usr/sbin/service nginx restart
deployer ALL=NOPASSWD:/bin/ln -nfs /home/deployer/www/* /etc/nginx/sites-enabled/*
deployer ALL=NOPASSWD:/bin/ln -nfs /home/deployer/www/* /etc/init/*
deployer ALL = (root) NOPASSWD: /sbin/start *_production, /sbin/stop *_production, /sbin/restart *_production, /sbin/status *_production, /sbin/start *_staging, /sbin/stop *_staging, /sbin/restart *_staging, /sbin/status *_staging
deployer ALL=NOPASSWD:/home/deployer/.rbenv/shims/foreman
deployer ALL = (root) NOPASSWD: /home/deployer/.rbenv/bin/rbenv
deployer ALL=NOPASSWD:/sbin/initctl reload-configuration
sudo mv deployer /etc/sudoers.d/deployer
sudo chown root:root /etc/sudoers.d/deployer
# check
exit
/etc/init.d/nginx status
# oh-my-zsh https://github.com/robbyrussell/oh-my-zsh
apt-get install zsh
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
cap staging deploy:setup_config
cp shared/config/database.example.yml shared/config/database.yml
cap staging deploy
===============
additionally swap file can be added