Kiến thức Hữu ích 😍

Cài đặt Ruby on Rails với rbenv trên CentOS 7 | Hướng dẫn chi tiết


Ruby on Rails, thường được gọi tắt là Rails, là một framework phát triển ứng dụng web mạnh mẽ được xây dựng trên ngôn ngữ lập trình Ruby. Framework này nổi tiếng với triết lý “Convention over Configuration” (Ưu tiên quy ước hơn cấu hình), giúp các lập trình viên tăng tốc độ phát triển và xây dựng các ứng dụng phức tạp một cách nhanh chóng. Tuy nhiên, việc cài đặt và quản lý môi trường Rails, đặc biệt trên một hệ điều hành máy chủ như CentOS 7 là gì, có thể trở thành một thách thức. Nhiều lập trình viên thường gặp khó khăn trong việc quản lý các phiên bản Ruby khác nhau cho các dự án riêng biệt, dẫn đến xung đột và lỗi không mong muốn. Đây chính là lúc rbenv là gì tỏa sáng. rbenv là một công cụ gọn nhẹ nhưng cực kỳ hiệu quả, cho phép bạn quản lý nhiều phiên bản Ruby trên cùng một hệ thống một cách dễ dàng. Thay vì cài đặt một phiên bản Ruby duy nhất cho toàn hệ thống, rbenv giúp bạn cài đặt và chuyển đổi giữa các phiên bản một cách linh hoạt, đảm bảo mỗi dự án có một môi trường độc lập và ổn định. Bài viết này của AZWEB sẽ hướng dẫn bạn chi tiết từng bước, từ việc chuẩn bị môi trường CentOS 7, cài đặt rbenv, Ruby, Rails cho đến việc tạo ứng dụng đầu tiên và khắc phục các sự cố thường gặp, giúp bạn tự tin làm chủ môi trường phát triển của mình.

Yêu cầu hệ thống và chuẩn bị môi trường trên CentOS 7

Trước khi bắt đầu hành trình cài đặt Ruby on Rails, việc chuẩn bị một môi trường hệ thống sạch sẽ và đầy đủ là bước quan trọng nhất. Một nền tảng vững chắc sẽ giúp bạn tránh được rất nhiều lỗi không đáng có trong quá trình cài đặt và phát triển sau này. Chúng ta sẽ cùng nhau kiểm tra phiên bản hệ điều hành, cập nhật các gói cần thiết và cài đặt những công cụ phụ thuộc quan trọng để đảm bảo Ruby và Rails có thể hoạt động một cách trơn tru trên CentOS 7. Hãy coi đây là bước khởi động, tạo đà cho một quy trình thiết lập hiệu quả và chuyên nghiệp.

Kiểm tra phiên bản CentOS và cập nhật hệ thống

Đầu tiên, bạn cần chắc chắn rằng mình đang làm việc trên CentOS 7 là gì. Việc xác định đúng phiên bản hệ điều hành là rất quan trọng vì các lệnh và gói phần mềm có thể khác nhau giữa các phiên bản. Để kiểm tra, hãy mở terminal và chạy lệnh sau:

cat /etc/centos-release

Lệnh này sẽ hiển thị thông tin phiên bản CentOS của bạn. Sau khi xác nhận, bước tiếp theo là cập nhật toàn bộ hệ thống. Cập nhật hệ thống không chỉ giúp vá các lỗ hổng bảo mật mà còn đảm bảo bạn có được phiên bản mới nhất của các thư viện và công cụ hệ thống, điều này rất cần thiết cho việc biên dịch và cài đặt Ruby sau này. Sử dụng lệnh sau để cập nhật:

sudo yum update -y

Hình minh họa

Quá trình này có thể mất vài phút tùy thuộc vào số lượng gói cần cập nhật. Cờ `-y` sẽ tự động trả lời “yes” cho tất cả các câu hỏi xác nhận, giúp quá trình diễn ra liền mạch.

Cài đặt các phụ thuộc cần thiết cho Ruby on Rails

Ruby on Rails không hoạt động một mình; nó cần sự hỗ trợ của nhiều công cụ và thư viện khác nhau. Để biên dịch Ruby từ mã nguồn và cài đặt các “gem” (thư viện Ruby) một cách thành công, chúng ta cần cài đặt một loạt các gói phụ thuộc. Hãy chạy lệnh dưới đây để cài đặt tất cả chúng cùng một lúc:

sudo yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel nodejs

