Skip to content

Instantly share code, notes, and snippets.

@fdciabdul
Created October 7, 2024 08:46
Show Gist options
  • Save fdciabdul/8853e68739024e677d8631c95b5b687b to your computer and use it in GitHub Desktop.
Save fdciabdul/8853e68739024e677d8631c95b5b687b to your computer and use it in GitHub Desktop.

Baik, berikut adalah panduan lengkap dari awal hingga akhir, termasuk penggunaan script pg.sh untuk me-mount NAS dan me-restore database ke PostgreSQL.

Langkah 1: Instalasi Ubuntu Server

  1. Unduh Ubuntu Server:

    • Kunjungi situs Ubuntu dan unduh Ubuntu Server versi terbaru.
  2. Buat Bootable USB:

    • Gunakan aplikasi seperti Rufus (untuk Windows) atau Etcher (untuk macOS dan Linux) untuk membuat USB bootable dari file ISO yang diunduh.
  3. Instal Ubuntu Server:

    • Boot dari USB dan ikuti panduan instalasi di layar.
    • Buat username dan password saat diminta.

Langkah 2: Login ke Server dan Update Sistem

  1. Login ke server: Setelah server reboot, login menggunakan username dan password yang sudah Anda buat.

  2. Update sistem: Selalu lakukan update dan upgrade sistem sebelum memulai:

    sudo apt update && sudo apt upgrade -y

Langkah 3: Instalasi Nginx, PHP, dan PostgreSQL

  1. Instal Nginx:

    sudo apt install nginx -y
  2. 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
  3. Instal PostgreSQL: Instal PostgreSQL dan setup:

    sudo apt install postgresql postgresql-contrib -y
  4. Setel password PostgreSQL: Atur password untuk pengguna postgres:

    sudo -u postgres psql
    ALTER USER postgres PASSWORD 'postgre123';
    \q

Langkah 4: Konfigurasi Nginx untuk PHP

  1. Edit konfigurasi default Nginx:

    sudo nano /etc/nginx/sites-available/default
  2. 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;
        }
    }
  3. Buat folder CMS: Buat folder tempat website Anda akan dideploy:

    sudo mkdir -p /www/wwwroot/cms
  4. Setel izin folder: Atur hak akses folder:

    sudo chown -R www-data:www-data /www/wwwroot/cms
    sudo chmod -R 755 /www/wwwroot/cms
  5. Restart Nginx: Restart Nginx untuk menerapkan perubahan:

    sudo systemctl restart nginx

Langkah 5: Mount Storage NAS

  1. Buat direktori untuk mount NAS: Buat direktori untuk menghubungkan NAS ke server:

    sudo mkdir /mnt/nas
  2. 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
  3. Verifikasi bahwa NAS sudah ter-mount: Cek apakah file backup di NAS sudah muncul di direktori /mnt/nas:

    ls /mnt/nas

Langkah 6: Menjalankan Script pg.sh untuk Restore Database

  1. Buat file pg.sh: Simpan skrip yang Anda berikan ke file pg.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
  2. Beri hak eksekusi ke skrip: Berikan hak akses eksekusi ke file pg.sh:

    sudo chmod +x /mnt/nas/pg.sh
  3. Jalankan skrip pg.sh: Jalankan skrip untuk melakukan restore otomatis semua database:

    sudo /mnt/nas/pg.sh

Langkah 7: Verifikasi Database

  1. 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.


Langkah 8: Tes Aplikasi CMS

  1. Akses website: Buka browser dan akses website CMS di http://<IP-server-Anda>. CMS seharusnya sudah terhubung dengan database yang baru di-restore.

Langkah 9: Selesai

Sekarang Anda telah berhasil:

  1. Menginstal Ubuntu Server.
  2. Menginstal Nginx, PHP, dan PostgreSQL.
  3. Me-mount storage NAS.
  4. Menggunakan script pg.sh untuk me-restore database dari NAS ke PostgreSQL.
  5. Mengakses CMS melalui Nginx.

Jika ada pertanyaan lebih lanjut atau butuh bantuan tambahan, jangan ragu untuk bertanya!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment