Cách cài đặt PostgreSQL và phpPgAdmin trên Fedora 34

theanh

Administrator
Nhân viên
PostgreSQL hay Postgres là một hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở mạnh mẽ sử dụng và mở rộng ngôn ngữ SQL. Hệ thống này có nhiều tính năng nâng cao giúp lưu trữ và mở rộng khối lượng công việc dữ liệu phức tạp một cách an toàn. phpPgAdmin là một ứng dụng dựa trên PHP để quản lý và chỉnh sửa cơ sở dữ liệu PostgreSQL.

Hướng dẫn này sẽ trình bày cách cài đặt PostgreSQL và phpPgAdmin trên máy chủ chạy Fedora 34.

Điều kiện tiên quyết​


  1. Máy chủ chạy Fedora 34.

  2. Luôn cập nhật hệ thống của bạn.
    Mã:
    $ sudo dnf update

  3. Người dùng không phải root có quyền sudo.

Bước 1 - Cài đặt PostgreSQL​

Fedora 34 đi kèm với các phiên bản PostgreSQL khác nhau có sẵn trong kho lưu trữ của họ. Bạn có thể chọn giữa các phiên bản này bằng cách bật mô-đun phù hợp, là tập hợp các gói và phụ thuộc.

Trước tiên, hãy kiểm tra các luồng có sẵn cho mô-đun postgresql bằng lệnh dnf.
Mã:
$ dnf module list postgresqlTên Stream Profiles Summarypostgresql 9.6 client, server [d] PostgreSQL modulepostgresql 10 client, server [d] PostgreSQL modulepostgresql 11 client, server [d] PostgreSQL modulepostgresql 12 client, server PostgreSQL modulepostgresql 13 client, server PostgreSQL module
Để cài đặt PostgreSQL, chúng ta cần bật luồng mô-đun tương ứng.
Mã:
$ sudo dnf module enable postgresql:13
Khi được nhắc, hãy nhập Y để bật luồng.

Tiếp theo, cài đặt máy chủ PostgreSQL.
Mã:
$ sudo dnf install postgresql-server
Bạn có thể muốn cài đặt gói contrib, gói này bổ sung thêm một số tính năng vào hệ thống cơ sở dữ liệu PostgreSQL.
Mã:
$ sudo dnf install postgresql-contrib
Bây giờ máy chủ đã được cài đặt, chúng ta cần tạo một người dùng mới.

Bước 2 - Tạo một cụm cơ sở dữ liệu PostgreSQL mới​

Trước tiên, bạn cần tạo một cụm cơ sở dữ liệu PostgreSQL mới. Một cụm cơ sở dữ liệu là một tập hợp các cơ sở dữ liệu được quản lý bởi một phiên bản máy chủ duy nhất. Việc tạo một cụm sẽ tạo ra các thư mục mà cơ sở dữ liệu sẽ được đặt vào. Toàn bộ quá trình này cũng tương tự như khởi tạo PostgreSQL.

Quá trình này tạo ra các cơ sở dữ liệu template1postgres. Cơ sở dữ liệu template1 là một mẫu được PostgreSQL sử dụng để tạo các cơ sở dữ liệu mới. Cơ sở dữ liệu postgres là cơ sở dữ liệu mặc định để người dùng, tiện ích và ứng dụng của bên thứ ba sử dụng.

Để tạo cụm cơ sở dữ liệu để khởi tạo PostgreSQL, hãy sử dụng lệnh sau.
Mã:
$ sudo postgresql-setup --initdb
Bây giờ, hãy khởi động dịch vụ PostgreSQL.
Mã:
$ sudo systemctl start postgresql
Kích hoạt dịch vụ PostgreSQL.
Mã:
$ sudo systemctl enable postgresql
Bây giờ PostgreSQL đã hoạt động, chúng ta có thể tạo người dùng và cơ sở dữ liệu mới và bắt đầu sử dụng chúng.

Bước 3 - Vai trò và phương pháp xác thực PostgreSQL​