Vậy tại sao chúng ta cần những gói này? `gcc-c++` và `make` là các công cụ cần thiết để biên dịch mã nguồn. `openssl-devel`, `readline-devel`, `zlib-devel` là các thư viện phát triển mà Ruby cần để hoạt động. `git` được dùng để tải rbenv về từ kho lưu trữ. `sqlite-devel` cần thiết cho gem `sqlite3`, cơ sở dữ liệu mặc định của Rails. Cuối cùng, nodejs là gì là một yêu cầu bắt buộc đối với Rails vì nó cần một môi trường JavaScript runtime để quản lý các tài sản (assets) như CSS và JavaScript. Cài đặt đầy đủ các gói này ngay từ đầu sẽ giúp quá trình cài đặt Ruby và Rails diễn ra suôn sẻ.

Hình minh họa

Thiết lập rbenv để quản lý phiên bản Ruby

Sau khi đã chuẩn bị xong môi trường hệ thống, bước tiếp theo là cài đặt rbenv. Đây là công cụ sẽ thay đổi cách bạn làm việc với Ruby. Thay vì phải “sống chung” với một phiên bản Ruby duy nhất do hệ thống cung cấp, rbenv cho phép bạn cài đặt bất kỳ phiên bản Ruby nào bạn muốn và chuyển đổi giữa chúng chỉ bằng một lệnh đơn giản. Điều này đặc biệt hữu ích khi bạn làm việc trên nhiều dự án, mỗi dự án lại yêu cầu một phiên bản Ruby khác nhau. Chúng ta sẽ cài đặt rbenv và một plugin quan trọng là ruby-build, công cụ giúp tự động hóa quá trình tải và biên dịch các phiên bản Ruby.

Cài đặt rbenv và ruby-build từ source hoặc git

Cách tốt nhất để cài đặt rbenv là clone trực tiếp từ kho lưu trữ Git. Điều này đảm bảo bạn luôn có phiên bản mới nhất và dễ dàng cập nhật sau này. Đầu tiên, hãy clone rbenv vào thư mục home của bạn:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

Tiếp theo, bạn cần thêm đường dẫn của rbenv vào biến môi trường `PATH`. Điều này cho phép hệ thống tìm thấy và thực thi các lệnh của rbenv. Chạy lệnh sau để thêm vào file `.bash_profile` của bạn:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

Bây giờ, chúng ta cần thiết lập để rbenv có thể tự động tích hợp vào shell của bạn. Lệnh `rbenv init` sẽ giúp thực hiện điều này.

echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

Hình minh họa

Cuối cùng, chúng ta cần cài đặt plugin `ruby-build`. Plugin này cung cấp lệnh `rbenv install` để bạn có thể cài đặt các phiên bản Ruby một cách dễ dàng.

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

Sau khi hoàn tất, hãy tải lại cấu hình shell để áp dụng các thay đổi:

source ~/.bash_profile

Kiểm tra và xác minh cài đặt rbenv

Để đảm bảo rbenv đã được cài đặt và cấu hình đúng cách, bạn có thể thực hiện một vài bước kiểm tra đơn giản. Đầu tiên, hãy kiểm tra xem hệ thống đã nhận diện được lệnh `rbenv` chưa bằng cách sử dụng lệnh `type`:

type rbenv

Kết quả trả về nên là “rbenv is a function”. Điều này xác nhận rằng rbenv đã được nạp thành công vào môi trường shell của bạn. Nếu bạn nhận được thông báo lỗi “command not found”, hãy kiểm tra lại các bước cấu hình biến `PATH` trong file `.bash_profile` của bạn.

Hình minh họa

Một cách khác để kiểm tra toàn diện hơn là sử dụng script `rbenv-doctor`. Script này sẽ kiểm tra tất cả các thiết lập và đảm bảo mọi thứ đều sẵn sàng. Chạy lệnh sau để tải và thực thi script:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash

Nếu tất cả các mục đều hiển thị “OK”, xin chúc mừng, bạn đã cài đặt thành công rbenv. Giờ đây, bạn đã có một công cụ quản lý phiên bản Ruby mạnh mẽ ngay trong tầm tay, sẵn sàng cho việc cài đặt Ruby và Rails.

Cài đặt Ruby và Ruby on Rails thông qua rbenv

Với rbenv đã được thiết lập thành công, chúng ta đã sẵn sàng cho phần thú vị nhất: cài đặt Ruby và Ruby on Rails là gì. Nhờ có rbenv, quá trình này trở nên cực kỳ đơn giản và có tổ chức. Bạn có thể xem danh sách tất cả các phiên bản Ruby có sẵn, chọn một phiên bản ổn định, và cài đặt nó chỉ bằng một lệnh duy nhất. Sau khi cài đặt Ruby, việc cài đặt Rails cũng tương tự như cài đặt bất kỳ thư viện (gem) nào khác. Hãy cùng AZWEB thực hiện các bước này để hoàn thiện môi trường phát triển của bạn.

