Cara Upload atau Deploy Project Laravel ke Hosting Serv00

Jika Anda memiliki project Laravel dan ingin menguploadnya ke hosting, menurut saya Serv00 adalah pilihan yang tepat dibanding hosting lain karena banyak fitur yang tersedia secara gratis dan tanpa iklan. Serv00 mendukung koneksi SSH, sehingga Anda bisa melakukan update komponen web dengan mudah. Selain itu, Serv00 juga memiliki server email yang bisa digunakan untuk mencoba fitur email.

Tampilan halaman Serv00
Pada artikel ini, saya akan memberikan langkah-langkah dalam mengupload project Laravel ke Serv00. Tetapi sebelum memulai, pastikan Anda sudah mendownload dan menginstall program berikut:

Jika Anda sudah mendownload dan menginstall program diatas, langung saja masuk ke langkah-langkah upload project Laravel.
  1. Login ke Serv00. Jika Anda belum memiliki akun Serv00, klik Register, klik Create account dan isi data-data yang ada.
  2. Buka halaman WWW websites. Biasanya domain website sudah dibuat otomatis setelah membuat akun. Jika Anda ingin membuat domain website baru, klik tab Add new website. Masukkan nama domain dengan format <Nama subdomain tanpa spasi>.<USERNAME>.serv00.net, lalu klik Add.
    Form Tambah Domain
    Setelah domain website berhasil dibuat, silahkan Anda coba membuka website tersebut. Jika berhasil terbuka, maka tampilannya adalah sebagai berikut.
    Serv00 index.html
  3. Klik tab Manage SSL certificates. Pada daftar seperti gambar di bawah biasanya sudah ada dua alamat IP, satu untuk website dan satu lagi untuk Email.
    Daftar Alamat IP
    Untuk mencari tahu alamat IP yang tepat, buka halaman E-mail dan perhatikan pada Outgoing IP.
    Halaman E-mail
    Jadi, dari kedua gambar di atas menunjukkan 213.189.54.126 adalah alamat IP Email, berarti 31.186.83.254 adalah alamat IP website. Kembali ke halaman sebelumnya, lalu klik Manage pada alamat IP website.
  4. Klik tab Add certificate, pilih Generate Let's Encrypt certificate pada kolom Type. Pada kolom Domain, pilih domain yang akan digunakan dan klik Add.
  5. Kembali ke WWW websites. Klik Manage pada domain yang akan digunakan dan klik Details. Atur GZIP compression, Allow PHP eval() function, dan Allow PHP exec() function menjadi On. Jika Anda menyalakan Force SSL, pastikan Anda sudah membuat sertifikat SSL pada domain yang akan digunakan.
    Domain Details
    Pada kolom Open Basedir directories, ganti menjadi /usr/home/<USER NAME>/domains/<Domain tujuan> dan klik Save.
  6. Buka halaman MySQL pada dashboard Serv00, lalu klik tab Add database. Isikan nama database, lalu pilih New user. Isikan username dan password database, lalu klik Add. Jika Anda menggunakan Random password, catat password yang dibuat untuk digunakan pada konfigurasi Laravel.
    Form Tambah Database
  7. Silakan buka folder yang berisi project Laravel yang akan Anda upload, lalu pilih semua file dan folder kecuali .git, .fleet, .idea, .vscode, dan node_modules. Compress file dan folder yang dipilih dengan cara klik kanan pada file atau folder yang dipilih lalu pilih Add to archive.
    Compress project Laravel
  8. Pada bagian Archive format, pilih ZIP atau RAR dan klik OK. Tunggu sampai prosesnya selesai.
    Opsi compress dengan WinRAR
  9. Kembali ke dashboard. Klik File Manager untuk membuka file manager Serv00. Masuk ke folder domains -> <Domain Tujuan>. Silakan upload file zip atau rar yang sudah dibuat tadi dan tunggu sampai proses upload selesai.
    Proses upload
  10. Silakan buka PuTTY. Isi Host Name dengan USERNAME@sX.serv00.com (USERNAME adalah username akun dan X adalah nomor server akun), lalu klik Open. Jangan lupa untuk menyimpan sesi SSH supaya Anda tidak perlu memasukkan Host name.
    Konfigurasi PuTTY
  11. Klik Accept pada PuTTY Security Alert, lalu masukkan password akun Anda (Tulisan tidak muncul pada layar saat mengetik). Tekan Enter setelahnya. Jika password benar, akan muncul seperti pada screenshot:
    PuTTY Serv00
  12. Masukkan perintah cd domains/<Domain Tujuan> diikuti perintah unzip <Nama file zip>.zip (jika menggunakan ZIP) atau unrar x <Nama file rar>.rar (Jika menggunakan RAR). Tunggu sampai proses ekstrak selesai, lalu refresh File Manager.
  13. Hapus folder public_html dengan klik kanan pada folder public_html, lalu pilih Delete, dan klik tombol centang.
  14. Klik kanan pada folder public, lalu pilih Rename. Ganti menjadi public_html, lalu klik tombol centang.
  15. Klik kanan pada file .env, lalu klik View/Edit -> Source Editor. Atur DB_HOST menjadi mysqlX.serv00.com. Atur juga DB_DATABASE, DB_USERNAME, dan DB_PASSWORD sesuai yang Anda buat pada langkah ke-6. Klik Save untuk menyimpan.
  16. Impor database dari komputer Anda ke Serv00 phpMyAdmin. Jika Anda tidak ingin mengimpor database, jalankan perintah php artisan migrate pada PuTTY.
  17. Masuk ke folder app -> Providers. Edit AppServiceProvider.php dengan menambahkan baris berikut di dalam function register, lalu simpan.
    $this->app->bind('path.public',function(){
        return base_path('public_html');
    });
  18. Kembali ke folder <Domain tujuan>. Masuk ke folder bootstrap, buka file app.php dan tambahkan baris berikut sebelum $app->singleton lalu simpan.
    $app->usePublicPath($app->basePath('public_html'));
  19. Jika Anda menggunakan webpack atau Laravel Mix, buka file webpack.mix.js dan tambahkan baris berikut setelah const mix=require('laravel-mix').
    mix.setPublicPath('public_html');
    Pada file yang sama, ubah public/ menjadi public_html/ dan simpan.
  20. Jika Anda menggunakan Vite, buka file vite.config.js dan tambahkan baris berikut setelah refresh: true, lalu simpan.
    publicDirectory: "public_html"

