Baik, berikut adalah panduan lengkap dari awal hingga akhir, termasuk penggunaan script pg.sh
untuk me-mount NAS dan me-restore database ke PostgreSQL.
-
Unduh Ubuntu Server:
- Kunjungi situs Ubuntu dan unduh Ubuntu Server versi terbaru.
-
Buat Bootable USB:
- Gunakan aplikasi seperti Rufus (untuk Windows) atau Etcher (untuk macOS dan Linux) untuk membuat USB bootable dari file ISO yang diunduh.
-
Instal Ubuntu Server:
- Boot dari USB dan ikuti panduan instalasi di layar.
- Buat username dan password saat diminta.
-
Login ke server: Setelah server reboot, login menggunakan username dan password yang sudah Anda buat.
-
Update sistem: Selalu lakukan update dan upgrade sistem sebelum memulai:
sudo apt update && sudo apt upgrade -y
-
Instal Nginx:
sudo apt install nginx -y
-
Instal PHP 8.3 dan PHP-FPM: Tambahkan repository untuk PHP 8.3 dan instal:
sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php8.3 php8.3-fpm php8.3-pgsql php8.3-mbstring php8.3-xml -y
-
Instal PostgreSQL: Instal PostgreSQL dan setup:
sudo apt install postgresql postgresql-contrib -y
-
Setel password PostgreSQL: Atur password untuk pengguna
postgres
:sudo -u postgres psql ALTER USER postgres PASSWORD 'postgre123'; \q
-
Edit konfigurasi default Nginx:
sudo nano /etc/nginx/sites-available/default
-
Sesuaikan konfigurasi: Ganti isi file konfigurasi dengan:
server { listen 80; server_name _; root /www/wwwroot/cms; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; } location ~ /\.ht { deny all; } }
-
Buat folder CMS: Buat folder tempat website Anda akan dideploy:
sudo mkdir -p /www/wwwroot/cms
-
Setel izin folder: Atur hak akses folder:
sudo chown -R www-data:www-data /www/wwwroot/cms sudo chmod -R 755 /www/wwwroot/cms
-
Restart Nginx: Restart Nginx untuk menerapkan perubahan:
sudo systemctl restart nginx
-
Buat direktori untuk mount NAS: Buat direktori untuk menghubungkan NAS ke server:
sudo mkdir /mnt/nas
-
Mount NAS ke server: Gunakan perintah berikut untuk me-mount NAS ke server Anda:
sudo mount -t nfs -o rw,sync,vers=4 192.168.1.242:/volume1/BACKUP /mnt/nas
-
Verifikasi bahwa NAS sudah ter-mount: Cek apakah file backup di NAS sudah muncul di direktori
/mnt/nas
:ls /mnt/nas
-
Buat file
pg.sh
: Simpan skrip yang Anda berikan ke filepg.sh
:sudo nano /mnt/nas/pg.sh
Copy-paste script berikut ke dalam editor:
#!/bin/bash # Define base directory base_dir="/mnt/nas" # Loop through each db_syd directory (db_syd, db_syd_02, db_syd_03, ...) for db_dir in $(find "$base_dir" -maxdepth 1 -type d -name "db_syd*"); do # Get the folder name (e.g., db_syd, db_syd_02) to use as the database name db_name=$(basename "$db_dir") # Find the latest .sql.gz file in the current db_syd directory latest_backup=$(find "$db_dir" -type f -name "*.sql.gz" | sort -r | head -n 1) if [ -n "$latest_backup" ]; then echo "Found latest backup: $latest_backup" # Check if the database exists db_exists=$(psql -U postgres -tAc "SELECT 1 FROM pg_database WHERE datname='$db_name'") # If the database doesn't exist, create it if [ "$db_exists" != "1" ]; then echo "Creating database: $db_name" createdb -U postgres "$db_name" fi # Restore the backup into the database echo "Restoring backup to database: $db_name" gunzip < "$latest_backup" | psql -U postgres -h localhost -d "$db_name" echo "Restored: $latest_backup to $db_name" else echo "No backup found in $db_dir" fi done
-
Beri hak eksekusi ke skrip: Berikan hak akses eksekusi ke file
pg.sh
:sudo chmod +x /mnt/nas/pg.sh
-
Jalankan skrip
pg.sh
: Jalankan skrip untuk melakukan restore otomatis semua database:sudo /mnt/nas/pg.sh
-
Cek database yang di-restore: Masuk ke PostgreSQL dan verifikasi apakah database sudah ter-restore dengan benar:
sudo -u postgres psql \l
Anda harus melihat semua database (
db_syd
,db_syd_02
, dll.) sudah ada.
- Akses website:
Buka browser dan akses website CMS di
http://<IP-server-Anda>
. CMS seharusnya sudah terhubung dengan database yang baru di-restore.
Sekarang Anda telah berhasil:
- Menginstal Ubuntu Server.
- Menginstal Nginx, PHP, dan PostgreSQL.
- Me-mount storage NAS.
- Menggunakan script
pg.sh
untuk me-restore database dari NAS ke PostgreSQL. - Mengakses CMS melalui Nginx.
Jika ada pertanyaan lebih lanjut atau butuh bantuan tambahan, jangan ragu untuk bertanya!