Cara Deploy Laravel di Google App Engine

Bagi anda yang sudah terbiasa menggunakan layanan shared hosting, VPS, kini saatnya beralih ke layanan Google Cloud Platform (GCP), dengan menggunakan layanan Google App Engine yang disediakan GCP anda tidak perlu susah payah melakukan konfigurasi server, install dependency, konfigurasi database dll, semua sudah dilakukan otomatis oleh GCP, anda cukup melakukan deploy dengan satu perintah.

Sebelum memulai jika anda masih belum paham sebaiknya anda berkenalan dengan Google Cloud Platform dengan membaca artikel ini.

Berikut ini beberapa hal yang harus anda siapkan:

  • Pastikan anda sudah terdaftar dan mengaktifkan layanan GCP dengan akun gmail anda
  • Anda memiliki akun penagihan yang aktif, atau memiliki kredit percobaan Google Cloud
  • Anda telah menginstall Google Cloud SDK pada pc/laptop anda, tutorial resmi dari Google bisa anda baca disini

Membuat project GCP

gambar dropdown pilihan project google cloud platform
Tahap memilih atau membuat project baru Google Cloud Platform
  • Klik Project Baru
Gambar link untuk membuat project baru di Google Cloud Platform
Link untuk membuat project baru
  • Setelah project berhasil dibuat, klik icon menu disisi kiri App Engine pilih Dashboard
Gambar beralih ke App Engine
Beralih ke Dashboard App Engine
  • Klik tombol buat aplikasi
Tombol untuk membuat aplikasi baru App Engine
Tombol untuk membuat aplikasi App Engine
  • Pilih zona regional, untuk Jakarta pilih asia-southeast2 kemudian klik tombol Buat aplikasi
Gambar pilihan zona App Engine
Pilihan zona App Engine
  • Pilih PHP dan Fleksibel
Gambar Pengaturan bahasa pemrogrmaan dan environment App Engine
Pengaturan bahasa pemrogrmaan dan environment App Engine
  • Jika semua tahapan sudah selesai anda akan melihat tampilan seperti dibawah ini
Gambar Tampilan setelah App Engine berhasil dibuat
Tampilan setelah App Engine berhasil dibuat

Deploy Laravel di Google App Engine

Pada tahap ini saya tidak menjelaskan aplikasi Laravel seperti apa, saya anggap anda sudah memiliki aplikasi Laravel yang siap deploy dan Google Cloud SDK yang telah terinstall pada pc/laptop.

  • Buat file app.yaml pada root path project, file app.yaml ini adalah file konfigurasi yang digunakan Google App Engine, bisa dibilang file app.yaml adalah pengganti .env pada Laravel
runtime: php  # bahasa yang digunakan
env: flex     # app engine menggunakan flexible environment
runtime_config:
 document_root: public # letak index.php

env_variables:
 APP_NAME: Cimory
 APP_ENV: local   # atau production
 APP_KEY: base64:2wt0tYznT6OodkSPds2Tq8VvjUwJaI/ZhGgnzzlDYaU=
 APP_DEBUG: true # atau false
 LOG_CHANNEL: stack

 BROADCAST_DRIVER: log
 CACHE_DRIVER: file
 QUEUE_CONNECTION: sync
 SESSION_DRIVER: cookie
 SESSION_LIFETIME: 120
 APP_LOG: daily
 APP_TIMEZONE: "Asia/Jakarta"

 DB_CONNECTION: mysql
 DB_HOST: 127.0.0.1
 DB_PORT: 3306
 DB_DATABASE: xxx
 DB_USERNAME: xxx
 DB_PASSWORD: xxx
 DB_SOCKET: "/cloudsql/xxx:asia-southeast2:xxx"
 QUEUE_DRIVER: database
 MAIL_DRIVER: smtp
 MAIL_HOST: smtp.gmail.com
 MAIL_PORT: 465
 MAIL_USERNAME:
 MAIL_PASSWORD:
 LOG_DELETE:  true

 GOOGLE_VISION_PROJECT_ID : xxx

#dibutuhkan oleh flex environment
beta_settings:
   cloud_sql_instances: xxx:asia-southeast2:xxx
  • Baris 1-4 konfigurasi memberitahukan Google App Engine bahasa yang digunakan, environment, dan letak file utama
  • Baris 6-37 adalah konfigurasi yang diambil dari .env
  • Baris 24-27 adalah konfigurasi database MySQL yang nanti akan kita setup

Sampai sini cukup simpan file app.yaml, kita akan beralih ke bagian lain terlebih dahulu yaitu membuat database mysql pada Cloud SQL.

