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.
- Add user deploy
- Setup domain
- Install Ruby
- Install Ruby on Rails
- Install Apache
- Install Mysql
- Install Passenger
- Install Git
- Config Apache
- 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 Xác nhận mật khẩu
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.