12/08/2018, 10:04

Hướng dẫn deploy Ruby on Rails lên server Ubuntu

Deploy là công việc khá thú vị mà hầu hết các developer đều phải trải qua trong sự nghiệp code của mình. Đây cũng là giai đoạn quan trọng đối với một dự án để giao sản phẩm cho khách hàng. Tuy nhiên công việc deploy không phải lúc nào cũng diễn ra xuôi sẻ .Bởi môi trường dưới local có nhiều điểm ...

Deploy là công việc khá thú vị mà hầu hết các developer đều phải trải qua trong sự nghiệp code của mình. Đây cũng là giai đoạn quan trọng đối với một dự án để giao sản phẩm cho khách hàng.

Tuy nhiên công việc deploy không phải lúc nào cũng diễn ra xuôi sẻ .Bởi môi trường dưới local có nhiều điểm khác biệt so với môi trường trên server. Và đôi khi chúng ta phải xử lý những vấn đề phát sinh đó mất rất nhiều thời gian.

Bài viết này, tôi sẽ hướng dẫn các bạn cách deploy Ruby on Rails lên server Ubuntu. Version tôi sử dụng ở đây là Ubuntu 14.04.

Tuy nhiên các bạn cũng có thể sử dụng những version khác, hoặc sử dụng những HĐH khác như Centos, Red hat,...

Nội dung chính.

  1. Add user deploy
  2. Setup domain
  3. Install Ruby
  4. Install Ruby on Rails
  5. Install Apache
  6. Install Mysql
  7. Install Passenger
  8. Install Git
  9. Config Apache
  10. Config database and migrate database

1. Add user deploy
Khi deploy chúng ta sẽ không sử dụng tài khoản root để tránh bị xâm phạm vào hệ thống. Bởi vậy chúng ta nên tạo một tài khoản deploy riêng.

Dưới đây là các bước tạo tài khoản deploy

1.1. Login với tài khoản root theo IP của server

ssh root@SERVER_IP_ADDRESS

Sẽ có thông báo yêu cầu nhập password để connect được vào hệ thống. Bạn nhập password để hoàn thành việc login.

**1.2. **Add user deploy

    sudo adduser deploy

Sẽ có một thông báo yêu cầu thiết lập password cho account deploy. Nhập password vào và enter để tiếp tục.

1.3. Thiết lập quyền cho account deploy
Sau khi đã tạo account deploy, chúng ta cần thiết lập quyền root cho account deploy của mình.

Điều này cho phép user deploy có thể sử dụng với quyền administrator, bằng cách sử dụng sudo ở trước mỗi command line.

Ta chạy lệnh này

gpasswd -a deploy sudo

Bây giờ user deploy có thể chạy command line với quyền của user root

1.4. Log back
Các bạn log out user root hiện tại.

exit

Sau đó login lại với user deploy vừa tạo ở trên

ssh deploy@SERVER_IP_ADDRESS

**2. Setup domain**
Các bạn trỏ domain về IP của server theo hướng dẫn của bên cung cấp domain mà bạn đang sử dụng.

3. Install Ruby
Để đảm bảo các packages mà chúng ta muốn cài đặt được cập nhật. Các bạn chạy lệnh update sau.

sudo apt-get update

Tiếp theo chúng ta install một vài thư viện và những thứ liên quan khác

sudo apt-get install build-essential libssl-dev libyaml-dev libreadline-dev openssl curl git-core zlib1g-dev bison libxml2-dev libxslt1-dev libcurl4-openssl-dev libsqlite3-dev sqlite3

Sau đó chúng ta tạo thư mục ruby trên hệ thống

mkdir ~/ruby

Sau đó di chuyển đến thư mục vừa tạo bằng lệnh

cd ~/ruby

Download Ruby về thư mục vừa tạo, ở đây tôi chọn Ruby version 2.1.4

wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz

Giải nén file vừa download về

tar -xzf ruby-2.1.4.tar.gz

Chọn thư mục vừa giải nén

cd ruby-2.1.4

Run configure script.

    ./configure

Run the make utility.

make
sudo make install

Vậy là việc cài đặt Ruby đã hoàn tất. Bạn có thể kiểm tra version của Ruby đã cài đặt bằng lệnh

ruby -v

Nếu Ruby đã cài đặt thành công bạn sẽ nhìn thấy dòng **ruby 2.1.4p265 ** trên command line

Bây giờ chúng ta có thể xóa folder ruby đi bằng lệnh.

rm -rf ~/ruby

4. Install Ruby on Rails

Chúng ta tiến hành install Rails như sau

sudo gem install --no-rdoc --no-ri rails

5. Install Apache

Ta thực hiện lệnh sau

sudo apt-get install apache2

6. Install Mysql

Các bạn chạy lệnh update lại một lần nữa

sudo apt-get update

Tiếp theo

sudo apt-get install mysql-server-5.6

