Bismillaahirrohmaanirrohiim…
Berikut ini adalah cara untuk memudahkan programmer dalam singkronisasi kode program dari laptop ke server VPS secara otomatis.
Langkah-langkah sederhananya:
alur di laptop -> github -> vps
1. laptop:
git add .
git commit -m “Update fitur kasir”
git push origin main
2. github:
menerima upload perubahan
3. github mengirim webhook ke VPS
memberitahu jika ada push/perubahan/lainnya
4. vps:
git pull origin main
kongkritnya, buat dulu kunci untuk pairing VPS dan github, agar tidak login setiap kali berhubungan.
VPS:
perintah: ssh-keygen -t ed25519
result:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_ed25519
Your public key has been saved in /root/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:VKxxxxxxxxxxxxxxxx root@xxxxxxxxxx
The key’s randomart image is:
+–[ED25519 256]–+
| xxxx.. . |
|oxxx. o |
|E xxx=. |
| ooxxxoo |
|…xxx.oS |
|.+xxxx. . |
|+.xxx |
| *xxxoo |
|o .xxx |
+—-[SHA256]
—–+
perintah: cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@xxxxxxxxxx
Github:
tambahkan ke setting key di github
lalu test
ssh -T git@github.com
ssh -T git@github.com
The authenticity of host ‘github.com (1.1.1.1)’ can’t be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘github.com’ (ED25519) to the list of known hosts.
Hi User! You’ve successfully authenticated, but GitHub does not provide shell access.
VPS:
pastikan sudah cd ke /home/htdocs/domainku.com dan isi foldernya kosong
git clone git@github.com:joygreen/branchgit.git .
penting: titik diakhir, artinya repository langsung disimpan disitu, git tidak membuat folder baru.
jika gagal karena file masih ada isinya:
cd ke /home/domainku/htdocs
git clone git@github.com:usergit/branchgit.git
coba dulu untuk memastikan proses nanti berjalan lancar
cd /home/domainku/htdocs/domainku.com
git pull origin main
VPS:
Buat link untuk terima webhook dari github
contoh jika pakai PHP
<?php
$secret = ‘rahasiasecret’;
if ($payload === ”) {
http_response_code(400);
exit(‘Empty payload’);
}
$event = $_SERVER[‘HTTP_X_GITHUB_EVENT’] ?? ”;
if ($event !== ‘push’) {
http_response_code(400);
exit(‘Unsupported event’);
}
$signature = $_SERVER[‘HTTP_X_HUB_SIGNATURE_256’] ?? ”;
$payload = file_get_contents(‘php://input’);
$hash = ‘sha256=’ . hash_hmac(‘sha256’, $payload, $secret);
if (!hash_equals($hash, $signature)) {
http_response_code(403);
exit(‘Invalid signature’);
}
file_put_contents(
dirname(__FILE__).’/needpull/needpull.flag’,
date(‘Y-m-d H:i:s’) . ” Deploy triggered”
);
http_response_code(200);
exit(‘deploy started’);
Github:
buat webhook di setting repository
masukkan string rahasia, link, method json
VPS:
buat file deploybranchgit.sh
#!/bin/bash
set -e
FLAG=/home/domainku/htdocs/domainku.com/needpull/needpull.flag
LOCKFILE=/tmp/deploybranchgit.lock
# Tidak ada request deploy
if [ ! -f “$FLAG” ]; then
exit 0
fi
# Deploy sedang berjalan
if [ -f “$LOCKFILE” ]; then
exit 0
fi
touch “$LOCKFILE”
trap ‘rm -f “$LOCKFILE”‘ EXIT
echo “======= Deploy started: $(date) =======”
cd /home/domainku/htdocs/domainku.com
git pull origin branchgit
#jika ada composer/laravel
#composer install –no-dev –optimize-autoloader
#php artisan migrate –force
# Hapus flag hanya jika deploy sukses
rm -f “$FLAG”
echo “======= Deploy finished: $(date) =======”
echo “”
lalu chmod +x /usr/local/bin/deploybranchgit.sh
agar bisa langsung dieksekusi
jika tanpa chmod : ekseskusinya adalah bash /usr/local/bin/deploybranchgit.sh
test dulu di cmd
/usr/local/bin/deploybranchgit.sh
biasanya ada line dari windows yang salah
test command: cat -A /usr/local/bin/deploy.sh
#!/bin/bash^M => salah, line windows bug
perbaiki dengan: sed -i ‘s/\r$//’ /usr/local/bin/deploy.sh
#!/bin/bash$ => sudah benar
jika newline tidak valid (karena windows format)
sed -i ‘s/\r$//’ /etc/cron.d/deploybranchgit
cek file di:
cat -A /etc/cron.d/deploybranchgit
jika newline sudah $ artinya oke.
VPS:
buat cron untuk menjalankan deploy.sh setiap 5 menit/sesuai keinginan
cron tiap 5 menit:
*/5 * * * * root /usr/local/bin/deploybranchgit.sh >> /home/domainku/logs/deploybranchgit.log 2>&1
//perbedaan > dan >>
> overwrite
>> append
simpan di /etc/cron.d/deploybranchgit (karus ada newline diakhir)
chmod 644 /etc/cron.d/deploybranchgit
jika newline tidak valid (karena windows format)
sed -i ‘s/\r$//’ /etc/cron.d/deploybranchgit
cek file di:
cat -A /etc/cron.d/deploybranchgit
jika newline sudah $ artinya oke.
sekarang cek di crontab
status cron –no-pager
harusnya sudah ada
LAINNYA:
jika ada error ownership
git config –global –add safe.directory /home/domainku/htdocs/domainku.com
cek:
git config –system –get-all safe.directory
//cek isi log di cmd
//tail -f /home/domainku/logs/deploybranchgit.log
Demikian, semoga bermanfaat
Bismillaahirrohmaanirrohiim... jika kita ingin mengarahkan semua domain apapun keserver utama, dengan menangkap hostname agar menjadi…
Bismillaahirrohmaanirrohiim... Untuk push data ke github, kadangkala kita lupa untuk set user dan email, berikut…
Bismillaahirrohmaanirrohiim... mitm adalah tools yang bisa menggantikan fiddler, untuk memantau trafik internet, dari website, aplikasi,…
Bismillaahirrohmaanirrohiim... berikut ini tambahan kode pada vhost nginx untuk memperbolehkan cors method options {{settings}} location…
Bismillaahirrohmaanirrohiim... Jika kita membuka login halaman cyberpanel dan tahu tahu muncul inputan kode authenticator, berikut…
Bismmillaahirrohmaanirrohiim... Berikut cara menjalankan composer php di xampp windows, cara ini adalah manual, jadi tidak…