Postgres sử dụng khái niệm "roles" để xử lý xác thực và quyền. PostgreSQL hỗ trợ nhiều phương pháp xác thực. Các phương pháp được sử dụng phổ biến nhất là:
  • Trust - Một vai trò có thể kết nối mà không cần mật khẩu, miễn là các điều kiện được xác định trong /var/lib/pgsql/pg_hba.conf được đáp ứng.
  • Password - Một vai trò sử dụng mật khẩu để kết nối. Mật khẩu có thể được lưu trữ dưới dạng md5, scram-sha-256 và văn bản thuần túy.
  • Ident - Yêu cầu tên người dùng hệ điều hành của máy khách và chỉ được hỗ trợ trên các kết nối TCP/IP.
  • Peer - Giống như Ident nhưng chỉ được hỗ trợ trên các kết nối localhost.
Postgres sử dụng xác thực ngang hàng theo mặc định, nghĩa là nó liên kết các vai trò Postgres với việc khớp với một tài khoản người dùng Linux. Nếu một vai trò tồn tại bên trong Postgres, một tên người dùng Linux có cùng tên có thể đăng nhập với vai trò đó. Chi tiết về xác thực máy khách được lưu trữ trong tệp /var/lib/pgsql/pg_hba.conf.

Quá trình cài đặt Postgres tạo ra một tài khoản người dùng có tên là postgres được liên kết với vai trò Postgres mặc định.

Chuyển sang tài khoản postgres.
Mã:
$ sudo -i -u postgres
Bạn có thể truy cập dấu nhắc Postgres bằng lệnh sau.
Mã:
$ psql
Lệnh này sẽ đăng nhập bạn vào dấu nhắc PostgreSQL, tại đó bạn có thể truy cập và sử dụng cơ sở dữ liệu thông qua nhiều lệnh khác nhau. Bạn có thể thoát khỏi dấu nhắc bằng cách nhập:
Mã:
postgres-# \q
Lệnh này sẽ đưa bạn trở lại tài khoản Linux của tài khoản Postgres. Để thoát trở lại tài khoản người dùng của riêng bạn, hãy nhập exit tại dấu nhắc.

Bạn cũng có thể truy cập dấu nhắc Postgres mà không cần chuyển đổi tài khoản bằng cách nhập lệnh sau.
Mã:
$ sudo -u postgres psql
Để thoát khỏi dấu nhắc, hãy nhập:
Mã:
postgres-# \q

Bước 4 - Tạo vai trò và cơ sở dữ liệu mới.​

Bạn có thể tạo vai trò và cơ sở dữ liệu trực tiếp từ bash shell hoặc psql shell. Đối với mục đích của chúng tôi, chúng tôi sẽ sử dụng shell psql vì nó thực hiện công việc nhanh hơn.

Đầu tiên, hãy kết nối với shell psql.
Mã:
$ sudo -u postgres psql
Tạo một vai trò PostgreSQL mới với các quyền như Superuser, Create database, Create role và Login. Người dùng này sẽ được sử dụng thêm trong hướng dẫn để đăng nhập vào phpPgAdmin.
Mã:
postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';
Bạn có thể kiểm tra tất cả người dùng khả dụng bằng lệnh sau.
Mã:
postgres-# \du Danh sách các vai trò Tên vai trò | Thuộc tính | Thành viên của-----------+---------------------------------------------------------+---------- username | Siêu người dùng, Tạo vai trò, Tạo DB | {} postgres | Siêu người dùng, Tạo vai trò, Tạo DB, Sao chép, Bỏ qua RLS | {}
Tạo cơ sở dữ liệu mới.
Mã:
postgres-# CREATE DATABASE userdb;
Cấp quyền cho người dùng trên cơ sở dữ liệu chúng ta vừa tạo bằng cách chạy truy vấn sau.
Mã:
postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;
Bạn có thể kiểm tra tất cả các cơ sở dữ liệu khả dụng bằng lệnh sau.
Mã:
postgres-# \l Danh sách cơ sở dữ liệu Tên | Chủ sở hữu | Mã hóa | Đối chiếu | Ctype | Quyền truy cập------------+----------+----------+-------------+----------------+----------------------- userdb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres + | | | | | postgres=CTc/postgres+ | | | | | navjot=CTc/postgres postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | postgres=CTc/postgres(4 hàng)

