search
Đăng ký nhận khóa học miễn phí và bài viết hướng dẫn qua email
Cài đặt môi trường phát triển Ruby on Rails trên Ubuntu 17
Views : 342 by Kevin Nguyen in Ruby On Rails

Giới thiệu

Trong tất cả các môi trường phát triển cho ứng dụng Ruby on Rails, có thể nói môi trường trên Ubuntu đem lại nhiều ưu điểm vì lý do độ tương đồng giữa quá trình phát triển và quá trình triển khai ứng dụng.

Khi lập trình các lập trình viên thực hiện trên Ubuntu Desktop và khi cài đặt server sẽ chọn Ubuntu Server, nếu lựa chọn giải pháp này thì sự thay đổi là ít nhất và số lỗi phát sinh do sự khác biệt môi trường sẽ tối thiểu.

Một số sự lựa chọn không tồi khác là Fedora cho máy phát triển và Centos khi triển khai, tuy nhiên trong bài viết này sẽ tập trung vào việc cài đặt môi trường phát triển trên Ubuntu 17+ phiên bản 64-bit.

Bắt đầu thôi.

Cài đặt cơ bản

Cập nhật hệ thống và cài đặt các gói dành cho nhà phát triển, lần lượt copy và paste các lệnh vào terminal.

sudo apt-get update && sudo apt-get install -y software-properties-common
sudo apt-get install -y nano gpg vim tzdata dmsetup build-essential git git-core subversion libmagickwand-dev imagemagick libpq-dev curl libcurl4-openssl-dev libapr1-dev libaprutil1-dev zlib1g-dev libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev python-software-properties libffi-dev
sudo apt-get install -y rubygems && sudo gem update --system

Cấu hình Git

git config --global user.name "your_name"
git config --global user.email "your_email@domain.com"

Có rất nhiều phương án để cài đặt Ruby, trước khi cài đặt chúng sẽ cân nhắc sử dụng phiên bản nào, để xem phiên bản Ruby mới nhất vào:

https://www.ruby-lang.org/en/downloads

Cài đặt Ruby sử dụng RVM

wget http://launchpadlibrarian.net/171078945/libreadline6_6.3-4ubuntu2_amd64.deb
sudo dpkg -i libreadline6_6.3-4ubuntu2_amd64.deb
rm libreadline6_6.3-4ubuntu2_amd64.deb
sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable

Khi quá trình cài đặt RVM hoàn thành chúng ta sẽ khởi động bằng 1 trong 2 câu lệnh sau đây tùy thuộc vào hướng dẫn trên màn hình.

source /home/kevin/.rvm/scripts/rvm

Hoặc

source ~/.rvm/scripts/rvm

Cuối cùng, khởi động RVM khi reboot hệ thống bằng lệnh

echo "source \$HOME/.rvm/scripts/rvm" >> ~/.bashrc

Và bây giờ chúng ta sẽ cài đặt Ruby, các bạn chú ý phiên bản để thay đổi cho phù hợp.

rvm install 2.4.2
rvm use 2.4.2 --default
ruby -v

Nếu cần chúng ta có thể cài đặt lại hoặc gỡ một phiên bản Ruby bằng RVM

rvm reinstall ruby-2.4.2
rvm uninstall 2.4.2

Cài đặt Ruby sử dụng rbenv

Sử dụng các lệnh sau đây

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
rbenv install 2.4.2
rbenv global 2.4.2
ruby -v

Cài đặt Ruby từ mã nguồn

Nếu bạn không thích sử dụng các trình quản lý phiên bản Ruby thì hoàn toàn có thể biên dịch từ mã nguồn.

cd
wget http://ftp.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz
tar -xzvf ruby-2.4.2.tar.gz
cd ruby-2.4.2/
./configure
make
sudo make install
ruby -v

Cài đặt Bundler

gem install bundler

Cài đặt Nodejs

Chúng ta cài đặt nodejs trực tiếp từ trang web chính chủ:

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

Cài đặt Rails

Xem phiên bản mới nhất của Rails tại

https://rubygems.org/search?query=rails

Để cài đặt phiên bản Rails mới nhất chúng ta sử dụng lệnh

gem install rails

Lệnh sau đây cài đặt một phiên bản chỉ định

gem install rails -v '5.1.4'
rails -v

Nếu bạn cài đặt Ruby sử dụng rbenv thì cần chạy thêm lệnh sau.

rbenv rehash

Kiểm tra kết quả

Đến đây chúng ta có thể kiểm tra kết quả cài đặt, tạo thử ứng dụng có tên blog.

rails new blog
cd blog
rails generate scaffold User name:string email:string
rails db:migrate
rails server

Truy cập để kiểm tra tại địa chỉ:

http://localhost:3000/users

Sau khi thử xong chúng ta dừng server bằng phím CTRL+C và xóa thư mục blog

cd ..

rm -rf blog

Các cài đặt tùy chọn nâng cao

Các phần nâng cao sau đây không bắt buộc cho quá trình phát triển ứng dụng Rails, nó được thực hiện với mục tiêu làm cho môi trường local giống với môi trường server nhất có thể.

