Tutorial 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:

  • KiTTY atau program sejenis dengan auto login
  • WinRAR atau program sejenis
  • Password manager seperti BitWarden
Jika Anda sudah mendownload dan menginstall program di atas, langsung saja masuk ke langkah-langkah upload project Laravel.
Catatan: Lewati langkah ke-7 dan 16 jika Anda menggunakan SQLite (seperti yang digunakan pada Laravel 11 secara default).
  1. Jika Anda belum memiliki akun Serv00, buka halaman utama Serv00, klik Register, dan klik Create account.
  2. Isi data-data yang ada. Pada kolom What is the cost of hosting on serv00.com, isi dengan $0, lalu klik Create account.
    Setelah membuat akun, buka email Anda untuk mendapatkan password dan nomor server akun Anda, lalu simpan username, password, dan link DevilWEB webpanel ke Password manager.
  3. 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.
    Setelah domain website berhasil dibuat, silakan Anda coba membuka website tersebut. Jika berhasil terbuka, maka tampilannya adalah sebagai berikut.
    Serv00 index.html
  4. 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.
  5. Klik tab Add certificate, pilih Generate Let's Encrypt certificate pada kolom Type. Pada kolom Domain, pilih domain yang akan digunakan dan klik Add.
  6. 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.
  7. 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
  8. 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
  9. Pada bagian Archive format, pilih ZIP atau RAR dan klik OK. Tunggu sampai prosesnya selesai.
    Opsi compress dengan WinRAR
  10. 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
  11. Silakan buka KiTTY. Isi Host Name dengan USERNAME@sX.serv00.com (USERNAME adalah username akun dan X adalah nomor server akun).
  12. Pada panel Category, klik Data. Isikan username dan password akun Anda pada kolom Auto-login.
    Kembali ke Session, isikan nama sesi yang Anda inginkan pada kolom Saved Sessions/New Folder dan klik Save, kemudian klik Open. Jika muncul Security Alert, klik Accept. Setelahnya, akan muncul seperti pada gambar berikut.
  13. Masukkan perintah cd domains/<Domain Tujuan> diikuti perintah unzip <Nama file zip>.zip (jika ZIP) atau unrar x <Nama file rar>.rar (Jika RAR). Tunggu sampai proses ekstrak selesai, lalu refresh File Manager.
  14. Hapus folder public_html dengan klik kanan pada folder public_html, lalu pilih Delete, dan klik tombol centang.
  15. Klik kanan pada folder public, lalu pilih Rename. Ganti menjadi public_html, lalu klik tombol centang.
  16. 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-7. Klik Save untuk menyimpan.
  17. Impor database dari komputer Anda ke Serv00 phpMyAdmin. Jika Anda tidak ingin mengimpor database, jalankan perintah php artisan migrate pada KiTTY.
  18. 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');
    });
  19. 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'));
  20. 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.
  21. 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);
      echo "Berhasil membuat link simbolik";
    });
  2. Pada browser, buka <Nama Domain Anda>/linkstorage. Jika muncul tulisan "Berhasil membuat link simbolik", 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

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 yang diupload tidak terlihat pada Serv00.com Webmail.

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. Silakan 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 Composer detected issues in your platform: Your Composer dependencies require a PHP version... saat membuka website atau menjalankan composer atau php artisan

Serv00 menggunakan PHP 8.1, biasanya terjadi jika Laravel yang digunakan adalah versi paling baru dan tidak support PHP lama, terutama Laravel 11. Ada dua cara yang bisa dilakukan, yaitu mengganti versi PHP atau mengedit file composer.json.

Cara 1: Mengganti versi PHP

Cara 2: Mengedit file composer.json

Buka file composer.json pada folder project Laravel, dan tambahkan "platform-check": false di dalam "config" seperti gambar di bawah, lalu simpan.
Jalankan perintah composer dump-autoload pada KiTTY. Jika masih error, hapus folder vendor dan file composer.lock, lalu jalankan perintah composer install.

Komentar