Anda telah berhasil membangun aplikasi web yang luar biasa dengan Laravel. Selamat! Tapi, pekerjaan Anda belum selesai. Sekarang, saatnya aplikasi tersebut dilihat dunia. Bagaimana caranya? Jawabannya adalah: deploy aplikasi Laravel Anda ke server hosting. Proses ini mungkin terdengar rumit bagi sebagian orang, terutama bagi pemula. Tapi jangan khawatir! Panduan lengkap ini akan memandu Anda langkah demi langkah, sehingga Anda bisa dengan mudah deploy aplikasi Laravel Anda dan membuatnya online. Yuk, simak!
1. Persiapan Sebelum Deployment: Memilih Hosting dan Konfigurasi Awal
Sebelum kita menyelam lebih dalam ke proses deploy, penting untuk melakukan persiapan yang matang. Persiapan ini akan memastikan proses deployment berjalan lancar dan aplikasi Anda berfungsi dengan baik setelah online. Salah satu persiapan terpenting adalah memilih hosting yang tepat.
Memilih Hosting yang Tepat untuk Laravel:
Ada banyak pilihan hosting di luar sana, mulai dari shared hosting, VPS (Virtual Private Server), hingga cloud hosting. Pilihan terbaik tergantung pada kebutuhan dan anggaran Anda. Berikut beberapa pertimbangan penting:
- Kompatibilitas: Pastikan hosting mendukung PHP versi yang kompatibel dengan aplikasi Laravel Anda. Laravel biasanya membutuhkan PHP versi 7.4 atau lebih tinggi.
- Database: Laravel umumnya menggunakan MySQL atau PostgreSQL. Pastikan hosting Anda mendukung salah satu dari database ini.
- SSH Access: Akses SSH sangat penting untuk melakukan konfigurasi dan deployment. Pilih hosting yang menyediakan akses SSH.
- Resource: Pertimbangkan sumber daya yang dibutuhkan aplikasi Anda, seperti RAM dan CPU. Jika aplikasi Anda memiliki banyak pengguna atau memproses data yang besar, Anda mungkin membutuhkan VPS atau cloud hosting dengan sumber daya yang lebih besar.
- Harga: Sesuaikan pilihan hosting dengan anggaran Anda. Shared hosting biasanya lebih murah, tetapi VPS atau cloud hosting menawarkan fleksibilitas dan performa yang lebih baik.
Beberapa opsi hosting populer untuk Laravel:
- Shared Hosting: Niagahoster, DomaiNesia, Rumahweb
- VPS: DigitalOcean, Vultr, Linode
- Cloud Hosting: AWS (Amazon Web Services), Google Cloud Platform, Azure
Konfigurasi Awal Server Hosting:
Setelah memilih hosting, langkah selanjutnya adalah melakukan konfigurasi awal server. Langkah-langkah ini bervariasi tergantung pada jenis hosting dan provider yang Anda gunakan. Namun, beberapa konfigurasi umum meliputi:
- Mengatur Domain: Hubungkan domain Anda ke server hosting. Biasanya, Anda perlu mengubah nameserver domain Anda agar mengarah ke nameserver yang disediakan oleh provider hosting.
- Membuat Database: Buat database MySQL atau PostgreSQL untuk aplikasi Laravel Anda. Catat nama database, username, dan password yang akan digunakan nanti dalam konfigurasi aplikasi Laravel.
- Instalasi PHP dan Ekstensi yang Dibutuhkan: Pastikan PHP dan ekstensi yang dibutuhkan Laravel sudah terinstal di server. Beberapa ekstensi penting meliputi:
php-mbstring,php-xml,php-curl,php-gd. Anda dapat menginstal ekstensi ini melalui control panel hosting atau melalui SSH. - Mengatur Web Server (Apache atau Nginx): Pastikan web server (Apache atau Nginx) sudah terkonfigurasi dengan benar untuk melayani aplikasi Laravel Anda.
Dengan menyelesaikan persiapan ini, Anda sudah selangkah lebih dekat untuk berhasil deploy aplikasi Laravel Anda.
2. Mengunggah Aplikasi Laravel ke Server: Metode dan Pertimbangan Keamanan
Setelah server hosting siap, langkah selanjutnya adalah mengunggah kode aplikasi Laravel Anda ke server. Ada beberapa metode yang bisa Anda gunakan:
- FTP (File Transfer Protocol): FTP adalah metode klasik untuk mengunggah file. Anda membutuhkan client FTP seperti FileZilla atau Cyberduck untuk terhubung ke server dan mengunggah file.
- SCP (Secure Copy Protocol): SCP adalah metode yang lebih aman daripada FTP karena menggunakan enkripsi SSH. Anda dapat menggunakan command line atau client SCP untuk mengunggah file.
- Git: Jika Anda menggunakan Git untuk mengelola kode Anda, Anda dapat menggunakan Git untuk mengunggah aplikasi ke server. Caranya adalah dengan melakukan clone repository Git Anda ke server.
- Control Panel (cPanel atau Plesk): Beberapa hosting provider menyediakan control panel seperti cPanel atau Plesk yang memiliki fitur untuk mengunggah file.
Langkah-langkah Mengunggah dengan FTP:
- Buka client FTP Anda (misalnya FileZilla).
- Masukkan host, username, password, dan port (biasanya 21) server FTP Anda. Informasi ini biasanya disediakan oleh hosting provider Anda.
- Setelah terhubung, navigasikan ke direktori publik server Anda (biasanya
public_htmlatauwww). - Unggah semua file dan folder aplikasi Laravel Anda ke direktori tersebut, kecuali folder
public. Isi dari folderpublicakan diunggah ke direktoripublic_html.
Langkah-langkah Mengunggah dengan Git:
- Buka terminal atau command prompt Anda dan terhubung ke server melalui SSH.
- Navigasikan ke direktori yang Anda inginkan untuk menyimpan aplikasi Anda (misalnya
/var/www/html). - Clone repository Git Anda dengan perintah:
git clone <URL repository> - Pindahkan isi folder
publicke direktoripublic_html(atau direktori publik server Anda).
Pertimbangan Keamanan Saat Mengunggah:
- Jangan Unggah File
.env: File.envberisi informasi sensitif seperti database credentials dan API keys. Pastikan file ini tidak terunggah ke repository Git dan server. Anda dapat mengunggah template.env.exampledan mengisi konfigurasi secara manual di server. - Gunakan Koneksi yang Aman (SCP atau Git): Hindari penggunaan FTP jika memungkinkan, karena FTP tidak mengenkripsi data yang ditransmisikan.
- Periksa Izin File dan Folder: Pastikan izin file dan folder sudah diatur dengan benar. Biasanya, folder membutuhkan izin 755 dan file membutuhkan izin 644.
3. Konfigurasi Aplikasi Laravel di Server: Mengatur .env dan Database
Setelah aplikasi terunggah ke server, langkah selanjutnya adalah mengkonfigurasi aplikasi agar dapat berjalan dengan benar. Konfigurasi ini melibatkan pengaturan file .env dan koneksi ke database.
Mengatur File .env:
File .env berisi variabel lingkungan yang digunakan oleh aplikasi Laravel. Variabel ini mencakup informasi seperti koneksi database, debugging mode, dan konfigurasi email.
-
Salin File
.env.example: Jika Anda tidak mengunggah file.envlangsung, salin file.env.examplemenjadi.envdi server. Anda dapat melakukannya melalui SSH dengan perintah:cp .env.example .env -
Edit File
.env: Buka file.envdengan text editor sepertinanoatauvim. -
Konfigurasi Database: Isi informasi koneksi database dengan benar. Ganti nilai-nilai berikut dengan informasi yang sesuai:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 # Atau IP address server database Anda DB_PORT=3306 DB_DATABASE=nama_database_anda DB_USERNAME=username_database_anda DB_PASSWORD=password_database_anda -
Konfigurasi Lainnya: Atur variabel lingkungan lainnya sesuai kebutuhan aplikasi Anda. Beberapa variabel penting meliputi:
APP_NAME: Nama aplikasi AndaAPP_ENV:productionuntuk lingkungan produksiAPP_DEBUG:falseuntuk lingkungan produksi (penting untuk keamanan)APP_URL: URL aplikasi Anda (misalnyahttps://example.com)APP_KEY: Hasilkan APP_KEY baru jika belum ada dengan perintahphp artisan key:generate
Migrasi Database:
Setelah mengkonfigurasi koneksi database, Anda perlu melakukan migrasi database untuk membuat tabel-tabel yang dibutuhkan oleh aplikasi Anda.
- Jalankan Migrasi: Terhubung ke server melalui SSH dan jalankan perintah:
php artisan migrate --force- Opsi
--forcedibutuhkan jikaAPP_ENVdiatur keproduction. Ini mencegah Anda menjalankan migrasi secara tidak sengaja di lingkungan produksi.
- Opsi
Seed Database (Opsional):
Jika Anda memiliki data default yang ingin dimasukkan ke database, Anda dapat menggunakan seeder.
- Jalankan Seeder: Terhubung ke server melalui SSH dan jalankan perintah:
php artisan db:seed --force
Dengan menyelesaikan konfigurasi ini, aplikasi Laravel Anda seharusnya sudah dapat terhubung ke database dan berfungsi dengan baik.
4. Mengatur Web Server: Konfigurasi Virtual Host dan Direktori Publik
Langkah selanjutnya adalah mengatur web server (Apache atau Nginx) agar dapat melayani aplikasi Laravel Anda dengan benar. Ini melibatkan konfigurasi virtual host dan pengaturan direktori publik.
Konfigurasi Virtual Host (Apache):
-
Cari File Konfigurasi Virtual Host: Lokasi file konfigurasi virtual host bervariasi tergantung pada sistem operasi dan konfigurasi server Anda. Biasanya, file ini terletak di
/etc/apache2/sites-available/atau/etc/httpd/conf/httpd.conf. -
Buat File Konfigurasi Baru: Buat file konfigurasi virtual host baru untuk aplikasi Anda (misalnya
example.com.conf). -
Edit File Konfigurasi: Masukkan konfigurasi berikut ke dalam file tersebut:
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html/example.com/public # Ganti dengan path yang sesuai <Directory /var/www/html/example.com/public> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>- Ganti
example.comdengan domain Anda dan/var/www/html/example.com/publicdengan path ke direktoripublicaplikasi Laravel Anda.
- Ganti
-
Aktifkan Virtual Host: Aktifkan virtual host dengan perintah:
sudo a2ensite example.com.conf -
Restart Apache: Restart Apache agar perubahan diterapkan:
sudo systemctl restart apache2
Konfigurasi Virtual Host (Nginx):
-
Cari File Konfigurasi Virtual Host: Lokasi file konfigurasi virtual host bervariasi tergantung pada sistem operasi dan konfigurasi server Anda. Biasanya, file ini terletak di
/etc/nginx/sites-available/atau/etc/nginx/conf.d/. -
Buat File Konfigurasi Baru: Buat file konfigurasi virtual host baru untuk aplikasi Anda (misalnya
example.com). -
Edit File Konfigurasi: Masukkan konfigurasi berikut ke dalam file tersebut:
server { listen 80; server_name example.com www.example.com; root /var/www/html/example.com/public; # Ganti dengan path yang sesuai index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; # Ganti dengan versi PHP yang sesuai } location ~ /.ht { deny all; } }- Ganti
example.comdengan domain Anda dan/var/www/html/example.com/publicdengan path ke direktoripublicaplikasi Laravel Anda. - Pastikan
fastcgi_passmengarah ke socket PHP-FPM yang benar.
- Ganti
-
Buat Symlink: Buat symlink dari file konfigurasi di
sites-availablekesites-enabled:sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ -
Restart Nginx: Restart Nginx agar perubahan diterapkan:
sudo systemctl restart nginx
Mengatur Direktori Publik:
Pastikan web server Anda mengarah ke direktori public aplikasi Laravel Anda. Direktori ini berisi file index.php yang merupakan entry point aplikasi.
5. Mengamankan Aplikasi Laravel: Konfigurasi HTTPS dan Keamanan Tambahan
Keamanan adalah aspek penting dalam deployment aplikasi Laravel. Pastikan aplikasi Anda aman dari berbagai ancaman dengan mengkonfigurasi HTTPS dan menerapkan langkah-langkah keamanan tambahan.
Konfigurasi HTTPS (SSL/TLS):
HTTPS mengenkripsi komunikasi antara browser dan server, sehingga melindungi data sensitif seperti password dan informasi pribadi.
-
Dapatkan Sertifikat SSL/TLS: Anda dapat membeli sertifikat SSL/TLS dari Certificate Authority (CA) seperti Let’s Encrypt, Comodo, atau DigiCert. Let’s Encrypt menyediakan sertifikat gratis yang valid dan mudah diperoleh.
-
Instal Sertifikat SSL/TLS: Proses instalasi sertifikat SSL/TLS bervariasi tergantung pada hosting provider dan web server yang Anda gunakan. Biasanya, Anda perlu mengunggah sertifikat dan key ke server dan mengkonfigurasi virtual host untuk menggunakan sertifikat tersebut.
-
Redirect HTTP ke HTTPS: Setelah sertifikat SSL/TLS terinstal, redirect semua permintaan HTTP ke HTTPS. Anda dapat melakukan ini dengan menambahkan kode berikut ke file
.htaccess(Apache) atau konfigurasi virtual host Nginx:.htaccess(Apache):RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Konfigurasi Virtual Host (Nginx):
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }
Langkah-langkah Keamanan Tambahan:
- Gunakan Firewall: Aktifkan firewall untuk melindungi server Anda dari akses yang tidak sah.
- Perbarui Perangkat Lunak Secara Teratur: Pastikan sistem operasi, PHP, dan web server Anda selalu diperbarui dengan patch keamanan terbaru.
- Nonaktifkan Debugging Mode di Produksi: Pastikan
APP_DEBUGdiatur kefalsedi lingkungan produksi untuk mencegah informasi sensitif ditampilkan. - Lindungi Rute Administrasi: Batasi akses ke rute administrasi hanya untuk pengguna yang berwenang.
- Validasi Input Pengguna: Validasi semua input pengguna untuk mencegah serangan SQL injection dan cross-site scripting (XSS).
- Gunakan Middleware untuk Keamanan: Gunakan middleware Laravel untuk melindungi aplikasi Anda dari berbagai ancaman, seperti CSRF (Cross-Site Request Forgery).
6. Optimasi Performa Aplikasi Laravel Setelah Deployment
Setelah aplikasi berhasil di-deploy dan diamankan, langkah terakhir adalah mengoptimalkan performanya agar responsif dan efisien.
Caching:
- Konfigurasi Cache: Laravel mendukung berbagai sistem cache, seperti Redis dan Memcached. Konfigurasikan cache untuk menyimpan data yang sering diakses, seperti hasil query database dan tampilan.
- Gunakan Cache Tampilan: Cache tampilan yang sering digunakan untuk mengurangi beban server.
- Gunakan Opcode Cache: Aktifkan opcode cache seperti OpCache untuk meningkatkan performa PHP.
Optimasi Database:
- Gunakan Index: Pastikan tabel database memiliki index yang tepat untuk mempercepat query.
- Optimalkan Query: Tulis query database yang efisien dan hindari query yang kompleks dan lambat.
- Gunakan Connection Pooling: Pertimbangkan penggunaan connection pooling untuk mengurangi overhead koneksi database.
Optimasi Aset:
- Minifikasi CSS dan JavaScript: Perkecil ukuran file CSS dan JavaScript dengan menggunakan minifier.
- Gunakan CDN (Content Delivery Network): Gunakan CDN untuk menyajikan aset statis seperti gambar, CSS, dan JavaScript dari server yang dekat dengan pengguna.
- Aktifkan Kompresi Gzip: Aktifkan kompresi Gzip pada web server untuk mengurangi ukuran file yang ditransmisikan.
Queue:
- Gunakan Queue untuk Tugas yang Lama: Pindahkan tugas yang memakan waktu lama, seperti pengiriman email dan pemrosesan gambar, ke queue agar tidak menghambat respons aplikasi.
Monitoring:
- Pantau Performa Aplikasi: Gunakan alat monitoring seperti New Relic atau Datadog untuk memantau performa aplikasi dan mengidentifikasi bottleneck.
- Log Error: Periksa log error secara teratur untuk mendeteksi masalah dan memperbaikinya.
Dengan menerapkan langkah-langkah optimasi ini, Anda dapat memastikan aplikasi Laravel Anda berjalan dengan lancar dan memberikan pengalaman pengguna yang optimal.
Selamat! Anda telah berhasil deploy aplikasi Laravel Anda ke server hosting. Dengan mengikuti panduan lengkap ini, Anda dapat membuat aplikasi Anda online dan siap digunakan oleh pengguna di seluruh dunia. Ingatlah untuk selalu memperhatikan keamanan dan performa aplikasi Anda agar tetap optimal. Jangan ragu untuk terus belajar dan menjelajahi fitur-fitur Laravel lainnya untuk mengembangkan aplikasi web yang lebih canggih dan inovatif. Semoga berhasil!