Cài đặt phiên bản Ruby phù hợp

Trước khi cài đặt, bạn nên xem danh sách các phiên bản Ruby mà rbenv hỗ trợ. Điều này giúp bạn chọn được phiên bản mới nhất và ổn định nhất cho dự án của mình.

rbenv install -l

Lệnh này sẽ liệt kê một danh sách dài các phiên bản. Tại thời điểm viết bài, một phiên bản ổn định và được khuyến nghị là Ruby 3.1.2. Hãy tiến hành cài đặt nó:

rbenv install 3.1.2

Hình minh họa

Quá trình này sẽ tải mã nguồn của Ruby và biên dịch nó trên hệ thống của bạn, vì vậy có thể mất từ 10 đến 20 phút. Sau khi cài đặt hoàn tất, bạn cần đặt phiên bản này làm phiên bản mặc định cho toàn hệ thống của mình:

rbenv global 3.1.2

Lệnh này sẽ tạo một file trong thư mục của rbenv để ghi nhớ lựa chọn của bạn. Cuối cùng, hãy kiểm tra lại phiên bản Ruby đang hoạt động:

ruby -v

Kết quả trả về phải là `ruby 3.1.2…`. Bạn cũng có thể kiểm tra đường dẫn của Ruby bằng which ruby, nó sẽ trỏ đến thư mục shims của rbenv, cho thấy rbenv đang quản lý phiên bản Ruby của bạn một cách chính xác.

Cài đặt Rails và các công cụ hỗ trợ

Bây giờ Ruby đã sẵn sàng, việc cài đặt Rails chỉ là chuyện nhỏ. Rails được phân phối dưới dạng một “gem” – thuật ngữ của Ruby cho một gói thư viện. Để tăng tốc độ cài đặt gem, bạn có thể cấu hình để bỏ qua việc tải tài liệu đi kèm, vì chúng ta thường đọc tài liệu trực tuyến.

echo "gem: --no-document" > ~/.gemrc

Tiếp theo, hãy cài đặt phiên bản Rails mà bạn mong muốn. Việc chỉ định một phiên bản cụ thể là một thói quen tốt để đảm bảo tính nhất quán.

gem install rails -v 7.0.4

Hình minh họa

Sau khi quá trình cài đặt gem hoàn tất, bạn cần chạy một lệnh quan trọng của rbenv là `rehash`. Lệnh này sẽ quét qua tất cả các gem bạn vừa cài đặt và tạo ra các “shims” tương ứng. Shims là các script nhỏ giúp hệ thống có thể tìm thấy các lệnh thực thi từ gem, như lệnh `rails`.

rbenv rehash

Cuối cùng, hãy xác minh rằng Rails đã được cài đặt thành công bằng cách kiểm tra phiên bản của nó:

rails -v

Nếu màn hình hiển thị “Rails 7.0.4”, bạn đã hoàn tất việc cài đặt Ruby on Rails. Môi trường phát triển của bạn bây giờ đã đầy đủ và sẵn sàng để tạo ra những ứng dụng web tuyệt vời.

Tạo và chạy ứng dụng Rails đầu tiên trên CentOS 7

Chúc mừng bạn đã đi qua được các bước cài đặt phức tạp nhất! Giờ là lúc gặt hái thành quả bằng cách tạo và chạy ứng dụng Ruby on Rails đầu tiên của mình. Quá trình này sẽ cho bạn thấy sức mạnh của Rails khi nó tự động tạo ra toàn bộ cấu trúc thư mục và các file cần thiết cho một ứng dụng web hoàn chỉnh chỉ với một dòng lệnh. Sau đó, chúng ta sẽ khởi động máy chủ web tích hợp sẵn và xem ứng dụng của mình hoạt động trực tiếp trên trình duyệt.

Khởi tạo ứng dụng Rails mới

Hãy bắt đầu bằng cách di chuyển đến thư mục mà bạn muốn lưu trữ dự án của mình, ví dụ như thư mục home.

cd ~

Bây giờ, hãy sử dụng lệnh rails new theo sau là tên ứng dụng của bạn để khởi tạo một dự án mới. Chúng ta sẽ đặt tên nó là azweb_app.

rails new azweb_app

Hình minh họa

