Proyek ini adalah contoh konfigurasi untuk menjalankan aplikasi Laravel Filament menggunakan Apache sebagai pengganti Nginx, dengan dukungan untuk beberapa versi PHP.
- Prasyarat
- Instalasi
- Menjalankan Aplikasi
- Struktur Direktori
- Menjalankan Proyek Baru
- Konfigurasi Apache
- Konfigurasi Environment
- Docker Compose
- Perintah Umum
- Penyelesaian Masalah
- Lisensi
Sebelum memulai, pastikan Anda telah menginstal:
- Docker
- Docker Compose
-
Clone repository ini ke direktori lokal Anda:
git clone <url-repository> laravel-filament-apache cd laravel-filament-apache
-
Pastikan Docker dan Docker Compose telah terinstal di sistem Anda.
-
Jalankan layanan dengan perintah:
docker compose -f docker-compose-apache.yml up -d
-
Tunggu beberapa saat hingga semua layanan berjalan.
-
Akses aplikasi di browser Anda melalui:
http://localhost:8080/untuk aplikasi Laravel Filamenthttp://project-a.localhost:8080/untuk contoh proyek Ahttp://project-b.localhost:8080/untuk contoh proyek Bhttp://php7.localhost:8080/sample/untuk contoh proyek PHP 7.4http://php8.localhost:8080/sample/untuk contoh proyek PHP 8.3
-
Untuk menghentikan layanan:
docker compose -f docker-compose-apache.yml down
.
├── apache/
│ ├── httpd.conf # Konfigurasi utama Apache
│ └── vhosts/
│ ├── laravel.conf # Virtual host untuk aplikasi Laravel
│ ├── php7.conf # Virtual host untuk proyek PHP 7.4
│ ├── php8.conf # Virtual host untuk proyek PHP 8.3
│ ├── project_a.conf # Virtual host untuk proyek A
│ └── project_b.conf # Virtual host untuk proyek B
├── docker-compose-apache.yml # Konfigurasi Docker Compose
├── php-83-fpm/
│ └── Dockerfile # Konfigurasi PHP 8.3 FPM
├── php-74-fpm/
│ └── Dockerfile # Konfigurasi PHP 7.4 FPM
├── www/
│ ├── laravel/ # Aplikasi Laravel Filament
│ ├── project_a/ # Contoh proyek sederhana
│ ├── project_b/ # Contoh proyek dengan koneksi database
│ ├── php7/ # Direktori untuk proyek PHP 7.4
│ │ └── sample/ # Contoh proyek PHP 7.4
│ └── php8/ # Direktori untuk proyek PHP 8.3
│ └── sample/ # Contoh proyek PHP 8.3
└── ...
Untuk menambahkan proyek baru:
-
Untuk proyek yang membutuhkan PHP 7.4:
- Letakkan file proyek Anda di direktori
www/php7/nama-proyek/ - Akses proyek melalui
http://php7.localhost:8080/nama-proyek/
- Letakkan file proyek Anda di direktori
-
Untuk proyek yang membutuhkan PHP 8.3:
- Letakkan file proyek Anda di direktori
www/php8/nama-proyek/ - Akses proyek melalui
http://php8.localhost:8080/nama-proyek/
- Letakkan file proyek Anda di direktori
-
Untuk proyek khusus (seperti Laravel Filament):
- Buat direktori baru di
www/dengan nama proyek Anda - Tambahkan konfigurasi virtual host baru di
apache/vhosts/ - Sesuaikan konfigurasi
docker-compose-apache.ymljika diperlukan - Akses proyek melalui URL yang telah dikonfigurasi
- Buat direktori baru di
Tidak perlu konfigurasi tambahan untuk setiap proyek baru selama mengikuti struktur yang telah disediakan.
Konfigurasi Apache telah dioptimalkan untuk aplikasi Laravel Filament dengan:
- Virtual host khusus untuk aplikasi laravel
- Pengaturan rewrite rules yang sesuai untuk Laravel
- Konfigurasi PHP-FPM yang terintegrasi
- Penanganan khusus untuk direktori Livewire dan Filament
- Virtual host terpisah untuk proyek PHP 7.4 dan 8.3
File .env berisi konfigurasi untuk database MySQL dan PostgreSQL:
# --- MySQL Credentials ---
MYSQL_DATABASE=db_mysql
MYSQL_USER=root # Atau user lain yang Anda inginkan
MYSQL_PASSWORD=password # <-- Isi password
MYSQL_ROOT_PASSWORD=root_password # <-- Isi password root
# --- PostgreSQL Credentials ---
POSTGRES_DB=db_postgre
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgresPastikan untuk mengganti password dengan yang lebih aman sebelum menjalankan aplikasi di lingkungan produksi.
File docker-compose-apache.yml mendefinisikan layanan berikut:
- apache: Web server Apache 2.4
- php-83-fpm: PHP 8.3 FPM
- php-74-fpm: PHP 7.4 FPM
- db-mysql: Database MySQL 8.0
- db-postgre: Database PostgreSQL 13
Setiap layanan telah dikonfigurasi dengan volume dan port yang sesuai untuk pengembangan lokal.
# Untuk PHP 8.3
docker compose -f docker-compose-apache.yml exec php-83-fpm sh
# Untuk PHP 7.4
docker compose -f docker-compose-apache.yml exec php-74-fpm shProses ini terdiri dari dua langkah utama: menyalin file backup ke dalam kontainer, lalu menjalankan restore.
-
Salin file backup ke dalam kontainer: Gunakan
docker cpuntuk menyalin file.sqlatau.backupdari komputer Anda ke direktori/tmpdi dalam kontainer.# Ganti /path/to/your/nama_file.sql dengan lokasi file Anda docker cp /path/to/your/nama_file.sql db-postgre-13:/tmp/nama_file.sql -
Jalankan perintah restore: Gunakan
docker execuntuk menjalankanpsqldi dalam kontainer, menunjuk ke file yang baru saja Anda salin.# Pastikan database 'nama_db' sudah dibuat sebelumnya docker exec -it db-postgre-13 psql -U postgres -d nama_db -f /tmp/nama_file.sql
-
(Opsional) Hapus file backup dari kontainer:
Setelah proses restore selesai, Anda bisa menghapus file backup dari direktori /tmp di dalam kontainer untuk menghemat ruang.
docker exec -it db-postgre-13 rm /tmp/nama_file.sql# Melihat log Apache
docker compose -f docker-compose-apache.yml logs apache
# Melihat log PHP FPM
docker compose -f docker-compose-apache.yml logs php-83-fpm
# Melihat log database
docker compose -f docker-compose-apache.yml logs db-mysql
docker compose -f docker-compose-apache.yml logs db-postgreJika mengalami error 405 Method Not Allowed:
- Pastikan file
.envdi direktori aplikasi Laravel sudah dikonfigurasi dengan benar - Periksa konfigurasi session di
config/session.php - Verifikasi bahwa CSRF token disertakan dalam request POST/PUT/PATCH/DELETE
- Cek log Apache untuk informasi lebih detail tentang error
Jika mengalami masalah koneksi seperti "refused to connect":
- Pastikan semua layanan Docker berjalan dengan perintah
docker compose -f docker-compose-apache.yml up -d - Gunakan format URL yang benar:
http://[nama-virtual-host]:8080/karena semua layanan dijalankan melalui port 8080 - Periksa file hosts sistem Anda jika perlu menambahkan entri untuk virtual host
Proyek ini dilisensikan di bawah MIT License.