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/repo
dengan menggunakan perintahmkdir /opt/repo
. - Masuk kedalam direktori
/opt/repo
. - Jalankan perintah
git init --bare laravel.git
1. - Buat sebuah direktori dengan nama
laravel
didalam direktori/var/www
dengan menggunakan perintahmkdir /var/www/laravel
. - Masuk kedalam direktori
laravel.git/hooks
. - Buat sebuah script dengan nama
post-receive
(misal:touch post-receive
). - Tambahkan permission
execute
pada filepost-receive
dengan menggunakan perintahchmod +x post-receive
. -
Isi file
post-receive
dengan 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.conf
dan 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
.