Thực hiện việc đó bằng cách sử dụng trực tiếp cơ sở dữ liệu MySQL hoặc PosgreSQL trên local với webserver Apache và Phusion Passenger, tất cả cấu hình giống server cho phép bạn đặt tên miền dạng http://www.mydomain.com ngay trên local.

Cài đặt MySQL

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

Trong quá trình cài đặt sẽ yêu cầu password cho tài khoản root, bạn đặt password và ghi lại

Khởi động MySQL và cho phép khởi động khi reboot hệ thống.

sudo service mysql start
update-rc.d mysql defaults

Tạo tài khoản có tên admin_db để phát triển ứng dụng và cũng để kiểm tra trạng thái MySQL

mysql --user=root --password="your_password"
CREATE USER 'admin_db'@'localhost' IDENTIFIED BY 'admin_password';
GRANT ALL PRIVILEGES ON *.* TO 'admin_db'@'localhost' WITH GRANT OPTION;
CREATE USER 'admin_db'@'%' IDENTIFIED BY 'admin_password';
GRANT ALL PRIVILEGES ON *.* TO 'admin_db'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;

Tìm tập tin cấu hình của MySQL

find / -name my.cnf

Tùy từng hệ thống trên local hay server mà sẽ có vị trí khác nhau, mở tệp tin cấu hình.

sudo nano /etc/my.cnf

Hoặc

sudo nano /etc/mysql/my.cnf

Thêm vào cấu hình sau đây

[mysqld]
bind-address        = 0.0.0.0

Cuối cùng khởi động lại MySQL

sudo service mysql restart

Đối với trình SQL Browser thì chúng ta sẽ chọn  Mysql Workbench hoặc thay thế bằng DBeaver

http://dbeaver.jkiss.org

Cài đặt một trong hai chương trình trên và khi kết nối chọn host là localhost và tài khoản là:

admin_db / admin_password

Cài đặt Apache

sudo apt-get install -y apache2
sudo service apache2 start
sudo update-rc.d apache2 defaults

Kiểm tra hoạt động bằng cách truy cập: http://localhost

Cài đặt Passenger

sudo apt-get install -y libcurl4-openssl-dev apache2-dev libapr1-dev libaprutil1-dev
gem install passenger
passenger-install-apache2-module

Sau khi kết thúc cài đặt pasenger, chương trình sẽ đưa ra một khối lệnh cấu hình, chúng ta copy cả khối để thêm vào cấu hình Apache sau này.

   LoadModule passenger_module /home/kevin/.rvm/gems/ruby-2.4.2/gems/passenger-5.1.5/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/kevin/.rvm/gems/ruby-2.4.2/gems/passenger-5.1.5
     PassengerDefaultRuby /home/kevin/.rvm/gems/ruby-2.4.2/wrappers/ruby
   </IfModule>

Bạn chú ý phiên bản cho phù hợp nếu sử dụng khối lệnh trên.

Thêm khối lệnh trên vào dòng cuối cùng của file cấu hình Apache

sudo nano /etc/apache2/apache2.conf

Cho phép module mod_rewrite

sudo a2enmod rewrite

Và khởi động lại Apache

sudo service apache2 restart

Tạo ứng dụng

Chúng ta tạo ứng dụng có tên shop sử dụng MySQL để kiểm tra kết quả cài đặt.

cd
mkdir websites
cd websites
rails new shop -d mysql
cd shop
rails generate scaffold Product name:string description:text price:decimal

Tiếp theo chúng ta cần sửa file cấu hình /config/database.yml với thông tin phù hợp

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  wait_timeout: 300
  username: admin_db
  password: admin_password
development:
  <<: *default
  database: shop_db

Và chạy tiếp lệnh tạo cơ sở dữ liệu

rails db:create
rails db:migrate

Tạo file cấu hình cho virtualhost

sudo nano /etc/apache2/sites-enabled/shop.conf

Với nội dung

<VirtualHost *:80>
    RackEnv development
    ServerName shop.com
    DocumentRoot /home/kevin/websites/shop/public
        <Directory /home/kevin/websites/shop/public>
        AllowOverride all
        Options -MultiViews
        Require all granted
        </Directory>
</VirtualHost>

Xóa các virtualhost mặc định

sudo rm -rf /etc/apache2/sites-enabled/000-default.conf

Tạo tên miền trên máy cục bộ, thêm vào dòng cuối cùng của file

sudo nano /etc/hosts

Với nội dung

127.0.0.1   shop.com

Phân quyền cho thư mục ứng dụng và khởi động lại Apache

sudo chown -R $APACHE_RUN_USER:$APACHE_RUN_USER /home/kevin/websites
sudo chmod -R 755 /home/kevin/websites
sudo service apache2 restart

Cuối cùng bạn có thể truy cập vào ứng dụng để kiểm tra.

http://shop.com/products

Chúng ta có thể thấy bây giờ ứng dụng sẽ sử dụng tên miền chuẩn trong quá trình phát triển giống với quá trình triển khai sau này.

Lưu ý: Nếu quá trình phát triển song song với một server chạy thực có cùng tên miền thì chúng ta có thể bật/tắt thông qua comment/uncomment ở tệp tin /etc/host

#127.0.0.1   shop.com

Chúc thành công!

Next : Cài đặt môi trường phát triển Ruby on Rails sử dụng Docker