NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
10/05/2023
Lượt xem

Hướng dẫn sử dụng PostgreSQL với Ruby on Rails trên Ubuntu 20.04

10/05/2023
13 phút đọc
Lượt xem

Đánh giá

5/5 - (108 bình chọn)

Với các ứng dụng phức tạp cần tính toàn vẹn dữ liệu, độ tin cậy cao cùng khả năng mở rộng linh hoạt, cơ sở dữ liệu PostgreSQL sẽ là lựa chọn tối ưu hơn khi sử dụng framework Ruby on Rails. Trong bài viết cách sử dụng PostgreSQL với Ruby on Rails trên Ubuntu 20.04 này, Vietnix sẽ hướng dẫn bạn thiết lập môi trường phát triển Ruby on Rails được kết nối với cơ sở dữ liệu PostgreSQL trên máy chủ Ubuntu 20.04. Cùng tìm hiểu ngay.

Điều kiện để sử dụng PostgreSQL với Ruby on Rails trên Ubuntu 20.04

Điều kiện để sử dụng PostgreSQL với Ruby on Rails trên Ubuntu 20.04
Điều kiện để sử dụng PostgreSQL với Ruby on Rails trên Ubuntu 20.04

Để có thể làm theo hướng dẫn này, trước tiên bạn cần thiết lập sẵn theo những yêu cầu sau:

  • Máy chủ Ubuntu 20.04 với tài khoản user non-root có quyền sudo và firewall.
  • Môi trường phát triển Ruby on Rails được cài trên máy chủ này.

Bước 1: Cài đặt và thiết lập PostgreSQL

Để cấu hình Ruby on Rails với PostgreSQL làm cơ sở dữ liệu cho các ứng dụng web, trước tiên bạn cần cài đặt PostgreSQL trên Ubuntu 20.04.

Sử dụng các đặc quyền sudo, cập nhật chỉ mục của gói APT để đảm bảo các kho lưu trữ đã ở phiên bản mới nhất:

$  sudo apt update

Tiếp theo, cài đặt PostgreSQL và các thư viện phát triển:

$ sudo apt install postgresql postgresql-contrib libpq-dev

Trong lệnh trên cần chú ý một số tham số như:

  • postgresql chứa chương trình chính của PostgreSQL.
  • postgresql-contrib cho phép thêm một số tính năng để mở rộng khả năng của chương trình.
  • libpq-dev là một thư viện PostgreSQL cho phép client gửi truy vấn và nhận phản hồi từ back-end server, tạo điều kiện để ứng dụng của bạn giao tiếp với cơ sở dữ liệu.

Khi PostgreSQL và các phần liên quan được cài đặt, bước tiếp theo là tạo một role cho ứng dụng Rails.

Để có thể tập trung vào phát triển ứng dụng với Ruby on Rails mà không phải lo lắng về cơ sở hạ tầng và quản lý hệ thống bạn có thể tham khảo dịch vụ VPS của Vietnix. Dùng VPS tốc độ cao của Vietnix để phát triển ứng dụng với Ruby on Rails mang lại sự linh hoạt về tài nguyên, quản lý độc lập, bảo mật cao, hiệu suất tốt và nhận được sự hỗ trợ kỹ thuật chuyên nghiệp.

Hiện tại Vietnix đang cung cấp các gói VPS như sau: VPS NVMe, VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS GPU. Nhanh tay liên hệ Vietnix để được tư vấn gói VPS tốc độ cao phù hợp với nhu cầu ngay hôm nay.

Bước 2: Tạo một role cho cơ sở dữ liệu mới

Trong PostgreSQL, các role có thể sử dụng để tổ chức quyền và ủy quyền như trong Linux. Trong bước này, bạn sẽ tạo một super user role mới cho Linux username của mình. Role này sẽ giúp bạn tạo và cấu hình cho cơ sở dữ liệu trong hệ thống PostgreSQL.

Để tạo super user role trong PostgreSQL, hãy chạy lệnh sau, thay thế sammy bằng username Ubuntu của bạn:

$ sudo -u postgres createuser -s sammy -P

Vì bạn đã chỉ định cờ -P nên sẽ có thông báo yêu cầu nhập mật khẩu cho role mới. Nhập mật khẩu của bạn và ghi lại để sử dụng cho tệp cấu hình ở bước sau.

Sử dụng createuser để tạo một role có tên sammy (hoặc username của bạn). Cờ -s cung cấp các đặc quyền super user và sudo -u cho phép bạn chạy lệnh từ tài khoản postgres được tạo tự động khi cài đặt PostgreSQL.

Lưu ý: Vì chế độ xác thực cho PostgreSQL trên Ubuntu bắt đầu bằng ident. Đồng thời theo mặc định, user trong Ubuntu chỉ có thể hoạt động trong PostgreSQL với role cùng tên.

Nếu bạn không sử dụng cờ -P và muốn đặt mật khẩu cho role sau khi tạo, hãy nhập console PostgreSQL bằng lệnh sau:

