Deployer - Deployment tools untuk PHP

alfa6661
- February 12, 2016
0 (0 votes)
Rate :
Cara deploy aplikasi PHP menggunakan deployment tools

Deployment?

Semua aktifitas yang membuat sebuah aplikasi dapat digunakan, untuk aplikasi website secara sederhana bisa kita bilang bagaimana kita mengupload ke hosting dan bisa di akses oleh publik.

Saya pernah bertanya kepada beberapa teman, bagaimana dia melakukan deployment untuk aplikasi PHP yang dia buat. Dan masing-masing dari mereka memiliki jawaban yang berbeda-beda. Ada yang menggunakan software sejenis filezilla, ada yang menggunakan git, dll.

Sebelumnya, saya berdiskusi dengan mereka dan memperkenalkan capistrano. Di tempat kerja, saya menggunakan Ruby dan capistrano untuk proses deployment. Lalu muncul pertanyaan:

Proses deployment yang dilakukan :

  1. ssh user@123.456.789.100
  2. git pull
  3. exit

Mengapa saya harus menggunakan capistrano, sementara 3 langkah diatas bisa dibilang tidak terlalu sulit.

Untuk beberapa kasus, ketika proses deployment, kita memerlukan beberapa proses diluar upload perubahan kode. Misalnya restart webserver, running migration, data seed, dll. Untuk menjalankan proses-proses ini kita mungkin perlu langkah 4,5,6 dst pada proses deployment diatas. Dengan menggunakan deployment tool sejenis capistrano, kita bisa membuat 1 baris kode (cap environment deploy) untuk deployment dengan membuat pengaturan untuk menjalankan proses-proses tersebut.

Pertanyaan selanjutnya, capistrano itu dibuat dengan ruby. bisa digunakan untuk aplikasi PHP? Pada dasarnya capistrano bisa juga digunakan untuk PHP, tetapi kita tetap perlu untuk instalasi ruby.

Deployer

A PHP version of Capistrano.

Alternatif capistrano untuk PHP adalah deployer. Deployer merupakan deployment tool untuk PHP, menyediakan contoh kode untuk beberapa framework PHP populer seperti Laravel, Yii, Cake PHP, dll. Deployer ini juga saya pilih sebagai tools untuk deployment lab-informatika.com yang menggunakan Yii2 Advanced.

Instalasi

instalasi Manual

Download file deployer.phar kemudian jalankan perintah berikut ini di console:

mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep

Composer

Selain instalasi manual, deployer juga menyediakan proses instalasi dengan menggunakan composer

composer require deployer/deployer:^3.0

Source Code

Kita juga bisa menggunakan source code untuk instalasi

git clone https://github.com/deployphp/deployer.git
php ./build

Cara Penggunaan

Buat file deploy.php di root project anda.

Contoh Kode

<?php
require 'recipe/common.php';
set('repository', 'git@domain.com:user/project.git');
env('branch', 'branch_yang_digunakan');
server('server_name', 'domain.com')
    ->user('user')    
    ->stage('environment')
    ->env('deploy_path', '/path/to/project'); 

Selanjutnya untuk menjalankan proses deploy gunakan perintah ini di console (pastikan posisi berada di root project)

dep deploy <environment>

Deployer akan membuat struktur folder seperti ini

/path/to/project
|--releases
|  |--20150513120631
|--shared
|  |--...
|--current -> /your/project/path/releases/20150513120631

Setiap kali melakukan proses deployment, deployer akan membuat folder baru di folder releases. Kemudian akan membuat symlink dari release saat ini dengan nama folder current. folder current inilah yang nantinya akan digunakan sebagai public html. Jadi, silahkan pointing domain anda ke folder current.

Multiple Server

server('production', 'domain.com')
    ->user('user')
    ->password('pass')
    ->env('deploy_path', '/home/www')
    ->stage('production');
server('staging', 'domain.com')
    ->user('user')
    ->password('pass')
    ->env('deploy_path', '/home/www')    
    ->stage('staging');

Task

Pada saat deployment, kita mungkin perlu untuk menjalankan task-task sebelum atau sesudah proses deployment. Contohnya, kita perlu merestart php-fpm setelah proses deloyment selesai. Kita bisa menggunakan kode berikut ini:

task('deploy:done', function () {
    write('Deploy done!');
});
after('deploy', 'deploy:done');

Rollback

Jika terjadi suatu hal yang salah setelah proses deployment, dan kita bermasksud untuk menggunakan relase terakhir dari project. gunakan perintah berikut

dep rollback <environment>

Untuk informasi lebih lengkap silahkan kunjungi website deployer.

Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter

– Eric S. Raymond

Have a better explanation?

If you have comments about this post. Please write your comments below

No comments associated with this article