Tambahan

Cara membuat link simbolik untuk upload file atau foto (Penting)

Jika project Laravel Anda menggunakan upload file atau foto, Anda perlu membuat link simbolik ke folder storage dengan perintah php artisan storage:link. Sayangnya perintah ini tidak bisa berjalan karena link simbolik yang akan dibuat mengarah ke folder public, bukan public_html sehingga muncul pesan error symlink(): No such file or directory. Cara yang bisa dilakukan adalah membuat routing khusus untuk membuat link simbolik.
  1. Buka file web.php di dalam folder routes pada hosting, lalu tambahkan routing berikut dan simpan.
    Route::get('/linkstorage', function() {
      $target = base_path().'/storage/app/public';
      $link = $_SERVER['DOCUMENT_ROOT'].'/storage';
      symlink($target, $link);
    });
  2. Pada browser, buka <Nama Domain Anda>/linkstorage. Jika muncul halaman kosong, berarti pembuatan link berhasil dan upload file atau foto sudah bisa digunakan.
  3. Hapus routing di atas setelah berhasil.

Cara connect FTP dengan FileZilla

Jika Anda ingin menggunakan FileZilla, ikuti langkah-langkah berikut untuk menyambungkan koneksi FTP:
  1. Buka halaman FTP pada dashboard Serv00 dan klik tab Add account.
  2. Isikan kolom Login dengan nama yang Anda inginkan tanpa spasi dan isi password. Pada kolom Directory, silakan pilih mau ke domain tujuan atau Home directory (Root folder) atau lainnya, kalau saya Home directory supaya bisa memanajemen semua domain yang ada. Klik Add setelahnya.
    Form Tambah akun FTP
  3. Buka FileZilla, dan klik menu File -> Site Manager untuk membuka Site Manager.
  4. Isikan Host dengan sX.serv00.com, lalu isi Username dan Password yang sudah dibuat tadi dan klik Connect.
    Form Site Manager FileZilla
Catatan: Sebaiknya jangan gunakan FileZilla untuk menghapus folder yang berisi banyak file dan folder karena prosesnya yang cukup lama.

Cara connect ke server email Serv00

Serv00 memiliki email server sendiri. Jika Anda ingin menggunakan fitur Email pada project Laravel, Anda bisa mengikuti langkah-langkah berikut.
  1. Buka halaman Email pada Dashboard. Pada daftar biasanya sudah ada nama domain yang dibuat sejak akun dibuat.
  2. Jika menggunakan domain yang ada, klik Details lalu klik tab Add new mailbox. Jika menggunakan domain lain, klik tab Add new e-mail. Isikan alamat email dan password, lalu klik Add.
    Form Tambah Email
  3. Buka file .env pada project Laravel yang diupload. Atur MAIL_MAILER menjadi smtpMAIL_HOST menjadi mailX.serv00.com, dan MAIL_PORT menjadi 25. Atur juga MAIL_USERNAME dan MAIL_PASSWORD berdasarkan akun email yang sudah dibuat tadi. Samakan MAIL_FROM_ADDRESS dengan MAIL_USERNAME (Gunakan tanda kutip).
    Tampilan .env pada bagian Email
  4. Silakan Anda mencoba fitur email pada project Laravel. Usahakan gunakan email Anda sebagai email tujuan dan cek folder spam pada email tujuan karena email yang dikirim melalui project Laravel tidak terlihat pada Serv00.com Webmail.

Cara deploy project Laravel dari GitHub