Rails sẽ bắt đầu làm việc, tạo ra một thư mục mới có tên azweb_app và điền vào đó hàng loạt file và thư mục con. Nó cũng sẽ tự động chạy bundle install để cài đặt tất cả các gem cần thiết được định nghĩa trong Gemfile. Cấu trúc này được tổ chức rất logic, ví dụ: thư mục app chứa code chính của bạn (models, views, controllers), config chứa các file cấu hình, và db quản lý mọi thứ liên quan đến cơ sở dữ liệu. Làm quen với cấu trúc này là bước đầu tiên để trở thành một lập trình viên Rails thực thụ. Quá trình này liên quan đến Bundler là gì, công cụ quản lý gem quan trọng trong Ruby on Rails.

Chạy ứng dụng và kiểm tra hoạt động

Sau khi quá trình khởi tạo hoàn tất, hãy di chuyển vào thư mục dự án vừa tạo:

cd azweb_app

Bên trong thư mục này, bạn có thể khởi động máy chủ phát triển của Rails bằng lệnh sau:

bin/rails server

Lệnh này sẽ khởi động máy chủ Puma, máy chủ web mặc định của Rails. Bạn sẽ thấy thông báo cho biết máy chủ đang lắng nghe trên http://localhost:3000. Tuy nhiên, vì chúng ta đang làm việc trên CentOS 7, có thể tường lửa của hệ thống sẽ chặn kết nối này. Bạn cần mở cổng 3000. Hãy mở một cửa sổ terminal khác và chạy các lệnh sau:

sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent

sudo firewall-cmd --reload

Bây giờ, hãy mở trình duyệt web trên máy tính của bạn và truy cập vào địa chỉ http://<IP_SERVER_CUA_BAN>:3000. Bạn sẽ được chào đón bởi trang “Yay! You’re on Rails!”. Đây là bằng chứng cho thấy ứng dụng của bạn đã hoạt động thành công.

Hình minh họa

Kiểm tra và khắc phục lỗi thường gặp trong quá trình cài đặt

Ngay cả khi đã tuân thủ cẩn thận các bước hướng dẫn, đôi khi bạn vẫn có thể gặp phải một số lỗi không mong muốn. Điều này là hoàn toàn bình thường trong quá trình thiết lập môi trường phát triển. Phần này sẽ giúp bạn nhận diện và xử lý một số sự cố phổ biến nhất, từ việc thiếu các gói phụ thuộc cho đến các lỗi cấu hình biến môi trường. Hiểu được nguyên nhân và cách khắc phục sẽ giúp bạn tiết kiệm rất nhiều thời gian và trở nên tự tin hơn khi xử lý các vấn đề kỹ thuật.

Lỗi thiếu package hoặc phụ thuộc không phù hợp

Một trong những lỗi phổ biến nhất xảy ra trong quá trình rbenv install là lỗi biên dịch Ruby. Bạn có thể thấy các thông báo lỗi như “ERROR: The Ruby zlib extension was not compiled.” hoặc các lỗi liên quan đến OpenSSL. Nguyên nhân hầu như luôn là do bạn đã bỏ sót một hoặc nhiều gói -devel trong bước chuẩn bị môi trường. Ví dụ, lỗi zlib có nghĩa là bạn thiếu zlib-devel, lỗi OpenSSL là do thiếu openssl-devel. Để khắc phục, hãy quay lại danh sách các gói phụ thuộc đã đề cập ở phần đầu và đảm bảo bạn đã cài đặt tất cả chúng. Chạy lại lệnh sudo yum install ... với đầy đủ các gói sẽ giải quyết được vấn đề. Một lỗi khác có thể xảy ra khi chạy rails new là lỗi liên quan đến JavaScript runtime. Nếu bạn thấy thông báo lỗi về “Node.js là gì“, điều đó có nghĩa là bạn đã quên cài đặt nodejs. Hãy cài đặt nó và thử lại.

Hình minh họa

Lỗi không nhận diện lệnh rbenv hoặc ruby version sai

Nếu bạn gõ rbenv và nhận được thông báo “command not found”, nguyên nhân chính là do biến môi trường PATH của bạn chưa được thiết lập đúng cách. Điều này thường xảy ra khi các dòng lệnh export PATHeval "$(rbenv init -)" chưa được thêm vào file .bash_profile hoặc bạn quên chạy lệnh source ~/.bash_profile để tải lại cấu hình. Hãy mở file .bash_profile của bạn và kiểm tra kỹ xem các dòng đó đã có ở cuối file chưa. Sau khi chắc chắn, hãy chạy lại lệnh source. Một vấn đề khác là khi bạn chạy ruby -v, nó lại hiển thị phiên bản Ruby của hệ thống (thường là một phiên bản cũ) thay vì phiên bản bạn đã cài đặt với rbenv. Điều này có thể do bạn đã quên chạy rbenv global <version> để thiết lập phiên bản mặc định, hoặc cấu hình PATH của bạn đang ưu tiên đường dẫn hệ thống trước đường dẫn của rbenv. Đảm bảo rằng $HOME/.rbenv/bin xuất hiện trước các đường dẫn khác trong biến PATH của bạn để khắc phục.

