PostgreSQL atau Postgres adalah sistem manajemen basis data relasional sumber terbuka yang kuat yang menggunakan dan memperluas bahasa SQL. Ini memiliki banyak fitur canggih yang dengan aman menyimpan dan menskalakan beban kerja data yang rumit. phpPgAdmin adalah aplikasi berbasis PHP untuk mengelola dan mengedit database PostgreSQL.
Tutorial ini akan menunjukkan cara menginstal PostgreSQL dan phpPgAdmin pada server berbasis Fedora 34.
Prasyarat
-
Server berbasis Fedora 34.
-
Selalu perbarui sistem Anda.
$ sudo dnf update
-
Pengguna non-root dengan hak istimewa sudo.
Langkah 1 - Instal PostgreSQL
Fedora 34 hadir dengan berbagai versi PostgreSQL yang tersedia dari repositori mereka. Anda dapat memilih di antara versi ini dengan mengaktifkan modul yang sesuai, yang merupakan kumpulan paket dan dependensi.
Pertama, periksa aliran yang tersedia untuk postgresql
modul menggunakan dnf
perintah.
$ dnf module list postgresql
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL module
postgresql 10 client, server [d] PostgreSQL module
postgresql 11 client, server [d] PostgreSQL module
postgresql 12 client, server PostgreSQL module
postgresql 13 client, server PostgreSQL module
Untuk menginstal PostgreSQL, kita perlu mengaktifkan aliran modul yang sesuai.
$ sudo dnf module enable postgresql:13
Saat diminta, masukkan Y
untuk mengaktifkan streaming.
Selanjutnya, instal server PostgreSQL.
$ sudo dnf install postgresql-server
Anda mungkin ingin menginstal contrib
package, yang menambahkan beberapa fitur tambahan ke sistem database PostgreSQL.
$ sudo dnf install postgresql-contrib
Setelah server terinstal, kita perlu membuat pengguna baru.
Langkah 2 - Buat Cluster Database PostgreSQL baru
Pertama, Anda perlu membuat cluster database PostgreSQL baru. Sebuah cluster database adalah kumpulan database yang dikelola oleh satu contoh server. Membuat cluster akan membuat direktori di mana database akan ditempatkan. Seluruh proses ini juga mirip dengan inisialisasi PostgreSQL.
Proses ini membuat template1
dan postgres
database. template1
database adalah template yang digunakan oleh PostgreSQL untuk membuat database baru. postgres
database adalah database default untuk digunakan oleh pengguna, utilitas, dan aplikasi pihak ketiga.
Untuk membuat cluster database untuk menginisialisasi PostgreSQL, gunakan perintah berikut.
$ sudo postgresql-setup --initdb
Sekarang, mulai layanan PostgreSQL.
$ sudo systemctl start postgresql
Aktifkan layanan PostgreSQL.
$ sudo systemctl enable postgresql
Setelah PostgreSQL aktif dan berjalan, kita dapat membuat pengguna dan database baru dan mulai menggunakannya.
Langkah 3 - Peran PostgreSQL dan Metode Otentikasi
Postgres menggunakan konsep "peran" untuk menangani otentikasi dan izin. PostgreSQL mendukung beberapa metode otentikasi. Metode yang paling umum digunakan adalah:
- Kepercayaan - Peran yang dapat terhubung tanpa sandi, selama kondisi ditentukan di
/var/lib/pgsql/pg_hba.conf
terpenuhi. - Sandi - Peran yang menggunakan kata sandi untuk terhubung. Kata sandi dapat disimpan sebagai
md5
,scram-sha-256
dan teks yang jelas. - Identitas - Ini memerlukan nama pengguna OS klien dan hanya didukung pada koneksi TCP/IP.
- Rekan - Sama seperti Ident tetapi hanya didukung pada koneksi localhost.
Postgres menggunakan otentikasi rekan secara default, yang berarti mengaitkan peran Postgres dengan pencocokan akun pengguna Linux. Jika ada peran di dalam Postgres, nama pengguna Linux dengan nama yang sama dapat masuk sebagai peran itu. Detail autentikasi klien disimpan di /var/lib/pgsql/pg_hba.conf
berkas.
Proses instalasi Postgres membuat akun pengguna bernama postgres
yang terkait dengan peran default Postgres.
Beralih ke postgres
akun.
$ sudo -i -u postgres
Anda dapat mengakses prompt Postgres menggunakan perintah berikut.
$ psql
Ini akan memasukkan Anda ke prompt PostgreSQL, di mana Anda dapat mengakses dan menggunakan database melalui berbagai perintah. Anda dapat keluar dari prompt dengan mengetik:
postgres-# \q
Ini akan membawa Anda kembali ke akun Linux akun Postgres. Untuk keluar kembali ke akun pengguna Anda sendiri, ketik exit
saat diminta.
Anda juga dapat mengakses prompt Postgres tanpa berpindah akun dengan mengetikkan perintah berikut.
$ sudo -u postgres psql
Untuk keluar dari prompt, ketik:
postgres-# \q
Langkah 4 - Membuat peran dan database baru.
Anda dapat membuat peran dan database langsung dari bash shell atau psql
kerang. Untuk tujuan kami, kami akan menggunakan psql
shell karena melakukan pekerjaan lebih cepat.
Pertama, sambungkan ke psql
cangkang.
$ sudo -u postgres psql
Buat peran PostgreSQL baru dengan izin seperti Superuser, Buat database, Buat peran, dan Login. Pengguna ini akan digunakan lebih lanjut dalam tutorial untuk masuk ke phpPgAdmin .
postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';
Anda dapat memeriksa semua pengguna yang tersedia dengan perintah berikut.
postgres-# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
username | Superuser, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Buat database baru.
postgres-# CREATE DATABASE userdb;
Berikan hak istimewa kepada pengguna di database yang baru saja kita buat dengan menjalankan kueri berikut.
postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;
Anda dapat memeriksa semua database yang tersedia dengan perintah berikut.
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
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 rows)
Langkah 5 - Aktifkan akses jarak jauh ke server PostgreSQL
Secara default, server PostgreSQL hanya mendengarkan pada antarmuka localhost. Untuk mengaktifkan akses jarak jauh ke server PostgreSQL Anda, buka postgresql.conf
berkas.
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Gulir ke bawah ke bagian CONNECTIONS AND AUTHENTICATION dan ubah/edit baris berikut dengan menghapus simbol hash.
#listen_addresses = 'localhost' # what IP address(es) to listen on;
Ubah baris menjadi berikut.
listen_addresses = '*' # what IP address(es) to listen on;
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Langkah selanjutnya adalah mengkonfigurasi server untuk menerima koneksi jarak jauh dengan mengedit pg_hba.conf
berkas.
$ sudo nano /var/lib/pgsql/data/pg_hba.conf
Ada berbagai cara Anda dapat memberikan akses ke koneksi jarak jauh. Anda dapat membatasi koneksi jarak jauh ke satu pengguna atau database tunggal atau semuanya dan membatasi koneksi ke setiap alamat IP atau lokasi tepercaya.
# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using an md5 password
host all john 0.0.0.0/0 md5
# The user jane can access only the janedb database from all locations using an md5 password
host johndb john 0.0.0.0/0 md5
# The user jane can access all databases from a trusted location (192.168.1.110) without a password
host all john 192.168.1.110 trust
Ada entri lain dalam file juga, dan metode otentikasi yang terdaftar untuk mereka adalah ident
. Anda perlu mengubah nilai ident
ke md5
jika Anda ingin masuk melalui antarmuka web.
Tambahkan konfigurasi yang diperlukan lalu simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang server PostgreSQL agar perubahan diterapkan.
$ sudo systemctl restart postgresql
Verifikasi perubahan dengan ss
utilitas.
$ ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
Ini menunjukkan bahwa server PostgreSQL mendengarkan port default di semua antarmuka.
Langkah 6 - Instal phpPgAdmin, Nginx, dan PHP
phpPgAdmin biasanya dikirimkan dengan repositori PostgreSQL atau Fedora tetapi tidak di Fedora 34. Oleh karena itu, Anda perlu menginstalnya secara manual. Selain phpPgAdmin, Anda juga perlu menginstal server web Nginx dan perangkat lunak PHP.
Download phpPgAdmin versi terbaru dari halaman rilis Github. Pada saat penulisan tutorial ini, versi terbaru yang tersedia adalah 7.13.0.
$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz
Ekstrak arsip yang diunduh.
$ tar -zxvf phpPgAdmin-7.13.0.tar.gz
Buat direktori tempat situs Anda akan tinggal.
$ sudo mkdir /var/www/phppgadmin/html -p
Pindahkan file hasil ekstrak ke /var/www/phppgadmin/html
direktori.
$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html
Instal server Nginx dan PHP bersama dengan modul PHP yang sesuai.
$ sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring
Konfigurasi firewall Fedora.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Muat ulang firewall untuk mengaktifkan aturan.
$ sudo firewall-cmd --reload
Konfigurasi PHP
Buka file /etc/php-fpm.d/www.conf
untuk mengedit menggunakan nano editor
.
$ sudo nano /etc/php-fpm.d/www.conf
Kita perlu mengatur pengguna/grup proses PHP Unix ke nginx . Temukan user=apache
dan group=apache
baris dalam file dan ubah ke nginx.
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang proses PHP-fpm.
$ sudo systemctl restart php-fpm
Konfigurasi Nginx
Jalankan perintah berikut untuk menambahkan file konfigurasi untuk situs Anda.
$ sudo nano /etc/nginx/conf.d/phppgadmin.conf
Rekatkan kode berikut di editor.
server {
listen *:80;
server_name phppgadmin.example.com;
root /var/www/phppgadmin/html;
index index.php;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/phppgadmin.access.log;
error_log /var/log/nginx/phppgadmin.error.log;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.
File ini mengasumsikan bahwa kita akan menghosting phppgadmin.example.com
di direktori /var/www/html/phppgadmin
.
Uji konfigurasi Nginx.
$ sudo nginx -t
Anda akan melihat output berikut yang menunjukkan konfigurasi Anda benar.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Mulai dan aktifkan layanan Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Luncurkan http://phppgadmin.example.com
di browser Anda, dan Anda akan melihat halaman phpPgAdmin default di browser Anda.
Klik pada PostgreSQL
tautan di bilah sisi kiri dan masukkan pengguna dan kata sandi yang Anda buat sebelumnya untuk masuk dan mengakses portal.
Langkah 7 - Instal SSL (Opsional)
Kita dapat mengaktifkan SSL menggunakan layanan Let's Encrypt SSL. Untuk itu, instal alat Certbot.
$ sudo dnf install certbot-nginx
Buat sertifikat SSL.
$ sudo certbot --nginx -d phppgadmin.example.com
Anda akan dimintai alamat email Anda dan untuk menyetujui persyaratan layanan. Saat dimintai akses HTTPS, pilih metode Aman untuk mengalihkan semua permintaan dari HTTP ke HTTPS.
Anda seharusnya dapat mengakses phpPgAdmin dengan mengetik https://phppgadmin.example.com
di browser Anda.
Konfigurasikan SSL untuk Pembaruan Otomatis
Buka editor Crontab.
$ EDITOR=nano sudo crontab -e
Rekatkan baris berikut di bagian bawah.
. . .
25 2 * * * /usr/bin/certbot renew --quiet
25 2 * * *
bagian dari baris ini berarti "jalankan perintah berikut pada pukul 2:25 pagi, setiap hari". Anda dapat memilih kapan saja.
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Sertifikat SSL Anda akan diperpanjang secara otomatis.
Kesimpulan
Ini menyimpulkan tutorial kami tentang cara menginstal PostgreSQL dan phpPgAdmin di server berbasis Fedora 34. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.