# Panduan Instalasi - Aplikasi Pemantauan Tugas Siswa ## Persyaratan Sistem ### Minimum Requirements - **Server**: Apache 2.4+ atau Nginx 1.18+ - **PHP**: 8.0 atau lebih tinggi (dengan ekstensi PDO, PDO_MySQL) - **Database**: MySQL 8.0+ atau MariaDB 10.5+ - **Memory**: 512MB RAM minimum - **Storage**: 1GB free space - **Browser**: Chrome 90+, Firefox 88+, Safari 14+ ### Recommended Requirements - **Server**: Apache 2.4+ - **PHP**: 8.1+ dengan ekstensi: PDO, PDO_MySQL, mbstring, openssl, fileinfo - **Database**: MySQL 8.0+ - **Memory**: 1GB+ RAM - **Storage**: 5GB+ free space ## Langkah Instalasi ### 1. Persiapan Environment #### Menggunakan XAMPP (Development) 1. Download dan install XAMPP dari [https://www.apachefriends.org](https://www.apachefriends.org) 2. Start Apache dan MySQL dari XAMPP Control Panel 3. Pastikan port 80 (Apache) dan 3306 (MySQL) tersedia #### Menggunakan Server Production 1. Pastikan Apache dan MySQL sudah terinstall 2. Pastikan PHP 8.0+ dengan ekstensi yang diperlukan 3. Konfigurasi virtual host jika diperlukan ### 2. Download Source Code ```bash # Clone repository git clone https://github.com/username/tugas-siswa.git # Atau download dan extract ZIP # Letakkan di folder htdocs (XAMPP) atau web root server ``` ### 3. Setup Database #### Buat Database Baru ```sql -- Login ke MySQL sebagai root mysql -u root -p -- Buat database CREATE DATABASE tugas_siswa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Buat user khusus (opsional tapi direkomendasikan) CREATE USER 'tugas_user'@'localhost' IDENTIFIED BY 'password_kuat_123'; GRANT ALL PRIVILEGES ON tugas_siswa.* TO 'tugas_user'@'localhost'; FLUSH PRIVILEGES; ``` #### Import Schema Database ```bash # Gunakan file SQL yang disediakan mysql -u root -p tugas_siswa < database/schema.sql # Atau gunakan setup otomatis melalui browser # Akses: http://localhost/tugas/setup.php ``` ### 4. Konfigurasi Aplikasi #### Buat File Config ```bash # Copy template config cp config/config.example.php config/config.php ``` #### Edit Konfigurasi Database ```php ``` ### 5. Setup Folder Permissions #### Linux/Unix/Mac ```bash # Set permission untuk folder uploads chmod 755 uploads/ chmod 755 uploads/photos/ chmod 755 uploads/avatars/ # Set permission untuk folder logs (jika ada) chmod 755 logs/ # Set ownership jika diperlukan chown -R www-data:www-data uploads/ ``` #### Windows (XAMPP) ```cmd # Buat folder uploads jika belum ada mkdir uploads mkdir uploads\photos mkdir uploads\avatars # Set permission melalui Properties → Security (jika diperlukan) ``` ### 6. Konfigurasi Apache #### Buat .htaccess di Root ```apache # .htaccess RewriteEngine On # Redirect ke folder public jika ada RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ public/$1 [L] # Security headers Header always set X-Content-Type-Options nosniff Header always set X-Frame-Options DENY Header always set X-XSS-Protection "1; mode=block" # Cache static files ExpiresActive on ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ``` #### Konfigurasi Virtual Host (Opsional) ```apache # httpd-vhosts.conf atau sites-available ServerName tugas-siswa.local DocumentRoot "C:/xampp/htdocs/tugas" ErrorLog "logs/tugas-siswa.error.log" CustomLog "logs/tugas-siswa.access.log" common AllowOverride All Require all granted ``` ### 7. Import Data Default #### Jalankan Seeder ```bash # Akses melalui browser http://localhost/tugas/install/seed.php # Atau jalankan via command line php install/seed.php ``` #### Data Default yang Dibuat - Admin user: admin@sekolah.id / admin123 - Guru test: guru@sekolah.id / guru123 - Siswa test: siswa@sekolah.id / siswa123 - Sample kelas dan tugas ### 8. Testing Instalasi #### Cek Koneksi Database ```bash # Akses test page http://localhost/tugas/install/test.php ``` #### Cek Fungsi Upload ```bash # Test upload functionality http://localhost/tugas/install/test-upload.php ``` #### Cek Session ```bash # Test session functionality http://localhost/tugas/install/test-session.php ``` ### 9. First Login 1. Akses aplikasi: `http://localhost/tugas` 2. Login dengan akun admin: - Email: admin@sekolah.id - Password: admin123 3. Ganti password default 4. Setup konfigurasi awal melalui Settings ### 10. Post-Installation Setup #### Konfigurasi Email (Opsional) ```php // config/mail.php define('MAIL_HOST', 'smtp.gmail.com'); define('MAIL_PORT', 587); define('MAIL_USERNAME', 'your-email@gmail.com'); define('MAIL_PASSWORD', 'your-app-password'); define('MAIL_FROM', 'noreply@sekolah.id'); define('MAIL_FROM_NAME', 'Sistem Tugas Siswa'); ``` #### Setup Backup Otomatis ```bash # Tambah ke crontab untuk backup harian 0 2 * * * /usr/bin/php /path/to/tugas/scripts/backup.php ``` #### Setup Log Rotation ```bash # Tambah ke logrotate.conf /path/to/tugas/logs/*.log { daily missingok rotate 30 compress notifempty create 644 www-data www-data } ``` ## Troubleshooting ### Error Database Connection ``` Error: SQLSTATE[HY000] [2002] Connection refused ``` **Solusi**: - Pastikan MySQL running - Cek username/password database - Cek host dan port database ### Error Permission Denied ``` Warning: move_uploaded_file(): failed to open stream: Permission denied ``` **Solusi**: - Set permission 755 untuk folder uploads - Cek ownership folder (www-data di Linux) ### Error Session ``` Warning: session_start(): Cannot send session cache limiter ``` **Solusi**: - Pastikan tidak ada output sebelum session_start() - Cek konfigurasi session di php.ini ### Error .htaccess ``` Internal Server Error ``` **Solusi**: - Pastikan mod_rewrite enabled - Cek syntax .htaccess - Cek AllowOverride di Apache config ## Maintenance ### Update Aplikasi 1. Backup database dan files 2. Download versi terbaru 3. Replace files (kecuali config dan uploads) 4. Jalankan script migration jika ada 5. Clear cache jika ada ### Backup Rutin ```bash # Backup database mysqldump -u tugas_user -p tugas_siswa > backup_$(date +%Y%m%d).sql # Backup files tar -czf backup_files_$(date +%Y%m%d).tar.gz uploads/ config/ ``` --- *Terakhir diperbarui: 22 Juli 2025*