Created
July 27, 2015 19:44
-
-
Save ssuprunenko/0b0b5c9e8a7a7857d120 to your computer and use it in GitHub Desktop.
Deploy Ruby on Rails app to Digital Ocean droplet
This file contains 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
for Manual | |
Manual: | |
ssh root@xxx.xxx.xx.xx | |
1. Fix locale issue | |
$ sudo nano /etc/default/locale | |
LANGUAGE=en_US.UTF-8 | |
LC_ALL=en_US.UTF-8 | |
LANG=en_US.UTF-8 | |
LC_TYPE=en_US.UTF-8 | |
$ locale-gen en_US.UTF-8 | |
$ dpkg-reconfigure locales | |
2. Create new user | |
$ passwd | |
$ adduser deploy | |
$ visudo | |
# User privilege specification | |
root ALL=(ALL:ALL) ALL | |
deploy ALL=(ALL:ALL) ALL | |
3. Change ssh settings | |
$ nano /etc/ssh/sshd_config | |
Protocol 2 | |
PermitRootLogin no | |
UseDNS no | |
AllowUsers deploy | |
$ reload ssh | |
4. Copy your ssh key to server | |
# From local computer! | |
$ ssh-copy-id deploy@xxx.xxx.xx.xx | |
$ ssh deploy@xxx.xxx.xx.xx | |
5. Add Swap memory | |
$ sudo fallocate -l 2G /swapfile | |
$ sudo chmod 600 /swapfile | |
$ sudo mkswap /swapfile | |
$ sudo swapon /swapfile | |
$ sudo nano /etc/fstab | |
# Add to bottom | |
/swapfile none swap sw 0 0 | |
$ sudo sysctl vm.swappiness=10 | |
$ sudo sysctl vm.vfs_cache_pressure=50 | |
$ sudo nano /etc/sysctl.conf | |
# Add to bottom | |
vm.swappiness=10 | |
vm.vfs_cache_pressure = 50 | |
6. RVM | |
$ sudo apt-get install curl git-core nginx -y | |
$ curl -sSL https://get.rvm.io | bash -s stable | |
$ source ~/.rvm/scripts/rvm | |
$ rvm requirements | |
$ rvm install x | |
$ rvm use x --default | |
$ rvm rubygems current | |
7. Add Nginx repository | |
$ sudo add-apt-repository ppa:chris-lea/nginx-devel | |
8. Add Passenger repository | |
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7 | |
$ sudo apt-get install apt-transport-https ca-certificates | |
# Create a file | |
/etc/apt/sources.list.d/passenger.list | |
# Ubuntu 14.04 | |
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main | |
$ sudo chown root: /etc/apt/sources.list.d/passenger.list | |
$ sudo chmod 600 /etc/apt/sources.list.d/passenger.list | |
$ sudo apt-get update | |
9. Install passenger | |
$ sudo apt-get install nginx-extras passenger | |
# /etc/nginx/nginx.conf | |
worker_processes 1; | |
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; | |
passenger_ruby /home/deploy/.rvm/gems/ruby-2.2.2/wrappers/ruby; | |
10. Install Node.js | |
$ curl -sL https://deb.nodesource.com/setup | sudo bash - | |
$ sudo apt-get install -y nodejs | |
$ apt-get install -y build-essential | |
11. Install rails | |
gem install rails --no-ri --no-rdoc -V | |
gem install bundler --no-ri --no-rdoc -V | |
12. Create ssh key for github/bitbucket | |
$ ssh-keygen -t rsa | |
$ cat ~/.ssh/id_rsa.pub | |
$ ssh -T git@github.com | |
$ ssh -T git@bitbucket.org | |
# Add this to deployment keys | |
13. Install Postgresql | |
# /etc/apt/sources.list.d/pgdg.list | |
deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main | |
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \ | |
sudo apt-key add - | |
$ sudo apt-get update | |
$ sudo apt-get install libpq-dev | |
$ sudo apt-get install postgresql-9.4 | |
14. Fix postgresql permissions | |
$ sudo nano /etc/postgresql/9.1/main/pg_hba.conf | |
local all postgres trust | |
$ sudo service postgresql restart | |
$ psql -U postgres | |
postgres=# ALTER USER postgres with password 'secret'; | |
postgres=# CREATE DATABASE myapp_production; | |
postgres=# GRANT ALL privileges ON DATABASE eathalal_production TO postgres; | |
postgres=# \list | |
15. Link nginx config | |
$ sudo ln -nfs /home/deploy/eathalal/current/config/mysite.conf /etc/nginx/sites-enabled/mysite |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment