Deployment
Pendahuluan
Dokumen ini menjelaskan langkah-langkah untuk men-deploy aplikasi Absensi GPS, termasuk backend Laravel, frontend Vue.js, dan aplikasi Android. Deployment yang tepat akan memastikan semua komponen sistem dapat berkomunikasi dengan baik.
Persyaratan Sistem
Server Requirements
- PHP 8.2 atau lebih tinggi
- MySQL 8.0 atau lebih tinggi
- Composer 2.0 atau lebih tinggi
- Node.js 18.0 atau lebih tinggi
- NPM 9.0 atau lebih tinggi
- Webserver (Apache/Nginx)
Android Requirements
- Android Studio 4.0 atau lebih tinggi
- JDK 11 atau lebih tinggi
- Gradle 7.0 atau lebih tinggi
- Android SDK API level 28 atau lebih tinggi
Deployment Backend dan Frontend
1. Clone Repository
git clone https://github.com/username/absensi-gps.git
cd absensi-gps
2. Setup Backend
Instalasi Dependensi
composer install --optimize-autoloader --no-dev
Konfigurasi Environment
Salin file .env.example menjadi .env dan sesuaikan konfigurasi:
cp .env.example .env
php artisan key:generate
Edit file .env dan sesuaikan konfigurasi database:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=absensi_gps
DB_USERNAME=root
DB_PASSWORD=password
MOBILE_API_KEY=9a3b7c8d2e1f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8
Migrasi dan Seeding Database
php artisan migrate --seed
Optimasi Laravel
php artisan config:cache
php artisan route:cache
php artisan view:cache
3. Setup Frontend
Instalasi Dependensi
npm install
Build Frontend
npm run build
4. Konfigurasi Webserver
Apache
Buat file konfigurasi virtual host di /etc/apache2/sites-available/absensi-gps.conf:
<VirtualHost *:80>
ServerName absensi-gps.local
DocumentRoot /path/to/absensi-gps/public
<Directory "/path/to/absensi-gps/public">
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/absensi-gps-error.log
CustomLog ${APACHE_LOG_DIR}/absensi-gps-access.log combined
</VirtualHost>
Aktifkan virtual host dan restart Apache:
sudo a2ensite absensi-gps.conf
sudo systemctl restart apache2
Nginx
Buat file konfigurasi di /etc/nginx/sites-available/absensi-gps:
server {
listen 80;
server_name absensi-gps.local;
root /path/to/absensi-gps/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Aktifkan konfigurasi dan restart Nginx:
sudo ln -s /etc/nginx/sites-available/absensi-gps /etc/nginx/sites-enabled/
sudo systemctl restart nginx
5. Setup Permissions
Atur permission yang tepat untuk direktori storage dan bootstrap/cache:
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
Deployment Aplikasi Android
1. Konfigurasi API Endpoint
Buka file app/src/main/java/com/example/absensigps/util/Constants.kt dan sesuaikan API_KEY:
object Constants {
const val API_KEY = "9a3b7c8d2e1f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8"
}
2. Build APK
Melalui Android Studio
- Buka proyek di Android Studio
- Pilih menu Build > Build Bundle(s) / APK(s) > Build APK(s)
- Tunggu proses build selesai
- APK akan tersedia di
app/build/outputs/apk/debug/app-debug.apk
Melalui Command Line
cd android
./gradlew assembleDebug
APK akan tersedia di app/build/outputs/apk/debug/app-debug.apk
3. Distribusi APK
APK dapat didistribusikan melalui beberapa cara:
- Email: Kirim APK langsung ke email siswa
- Google Drive: Upload APK ke Google Drive dan bagikan link
- Website Sekolah: Sediakan link download di website sekolah
- Google Play Store: Untuk distribusi yang lebih luas (memerlukan akun developer)
Konfigurasi Jaringan
Agar aplikasi Android dapat menemukan server dengan benar, pastikan:
- Server dan perangkat Android berada dalam jaringan yang sama
- Port 80 (HTTP) atau 443 (HTTPS) terbuka di firewall server
- IP server bersifat statis atau menggunakan DHCP reservation
Pengujian Deployment
1. Backend API
Uji API menggunakan Postman atau curl:
curl -X GET \
"http://absensi-gps.local/api/mobile/status" \
-H "Authorization: Bearer 9a3b7c8d2e1f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8"
Response yang diharapkan:
{
"success": true,
"data": {
"status": "online",
"database": "online",
"server_ip": "192.168.1.100",
"server_time": "2025-05-15 20:30:00",
"app_version": "1.0.0"
}
}
2. Frontend Admin
Buka browser dan akses http://absensi-gps.local. Login dengan kredensial admin:
- Email: admin@example.com
- Password: password
3. Aplikasi Android
Install APK di perangkat Android dan pastikan:
- Aplikasi dapat menemukan server saat splash screen
- Login berhasil dengan ID Siswa dan Password yang valid
- Fitur absensi masuk dan keluar berfungsi dengan baik
Troubleshooting
Backend Issues
- Error 500: Periksa log di
storage/logs/laravel.log - Database Connection Error: Periksa konfigurasi database di
.env - Permission Issues: Pastikan permission direktori storage dan bootstrap/cache sudah benar
Frontend Issues
- Blank Page: Periksa console browser untuk error JavaScript
- API Error: Pastikan backend API berjalan dengan baik
Android Issues
- Cannot Find Server: Pastikan perangkat dan server berada dalam jaringan yang sama
- Login Failed: Periksa kredensial dan koneksi ke server
- GPS Error: Pastikan GPS diaktifkan dan aplikasi memiliki izin lokasi
Backup dan Restore
Database Backup
mysqldump -u root -p absensi_gps > absensi_gps_backup.sql
Database Restore
mysql -u root -p absensi_gps < absensi_gps_backup.sql
Kesimpulan
Deployment aplikasi Absensi GPS memerlukan konfigurasi yang tepat untuk backend, frontend, dan aplikasi Android. Dengan mengikuti langkah-langkah di atas, sistem Absensi GPS akan berjalan dengan baik dan siap digunakan oleh admin, guru, dan siswa.