Bước 5 - Bật quyền truy cập từ xa vào máy chủ PostgreSQL​

Theo mặc định, máy chủ PostgreSQL chỉ lắng nghe trên giao diện máy chủ cục bộ. Để bật quyền truy cập từ xa vào máy chủ PostgreSQL của bạn, hãy mở tệp postgresql.conf.
Mã:
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Cuộn xuống phần KẾT NỐI VÀ XÁC THỰC và thay đổi/chỉnh sửa dòng sau bằng cách xóa ký hiệu dấu thăng.
Mã:
#listen_addresses = 'localhost' # địa chỉ IP nào để lắng nghe;
Thay đổi dòng thành sau.
Mã:
listen_addresses = '*' # địa chỉ IP nào để lắng nghe;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước tiếp theo là cấu hình máy chủ để chấp nhận kết nối từ xa bằng chỉnh sửa tệp pg_hba.conf.
Mã:
$ sudo nano /var/lib/pgsql/data/pg_hba.conf
Có nhiều cách khác nhau để bạn có thể cấp quyền truy cập vào các kết nối từ xa. Bạn có thể hạn chế kết nối từ xa cho một người dùng hoặc một cơ sở dữ liệu hoặc tất cả chúng và hạn chế kết nối cho mọi địa chỉ IP hoặc một vị trí đáng tin cậy.
Mã:
# TYPE DATABASE USER ADDRESS METHOD# Người dùng jane có thể truy cập tất cả các cơ sở dữ liệu từ mọi vị trí bằng mật khẩu md5host all john 0.0.0.0/0 md5# Người dùng jane chỉ có thể truy cập cơ sở dữ liệu janedb từ mọi vị trí bằng mật khẩu md5host johndb john 0.0.0.0/0 md5# Người dùng jane có thể truy cập tất cả các cơ sở dữ liệu từ một vị trí đáng tin cậy (192.168.1.110) mà không cần mật khẩuhost all john 192.168.1.110 trust
Cũng có các mục nhập khác trong tệp và phương thức xác thực được liệt kê cho các mục nhập đó là ident. Bạn sẽ cần thay đổi giá trị của ident thành md5 nếu bạn muốn đăng nhập qua giao diện web.

Thêm cấu hình cần thiết rồi lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại máy chủ PostgreSQL để thay đổi có hiệu lực.
Mã:
$ sudo systemctl restart postgresql
Xác minh các thay đổi bằng tiện ích ss.
Mã:
$ ss -nlt | grep 5432LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*LISTEN 0 128 [::]:5432 [::]:*
Điều này cho thấy máy chủ PostgreSQL đang lắng nghe trên cổng mặc định trên tất cả các giao diện.

Bước 6 - Cài đặt phpPgAdmin, Nginx và PHP​

phpPgAdmin thường đi kèm với kho lưu trữ của PostgreSQL hoặc Fedora nhưng không có trong Fedora 34. Do đó, bạn sẽ cần phải cài đặt thủ công. Cùng với phpPgAdmin, bạn cũng cần cài đặt máy chủ web Nginx và phần mềm PHP.

Tải xuống phiên bản mới nhất của phpPgAdmin từTrang phát hành Github. Vào thời điểm viết hướng dẫn này, phiên bản mới nhất hiện có là 7.13.0.
Mã:
$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz
Giải nén tệp đã tải xuống.
Mã:
$ tar -zxvf phpPgAdmin-7.13.0.tar.gz
Tạo thư mục nơi trang web của bạn sẽ lưu trữ.
Mã:
$ sudo mkdir /var/www/phppgadmin/html -p
Di chuyển các tệp đã giải nén đến thư mục /var/www/phppgadmin/html.
Mã:
$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html
Cài đặt máy chủ Nginx và PHP cùng với các mô-đun PHP phù hợp.
Mã:
$ sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring
Cấu hình tường lửa Fedora.
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Tải lại tường lửa để kích hoạt các quy tắc.
Mã:
$ sudo firewall-cmd --reload