$ sudo -u postgres psql

Bạn sẽ nhận được kết quả sau, cùng với lời nhắc cho console PostgreSQL:

Output  psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))  Type "help" for help.  postgres=#

Console của PostgreSQL được biểu thị bằng postgre=#. Tại dấu nhắc postgre=# của PostgreSQL, hãy nhập lệnh dưới đây để đặt mật khẩu cho role của cơ sở dữ liệu mới, thay thế sammy bằng username đã tạo:

postgres=# \password sammy

PostgreSQL sẽ nhắc bạn nhập mật khẩu. Nhập mật khẩu của bạn tại postgre=#, sau đó xác nhận mật khẩu và thoát khỏi console bằng lệnh sau:

postgres=# \q

Prompt thông thường của bạn sẽ xuất hiện trở lại.

Trong bước này, bạn đã tạo một role PostgreSQL mới với các đặc quyền super user. Ở bước tiếp theo sẽ tiến hành tạo một ứng dụng Rails sử dụng role này làm cơ sở dữ liệu.

Bước 3: Tạo một ứng dụng Rails

Sau khi tạo role cho PostgreSQL, bạn có thể tạo ứng dụng Rails sử dụng PostgreSQL làm cơ sở dữ liệu.

Đầu tiên, điều hướng đến thư mục home:

$ cd ~

Tạo ứng dụng Rails trong thư mục này, thay thế appname bằng tên ứng dụng của bạn:

$ rails new appname -d=postgresql

Sử dụng tùy chọn -d=postgresql để đặt PostgreSQL làm cơ sở dữ liệu.

Sau khi chạy lệnh trên, một thư mục mới có tên appname sẽ xuất hiện trong thư mục chính của bạn và chứa tất cả các thành phần của một ứng dụng Rails cơ bản.

Tiếp theo, di chuyển vào thư mục của ứng dụng với lệnh

$ cd appname

Bây giờ bạn đã có một ứng dụng Rails mới và chuyển nó vào thư mục gốc cho project của mình. Tiếp theo hãy thực hiện cấu hình và tạo cơ sở dữ liệu PostgreSQL từ trong ứng dụng Rails.

Bước 4: Cấu hình và tạo cơ sở dữ liệu

Khi tạo cơ sở dữ liệu developmenttest cho ứng dụng, Rails sẽ sử dụng role mà bạn đã tạo cho username Ubuntu của mình. Để đảm bảo Rails đã tạo các cơ sở dữ liệu này, bạn cần thay đổi tệp cấu hình cơ sở dữ liệu của project. Tiếp theo sau đó mới thực hiện tạo cơ sở dữ liệu của mình.

Một trong những điều cần lưu ý khi cấu hình cho ứng dụng Rails là thêm mật khẩu cho role của PostgreSQL. Để giữ an toàn cho mật khẩu, bạn nên lưu trữ thông tin này trong một biến môi trường thay vì ghi trực tiếp vào tệp cấu hình.

Chạy lệnh sau để lưu trữ mật khẩu trong biến môi trường khi đăng nhập, thay APPNAME bằng tên ứng dụng và PostgreSQL_Role_Password bằng mật khẩu bạn đã tạo ở phía trên:

$ echo 'export APPNAME_DATABASE_PASSWORD="PostgreSQL_Role_Password"' >> ~/.bashrc

Lệnh này cho phép ghi lệnh export vào tệp ~/bashrc để đặt biến môi trường khi đăng nhập.

Để xuất biến cho phiên đăng nhập hiện tại, sử dụng lệnh source:

$ source ~/.bashrc

Khi đã lưu trữ mật khẩu xong trong môi trường của mình, bạn có thể thay đổi tệp cấu hình. Mở tệp cấu hình bằng trình soạn thảo văn bản của bạn. Trong bài viết này sử dụng nano :

$ nano config/database.yml

Trong phần default, hãy tìm dòng pool:<% = ENV. fetch(“RAILS_MAX_THREADS”){5}%> và thêm các dòng username và password, điền thông tin đăng nhập và biến môi trường đã tạo. Kết quả tương tự như sau:

config/database.yml ... default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see Rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: sammy password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %> development: <<: *default database: appname_development ...

Bản cập nhật này sẽ giúp ứng dụng Rails điều hành cơ sở dữ liệu với đúng role và password. Lưu bằng CTRL+X và thoát bằng Y, sau đó nhấn ENTER.

Bây giờ bạn đã hoàn tất các thay đổi đối với config/database.yml, hãy tạo cơ sở dữ liệu cho ứng dụng bằng lệnh rails:

$ rails db:create

Khi Rails tạo cơ sở dữ liệu, bạn sẽ nhận được output sau:

Output  Created database '<mark>appname</mark>_development'  Created database '<mark>appname</mark>_test'

