Hướng dẫn biên dịch và cài đặt PostgreSQL 9.2.x trên Ubuntu 12.04 LTS

T.V.T Marine Automation Company Limited, David Tran

postgresql-logo

PostgreSQL là một trong những Hệ Quản trị Cơ sở Dữ liệu (CSDL) Mã nguồn mở phổ biến trên thế giới và được sử dụng trong những hệ thống công nghệ thông tin lớn, phức tạp, đòi hỏi cao về tính ổn định, khả năng xử lý cũng như tốc độ đáp ứng. Do sự ưu việt của nó, PostgreSQL đang dần "soán ngôi" của MySQL để trở thành Hệ Quản trị CSDL mã nguồn mở phổ biến nhất thế giới. Để cài đặt PostgreSQL trên Ubuntu, chúng ta có hai cách:

  1. Một là sử dụng gói cài đặt được biên dịch sẵn thông quan trình apt-get của Ubuntu bằng apt-get install postgresql
  2. Hai là dùng trình biên dịch (gcc compiler) để biên dịch trực tiếp mã nguồn

Đối với cách thứ nhất thì đơn giản nhưng có những điểm yếu sau:

  • Bạn sẽ không có bản PostgreSQL mới nhất (tại thời điểm tôi viết bài này là phiên bản PostgreSQL 9.2.3), và vì vậy sẽ không có những tính năng mới.
  • Hiệu năng hoạt động thấp: do bản biên dịch sẵn được biên dịch một cách tổng quát đển chạy được trên nhiều kiến trúc vi xử lý khác nhau

Trong phạm vi bài này, tôi sẽ hướng dẫn cách thứ hai: biên dịch từ mã nguồn. Cách làm này có những ưu điểm sau:

  • Bạn luôn có phiên bản mới nhất của Hệ quản trị CSDL PostgreSQL để hưởng những tính năng mới.
  • Hiệu năng hoạt động rất cao: Do trình biên dịch biết cụ thể kiến trúc vi xử lý trên server của bạn và nó biến dịch PostgreSQL theo cách phù hợp nhất với phần cứng bạn có.

Yêu cầu hệ thống: Bạn cần có một máy tính/máy chủ chạy Ubuntu và một kết nối Internet. Bài viết này được thực hiện trên Ubuntu Server 12.04 LTD phiên bản 64 bit.

Hướng dẫn biên dịch mã nguồn

& Cài đặt PostgreSQL 9.2

Bước 1:

Download mã nguồn PostgreSQL (tại thời điểm viết bài này là bản 9.2.3)

wget http://ftp.postgresql.org/pub/source/v9.2.3/postgresql-9.2.3.tar.bz2

giải nén và chuyển đến thư mục chứa mã nguồn đã giải nén

tar xvfj postgresql-9.2.3.tar.bz2
cd postgresql-9.2.3

Bước 2:

Cài trình biên dịch và các gói cần thiết để biên dịch PostgreSQL, cách đơn giản nhất là sử dụng gói build-essential sẵn có trên Ubuntu Repository.

sudo apt-get update
sudo apt-get install build-essential libreadline6-dev zlib1g-dev libpq-dev flex bison libxml2-dev libxslt-dev libssl-dev libxml2-dev

Lưu ý: sau khi biên dịch và cài đặt xong PostgreSQL, bạn có thể không cần đến trình biên dịch nữa nên có thể gỡ ra bằng sudo apt-get remove build-essential

Bước 3:

Bắt đầu biên dịch và cài đặt (hãy chắc chắn rằng bạn đang ở trong thư mục mã nguồn PostgreSQL mà bạn mới giải nén ở bước 1).

Việc biên dịch khá dễ dàng như thường lệ với:

sudo ./configure

Với lệnh này, mặc định trình biên dịch sẽ cài PostgreSQL vào thư mục /usr/local/pgsql. Nếu bạn không muốn sử dụng đường dẫn này, bạn có thể thêm tham số --prefix=/duong/dan/ban/thich. Ví dụ:

sudo ./configure --prefix=/usr/local/pgsql/9.2/main

Ngoài ra, nếu bạn cho truy cập PostgreSQL server của bạn từ bên ngoài, có thể bạn cần kích hoạt tính năng mã hoá với OpenSSL bằng cách thêm tham số --with-openssl vào lệnh ./configure ở trên. Nếu bạn muốn hỗ trợ XML và XSL, thêm tham số --with-libxml --with-libxslt. Lúc này, lệnh cấu hình trông sẽ như sau

sudo ./configure --prefix=/usr/local/pgsql/9.2/main --with-libxml --with-libxslt --with-openssl

Sau khi cấu hình, tiếp tục chạy lệnh sau

sudo make
sudo make check

Nếu không có lỗi gì thì thì ta có thể bắt đầu tiến hành cài đặt bằng lệnh:

sudo make install

Lúc này, PostgreSQL 9.2.3 đã được cài đặt trên máy tính của bạn. Việc tiếp theo là chúng ta cấu hình nó để phù hợp với nhu cầu sử dụng

Bước 4:

Tạo Super User và Data Directory cho instance đầu tiên của PostgreSQL (bạn có thể chạy đồng thời nhiều instance tách biệt nhau trên cùng một server)

Tạo tài khoản superuser (của hệ quản trị CSDL) có tên postgres thuộc group postgres

adduser --home /home/postgres --disabled-password --disabled-login --system --group postgres

Tạo Data Directory cho instance đầu tiên và phân quyền cho tài khoản postgres vừa tạo 

sudo mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data

Khởi tạo instance

sudo su - postgres -s /bin/bash
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

Lưu ý: nếu ở bước 3, bạn chọn thư mục cài đặt bằng --prefix=/duong/dan/ban/thich thì câu lệnh khởi tạo sẽ là:

/duong/dan/ban/thich/bin/initdb -D /usr/local/pgsql/data

Đến đây, việc cài đặt vào tạo instance đầu tiên cho PostgreSQL đã hoàn thành, bạn có thể khởi động instance đầu tiên này của PostgreSQL bằng lệnh sau.

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /home/postgres/logfile start

(Lưu ý: nếu ở bước 3, bạn chọn thư mục cài đặt bằng --prefix=/duong/dan/ban/thich thì câu lệnh khởi động instance sẽ là:

/duong/dan/ban/thich/bin/pg_ctl -D /usr/local/pgsql/data -l /home/postgres/logfile start

Nếu bạn muốn dừng (stop) instance vừa khởi động, có thể làm như sau 

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /home/postgres/logfile stop

 Đến đây, bạn đã hoàn thành việc biên dịch và cài đặt PostgreSQL (ở mức cơ bản nhất) để tận hưởng những tính năng ưu việt của PostgreSQL - Hệ Quản trị Cơ sở Dữ liệu mã nguồn mở ưu việt nhất thế giới.

Các trình tiện ích (client) của PostgreSQL cũng được biên dịch và được lưu tại /usr/local/pgsql, bao gồm:

clusterdb, createdb, dropdb, createuser, v.v.

Trong một bài khác, tôi sẽ Hướng dẫn tạo script bật, tắt, khởi động lại cho PostgreSQL trên Ubuntu cũng như giúp cho việc start/stop/restart instance được dễ dàng hơn đồng thời giúp PostgreSQL có thể tự khởi chạy khi khởi động server Ubuntu.

Mọi bình luận & ý kiến đóng góp để bài viết này trở nên tốt hơn và hữu ích hơn được nhiệt liệt hoanh nghênh!