Update system-lof.md
This commit is contained in:
parent
e2c51c2b1e
commit
8cb705450e
176
system-lof.md
176
system-lof.md
|
|
@ -121,3 +121,179 @@ isi:
|
|||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Untuk user non root
|
||||
Berikut contoh **systemd service production-ready** yang lebih aman, ada logging, restart policy, dan security hardening.
|
||||
|
||||
Misalnya file:
|
||||
`/etc/systemd/system/delamonganpasarapi.service`
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=Delamongan Pasar API Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
||||
# Jalankan dengan user khusus (BUKAN root)
|
||||
User=api
|
||||
Group=api
|
||||
|
||||
# folder kerja aplikasi
|
||||
WorkingDirectory=/home/api
|
||||
|
||||
# jalankan binary
|
||||
ExecStart=/home/api/delamonganpasarapi
|
||||
|
||||
# restart otomatis jika crash
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
# logging
|
||||
StandardOutput=append:/var/log/delamonganpasarapi.log
|
||||
StandardError=append:/var/log/delamonganpasarapi-error.log
|
||||
SyslogIdentifier=delamonganpasarapi
|
||||
|
||||
# limit resource (optional tapi recommended)
|
||||
LimitNOFILE=65535
|
||||
|
||||
# security hardening
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
ReadWritePaths=/home/api /var/log
|
||||
|
||||
# timeout
|
||||
TimeoutStartSec=30
|
||||
TimeoutStopSec=30
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 1. Buat user khusus (recommended)
|
||||
|
||||
Jangan pakai root.
|
||||
|
||||
```
|
||||
sudo useradd -r -s /bin/false -d /home/api api
|
||||
sudo chown -R api:api /home/api
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 2. Buat file log
|
||||
|
||||
```
|
||||
sudo touch /var/log/delamonganpasarapi.log
|
||||
sudo touch /var/log/delamonganpasarapi-error.log
|
||||
sudo chown api:api /var/log/delamonganpasarapi*.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 3. Enable dan start service
|
||||
|
||||
```
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable delamonganpasarapi
|
||||
sudo systemctl start delamonganpasarapi
|
||||
```
|
||||
|
||||
Cek status:
|
||||
|
||||
```
|
||||
sudo systemctl status delamonganpasarapi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 4. Monitor log realtime
|
||||
|
||||
File log:
|
||||
|
||||
```
|
||||
tail -f /var/log/delamonganpasarapi.log
|
||||
```
|
||||
|
||||
Error log:
|
||||
|
||||
```
|
||||
tail -f /var/log/delamonganpasarapi-error.log
|
||||
```
|
||||
|
||||
Atau journalctl:
|
||||
|
||||
```
|
||||
journalctl -u delamonganpasarapi -f
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 5. Auto start saat boot
|
||||
|
||||
Sudah otomatis karena:
|
||||
|
||||
```
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
dan
|
||||
|
||||
```
|
||||
systemctl enable delamonganpasarapi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 6. Bonus (SANGAT recommended): logrotate
|
||||
|
||||
```
|
||||
sudo nano /etc/logrotate.d/delamonganpasarapi
|
||||
```
|
||||
|
||||
isi:
|
||||
|
||||
```
|
||||
/var/log/delamonganpasarapi*.log {
|
||||
daily
|
||||
rotate 30
|
||||
compress
|
||||
delaycompress
|
||||
missingok
|
||||
notifempty
|
||||
copytruncate
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 7. Struktur production yang ideal
|
||||
|
||||
```
|
||||
/home/api/
|
||||
├── delamonganpasarapi
|
||||
├── config.json
|
||||
└── .env
|
||||
|
||||
/var/log/
|
||||
├── delamonganpasarapi.log
|
||||
└── delamonganpasarapi-error.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 8. Debug cepat kalau service gagal
|
||||
|
||||
```
|
||||
journalctl -u delamonganpasarapi -n 100 --no-pager
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Kalau mau, saya bisa buatkan juga:
|
||||
|
|
|
|||
Loading…
Reference in New Issue