Membuat database di Cloud SQL

  • Pada console Google Cloud klik menu kemudian pilih SQL kemudian klik Buat Instance
Menu dan tombol untuk membuat cloud sql
Menu SQL dan tombol BUAT INSTANCE untuk membuat Cloud SQL
  • Kemudian akan tampil pilihan database yang akan digunakan, pilih MySQL
tampilan pilihan MySQL
Tampilan pilihan MySQL
  • Isi nama Instance Cloud SQL, password root, zona, kemudia klik tombol Buat
pengaturan untuk mengisi nama, password root dan zona cloud sql
Pengaturan nama Instance, password dan zona Cloud SQL
  • Tunggu hingga proses selesai, anda akan melihat centrang hijau disisi nama Instance, copy atau catat nama koneksi anda, selanjutnya adalah membuat database klik Basis Data pada sub menu disisi kiri
status cloud sql yang telah aktif
Status cloud SQL yang teah aktif
  • Klik tombol Buat Database, isi nama database kemudian klik tombol BUAT tunggu hingga muncul notifikasi Database berhasil dibuat
Pembuatan database cloud sql
Pembuatan database cloud sql

Setelah database berhasil dibuat silahkan ubah kembali file app.yaml anda, khususnya pada bagian database.

  • Baris 24 isi dengan nama database
  • Baris 25 isi dengan root
  • Baris 26 isi dengan password root yang telah dibuat
  • Baris 27 isi dengan “cloudsql/namakoneksi:asia-southeast2:namakoneksi” dimana nama koneksi ini otomatis didapatkan ketika membuat Instance SQL
  • Baris 36 isi dengan project id
  • Baris 40 isi dengan nama koneksi juga

Menambahkan Modul PHP

Aplikasi Laravel saya telah memiliki modul Unisharp File Manager. Unisharp membutuhkan modul php exif dan ini menimbulkan error pada saat deploy karena modul tersebut belum aktif atau tersedia pada App Engine.

Untuk mengatasinya saya tambahkan requirement modul tersebut pada file composer.json.

"require": {
        "php": "^7.1.3",
        "ext-exif":"*",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.8.*",
        "laravel/tinker": "^1.0",
        "unisharp/laravel-filemanager": "~1.8"
    },

Lihat baris 3 pada file composer.json tersebut saya menambahkan ext-exif sebelum unisharp/laravel-filemanager.

Deploy Laravel ke Google App Engine

Tahapa terakhir dari proses ini adalah mendeploy aplikasi anda ke Google App Engine.

  • Buka terminal kemudian masuk ke direktori project Laravel anda, pastikan kembali anda telah membuat file app.yaml dengan konfigurasi yang benar
  • Login dengan perintah gcloud init, kemudian akan tampil jendela browser login dengan akun gmail anda
$ gcloud init
  • Setelah perintah gcloud init anda akan diminta konfirmasi untuk memilih project, silahkan pilih project yang telah anda buat
  • Mulai deploy aplikasi dengan perintah gcloud app deploy
$ gcloud app deploy
  • Akan muncul konfirmasi ulang target project untuk deploy, dan menariknya setiap deploy otomatis aplikasi anda sudah memiliki domain yg dilengkapi ssl keren kan untuk uji coba atau prototyping ke client sebelum menggunakan domain asli
Gambar Konfirmasi deploy aplikasi ke app engine, sudah disediakan target url dengan domain dan ssl
Konfirmasi deploy aplikasi ke app engine, sudah disediakan target url dengan domain dan ssl
  • Jika semua proses berjalan dengan lancar hasilnya akan seperti ini
Tampilan sukses deploy laravel ke app engine
Tampilan sukses deploy laravel ke app engine

Import Database

Selamat kini aplikasi anda telah dipublikasikan, tapi database MySQL yang sudah anda buat pada cloud SQL masih kosong, bagaimana cara import dari dump file SQL yang telah anda export dari localhost?.

Tutorial import ke cloud SQL akan saya bahas pada artikel lain dilain waktu.

Kesimpulan

Laravel adalah framework modern yang berkembang pesat dan memiliki banyak peminat, oleh karena itu menggunakan Google App Engine untuk aplikasi Laravel anda adalah pilihan yang tepat untuk performa yang lebih baik.

Jika suatu saat aplikasi anda berkembang dan membutuhkan resource lebih tinggi, anda dapat meningkatkannya dengan mudah karena Google App Engine bersifat skalabel.

This Post Has One Comment

Tinggalkan Balasan