Chương trình yêu cầu thiết lập password cho Mysql như hình bên dưới mysql.png Xác nhận mật khẩu mysql-2.png

Vậy là chúng ta hoàn thành việc cài đặt Mysql trên server của mình.

Tiếp theo, chúng ta create database cho project của mình

cd /etc/mysql

Login to Mysql server

mysql -u root -p 12345678910

Create db

create database db_deploy

Okie, vậy là chúng ta đã tạo xong database

7. Install Passenger

Như các bạn biết, Apache là một web server thường sử dụng nhiều cho PHP. Nhưng nó không support đối với Ruby on Rails.

Bởi vậy, để sử dụng được Ruby on Rails trên Apache ta phải sử dụng Phusion Passenger. Hay nói cách khác Phusion Passenger là một bên trung gian để kết nối giữ Apache và Ruby on Rails.

Chú ý: Trước khi cấu hình RoR với Apache với Phusion Passenger thì các bạn phải chắc chắn là đã cài đặt xong xuôi RoR trên server.

**Cài Passenger **

 sudo gem install passenger

Tiếp theo cài module Passenger cho apache

passenger-install-apache2-module

Màn hình cài đặt hiện ra như thế này

Welcome to the Phusion Passenger Apache 2 module installer, v4.0.52.
This installer will guide you through the entire installation process. It
shouldn’t take more than 3 minutes in total.
Here’s what you can expect from the installation process:
1. The Apache 2 module will be installed for you.
2. You’ll learn how to configure Apache.
3. You’ll learn how to deploy a Ruby on Rails application.
Don’t worry if anything goes wrong. This installer will advise you on how to
solve any problems.
Press Enter to continue, or Ctrl-C to abort.

Nhấn Enter để tiếp tục.

Sau đó chọn thêm các ngôn ngữ khác nếu cần bằng cách nhấn phím cách (space): Ruby, Python, Node.JS…

Which languages are you interested in?
Use <space> to select.
If the menu doesn’t display correctly, press ‘!’
‣ Ruby
 Python
 Node.js
Meteor

Tiếp tục enter và thực hiện theo màn hình thông báo cho đến khi quá trình cài đặt hoàn tất.

Ở bước cuối cùng bạn sẽ nhìn thấy dòng thông báo như sau:

Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /home/thanhtv/.rvm/gems/ruby-2.1.1/gems/passenger-4.0.52/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/thanhtv/.rvm/gems/ruby-2.1.1/gems/passenger-4.0.52
     PassengerDefaultRuby /home/thanhtv/.rvm/gems/ruby-2.1.1/wrappers/ruby
   </IfModule>
After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!
Press ENTER to continue.

Nhấn Enter để hoàn thành viêc cài đặt Passenger.

Bây giờ chúng ta restart lại server

sudo service apache2 restart

8. Install Git

Để cài Git các bạn sử dụng lệnh

apt-get install git-core

Sau khi success, bạn có thể kiểm tra version của Git bằng lệnh

git --version

**9. Config Apache **

Bây giờ, các bạn vào thư mục var/www trên server. Sau đó tạo một thư mục web của mình bẳng cách sử dụng lệnh

mkdir tên_thư_mục

Thư mục của tôi ở đây là là deploy

Lúc này, các bạn sử dụng Git để đưa source code project của mình lên server (var/www/deploy)

Sau khi đã đưa được source code lên server chúng ta sẽ cấu hình thông tin apache để có thể chạy được web của mình.

Các bạn vào thư mục /etc/apache2/sites-available. Ở đây các bạn tạo một file có tên là deploy.conf với nội dung như sau.

<VirtualHost *:80>
    ServerName domain.com.vn
    ServerAlias www.domain.com.vn
    ServerAdmin domain@localhost
    DocumentRoot /var/www/deploy/public
    RailsEnv production
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ServerName: Domain web của bạn

DocumentRoot: Là đường dẫn đến thư mục project của bạn trên server

Sau đó các bạn mở file hosts trên server lên

sudo nano /etc/hosts

Thêm dòng sau vào

IP_SERVER   domain_website

Khởi động lại server

sudo service apache2 restart

10. Config database and migrate database

Bây giờ chúng ta config lại thông tin database cho website của mình.

Mở file config/database.yml

sudo nano database.yml

Ta thay đổi ở production như sau

production:
  # <<: *default
  database: db_deploy  # là database mà bạn create ở trên
  username: deploy
  password: 12345678910 # Là password đã setup ở phần install Mysql
  adapter: mysql2
  url: <%= ENV['DATABASE_URL'] %>

Tiếp theo ta sẽ migrate db

rake db:migrate
rake db:seed

Kết luận: Qua bài viết này, tôi đã hướng dẫn cho các bạn cách deploy Ruby on Rails lên server. Các bước thực hiện cũng không quá phức tạp đối với một Developer. Mong rằng bài hướng dẫn này sẽ giúp ích cho các bạn trong quá trình làm việc.

0