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.
Trước tiên, hãy kiểm tra các luồng có sẵn cho mô-đun
Để cài đặt PostgreSQL, chúng ta cần bật luồng mô-đun tương ứng.
Khi được nhắc, hãy nhập
Tiếp theo, cài đặt máy chủ PostgreSQL.
Bạn có thể muốn cài đặt gói
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.
Quá trình này tạo ra các cơ sở dữ liệu
Để tạo cụm cơ sở dữ liệu để khởi tạo PostgreSQL, hãy sử dụng lệnh sau.
Bây giờ, hãy khởi động dịch vụ PostgreSQL.
Kích hoạt dịch vụ 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.
Quá trình cài đặt Postgres tạo ra một tài khoản người dùng có tên là
Chuyển sang tài khoản
Bạn có thể truy cập dấu nhắc Postgres bằng lệnh sau.
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:
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
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.
Để thoát khỏi dấu nhắc, hãy nhập:
Đầu tiên, hãy kết nối với shell
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.
Bạn có thể kiểm tra tất cả người dùng khả dụng bằng lệnh sau.
Tạo cơ sở dữ liệu mới.
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.
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.
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.
Thay đổi dòng thành sau.
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
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.
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à
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.
Xác minh các thay đổi bằng tiện ích
Đ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.
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.
Giải nén tệp đã tải xuống.
Tạo thư mục nơi trang web của bạn sẽ lưu trữ.
Di chuyển các tệp đã giải nén đến thư mục
Cài đặt máy chủ Nginx và PHP cùng với các mô-đun PHP phù hợp.
Cấu hình tường lửa Fedora.
Tải lại tường lửa để kích hoạt các quy tắc.
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
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.
Dán mã sau vào trình chỉnh sửa.
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ữ
Kiểm tra cấu hình Nginx.
Bạn sẽ thấy đầu ra sau cho biết cấu hình của bạn là chính xác.
Khởi động và kích hoạt dịch vụ Nginx.
Khởi chạy
Nhấp vào liên kết
Tạo chứng chỉ SSL.
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
Dán dòng sau vào cuối.
Phần
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.
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
-
Máy chủ chạy Fedora 34.
-
Luôn cập nhật hệ thống của bạn.
Mã:$ sudo dnf update
-
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
Mã:
$ sudo dnf module enable postgresql:13
Y
để bật luồng.Tiếp theo, cài đặt máy chủ PostgreSQL.
Mã:
$ sudo dnf install postgresql-server
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ướ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
template1
và postgres
. 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
Mã:
$ sudo systemctl start postgresql
Mã:
$ sudo systemctl enable postgresql
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.
/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
Mã:
$ psql
Mã:
postgres-# \q
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
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ặcpsql
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
Mã:
postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';
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 | {}
Mã:
postgres-# CREATE DATABASE userdb;
Mã:
postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;
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ệppostgresql.conf
.
Mã:
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Mã:
#listen_addresses = 'localhost' # địa chỉ IP nào để lắng nghe;
Mã:
listen_addresses = '*' # địa chỉ IP nào để lắng nghe;
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
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
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
ss
.
Mã:
$ ss -nlt | grep 5432LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*LISTEN 0 128 [::]:5432 [::]:*
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
Mã:
$ tar -zxvf phpPgAdmin-7.13.0.tar.gz
Mã:
$ sudo mkdir /var/www/phppgadmin/html -p
/var/www/phppgadmin/html
.
Mã:
$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html
Mã:
$ sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
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
user=apache
và group=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...
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
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; }}
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
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
Mã:
$ sudo systemctl start nginx$ sudo systemctl enable nginx
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
Mã:
$ sudo certbot --nginx -d phppgadmin.example.com
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
Mã:
. . .25 2 * * * /usr/bin/certbot renew --quiet
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.