## Update and upgrade the system ``` sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo apt-get autoremove sudo reboot ``` ## Configure timezone ``` sudo dpkg-reconfigure tzdata sudo apt-get install ntp sudo ntpdate ntp.ubuntu.com date ``` ### Create new user ``` sudo adduser ubuntu sudo adduser ubuntu sudo ``` Edit `/etc/sudoers` ``` %sudo ALL=(ALL:ALL) ALL ubuntu ALL=NOPASSWD: ALL ``` ## Environment variables Edit `/etc/profile` ``` export PATH=/opt/ruby/bin:/opt/nginx/sbin:/opt/ruby/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin export RAILS_ENV=production export GEM_HOME=/opt/ruby/gems export LC_ALL=en_US.UTF-8 ``` Edit `/etc/environment` ``` PATH=/opt/ruby/bin:/opt/nginx/sbin:/opt/ruby/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin RAILS_ENV=production GEM_HOME=/opt/ruby/gems LC_ALL=en_US.UTF-8 ``` Edit `/etc/sudoers` ``` Defaults secure_path="/opt/ruby/bin:/opt/nginx/sbin:/opt/ruby/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ``` ## Some libraries for Mysql, ImageMagick, Node, etc ``` sudo apt-get install libmagickwand-dev libmysqlclient15-dev nodejs npm imagemagick ``` ## Ruby ``` sudo apt-get install libyaml-dev libssl-dev libreadline-dev libxml2-dev libxslt1-dev libffi-dev build-essential wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.gz tar xvfz ruby-2.1.0.tar.gz cd ruby-2.1.0/ ./configure --prefix=/opt/ruby --disable-install-rdoc make sudo make install ``` ## GIT ``` sudo apt-get build-dep git-core wget https://git-core.googlecode.com/files/git-1.8.5.4.tar.gz tar xvfz git-1.8.5.4.tar.gz cd git-1.8.5.4/ ./configure make sudo make install ``` ## OpenSSL ``` cd /opt wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz tar xvfz openssl-1.0.1g.tar.gz sudo mv openssl-1.0.1g openssl cd openssl/ ./config make sudo make install ``` ## VIM ### Syntax highlighting for Nginx in VIM ``` sudo mkdir /etc/vim/syntax sudo curl http://www.vim.org/scripts/download_script.php?src_id=14376 -o /etc/vim/syntax/nginx.vim cd /etc/vim Download de the file https://gist.github.com/jtadeulopes/8978872 ``` For more detail, see http://zduck.com/2012/syntax-highlighting-for-nginx-in-vim ### Global settings Edit `/etc/vim/vimrc` and add the lines below ``` set number set smartindent set tabstop=4 set shiftwidth=4 set expandtab ``` ## Nginx ``` wget http://nginx.org/download/nginx-1.5.10.tar.gz tar xvfz nginx-1.5.10.tar.gz cd nginx-1.5.10/ ./configure --prefix=/opt/nginx --with-http_ssl_module --with-openssl=/opt/openssl make sudo make install ``` ### Nginx settings ``` cd /opt/nginx/conf sudo rm nginx.conf Download the file https://gist.github.com/jtadeulopes/7237669 sudo mkdir /var/log/nginx sudo mkdir sites-enabled cd sites-enabled Download the file https://gist.github.com/jtadeulopes/7237731 Or with SSL support https://gist.github.com/jtadeulopes/9189120 ``` ### Upstart script ``` cd /etc/init Download the file https://gist.github.com/jtadeulopes/7237115 ``` Now, you can run: ``` sudo (start|restart|stop) nginx ``` ## Deploy ### Add user ``` sudo adduser deploy ``` ### SSH keys See https://help.github.com/articles/generating-ssh-keys#platform-linux ### Create folder to deploy the app ``` sudo mkdir /var/www sudo chown deploy:deploy -c -R /var/www ``` ### Capistrano `Capfile` https://gist.github.com/jtadeulopes/7249948 `deploy.rb` https://gist.github.com/jtadeulopes/7249921 ### Puma Upstart script **For each project, you must create the puma upstart file** ``` cd /etc/init Download the file https://gist.github.com/jtadeulopes/7254953 ``` With the upstart for each project, you can run: ``` sudo (start|restart|stop) project ``` ### Puma config ``` cd my/project/path/config wget https://gist.github.com/jtadeulopes/7265503/raw/25ce868f791fd0f79b7f4fe4be81fd4b31f46b69/puma.rb ``` ## Monit ``` sudo apt-get install monit ``` **For each project, you must create the monit confg file** ``` cd /etc/monit/conf.d Download the file https://gist.github.com/jtadeulopes/7270279 ``` Edit `/etc/monit/monitrc` ``` set daemon 60 ``` Restart monit ``` sudo /etc/init.d/monit restart