Lệnh này đã tạo cơ sở dữ liệu developmenttest trong server PostgreSQL của bạn. Sau khi có cơ sở dữ liệu PostgreSQL được kết nối với ứng dụng Rails, hãy tiếp tục đến với bước kiểm tra cấu hình.

Bước 5: Kiểm tra cấu hình

Để kiểm tra xem ứng dụng của bạn có sử dụng cơ sở dữ liệu PostgreSQL hay không, hãy chạy ứng dụng web hiển thị trong trình duyệt.

Sử dụng lệnh rails server để chạy ứng dụng web trên web server tích hợp trong Rails, Puma:

$ rails server --binding=127.0.0.1

Trong đó --binding liên kết ứng dụng của bạn với một IP được chỉ định. Theo mặc định thì IP này sẽ là 0.0.0.0, có nghĩa là Rails sẽ lắng nghe tất cả các interface. Điều này giúp nâng cao tính an toàn hơn so với việc sử dụng địa chỉ 127.0.0.1 để chỉ định localhost. Cũng theo mặc định, ứng dụng sử dụng cổng 3000.

Khi ứng dụng Rails đang chạy sẽ xuất hiện output sau:

Output => Booting Puma => Rails 7.0.4 application starting in development => Run `bin/rails server --help` for more startup options Puma starting in single mode... * Puma Version 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version") * Min threads: 5 * Max threads: 5 * Environment: development * Listening on tcp://127.0.0.1:3000 Use Ctrl-C to stop

Để kiểm tra xem ứng dụng của bạn có chạy hay không, hãy mở một terminal mới trên server và sử dụng lệnh curl để gửi yêu cầu đến địa chỉ 127.0.0.1:3000:

$ curl http://127.0.0.1:3000

Bạn sẽ nhận được rất nhiều output trong HTML, kết thúc bằng:

Output ...         <strong>Rails version:</strong> 7.0.4<br />         <strong>Ruby version:</strong> 3.1.2 (x86_64-linux)       </p>     </section>   </div> </body> </html>

Nếu ứng dụng được điều khiển bằng máy chủ từ xa và bạn muốn truy cập vào máy chủ bằng trình duyệt web thì có thể liên kết ứng dụng với địa chỉ IP công khai của máy chủ. Đầu tiên, mở cổng 3000 trong firewall của bạn:

$ sudo ufw allow 3000

Tiếp theo, tra cứu địa chỉ IP công khai bằng lệnh curl:

$ curl http://icanhazip.com

Lệnh trên sẽ trả về địa chỉ IP công khai của máy chủ. Sử dụng lệnh rails server, thay thế server_ public_ IP bằng IP công khai của máy chủ:

$ rails server --binding=server_public_IP

Bây giờ bạn có thể truy cập vào ứng dụng Rails trong trình duyệt web cục bộ thông qua địa chỉ IP công khai của máy chủ trên cổng 3000 bằng cách truy cập:

http://server_public_IP:3000

Tại ULR này, bạn sẽ thấy trang chủ của Ruby on Rails:

Trang chủ Ruby on Rails
Trang chủ Ruby on Rails

Nếu có thể truy cập được vào trang chủ của Ruby on Rails thì tức là ứng dụng của bạn được cấu hình đúng cách và kết nối thành công với cơ sở dữ liệu PostgreSQL.

Sau khi kiểm tra cấu hình, nếu bạn muốn đóng cổng 3000, hãy chạy lệnh sau:

$ sudo ufw delete allow 3000

Vietnix với hơn 10 năm hoạt động đã đồng hành với hơn 50.000 khách hàng cá nhân và doanh nghiệp. Đến năm 2022 Vietnix vinh dự được nhận giải Thương hiệu Việt Nam xuất sắc nhất. Đồng thời, với tỷ lệ 97% khách hàng sau khi sử dụng dịch vụ tại Vietnix đã giới thiệu đến bạn bè, đồng nghiệp cũng là một minh chứng cho chất lượng dịch vụ luôn đáp ứng được mọi nhu cầu của khách hàng.

Nhanh tay đăng ký Vietnix VPS ngay và trải nghiệm dịch vụ ổn định, tốc độ cao, hỗ trợ nhanh chóng với nhiều ưu đãi hấp dẫn nhất.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Hotline: 1800 1093 – 07 088 44444
  • Email: sales@vietnix.com.vn

Lời kết

Vậy là bạn đã tạo xong ứng dụng web Ruby on Rails sử dụng PostgreSQL làm cơ sở dữ liệu. Cảm ơn bạn đã học hỏi cùng Vietnix qua bài viết về hướng dẫn sử dụng PostgreSQL với Ruby on Rails trên Ubuntu 20.04. Đừng bỏ qua những bài viết tiếp theo, Vietnix sẽ tiếp tục chia sẻ những thông tin hữu ích nhất về ngôn ngữ lập trình Ruby cũng như cách sử dụng ngôn ngữ này hiệu quả nhất.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG