• Jelajahi

    Copyright © RootSec BOT
    Best Viral Premium Blogger Templates

    Iklan

    cara deploy laravel ke heroku

    AnonSec Team
    April 20, 2022, Rabu, April 20, 2022 WIB Last Updated 2024-03-30T15:02:14Z
    masukkan script iklan disini
    masukkan script iklan disini


    Pernah gak sih kalian berpikir ingin project laravel yang telah kalian buat diupload ke hosting, agar orang orang bisa mengakses website yang anda buat, saya yakin rata rata pasti menginginkan hal tersebut walaupun itu hanya sekedar demo. Kalo kita telusuri sebenarnya banyak platform-platform yang menyediakan cloud gratis untuk tujuan tertentu, seperti Netlify, Vercel, Heroku, Github, Surge Dll.


    Dalam tutorial ini, saya ingin membagikan ilmu tentang bagaimana cara deploy projek laravel ke heroku dengan mudah. Sebelum itu apa sih Heroku ? sebuah cloud platform yang mendukung bahasa pemrorgaman seperti Node.js, PHP, Ruby, Python, Java. Apa sih kelebihannya ? Heroku dapat terintegrasi dengan database, serta dapat terhubung langsung dengan Github, jadi ketika projek telah dipush ke github, heroku dapat langsung mendeploynya, kita hanya setting variable environment nya saja. mudah kan ?

    Dari sekian banyaknya cloud platform, kenapa menggunakan Heroku ? untuk laravel atau projek-projek lainnya yang terintegrasi dengan database saya sarankan untuk menggunakan Heroku, karena disana terdapat Addon tambahan yaitu paket tambahan pihak ke 3 yang menyediakan resource yang kita butuhkan, salah satunya adalah database, untuk MySQL terdapat JawsDB MySql, ClearDB Mysql, Draxir Dll, dan untuk PostgreSQL sudah disediakan oleh heroku. Berbeda dengan platform lainnya yang rata-rata hanya bisa deploy website statis, atau bisa juga menggunakan dengan vue js.

    Untuk menggunakan addon tersebut ada yang free dan ada pula yang berbayar, untungnya PostgreSQL dan MySQL merupakan addon gratis, tetapi untuk menggunakan database MySQL kita harus memverifikasikan diri terlebih dahulu, dengan cara menginputkan kartu kredit ke heroku, kalo saran saya gunakan saja e-card Jenius seperti yang pernah saya lakukan, jadi tidak masalah dan juga aman tidak akan terpotong otomatis saldonya. Berbeda dengan Heroku PostgreSQL bisa langsung digunakan tanpa verifikasi.

    Kita bisa menggunakan 2 cara, yaitu deploy lalu setup langsung pada website, atau menggunakan Heroku CLI, ditutorial kali ini akan mencangkup ke 2 nya agar lebih mengerti tentang heroku. Sebelum itu jangan lupa untuk Login, jika belum punya akunnya silahkan register.

    Bahan-bahan yang diperlukan (Heroku CLI)

    1. Daftar akun Heroku di website https://www.heroku.com/
    2. Heroku CLI (download disini)
    3. Git (download disini)
    4. Tentunya sudah ada Projek Laravel (saya asumsikan pasti anda sudah install composer)

    Bahan-bahan yang diperlukan (Deploy langsung melalui Heroku Website)

    1. Daftar akun Heroku di website https://www.heroku.com/
    2. Persiapan buka https://dashboard.heroku.com/
    3. Git (download disini)
    4. Tentunya sudah ada projek Laravel 
    5. Projek Laravel telah dipush ke github

    Deploy Laravel Menggunakan Heroku CLI

    Setelah anda menyiapkan bahan bahan diatas, anda buka git bash / terminal / CMD / vscode terminal / apapkun pokoknya untuk menjalankan command.

    Initialization git

    Masuk ke folder projek laravelnya, lalu lakukan commit git untuk tracking projek nya, jika sebelumnya sudah dilakukan, lewati langkah ini

    $ git init
    $ git add .
    $ git commit -m "your commit" 

    Login ke akun heroku cli

    Jalankan command beriku:

    $ heroku login

    Kemudian tekan apa saja di keyboard anda kecuali "q" untuk membatalkannya, lalu akan diarahkan ke browser defaultnya, silahkan login ke akun heroku nya, jika sudah "Logged In" brrti berhasil, dan masuk lagi ke terminal

    Login heroku cli, Deploy laravel heroku cli mysql

    Membuat procfile heroku

    Kemudian ketik command:

    $ echo web: vendor/bin/heroku-php-apache2 public/ > Procfile

    Silahkan ganti sesuai dengan server nya, contoh diatas menggunakan apache. Karena ada pembaharuan baru, yaitu penambahan file Procfile yang tadi kita jalankan, maka anda commit kembali gitnya.

    $ git add .
    $ git commit "Procfile addedd!"

    Membuat aplikasi baru dan deploy di heroku cli

    Pada bagian ini anda membuat aplikasi baru di heroku, untuk menyimpan projek laravel kita ke aplikasi heroku tesebut, jadi ketika anda membuat website heroku maka anda dapat melihat, dan mengatur kembali pengaturan-pengaturan yang pada aplikasi tersebut (ganti myapprestfull sesuai dengan projek anda).

    $ heroku apps:create myapprestfull

    Membuat aplikasi baru di heroku, Deploy laravel heroku cli mysql

    Buka https://dashboard.heroku.com/ maka akan ditambahkan otomatis applikasi yang telah kita buat di heroku cli
    Membuat aplikasi baru di heroku, Deploy laravel heroku cli mysql

    ketika cek remote git nya, sudah ada remote bernama "heroku" untuk push projek nya ke heroku

    $ git remote -v
    heroku  https://git.heroku.com/myapprestfull.git (fetch)
    heroku  https://git.heroku.com/myapprestfull.git (push)
    origin  https://github.com/koleksibot/Simple-Restfull-Api-Ajax.git (fetch)
    origin  https://github.com/koleksibot/Simple-Restfull-Api-Ajax.git (push)

    kemudian push project nya dengan git menggunakan remote yang mengarahkan ke heroku app

    $ git push heroku master

    responnya:

    $ git push heroku master
    Enumerating objects: 217, done.
    Counting objects: 100% (217/217), done.
    Delta compression using up to 8 threads
    Compressing objects: 100% (192/192), done.
    Writing objects: 100% (217/217), 540.24 KiB | 2.81 MiB/s, done.
    Total 217 (delta 48), reused 0 (delta 0)
    remote: Compressing source files... done.
    remote: Building source:
    remote: 
    remote:  !     Warning: Multiple default buildpacks reported the ability to hande this app. The first buildpack in the list below will be used.
    remote:                         Detected buildpacks: PHP,Node.js
    remote:                         See https://devcenter.heroku.com/articles/buildpcks#buildpack-detect-order
    remote: -----> PHP app detected
    remote: -----> Bootstrapping...
    remote: -----> Installing platform packages...
    remote:        - php (7.4.11)
    remote:        - ext-mbstring (bundled with php)
    remote:        - apache (2.4.46)
    remote:        - nginx (1.18.0)
    remote: -----> Installing dependencies...
    remote:        Composer version 1.10.13 2020-09-09 11:46:34
    remote:        Loading composer repositories with package information
    remote:        Installing dependencies from lock file
    remote:        Package operations: 67 installs, 0 updates, 0 removals
    remote:          - Installing doctrine/inflector (2.0.3): Downloading (connectinDownloading (100%)
    remote:          - Installing doctrine/lexer (1.2.1): Downloading (connecting...                                                      Downloading (0%)
                                                          Downloading (100%)
    remote:          - Installing dragonmantank/cron-expression (v3.0.2): DownloadinDownloading (100%)
    remote:          - Installing voku/portable-ascii (1.5.3): Downloading (connectiDownloading (100%)
    remote:          - Installing symfony/polyfill-php80 (v1.18.1): Downloading (conDownloading (100%)
    remote:          - Installing symfony/polyfill-mbstring (v1.18.1): Downloading (Downloading (100%)
    remote:          - Installing symfony/polyfill-ctype (v1.18.1): Downloading (conDownloading (100%)
    remote:          - Installing phpoption/phpoption (1.7.5): Downloading (connectiDownloading (100%)
    remote:          - Installing graham-campbell/result-type (v1.0.1): Downloading Downloading (100%)
    remote:          - Installing vlucas/phpdotenv (v5.2.0): Downloading (connectingDownloading (100%)
    remote:          - Installing symfony/css-selector (v5.1.7): Downloading (connecDownloading (100%)
    remote:          - Installing tijsverkoyen/css-to-inline-styles (2.2.3): DownloaDownloading (100%)
    remote:          - Installing symfony/var-dumper (v5.1.7): Downloading (connectiDownloading (100%)
    remote:          - Installing symfony/deprecation-contracts (v2.2.0): DownloadinDownloading (100%)
    remote:          - Installing symfony/routing (v5.1.7): Downloading (connecting.Downloading (100%)
    remote:          - Installing symfony/process (v5.1.7): Downloading (connecting.Downloading (100%)
    remote:          - Installing symfony/polyfill-php72 (v1.18.1): Downloading (conDownloading (100%)
    remote:          - Installing paragonie/random_compat (v9.99.100): Downloading (Downloading (100%)
    remote:          - Installing symfony/polyfill-php70 (v1.18.1): Downloading (conDownloading (100%)
    remote:          - Installing symfony/polyfill-intl-normalizer (v1.18.1): DownloDownloading (100%)
    remote:          - Installing symfony/polyfill-intl-idn (v1.18.1): Downloading (Downloading (100%)
    remote:          - Installing symfony/mime (v5.1.7): Downloading (100%)
    remote:          - Installing symfony/polyfill-php73 (v1.18.1): Downloading (conDownloading (100%)
    remote:          - Installing symfony/http-foundation (v5.1.7): Downloading (conDownloading (100%)
    remote:          - Installing symfony/http-client-contracts (v2.3.1): DownloadinDownloading (100%)
    remote:          - Installing psr/event-dispatcher (1.0.0): Downloading (connectDownloading (100%)
    remote:          - Installing symfony/event-dispatcher-contracts (v2.2.0): DownlDownloading (100%)
    remote:          - Installing symfony/event-dispatcher (v5.1.7): Downloading (coDownloading (100%)
    remote:          - Installing psr/log (1.1.3): Downloading (100%)
    remote:          - Installing symfony/error-handler (v5.1.7): Downloading (conneDownloading (100%)
    remote:          - Installing symfony/http-kernel (v5.1.7): Downloading (connectDownloading (100%)
    remote:          - Installing symfony/finder (v5.1.7): Downloading (connecting..Downloading (100%)
    remote:          - Installing symfony/polyfill-intl-grapheme (v1.18.1): DownloadDownloading (100%)
    remote:          - Installing symfony/string (v5.1.7): Downloading (connecting..Downloading (100%)
    remote:          - Installing psr/container (1.0.0): Downloading (100%)
    remote:          - Installing symfony/service-contracts (v2.2.0): Downloading (cDownloading (100%)
    remote:          - Installing symfony/console (v5.1.7): Downloading (connecting.Downloading (100%)
    remote:          - Installing symfony/polyfill-iconv (v1.18.1): Downloading (conDownloading (100%)
    remote:          - Installing egulias/email-validator (2.1.22): Downloading (conDownloading (100%)
    remote:          - Installing swiftmailer/swiftmailer (v6.2.3): Downloading (conDownloading (100%)
    remote:          - Installing ramsey/collection (1.1.1): Downloading (connectingDownloading (100%)
    remote:          - Installing brick/math (0.9.1): Downloading (100%)
    remote:          - Installing ramsey/uuid (4.1.1): Downloading (100%)
    remote:          - Installing psr/simple-cache (1.0.1): Downloading (connecting.Downloading (100%)
    remote:          - Installing opis/closure (3.6.0): Downloading (100%)
    remote:          - Installing symfony/translation-contracts (v2.3.0): DownloadinDownloading (100%)
    remote:          - Installing symfony/translation (v5.1.7): Downloading (connectDownloading (100%)
    remote:          - Installing nesbot/carbon (2.41.4): Downloading (connecting...                                                      Downloading (100%)
    
    remote:          - Installing monolog/monolog (2.1.1): Downloading (connecting..Downloading (100%)
    remote:          - Installing league/mime-type-detection (1.5.1): Downloading (cDownloading (100%)
    remote:          - Installing league/flysystem (1.1.3): Downloading (connecting.Downloading (100%)
    remote:          - Installing league/commonmark (1.5.6): Downloading (connectingDownloading (100%)
    remote:          - Installing laravel/framework (v8.11.2): Downloading (connectiDownloading (100%)
    remote:          - Installing fideloper/proxy (4.4.0): Downloading (connecting..Downloading (100%)
    remote:          - Installing asm89/stack-cors (v2.0.1): Downloading (connectingDownloading (100%)
    remote:          - Installing fruitcake/laravel-cors (v2.0.2): Downloading (connDownloading (100%)
    remote:          - Installing psr/http-message (1.0.1): Downloading (connecting.Downloading (100%)
    remote:          - Installing psr/http-client (1.0.1): Downloading (connecting..Downloading (100%)
    remote:          - Installing ralouphie/getallheaders (3.0.3): Downloading (connDownloading (100%)
    remote:          - Installing guzzlehttp/psr7 (1.7.0): Downloading (connecting..Downloading (100%)
    remote:          - Installing guzzlehttp/promises (1.4.0): Downloading (connectiDownloading (100%)
    remote:          - Installing guzzlehttp/guzzle (7.2.0): Downloading (connectingDownloading (100%)
    remote:          - Installing nikic/php-parser (v4.10.2): Downloading (connectinDownloading (100%)
    remote:          - Installing dnoegel/php-xdg-base-dir (v0.1.1): Downloading (coDownloading (100%)
    remote:          - Installing psy/psysh (v0.10.4): Downloading (100%)
    remote:          - Installing laravel/tinker (v2.4.2): Downloading (connecting..Downloading (100%)
    remote:          - Installing yajra/laravel-datatables-oracle (v9.11.1): DownloaDownloading (100%)
    remote:        Generating optimized autoload files
    remote:        > Illuminate\Foundation\ComposerScripts::postAutoloadDump
    remote:        > @php artisan package:discover --ansi
    remote:        Discovered Package: fideloper/proxy
    remote:        Discovered Package: fruitcake/laravel-cors
    remote:        Discovered Package: laravel/tinker
    remote:        Discovered Package: nesbot/carbon
    remote:        Discovered Package: yajra/laravel-datatables-oracle
    remote:        Package manifest generated successfully.
    remote: -----> Preparing runtime environment...
    remote:        NOTICE: No Procfile, using 'web: heroku-php-apache2'.
    remote: -----> Checking for additional extensions to install...
    remote: -----> Discovering process types
    remote:        Procfile declares types -> web
    remote:
    remote: -----> Compressing...
    remote:        Done: 18.1M
    remote: -----> Launching...
    remote:        Released v3
    remote:        https://myapprestfull.herokuapp.com/ deployed to Heroku
    remote:
    remote: Verifying deploy... done.
    To https://git.heroku.com/myapprestfull.git
     * [new branch]      master -> master

    yeay projek laravel telah di deploy, lalu buka aplikasinya seperti https://myapprestfull.herokuapp.com/ atau ketik perintah $ heroku open 

    Konfigurasi laravel heroku

    Kita perlu definisikan variable environment laravel pada heroku, caranya tinggal samakan saja key yang dibutuhkan pada file .env di heroku cli, seperti pada command berikut:

    $ heroku config:add APP_DEBUG=true
    $ heroku config:add APP_KEY=base64:tbdxNDp4Y/YYtGetBH3g3YQfGWB6myJJbAX1XH9dOh4=
    $ heroku config:add APP_NAME=RestfullApi
    $ heroku config:add APP_ENV=production
    $ heroku config:add APP_URL=https://myapprestfull.herokuapp.com
    ....
    
    sesuai kebutuhan. Lalu tinggal konfigurasi database MySQL datau PostgreSQL di heroku caranya sama seperti diatas hanya saja pertama kita perlu install addon database yang akan kita pakai, contohnya ketika menggunakan PostgreeSQL  

    $ heroku addons:create heroku-postgresql:hobby-dev

    dan ini kalo menggunakan ClearDB MySQL

    $ heroku addons:create cleardb:ignite

    Seperti yang saya katakan diawal tutorial bahwa MySQL ini gratis bisa dipakai kapan saja, tetapi syaratnya harus verifikasi dengan memasukan kartu kredit pada heroku, lalu pilih salah satu databasenya. menurut saya mau itu postgree / mysql untuk projek seperti laravel framework tidak masalah karena, framework didesign agar flexible terhadap tool2 yang digunakan termasuk database ini, kecuali projek native selain laravel yang mungkin harus menggunakan MySQL.

    Sama seperti sebelumnya setting environment nya di heroku, sebelumnya lihat dulu konfigurasi database yang telah dibuat oleh heroku, (disini sy menggunakan postgreSQL)

    $ heroku pg:credentials:url
    Connection information for default credential.
    Connection info string:
       "dbname=db6fld90ms7glb host=ec2-52-72-34-184.compute-1.amazonaws.com port=5432 user=hivbrlmsavxspi password=a06dfc454fd76dcca947a40c7c9cba847b5880afea6f0581e12352b189ef3e3a sslmode=require"
    Connection URL:
       postgres://hivbrlmsavxspi:aec2-52-72-34-184.compute-1.amazonaws.com:5432/db6fld90ms7glb 

    sesuaikan environmentnya 

    $ heroku config:add DB_CONNECTION=pgsql
    $ heroku config:add DB_HOST=ec2-52-72-34-184.compute-1.amazonaws.com
    $ heroku config:add DB_PORT=5432
    $ heroku config:add DB_DATABASE=db6fld90ms7glb
    $ heroku config:add DB_USERNAME=hivbrlmsavxspi
    $ heroku config:add DB_PASSWORD=a06dfc454fd76dcca947a40c7c9cba847b5880afea6f0581e12352b189ef3e3a

    Akhirnya selesai konfigurasi variable environmentnya, sama juga seperti saat awal install laravel di local pasti ada hal yang dilakukan dengan perintah php artisan, maka ketika kita telah menambahkan konfigurasi database maka hal yang harus dilakukan adalah migrate schema database dan seedernya

    $ heroku run php artisan migrate
    $ heroku run php artisan db:seed

    atau ingin reset database dan mengulang migrate seeder lagi 

    $ heroku run php artisan migrate:fresh --seed

    Jika terdapat masalah mengenai migrate dan faker, alternative nya kirim database lokal ke database postgreSQL yang ada diheroku

    jika terdapat file uploaded di projek anda, sehingga harus membuat linking ke /public anda bisa saja menggunakan perintah

    $ heroku run php artisan storage:link

    dst...

    dan selesai silahkan buka linknya https://myapprestfull.herokuapp.com/ atau ketik perintah $ heroku open 

    Konfigurasi laravel variable environment, Deploy laravel heroku cli mysql
    kalo ingin mengetahui lebih banyak printah cli https://devcenter.heroku.com/articles/git dan kalo anda ingin masuk ke aplikasi heroku yang sudah ada ketik

    $ heroku git:remote -a myapprestfull
    set git remote heroku to https://git.heroku.com/myapprestfull.git

    Deploy Laravel Melalui Heroku Dashboard Langsung

    Pastikan anda telah menyiapkan bahan bahan yang telah disebutkan sebelumnya, yaitu projek harus sudah dicommit, dan dipush ke github, buka dashboard heroku dashboard.heroku.com 




    Masuk ke monu "Deploy" pilih github kemudian cari repository project di github yang akan dihubungkan dengan heroku, lalu klik "Connect"
    Deploy laravel heroku mysql

    Selanjutnya anda klik deploy branch nya sesuai yang diinginkan

    Deploy branch laravel heroku mysql

    Pastikan hasilnya seperti berikut

    Deploy branch laravel heroku mysql

    Konfigurasi laravel heroku

    Sama seperti pada heroku cli, Kita perlu definisikan variable environment laravel pada heroku, bedanya kita akan menambahkannya di dashboard heroku, tinggal samakan saja key yang dibutuhkan pada file .env laravel, caranya masuk ke tab "Settings", pada Config Vars klik tombol "Reveal Config Vars", samakan seperti yang ada pada .env sesuaikan kebutuhan saja.

    Konfigurasi laravel, Deploy heroku mysql


    Lalu tinggal konfigurasi database MySQL atau PostgreSQL di heroku caranya sama seperti diatas hanya saja pertama kita perlu install addon database yang akan kita pakai, kali ini saya akan mencoba mengguanakan ClearDB MySQL.


    Selain DlearDB anda bisa menggunakan JawsDB MySQL, diantara addon2 ini terdapat kekurangan2 nya, jadi sebisa mungkin memilih addon yang minim dengan kekurangannya, atau jika terdapat bug pada addon yang digunakan saran saja ganti saja sebagai alternativenya. Selanjutnya klik pada tab "Resources" search nama addon nya 


    Konfigurasi laravel, Deploy heroku mysql

    Setelah telah ditambahkan, akan ada addon baru yaitu ClearDB MySQL, lalu kembali lagi ke tab "Settings" dan ke "Config Vars" disitu terdapat database URL yang akan kita pakai untuk mengkonfigurasikan variabel environment db laravelnya.

    Konfigurasi laravel, Deploy heroku mysql

    Terkhir run console untuk migrate datanya sama seperti pada heroku cli

    Konfigurasi laravel, Deploy heroku mysql

    Muncul tampilan seperti ini

    heroku console, Deploy heroku mysql

    Lalu ketik command berikut, *hilangkan kata heroku run, karena sudah ada di consolenya:
    $ heroku run php artisan migrate
    $ heroku run php artisan db:seed
    Tunggu prosesnya, dan selesai, silahkan jalankan applikasinya, klik button "Open app" 

    Deploy heroku mysql

    cara membuat database di heroku
    cara deploy laravel di heroku
    heroku adalah 
    cara mengonlinekan website gratis
    hosting gratis laravel
    cara deploy laravel ke heroku
    cloud platform gratis
    cara upload projek laravel ke heroku cli
    heroku larvel mysql
    laravel crud heroku
    cara deploy php ke heroku
    deploy existing laravel app in heroku 
    heroku cleardb mysql 
    heroku jaws mysql 
    heroku laravel procfile
    Komentar

    Tampilkan

    Terkini

    Tutorial

    +