update
This commit is contained in:
No files matched your search
+213
-1
@@ -47,9 +47,221 @@ Untuk panduan pengguna atau manual book dari LIS, dapat diunduh melalui link ber
|
||||
- **Bootstrap** (Frontend)
|
||||
- **jQuery** (Frontend)
|
||||
|
||||
## Backup Database ke Cloud
|
||||
|
||||
Backup database dijalankan dari server production `10.10.123.218`. Database yang di-backup berada di server PostgreSQL `10.10.123.193`, lalu file hasil backup `.backup` dikirim secara bertahap/chunked ke `https://duidev.com` sebagai cadangan cloud.
|
||||
|
||||
Alur backup:
|
||||
|
||||
```text
|
||||
10.10.123.218 -> pg_dump dari 10.10.123.193 -> upload .backup ke duidev.com
|
||||
```
|
||||
|
||||
Alur restore:
|
||||
|
||||
```text
|
||||
10.10.123.218 -> download backup terbaru dari duidev.com -> pg_restore ke 10.10.123.193
|
||||
```
|
||||
|
||||
### Konfigurasi Server Production
|
||||
|
||||
Tambahkan konfigurasi berikut di file `.env` server production `10.10.123.218`:
|
||||
|
||||
```env
|
||||
CLOUD_BACKUP_API_URL=https://duidev.com
|
||||
CLOUD_BACKUP_API_TOKEN=isi_token_rahasia_yang_sama_dengan_duidev
|
||||
CLOUD_BACKUP_NAME=lismikro
|
||||
CLOUD_BACKUP_CHUNK_SIZE=5242880
|
||||
CLOUD_BACKUP_DB_HOST=10.10.123.193
|
||||
CLOUD_BACKUP_DB_PORT=5002
|
||||
CLOUD_BACKUP_DB_DATABASE=lismikro
|
||||
CLOUD_BACKUP_DB_USERNAME=lismikro
|
||||
CLOUD_BACKUP_DB_PASSWORD=
|
||||
```
|
||||
|
||||
Jika password PostgreSQL sudah disimpan di `.pgpass`, `CLOUD_BACKUP_DB_PASSWORD` boleh dikosongkan.
|
||||
|
||||
Setelah mengubah `.env`, jalankan:
|
||||
|
||||
```bash
|
||||
php artisan config:clear
|
||||
```
|
||||
|
||||
### Password PostgreSQL Tanpa Prompt
|
||||
|
||||
Buat file `~/.pgpass` pada user Linux yang menjalankan cron:
|
||||
|
||||
```text
|
||||
10.10.123.193:5002:lismikro:lismikro:PASSWORD_DATABASE
|
||||
```
|
||||
|
||||
Lalu amankan permission-nya:
|
||||
|
||||
```bash
|
||||
chmod 600 ~/.pgpass
|
||||
```
|
||||
|
||||
### Script Backup Harian
|
||||
|
||||
Contoh file `/home/mikro/project/backup.sh`:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
echo "===== Backup mulai: $(date '+%Y-%m-%d %H:%M:%S') ====="
|
||||
|
||||
BACKUP_DIR="/home/mikro/project/backups"
|
||||
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
FILE="$BACKUP_DIR/lismikro_$DATE.backup"
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
pg_dump -h 10.10.123.193 -p 5002 -U lismikro -d lismikro -F c -v -f "$FILE"
|
||||
STATUS=$?
|
||||
|
||||
if [ $STATUS -eq 0 ]; then
|
||||
echo "Backup berhasil: $FILE"
|
||||
|
||||
cd /home/mikro/project/htdocs
|
||||
php artisan backup:upload-file "$FILE"
|
||||
UPLOAD_STATUS=$?
|
||||
|
||||
if [ $UPLOAD_STATUS -eq 0 ]; then
|
||||
echo "Upload cloud berhasil"
|
||||
else
|
||||
echo "Upload cloud gagal dengan status: $UPLOAD_STATUS"
|
||||
fi
|
||||
|
||||
find "$BACKUP_DIR" -type f -name "lismikro_*.backup" -mtime +2 -delete
|
||||
else
|
||||
echo "Backup gagal dengan status: $STATUS"
|
||||
fi
|
||||
|
||||
echo "===== Backup selesai: $(date '+%Y-%m-%d %H:%M:%S') ====="
|
||||
echo ""
|
||||
```
|
||||
|
||||
Aktifkan script:
|
||||
|
||||
```bash
|
||||
chmod +x /home/mikro/project/backup.sh
|
||||
```
|
||||
|
||||
### Crontab
|
||||
|
||||
Jalankan backup setiap hari jam `23:59`:
|
||||
|
||||
```cron
|
||||
59 23 * * * /home/mikro/project/backup.sh >> /home/mikro/project/backup.log 2>&1
|
||||
```
|
||||
|
||||
Lihat log:
|
||||
|
||||
```bash
|
||||
tail -n 100 /home/mikro/project/backup.log
|
||||
```
|
||||
|
||||
### Upload Manual
|
||||
|
||||
Jika sudah memiliki file `.backup` dan ingin mengirim ulang ke cloud:
|
||||
|
||||
```bash
|
||||
cd /home/mikro/project/htdocs
|
||||
php artisan backup:upload-file /home/mikro/project/backups/lismikro_YYYY-MM-DD_HH-MM-SS.backup
|
||||
```
|
||||
|
||||
### Download Backup Terbaru
|
||||
|
||||
Untuk download saja tanpa restore:
|
||||
|
||||
```bash
|
||||
cd /home/mikro/project/htdocs
|
||||
php artisan backup:restore-latest --download-only
|
||||
```
|
||||
|
||||
### Restore Penuh ke Database
|
||||
|
||||
Restore dijalankan dari server production `10.10.123.218` dan target database adalah `10.10.123.193`.
|
||||
|
||||
```bash
|
||||
cd /home/mikro/project/htdocs
|
||||
php artisan backup:restore-latest
|
||||
```
|
||||
|
||||
Jika ingin langsung restore tanpa pertanyaan konfirmasi:
|
||||
|
||||
```bash
|
||||
php artisan backup:restore-latest --yes
|
||||
```
|
||||
|
||||
Perintah restore memakai `pg_restore --clean --if-exists --no-owner` secara default. Pastikan `pg_restore` tersedia di server production.
|
||||
|
||||
## Export Reverse Payload `registerApi`
|
||||
|
||||
Perintah ini menarik data dari tabel `periksa` berdasarkan tanggal tertentu, lalu mengubahnya kembali menjadi JSON dengan key yang sama seperti payload awal `registerApi`.
|
||||
|
||||
Contoh export berdasarkan tanggal daftar:
|
||||
|
||||
```bash
|
||||
php artisan register-api:export 2026-08-01 --pretty
|
||||
```
|
||||
|
||||
Simpan hasil ke file:
|
||||
|
||||
```bash
|
||||
php artisan register-api:export 2026-08-01 --pretty --output=/home/mikro/project/export-register-api-2026-08-01.json
|
||||
```
|
||||
|
||||
Secara default filter memakai kolom `daftar`. Jika ingin memakai tanggal lain:
|
||||
|
||||
```bash
|
||||
php artisan register-api:export 2026-08-01 --column=tanggalregis --pretty
|
||||
php artisan register-api:export 2026-08-01 --column=tanggalsampel --pretty
|
||||
```
|
||||
|
||||
Format JSON yang dihasilkan:
|
||||
|
||||
```json
|
||||
{
|
||||
"tanggal": "2026-08-01",
|
||||
"filter_column": "daftar",
|
||||
"total": 1,
|
||||
"data": [
|
||||
{
|
||||
"norm": "RM001",
|
||||
"nama": "Nama Pasien",
|
||||
"alamat": "Alamat Pasien",
|
||||
"kota": "Kota",
|
||||
"tgllahir": "1990-01-01",
|
||||
"nohap": "0000000000",
|
||||
"kelamin": "L",
|
||||
"urgensi": "Elective",
|
||||
"beratbadan": "0",
|
||||
"nik": "0",
|
||||
"nobpjs": "0",
|
||||
"drpeminta": "Dokter Peminta",
|
||||
"asalpasien": "Rawat Jalan",
|
||||
"diagnosa": "Diagnosa",
|
||||
"statusbayar": null,
|
||||
"nomor_lab": "ORDER001",
|
||||
"jenispembayaran": "UMM",
|
||||
"klinisi": "Dokter Peminta",
|
||||
"jenispemeriksaan": "Jenis Pemeriksaan",
|
||||
"spesimen": "Sputum",
|
||||
"kodespesimen": "SPT",
|
||||
"pengambilan": null,
|
||||
"keteranganrujukan": "RSSA Malang",
|
||||
"namarspengirim": "RSSA Malang",
|
||||
"tanggalregis": "2026-08-01",
|
||||
"tanggalsampel": "2026-08-01",
|
||||
"asalpengirim": null
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Kontribusi
|
||||
Jika Anda ingin berkontribusi pada proyek ini, silakan buat **pull request** atau **issue** terkait.
|
||||
|
||||
## Lisensi
|
||||
Proyek ini dilisensikan di bawah lisensi MIT. Lihat file **LICENSE** untuk informasi lebih lanjut.
|
||||
|
||||
Reference in New Issue
Block a user