Tema
Deploy Private Repository Laravel ke Hosting Rumahweb
Panduan ini menjelaskan cara deploy project Laravel dari private repository GitHub ke hosting Rumahweb menggunakan SSH key dan deploy key.
1. Generate SSH Key di Hosting
Buka terminal hosting melalui cPanel atau remote SSH.
Jalankan command berikut:
bash
ssh-keygen -t rsa -f ~/.ssh/repo -b 4096Ganti repo dengan nama repository atau nama project.
Contoh:
bash
ssh-keygen -t rsa -f ~/.ssh/erp1 -b 4096Saat diminta passphrase, boleh diisi atau dikosongkan.
Cek isi folder .ssh:
bash
ls ~/.sshJika belum ada file config, buat file tersebut:
bash
touch ~/.ssh/config
chmod 0600 ~/.ssh/configBuka file config:
bash
nano ~/.ssh/configIsi dengan konfigurasi berikut:
ssh
Host erp1
HostName github.com
User git
IdentityFile ~/.ssh/erp1
IdentitiesOnly yesKeterangan:
Host erp1adalah alias untuk repository.IdentityFile ~/.ssh/erp1harus sesuai dengan SSH key yang dibuat.
2. Register SSH Key ke GitHub Deploy Key
Login ke GitHub, lalu buka private repository yang ingin di-deploy.
Masuk ke:
txt
Settings > Deploy Keys > Add deploy keyIsi:
- Title: bebas, misalnya
Rumahweb Hosting - Key: isi dengan public key dari file
.pub
Untuk melihat public key:
bash
cat ~/.ssh/erp1.pubCentang:
txt
Allow write accessLalu klik Add key.
3. Clone Private Repository ke Hosting
Masuk ke terminal cPanel.
Cek apakah folder repositories sudah ada:
bash
ls ~/repositoriesJika belum ada, buat folder:
bash
mkdir ~/repositoriesMasuk ke folder:
bash
cd ~/repositoriesClone repository:
bash
git clone git@erp1:username/repo.gitContoh:
bash
git clone git@erp1:alamsyahkuba/erp1.gitKeterangan:
erp1adalah alias dari SSH config.usernameadalah username GitHub.repo.gitadalah nama repository.
4. Setting Environment Laravel
Pastikan versi PHP dan Composer sesuai dengan project Laravel.
Cek versi:
bash
php --version
composer --versionContoh panduan ini menggunakan:
txt
PHP 8.2.30
Composer 2.9.3Misalnya menggunakan alias:
bash
php82
composer82Masuk ke folder repository:
bash
cd ~/repositories/repoInstall dependency:
bash
composer82 installCopy file .env:
bash
cp .env.example .envGenerate app key:
bash
php82 artisan key:generateEdit file .env, lalu sesuaikan konfigurasi berikut:
env
APP_URL=https://domain-kamu.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sesuaikan
DB_USERNAME=sesuaikan
DB_PASSWORD=sesuaikanJalankan migration:
bash
php82 artisan migrateClear dan optimize Laravel:
bash
php82 artisan optimize:clear
php82 artisan optimizeJika ingin pindah branch:
bash
git checkout nama-branch5. Deploy Laravel ke Document Root
Masuk ke folder repository:
bash
cd ~/repositories/repoAtur permission:
bash
chmod -R 775 storage bootstrap/cacheBuat symlink dari folder public Laravel ke document root domain:
bash
ln -s ~/repositories/repo/public/* ~/public_html/document_rootContoh jika document root domain adalah erp1:
bash
ln -s ~/repositories/ERP1/public/* ~/public_html/erp1/Cek hasil symlink:
bash
ls -l ~/public_html/document_rootContoh hasil:
txt
build -> /home/user/repositories/ERP1/public/build
css -> /home/user/repositories/ERP1/public/css
favicon.ico -> /home/user/repositories/ERP1/public/favicon.ico
fonts -> /home/user/repositories/ERP1/public/fonts
index.php -> /home/user/repositories/ERP1/public/index.php
js -> /home/user/repositories/ERP1/public/js
robots.txt -> /home/user/repositories/ERP1/public/robots.txt6. Buat File .htaccess
Buka cPanel File Manager, lalu masuk ke folder document root domain.
Contoh:
txt
~/public_html/erp1/Buat file baru:
txt
.htaccessIsi file .htaccess:
apache
# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php82” package as the default “PHP” programming language.
<IfModule mime_module>
AddHandler application/x-httpd-ea-php82___lsphp .php .php8 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>Simpan file.
7. Testing
Akses domain Laravel melalui browser:
txt
https://domain-kamu.comJika berhasil, aplikasi Laravel akan tampil.
Catatan Penting
Peringatan
- Pastikan versi PHP hosting sesuai dengan versi Laravel.
- Pastikan database sudah dibuat di cPanel.
- Pastikan konfigurasi
.envsudah benar. - Pastikan folder
storagedanbootstrap/cachememiliki permission yang sesuai. - Jangan upload file
.envke repository.