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
Để 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 development
và test
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 trong Linux vào file ~/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 development
và test
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:
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.