Deployment Aplikasi Laravel Menggunakan Git (Linux)
17 Mar 2016
Git merupakan salah satu tools yang digunakan sebagai source code version control system (vcs) dengan tujuan untuk menyimpan riwayat perubahan pada source code yang kita buat. Selain digunakan untuk menyimpan riwayat perubahan, ternyata git juga dapat digunakan untuk mempermudah proses deployment aplikasi web berbasis Laravel yang kita buat.
Git Hooks
Git Hooks adalah kumpulan script yang secara otomatis akan dieksekusi pada saat terjadi event tertentu. Berdasarkan dokumentasi resmi pada website git-scm.com, terdapat dua jenis hooks yang disediakan oleh git yaitu client hooks dan server hooks. Client hooks adalah hooks yang ditrigger di local computer, sedangkan Server hooks merupakan hooks yang ditrigger di remote server.
Untuk keperluan deployment aplikasi Laravel kita akan menggunakan salah satu server hooks yaitu post-receive. post-receive hook merupakan hook yang ditrigger pada saat git selesai menjalankan proses update setelah kita melakukan git push ke remote server seperti misalnya git push origin master. Dengan menggunakan hook ini, kita akan membuat sebuah script sederhana yang nantinya akan kita gunakan untuk menjalankan proses deployement aplikasi web yang kita buat.
Langkah - Langkah
- SSH ke remote server
- Install git
- Ubuntu:
sudo apt-get instal git - Centos:
yum isntall git(sebagai Root)
- Ubuntu:
- Install Composer.
- Buat direktori
/opt/repodengan menggunakan perintahmkdir /opt/repo. - Masuk kedalam direktori
/opt/repo. - Jalankan perintah
git init --bare laravel.git1. - Buat sebuah direktori dengan nama
laraveldidalam direktori/var/wwwdengan menggunakan perintahmkdir /var/www/laravel. - Masuk kedalam direktori
laravel.git/hooks. - Buat sebuah script dengan nama
post-receive(misal:touch post-receive). - Tambahkan permission
executepada filepost-receivedengan menggunakan perintahchmod +x post-receive. -
Isi file
post-receivedengan script dibawah ini2:#! /bin/sh printf 'Checking out laravel repository into /var/www/ \n' git --work-tree=/var/www/laravel --git-dir=/opt/repo/laravel.git checkout -f printf 'Running composer install \n' cd /var/www/laravel composer install printf 'Changing directory permission \n' chown -R apache:apache /var/www/laravel printf 'Deployment success \n' -
Tambahkan konfigurasi virtual host pada apache dengan megubah file
/etc/httpd/conf/httpd.confdan masukkan konfigurasi berikut ini dibagian paling bawah filehttpd.conf:<VirtualHost *:80> ServerAdmin contact@alfath.co.id DocumentRoot /var/www/laravel/public ServerName localhost ErrorLog /var/log/laravel.log <Directory /var/www/laravel/public> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> - Tambahkan remote location baru di local repository dengan menggunakan perintah
git remote add live ssh://git@server-deployment.tld/opt/repo/laravel.git - Untuk melakukan deployment aplikasi laravel ke server deployment, kita cukup menggunakan perintah
git push live master.
Catatan
Untuk alasan keamanan, secara default Laravel mengikutsertakan file .env kedalam .gitignore dan hal ini membuat file .env tidak tercatat di riwayat Git. Oleh karena itu, pada saat deployment pertama kali dengan menggunakan git push live master, kita perlu secara manual menambahkan file .env di dalam folder /var/www/laravel.