Deploy ứng dụng Rails với Elastic Beanstalk

Chắc hẳn bạn đã quen với việc deploy server Rails sử dụng Capistrano Hôm nay tôi sẽ giới thiệu với các bạn thêm một cách khác cho việc deploy server, đó là sử dụng dịch vụ Elastic Beanstalk của AWS.

Cài đặt Ruby

Trước hết bạn cần một server để phục vụ cho việc deploy. Nếu bạn có tài khoản aws mà vẫn còn quota freetier thì nên dùng loại instance EC2 t2.micro. Hướng dẫn chi tiết bạn có thể xem ở bài trước của tôi về cách tận dụng chế độ freetier của AWS. Hãy bật một instance EC2 t2.micro, nhớ download keypair về vì bạn sẽ cần chúng để ssh vào instance này.

Thực hiện truy cập vào server:

ssh [email protected]<instance_public_ip> -i <path_to_keypair>

Tôi thường thêm cả public_key mặc định của máy mình vào để sau này vẫn có thể truy cập được nếu mất keypair. Tôi copy nội dung file id_rsa.pub (thường đặt trong thư mục ~/.ssh) vào trong thư mục ~/.ssh/authorized_key trên instance EC2.

Sau đó tôi có thể vào server bằng lệnh trên mà không cần chỉ đích danh public key (keypair) nữa

ssh [email protected]<instance_public_ip>

Bây giờ bạn đã có thể access được vào instance (tôi sẽ gọi là deploy server cho dễ hiểu).

Bước tiếp theo, ta hãy cài đặt Ruby và các package cần thiết. Ở đây tôi sẽ sử dụng rvm để cài đặt.

gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -ssl https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer | bash -s stable --rails
source /home/ubuntu/.rvm/scripts/rvm

Nodejs và npm cũng thường cần cần thiết, nên bạn cũng có thể sẽ cần sử dụng lệnh sau:

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

Get the code

Tiếp theo ta hãy tạo lập directory cho việc deploy code. Nếu bạn chưa có repo github (bitbucket...) thì bạn có thể tạo mới:

rails new rails-beanstalk

Hoặc không thì hãy thiết lập để có thể kéo code từ github về.

Hãy thiết lập ssh-key cho deploy server, mục đích là để bạn có thể lấy code từ repo trên github về, bạn có thể làm theo hướng dẫn của github để tạo ssh-key. https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

Cài đặt eb-cli

Thiết lập eb-cli

Deploy project