Tôi đã biên dịch và cài đặt thành công phiên bản PostgreSQL mới nhất (17.4) trên Ubuntu ARM32.

Các lệnh trong bài viết này chủ yếu đến từ tài liệu chính thức của PostgreSQL. Tôi đã thực tế kiểm tra từng lệnh trong bài viết này.

Bạn có thể thấy các hệ thống có thể cài đặt thành công tại đây Nông trại xây dựng PostgreSQL

Biên dịch và cài đặt PostgreSQL 17.4

1. Tạo thư mục và vào thư mục

mkdir postgresql && cd postgresql
  • mkdir postgresql: Tạo một thư mục mới có tên postgresql.
  • cd postgresql: Vào thư mục postgresql vừa tạo.

2. Tải xuống mã nguồn PostgreSQL

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget: Tải xuống tệp từ URL được chỉ định.
  • https://..../postgresql-17.4.tar.bz2: Liên kết tải xuống gói mã nguồn nén của phiên bản PostgreSQL 17.4. Nếu liên kết không hoạt động, bạn có thể tự tìm liên kết mới.

3. Giải nén gói mã nguồn

tar xjf postgresql-17.4.tar.bz2
  • tar: Được sử dụng để xử lý các tệp nén .tar.

  • xjf: Các tùy chọn giải nén tệp tar:

    • x: Giải nén tệp.
    • j: Sử dụng định dạng nén bzip2 (.bz2).
    • f: Chỉ định tệp cần giải nén.
  • postgresql-17.4.tar.bz2: Tên của tệp cần giải nén.

4. Vào thư mục mã nguồn đã giải nén

cd postgresql-17.4
  • Vào thư mục mã nguồn PostgreSQL 17.4 đã giải nén.

5. Cài đặt các gói phụ thuộc

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install: Sử dụng trình quản lý gói apt để cài đặt các gói.
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev: Cài đặt các thư viện phát triển cần thiết để biên dịch PostgreSQL, lần lượt là thư viện SSL, thư viện Systemd, thư viện XML và thư viện Readline.

6. Cấu hình tùy chọn biên dịch

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure: Chuẩn bị môi trường biên dịch của PostgreSQL.
  • --prefix=/usr/local/pgsql: Chỉ định thư mục cài đặt PostgreSQL là /usr/local/pgsql.
  • --with-openssl: Bật hỗ trợ OpenSSL.
  • --with-libxml: Bật hỗ trợ XML.
  • --with-systemd: Bật hỗ trợ Systemd.

7. Biên dịch mã nguồn

make -j$(nproc)
  • make: Khởi động quá trình biên dịch.
  • -j$(nproc): Sử dụng nproc (số lượng lõi CPU của hệ thống) để thực hiện song song các tác vụ biên dịch, tăng tốc quá trình biên dịch.

8. Cài đặt PostgreSQL

sudo make install
  • sudo make install: Sử dụng sudo để thực hiện cài đặt với quyền quản trị viên, make install sẽ cài đặt các tệp đã biên dịch vào hệ thống, cài đặt vào thư mục /usr/local/pgsql được chỉ định trong lệnh ./configure trước đó.

9. Thiết lập biến môi trường

Sử dụng trình soạn thảo văn bản 1. Chỉnh sửa tệp /etc/profile:

sudo nano /etc/profile
  • sudo: Cho biết chạy lệnh với quyền siêu người dùng (quản trị viên). Vì việc sửa đổi tệp /etc/profile cần quyền quản trị viên.
  • nano: Đây là một trình soạn thảo văn bản, thường được sử dụng trong môi trường terminal để chỉnh sửa tệp.
  • /etc/profile: Đây là một tệp cấu hình toàn cục, được sử dụng để thiết lập các biến môi trường và cấu hình khởi động trong phạm vi hệ thống. Tất cả người dùng khi đăng nhập vào hệ thống sẽ thực hiện các thiết lập trong tệp này.
  1. Thêm biến môi trường:
export PATH=/usr/local/pgsql/bin:$PATH
  • export: Được sử dụng để thiết lập một biến môi trường, làm cho nó khả dụng trong quá trình hiện tại và các quá trình con.
  • PATH: Đây là một biến môi trường, chứa danh sách các thư mục chứa các tệp thực thi của hệ thống. Khi thực hiện một lệnh, hệ thống sẽ tìm kiếm lệnh đó dựa trên các thư mục được liệt kê trong biến PATH.
  • /usr/local/pgsql/bin: Đây là thư mục chứa các tệp thực thi của cơ sở dữ liệu PostgreSQL, thêm nó vào có nghĩa là các tệp thực thi (chẳng hạn như psql) trong thư mục này sẽ được hệ thống nhận diện.
  • :$PATH: Ở đây $PATH đại diện cho các đường dẫn đã có, thêm đường dẫn mới /usr/local/pgsql/bin vào trước PATH ban đầu. Bằng cách này, hệ thống sẽ kiểm tra thư mục mới trước, sau đó mới kiểm tra các đường dẫn ban đầu.

Tác dụng của lệnh này là thêm thư mục chứa các tệp thực thi của PostgreSQL vào biến môi trường PATH của hệ thống, đảm bảo rằng các lệnh của PostgreSQL (như psql) có thể được chạy trực tiếp trong dòng lệnh mà không cần cung cấp đường dẫn đầy đủ. Các thiết lập sau khi sửa đổi sẽ có hiệu lực đối với tất cả người dùng.

