Nafies Luthfi

Life will always feel wonderful if we always think positively.

Cara Deploy Project Laravel dari Github ke VPS Ubuntu Server

Bismillahirrahmanirrahim.

Kita lanjut seputar web server, yaitu cara men-deploy atau menginstall project Laravel dari Github ke VPS. Pada artikel ini, kita akan install project Free-PMO dan membatasi cakupan bahasan sebagai berikut:

  1. Source Project di-clone langsung dari repository Free-PMO di github.
  2. VPS dengan Ubuntu Server 16.04.
  3. Menggunakan LEMP Stack (Nginx, MariaDB 10.2, dan PHP 7).
  4. Database menggunakan MariaDB / MySQL.
  5. Kita mengikuti petunjuk installasi yang ada pada readme project di github.

1. Install LEMP Stack

Baik kita mulai dengan ssh ke VPS.

$ ssh projectuser@35.198.238.82

Kemudian lakukan proses installasi LEMP Stack, yaitu Nginx, MariaDB/MySQL, dan PHP untuk Linux. Untuk menjaga agar posting ini fokus pada cara deploy project Laravel, cara install LEMP Stack bisa teman-teman cek di posting ini).

2. Clone Source Code dari Github

Baik, setelah LEMP Stack terinstall dengan benar, kita cd ke direktori tempat project akan kita deploy/install.

$ pwd
/home/projectuser
$ cd www

Kemudian kita clone source code dari Repository Free-PMO di github.

# Clone repo
$ git clone https://github.com/nafiesl/free-pmo.git

# Pindah ke direktori project
$ cd free-pmo

# Install dependensi
$ composer install

# Buat file .env
$ cp .env.example .env

# Generate APP_KEY
$ php artisan key:generate
Application key [base64:UPcKQ3i4arfBe5...] set successfully.

# Update permission untuk direktori storage
$ sudo chown www-data: -R storage

3. Buat Database dan Config di .env

Sekarang kita membuat database untuk melayani project Free-PMO.

$ mysqladmin -uusernamebaru -p create laravel_free_pmo

Catatan:
Pada potongan perintah -uusernamebaru, usernamebaru adalah username MySQL yang dgunakan untuk database laravel_free_pmo di project ini. Cek referensi.

Setelah itu kita buka file .env untuk input config database project ini. Misalnya kita menggunakan:

  • Nama Database: laravel_free_pmo
  • Username MySQL: homestead
  • Password user MySQL: supersecurepassword
$ vim .env # atau nano .env

# Ubah
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=supersecurepassword

# Menjadi
DB_DATABASE=laravel_free_pmo
DB_USERNAME=usernamebaru
DB_PASSWORD=secret

Simpan file .env kemudian jalankan artisan migrate untuk mengisi database:

$ php artisan migrate

Sip, proses installasi aplikasi web Free-PMO selesai sampai di sini.

4. Serverblock Nginx

Sekarang kita lakukan konfigurasi serverblock nginx agar melayani aplikasi web Free-PMO.

# Duplikat serverblock yang sudah ada
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/free-pmo

# Edit serverblock baru
$ sudo vim /etc/nginx/sites-available/free-pmo

Silakan copy dan paste script serverblock berikut, kemudian sesuaikan dengan kondisi server teman-teman.

server {
        root /home/projectuser/www/free-pmo/public;
        index index.php index.html;
        server_name 35.198.238.82;
        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}

Hal yang harus teman-teman sesuaikan adalah :

  1. root /home/projectuser/www/free-pmo/public;
    Sesuaikan dengan absolute path direktori project di VPS.
  2. server_name 35.198.238.82;
    Disesuaikan dengan IP Address VPS atau domain dari VPS.
  3. fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    Disesuaikan dengan versi PHP di VPS.

Ok, jika sudah, silakan simpan, kemudian aktifkan serverblock.

# Symlink serverblock ke sites-enabled
$ sudo ln -s /etc/nginx/sites-available/free-pmo /etc/nginx/sites-enabled

# Test script serverblock
$ sudo nginx -t

# Reload nginx
$ sudo nginx -s reload

Sampai di sini selesai konfigurasi nginx.

Sekarang kita bisa coba kunjungi IP Address atau domain sesuai konfigurasi nginx teman-teman di atas. Misal: http://35.198.238.82.

Login Free-PMO

Jika sudah tampil halaman login project Free-PMO, artinya proses deploy kita sudah berhasil.

6. (Optional) Formulir Install Free-PMO

Untuk dapat menggunakan Free-PMO, silakan teman-teman kunjungi route /app-install dari IP Address atau domain VPS kita: http://35.198.238.82/app-install

Install Free-PMO

Isi formulir sesuai dengan data agency teman-teman, kemudian klik Install Free-PMO.

Free-PMO Dashboard

Done.

Kesimpulan

Dari proses deployment dan konfigurasi yang agak pajang di atas, kita tarik beberapa kesimpulan :

  1. Proses di atas (langkah 1 s/d 5) berlaku untuk project Laravel secara umum.
  2. Proses di atas berlaku untuk public repository, untuk private repository saya belum coba cara ini.
  3. Jika ada commit baru di repo github Free-PMO (atau project manapun yang kita install), maka kita tinggal menjalankan perintah git pull origin master untuk mendapatkan update terbaru di VPS.
  4. Proses yang sama (langkah 1 s/d 6) dapat dilakukan untuk menginstall aplikasi web Free-PMO di local PC/Laptop yang memiliki OS Ubuntu 16.04 dengan LEMP Stack web server.

Baik demikian pembahasan tentang Cara Deploy Project Laravel dari Github ke VPS Ubuntu Server 16.04. Terima kasih atas waktu teman-teman sudah membaca.

Jika teman-teman ingin mencoba aplikasi Free-PMO, silakan kunjungi demonya:

URL: http://free-pmo.nafies.id/login
Email: pmo_admin@mail.com
Password: secret