Serv00 memiliki fitur repository, sehingga Anda bisa menggunakan Git yang disediakan Serv00. Jika Anda memiliki project Laravel yang tersimpan di GitHub, ikuti langkah berikut untuk mendeploynya:
  1. Setelah Anda membuat database, silakan buka PuTTY dengan Host Name USERNAME@sX.serv00.com lalu klik Open. Masukkan password, lalu masuk ke folder domain tujuan dengan perintah cd domains/<Domain Tujuan>.
  2. Masukkan perintah git clone <Link GitHub Anda>.git. Ini akan mendeploy project dari GitHub ke folder sesuai nama project Laravel. Tunggu sampai proses clone selesai.
  3. Masuk ke folder berisi project yang di-clone, dan pindahkan isi folder public ke folder public_html di folder domain tujuan.
  4. Edit file index.php yang ada pada folder public_html, lalu sesuaikan baris 19, 34, dan 47 seperti pada gambar lalu simpan.
    Tampilan file index.php
  5. Hapus file index.html, dan hapus juga folder public pada folder project yang di-clone.
  6. Ganti nama .env.example menjadi .env, lalu buka file .env. Sesuaikan DB_HOST, DB_DATABASE, DB_USERNAME, dan DB_PASSWORD.
  7. Kembali ke PuTTY, masuk ke folder yang diclone tadi dengan perintah cd <Folder Hasil Clone>. Jalankan perintah composer2 install dan tunggu sampai proses install selesai, lalu jalankan perintah php artisan key:generate diikuti perintah php artisan migrate dan website sudah siap untuk digunakan.
Jika terjadi error saat menjalankan composer2 install, jalankan perintah composer2 update, atau hapus file composer.lock dan ulangi perintah tadi. Sedangkan jika Anda ingin mengambil perubahan dari GitHub, jalankan perintah git pull.
Catatan: Jika muncul folder public setelah menjalankan perintah git pull, pindahkan isi folder public ke folder public_html, lalu hapus folder public.

Cara reset password MySQL

Jika Anda lupa password MySQL, ikuti langkah berikut untuk mereset password MySQL:
  1. Pada halaman MySQL Serv00, klik tab Users.
  2. Jika ada beberapa user MySQL, klik Change Password pada user yang lupa passwordnya.
  3. Silahkan isi password baru, lalu klik Save changes.

Penyelesaian Masalah

Website tidak terbuka dan muncul banyak pesan Warning: open_basedir() restiction in effect diikuti Fatal Error

Pastikan username dan domain tujuan pada Open basedir directories sudah benar. Jika project Laravel dideploy dari GitHub, konfigurasi Open basedir directories tetap usr/home/<USER NAME>/domains/<Domain tujuan>.

Muncul pesan Fatal Error: Composer detected issues in your platform: Your Composer dependencies require a PHP version... saat membuka website atau menjalankan php artisan

Serv00 menggunakan PHP versi 8.1.27, biasanya terjadi jika Laravel yang digunakan adalah versi paling baru dan tidak support PHP versi lama. Buka file composer.json pada folder project Laravel, dan tambahkan "platform-check": false di dalam "config" seperti gambar di bawah, lalu simpan.
Jalankan perintah composer2 dump-autoload pada PuTTY. Jika masih error, hapus folder vendor dan file composer.lock, lalu jalankan perintah composer2 install.

Muncul pesan peringatan Composer 1 is deprecated saat menjalankan composer

Serv00 menyediakan dua versi composer, yakni composer 1.10.26 dan composer 2.5.5. Composer yang berjalan secara default adalah composer 1, sehingga muncul pesan tersebut. Gunakan perintah composer2 untuk menggunakan composer terbaru.

Muncul pesan Network error: Software caused connection abort pada PuTTY

Biasanya terjadi karena koneksi yang tidak stabil atau tidak ada aktivitas dalam waktu yang cukup lama. Saat terjadi network error, sesi SSH langsung menjadi inactive dan Anda tidak bisa mengetik apa-apa. Klik kanan pada titlebar, lalu klik Restart session. Masukkan kembali password, dan kembali ke folder sebelumnya dengan perintah cd <Folder tujuan>.
Menu klik kanan PuTTY
Supaya sesi SSH tetap berjalan saat tidak ada aktivitas, Anda perlu membuka pengaturan PuTTY.
  1. Buka pengaturan PuTTY dengan mengklik Change Settings pada menu tadi.
  2. Pada panel Category, klik Connections, lalu isi dengan angka 120 pada Seconds between keepalives. Dengan konfigurasi ini, PuTTY mengirim ping ke server setiap 120 detik (2 menit) supaya koneksi tetap berjalan.
    Tampilan PuTTY Reconfiguration, bagian Connections
  3. Klik Session pada panel Category, lalu klik Save.
Jika koneksi masih terputus, kurangi angka tadi sedikit demi sedikit sampai koneksinya stabil.
Catatan: Jika Anda menggunakan WinSCP dan mendapatkan pesan serupa, klik tombol Reconnect.

Komentar