Khởi tạo cơ sở dữ liệu PostgreSQL

Các lệnh này chủ yếu được sử dụng để cấu hình thủ công máy chủ cơ sở dữ liệu PostgreSQL trên máy chủ Linux, bao gồm tạo người dùng hệ thống PostgreSQL, khởi tạo cơ sở dữ liệu, khởi động dịch vụ cơ sở dữ liệu và đăng ký nó làm dịch vụ systemd, để tự động khởi động khi khởi động.

1. Tạo người dùng PostgreSQL

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo: Thực hiện lệnh với quyền siêu người dùng.
  • useradd: Tạo người dùng mới.
  • -m: Tạo thư mục home cho người dùng.
  • -U: Đồng thời tạo một nhóm người dùng có cùng tên với tên người dùng.
  • -r: Tạo một người dùng hệ thống (UID của người dùng hệ thống thấp hơn 1000, không được sử dụng để đăng nhập).
  • -d /var/lib/postgresql: Chỉ định thư mục home là /var/lib/postgresql.
  • -s /bin/bash: Chỉ định shell là /bin/bash.
  • postgres: Tên người dùng.

Lệnh này tạo một người dùng hệ thống chuyên dụng cho PostgreSQL là postgres.


2. Thay đổi chủ sở hữu của thư mục PostgreSQL

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql: Thay đổi chủ sở hữu của thư mục /usr/local/pgsql thành người dùng postgres, cho phép người dùng này đọc và ghi vào thư mục đó.

3. Đặt mật khẩu cho người dùng PostgreSQL

sudo passwd postgres
  • passwd postgres: Thay đổi mật khẩu của người dùng postgres.

4. Chuyển sang người dùng PostgreSQL

su postgres
  • su postgres: Chuyển sang người dùng postgres, để sử dụng các lệnh liên quan đến PostgreSQL.

5. Khởi tạo cơ sở dữ liệu

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data: Khởi tạo bộ nhớ cơ sở dữ liệu trong thư mục /usr/local/pgsql/data.

6. Khởi động cơ sở dữ liệu PostgreSQL

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data: Khởi động cơ sở dữ liệu với tiến trình postgres, dữ liệu được lưu trữ trong thư mục /usr/local/pgsql/data.

7. Trong một phiên terminal khác, vào cơ sở dữ liệu

su postgres
/usr/local/pgsql/bin/psql
  • psql: Công cụ tương tác dòng lệnh của PostgreSQL, vào shell cơ sở dữ liệu.

8. Đặt mật khẩu cho người dùng cơ sở dữ liệu

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • Sửa đổi mật khẩu của người dùng cơ sở dữ liệu postgres.

9. Tạo dịch vụ systemd

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service: Chỉnh sửa tệp cấu hình systemd, để PostgreSQL có thể chạy như một dịch vụ.

Nội dung tệp cấu hình:

[Unit]
Description=Máy chủ PostgreSQL
#Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target
  • Description=Máy chủ PostgreSQL: Mô tả dịch vụ này là máy chủ PostgreSQL.
  • After=network-online.target: Chờ kết nối mạng khả dụng trước khi khởi động PostgreSQL.
  • User=postgres: Chạy với người dùng postgres.
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data: Khởi động máy chủ PostgreSQL.
  • ExecReload=/bin/kill -HUP $MAINPID: Gửi tín hiệu HUP khi tải lại.
  • KillMode=mixed: Chế độ chấm dứt hỗn hợp.
  • KillSignal=SIGINT: Tín hiệu để chấm dứt tiến trình PostgreSQL.
  • TimeoutSec=infinity: Đặt thời gian chờ thành vô hạn.

10. Bật dịch vụ systemd

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload: Tải lại cấu hình systemd, để postgresql.service mới có hiệu lực.
  • start postgresql: Khởi động dịch vụ PostgreSQL.
  • status postgresql: Kiểm tra trạng thái hoạt động của PostgreSQL.
  • enable postgresql: Tự động khởi động PostgreSQL khi khởi động.

Mục đích của các lệnh này là:

  1. Tạo một người dùng postgres chuyên dụng để chạy PostgreSQL.
  2. Khởi tạo thư mục lưu trữ cơ sở dữ liệu.
  3. Khởi động cơ sở dữ liệu PostgreSQL và vào dòng lệnh tương tác psql.
  4. Cấu hình systemd để PostgreSQL chạy như một dịch vụ hệ thống và hỗ trợ tự động khởi động khi khởi động.

Bằng cách này, máy chủ PostgreSQL có thể hoạt động bình thường và có thể tự động khởi động khi hệ thống khởi động.

Tài liệu tham khảo

PostgreSQL: Tài liệu: 17: Chương 17. Cài đặt từ mã nguồn

Các phiên bản khác của trang này

Bài viết này có nhiều phiên bản ngôn ngữ.

Nếu bạn muốn đăng bình luận, vui lòng truy cập trang web sau:

ZH EN ZH-TW JA

Các trang này chỉ hỗ trợ duyệt xem, không thể đăng bình luận hoặc để lại tin nhắn, nhưng cung cấp nhiều tùy chọn ngôn ngữ hơn và thời gian tải ngắn hơn:

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO

Bài viết này được dịch từ Chinese (Simplified) sang Vietnamese bằng AI.