192 lines
3.8 KiB
Markdown
192 lines
3.8 KiB
Markdown
# Production Deployment Guide - Perizinan API Integration
|
|
|
|
## 🚀 Quick Deployment
|
|
|
|
### 1. Upload Files to Server
|
|
|
|
Upload semua files ke server Linux di directory `/var/www/perling` (atau sesuai setup Anda).
|
|
|
|
### 2. Run Deployment Script
|
|
|
|
```bash
|
|
cd /var/www/perling
|
|
chmod +x deploy-production.sh
|
|
./deploy-production.sh
|
|
```
|
|
|
|
### 3. Update Environment Variables
|
|
|
|
Edit file `.env` dan update:
|
|
|
|
```env
|
|
APP_ENV=production
|
|
APP_DEBUG=false
|
|
|
|
# Database production
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=127.0.0.1
|
|
DB_PORT=3306
|
|
DB_DATABASE=perling_production
|
|
DB_USERNAME=your_db_user
|
|
DB_PASSWORD=your_db_password
|
|
|
|
# API Credentials (yang sudah ada)
|
|
PERIZINAN_API_BEARER_TOKEN=f633c4f8e8a84708895bf31c0afdfa68c9079613d18d4edfb1fc6a0019b5f832
|
|
PERIZINAN_API_KEY=b06c8ef1-06db-443d-996b-80e8c3374923
|
|
```
|
|
|
|
### 4. Setup Cron Job
|
|
|
|
#### Option 1: Laravel Scheduler (Recommended)
|
|
|
|
```bash
|
|
# Edit crontab
|
|
sudo crontab -e
|
|
|
|
# Add this line (runs every minute):
|
|
* * * * * cd /var/www/perling && ./run-scheduler.sh >/dev/null 2>&1
|
|
```
|
|
|
|
#### Option 2: Direct Sync
|
|
|
|
```bash
|
|
# Edit crontab
|
|
sudo crontab -e
|
|
|
|
# Add this line (runs daily at midnight):
|
|
0 0 * * * cd /var/www/perling && ./sync-perizinan.sh >/dev/null 2>&1
|
|
```
|
|
|
|
## 🔧 Manual Commands
|
|
|
|
### Test API Connection
|
|
|
|
```bash
|
|
cd /var/www/perling
|
|
php artisan perizinan:sync pertek
|
|
```
|
|
|
|
### Check Synced Data
|
|
|
|
```bash
|
|
php artisan perizinan:check
|
|
```
|
|
|
|
### View Logs
|
|
|
|
```bash
|
|
# Cron logs
|
|
tail -f storage/logs/cron.log
|
|
|
|
# Laravel application logs
|
|
tail -f storage/logs/laravel.log
|
|
|
|
# Scheduler logs (if using Option 1)
|
|
tail -f storage/logs/scheduler.log
|
|
```
|
|
|
|
### View Cron Job Status
|
|
|
|
```bash
|
|
# View current crontab
|
|
crontab -l
|
|
|
|
# View cron service logs
|
|
sudo journalctl -u cron -f
|
|
```
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Permission Issues
|
|
|
|
```bash
|
|
# Fix storage permissions
|
|
sudo chown -R www-data:www-data storage/
|
|
sudo chmod -R 775 storage/
|
|
|
|
# Fix cache permissions
|
|
sudo chown -R www-data:www-data bootstrap/cache/
|
|
sudo chmod -R 775 bootstrap/cache/
|
|
```
|
|
|
|
### Database Issues
|
|
|
|
```bash
|
|
# Clear config cache
|
|
php artisan config:clear
|
|
|
|
# Run migrations
|
|
php artisan migrate --force
|
|
|
|
# Check database connection
|
|
php artisan tinker --execute="DB::connection()->getPdo();"
|
|
```
|
|
|
|
### API Connection Issues
|
|
|
|
```bash
|
|
# Test API manually
|
|
curl -X GET "https://wsdev.jakarta.go.id/gateway/DataPerizinanLingkungan/1.0/summary_by_status?kategori=pertek" \
|
|
-H "Authorization: Bearer f633c4f8e8a84708895bf31c0afdfa68c9079613d18d4edfb1fc6a0019b5f832" \
|
|
-H "x-Gateway-APIKey: b06c8ef1-06db-443d-996b-80e8c3374923"
|
|
```
|
|
|
|
### Cron Job Not Running
|
|
|
|
```bash
|
|
# Check if cron service is running
|
|
sudo systemctl status cron
|
|
|
|
# Start cron service if stopped
|
|
sudo systemctl start cron
|
|
|
|
# Check cron logs
|
|
sudo tail -f /var/log/cron.log
|
|
```
|
|
|
|
## 📊 Monitoring
|
|
|
|
### Daily Health Check
|
|
|
|
```bash
|
|
# Check if data was synced today
|
|
php artisan perizinan:check
|
|
|
|
# Check latest logs
|
|
tail -20 storage/logs/cron.log
|
|
```
|
|
|
|
### Weekly Review
|
|
|
|
```bash
|
|
# Check database records count
|
|
php artisan tinker --execute="echo App\Models\PerizinanStatus::count() . ' total records';"
|
|
|
|
# Check logs for errors
|
|
grep -i error storage/logs/laravel.log | tail -10
|
|
```
|
|
|
|
## 🔐 Security Notes
|
|
|
|
1. **File Permissions**: Ensure proper permissions for Laravel
|
|
2. **Database**: Use strong password and limit access
|
|
3. **API Keys**: Keep credentials secure, don't commit to version control
|
|
4. **Logs**: Regularly rotate and clean up log files
|
|
5. **SSL**: Use HTTPS in production
|
|
|
|
## 📈 Performance Tips
|
|
|
|
1. **Database Indexing**: Already added in migration
|
|
2. **Log Rotation**: Setup logrotate for Laravel logs
|
|
3. **Caching**: Enable OPcache for PHP
|
|
4. **Queue**: Consider using Redis for Laravel queues if needed
|
|
|
|
## 🎯 Success Criteria
|
|
|
|
✅ Cron job runs without errors
|
|
✅ Data syncs daily at midnight
|
|
✅ Dashboard shows real API data
|
|
✅ Logs are clean without errors
|
|
✅ Database grows with daily records
|
|
✅ API connection is stable
|