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 ...
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 ubuntu@<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 ubuntu@<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/