Best Practices

Sau khi đã cài đặt thành công và chạy được ứng dụng đầu tiên, việc áp dụng các phương pháp hay nhất (best practices) sẽ giúp bạn duy trì một môi trường phát triển sạch sẽ, có tổ chức và dễ quản lý trong dài hạn. Những thói quen tốt này không chỉ giúp bạn tránh được các vấn đề kỹ thuật mà còn giúp quá trình làm việc nhóm trở nên hiệu quả hơn. Dưới đây là một số gợi ý từ AZWEB để bạn có thể làm việc với Ruby on Rails một cách chuyên nghiệp.

  • Luôn cập nhật rbenv và ruby-build: Cộng đồng Ruby liên tục phát hành các phiên bản mới. Để có thể cài đặt chúng, bạn cần giữ cho rbenv và ruby-build của mình luôn được cập nhật. Điều này rất đơn giản, chỉ cần chạy các lệnh sau trong terminal: git -C ~/.rbenv pullgit -C ~/.rbenv/plugins/ruby-build pull.
  • Sử dụng Bundler là gì để quản lý thư viện gem cho mỗi dự án: Rails đã tích hợp sẵn Bundler. Hãy tận dụng nó triệt để. Mọi gem bạn cần cho dự án nên được khai báo trong Gemfile. Luôn chạy bundle install để cài đặt và bundle exec để chạy các lệnh liên quan đến dự án. Thói quen này đảm bảo mọi thành viên trong nhóm đều sử dụng cùng một phiên bản gem, tránh được lỗi “works on my machine”.
  • Không cài đặt Ruby và gem trực tiếp trên hệ thống: Luôn sử dụng rbenv (hoặc một trình quản lý phiên bản khác) để cài đặt Ruby. Tránh sử dụng sudo gem install, vì điều này sẽ cài đặt gem vào Ruby của hệ thống, có thể gây ra xung đột quyền và phiên bản khó gỡ rối sau này. rbenv giúp cô lập hoàn toàn môi trường của bạn.
  • Thường xuyên sao lưu dữ liệu và project Rails quan trọng: Dù bạn làm việc trên môi trường phát triển hay sản phẩm, việc sao lưu là cực kỳ quan trọng. Đối với mã nguồn, hãy sử dụng hệ thống quản lý phiên bản như Git và đẩy code lên các kho lưu trữ từ xa (GitHub, GitLab). Đối với cơ sở dữ liệu, hãy thiết lập các kịch bản sao lưu định kỳ để phòng trường hợp xảy ra sự cố.

Kết luận

Qua bài hướng dẫn chi tiết này, chúng ta đã cùng nhau đi qua toàn bộ quá trình thiết lập một môi trường phát triển Ruby on Rails chuyên nghiệp trên hệ điều hành CentOS 7 bằng cách sử dụng rbenv. Điểm mấu chốt cần nhớ là rbenv giúp đơn giản hóa đáng kể việc quản lý các phiên bản Ruby, cho phép bạn tạo ra các môi trường phát triển độc lập, ổn định và tránh được các xung đột không đáng có. Bằng cách chuẩn bị kỹ lưỡng hệ thống, cài đặt đúng các gói phụ thuộc và tuân thủ các bước cấu hình, bạn đã xây dựng được một nền tảng vững chắc để phát triển các ứng dụng web mạnh mẽ.

Hình minh họa

Giờ đây, bạn đã có đủ công cụ và kiến thức để bắt đầu hành trình của mình. Đừng ngần ngại, hãy bắt tay vào cài đặt ngay hôm nay để xây dựng ứng dụng Ruby on Rails đầu tiên của bạn trên CentOS 7. Con đường trở thành một nhà phát triển chuyên nghiệp luôn bắt đầu từ những bước thiết lập cơ bản nhưng vững chắc. Để tiến xa hơn, bạn có thể bắt đầu tìm hiểu về các chủ đề nâng cao như triển khai ứng dụng lên môi trường production với các máy chủ như Puma hoặc Unicorn, cấu hình cơ sở dữ liệu PostgreSQL là gì và tối ưu hóa hiệu suất ứng dụng. AZWEB chúc bạn thành công trên con đường chinh phục Ruby on Rails

Đánh giá