Cấu hình PHP​

Mở tệp /etc/php-fpm.d/www.conf để chỉnh sửa bằng nano editor.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
Chúng ta cần đặt người dùng/nhóm Unix của các quy trình PHP thành nginx. Tìm các dòng user=apachegroup=apache trong tệp và đổi chúng thành nginx.
Mã:
...; Người dùng/nhóm quy trình Unix; Lưu ý: Người dùng là bắt buộc. Nếu nhóm không được đặt, nhóm người dùng mặc định; sẽ được sử dụng.; RPM: người dùng apache được chọn để cung cấp quyền truy cập vào cùng thư mục với httpduser = nginx; RPM: Giữ một nhóm được phép ghi vào thư mục nhật ký.group = nginx...
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại quy trình PHP-fpm.
Mã:
$ sudo systemctl restart php-fpm

Cấu hình Nginx​

Chạy lệnh sau để thêm tệp cấu hình cho trang web của bạn.
Mã:
$ sudo nano /etc/nginx/conf.d/phppgadmin.conf
Dán mã sau vào trình chỉnh sửa.
Mã:
server { listen *:80; server_name phppgadmin.example.com; root /var/www/phppgadmin/html; index index.php; vị trí / { try_files $uri $uri/ =404; } access_log /var/log/nginx/phppgadmin.access.log; error_log /var/log/nginx/phppgadmin.error.log; vị trí ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param TÊN_TỆP_KẾ_GỐC $document_root$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params; }}
Nhấn Ctrl + X để đóng trình soạn thảo và nhấn Y khi được nhắc lưu tệp.

Tệp này giả định rằng chúng tôi sẽ lưu trữ phppgadmin.example.com trong thư mục /var/www/html/phppgadmin.

Kiểm tra cấu hình Nginx.
Mã:
$ sudo nginx -t
Bạn sẽ thấy đầu ra sau cho biết cấu hình của bạn là chính xác.
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Khởi động và kích hoạt dịch vụ Nginx.
Mã:
$ sudo systemctl start nginx$ sudo systemctl enable nginx
Khởi chạy http://phppgadmin.example.com trong trình duyệt của bạn và bạn sẽ thấy trang phpPgAdmin mặc định trong trình duyệt của mình.



Nhấp vào liên kết PostgreSQL ở thanh bên trái và nhập tên người dùng và mật khẩu bạn đã tạo trước đó để đăng nhập và truy cập cổng thông tin.


Bước 7 - Cài đặt SSL (Tùy chọn)​

Chúng ta có thể bật SSL bằng dịch vụ Let's Encrypt SSL. Để làm được điều đó, hãy cài đặt công cụ Certbot.
Mã:
$ sudo dnf install certbot-nginx
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot --nginx -d phppgadmin.example.com
Bạn sẽ được yêu cầu cung cấp địa chỉ email và đồng ý với các điều khoản dịch vụ. Khi được yêu cầu truy cập HTTPS, hãy chọn phương pháp Bảo mật để chuyển hướng tất cả các yêu cầu từ HTTP sang HTTPS.

Bạn sẽ có thể truy cập phpPgAdmin bằng cách nhập https://phppgadmin.example.com vào trình duyệt của mình.

Cấu hình SSL để Tự động gia hạn​

Mở trình soạn thảo Crontab.
Mã:
$ EDITOR=nano sudo crontab -e
Dán dòng sau vào cuối.
Mã:
. . .25 2 * * * /usr/bin/certbot renew --quiet
Phần 25 2 * * * của dòng này có nghĩa là "chạy lệnh sau vào lúc 2:25 sáng, hàng ngày". Bạn có thể chọn bất kỳ thời điểm nào.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chứng chỉ SSL của bạn sẽ được tự động gia hạn.

Kết luận​

Như vậy là kết thúc hướng dẫn của chúng tôi về cách cài đặt PostgreSQL và phpPgAdmin trên máy chủ chạy Fedora 34. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên