Labels

Cari di blog ini

Development heroicbit

Git Push Langsung ke Server Production

Silakan Ngomen

 Waktu jaman shared hosting dimana kami belum sanggup buat beli VPS, ada software penyelamat yaitu git-ftp buat ngepush project ke shared hosting via protokol ftp, karena pada saat itu shared hosting belum pada mendukung git. Dibanding kalau harus upload manual via FileZilla yang malesin banget, git-ftp adalah solusi. 


Kian kemari udah biasa pakai VPS karena harganya udah pada murah juga, kami bisa pakai git pull buat ngepull project. Proses deployment lebih cepet daripada pakai git-ftp. Tapi kami jadi harus login ssh dulu ke server.


Maka kemudian kami bikin script buat autopull setiap kali ngepush ke server remote (github atau gitlab). Rada ribet juga ini karena kadang suka masalah sama user permission. Suka lupa juga cara setupnya karena metodenya ga baku.


Asyik banget dulu waktu sempet main Heroku dan CloudFoundry, dimana kita tinggal git push ke heroku langsung kedeploy ke server production. Dan akhirnya ketemu juga caranya untuk bikin yang serupa ini. Sebenernya ini bukan ilmu baru. Cuma baru sekarang aja keotakan buat memahaminya hehe..


Caranya adalah dengan membuat bare repo di server production. Oh iya seingatku dulu rada ribet juga sih buat setup seperti ini karena harus bikin user git dulu di servernya, dst. Sekarang kita bisa akses bare repo via protokol ssh aja.


Langkah-langkah

Seperti biasa, bikin repo dulu di lokal. Lalu sambungkan dengan remote server di github atau gitlab.


Kemdian login ssh ke server, lalu bikin bare repo dari remote server:

sudo mkdir /repos
sudo chmod 775 /repos
sudo chown $USER:$USER /repos
cd /repos
git clone --bare git@github.com:heroicbit/heroicbit.git


Sampai sini dia belum langsung bisa dipake, karena cloning bare repo itu ga kayak clone biasa dimana kita bisa langsung lihat penampakan file-file project kita. Ini seperti kita bikin repo remote di github. Dengan demikian kita punya repository yang bisa diakses sebagai remote repo melalui ssh://usernameserver@IP.SERVER/repos/heroicbit.git


Kita daftarkan remote repo tersebut ke project di local, dengan perintah:

git remote add production ssh://usernameserver@IP.SERVER/repos/heroicbit.git

Nama remote servernya bebas, bisa production, live, dev, staging, dan sebagainya. Jangan pakai origin karena origin kan sudah kita pakai untuk remote repo github.


Kembali ke server, kita harus buat satu file hook supaya kalau ada push ke repo ini file-file projectnya kita pasang di tempat kita ingin memasang project kita supaya bisa diakses online. Biasanya di /var/www.

Masuk ke folder reponya lalu buat file post-receive di folder hooks:

cd /repos/heroicbit.git

nano hooks/post-receive

Masukkan kode berikut:

#!/bin/sh
git --work-tree=/var/www/heroicbit checkout -f main

Lalu set executable filenya:

sudo chmod +x hooks/post-receive


Done!

Next time kita mau deploy, kita tinggal jalankan perintah (dari folder project di komputer local):

git push production

Nantinya update file project kita akan otomatis terpasang di folder /var/www/heroicbit.


beanstalk Development heroicbit queue

Cara Pakai Beanstalk untuk Queue di Heroicbit

Silakan Ngomen

HeroicBit CMS sudah disetup untuk langsung pakai sistem queue menggunakan Beanstalk. Library PHP yang digunakan adalah Pheanstalk.


Persiapan

Pertama-tama install dulu beanstalk di OS. Kalau pakai Ubuntu tinggal install aja pakai command sudo apt-get install beanstalkd. Lalu jalankan servicenya dengan perintah ./beanstalkd -l 10.0.1.5 -p 11300. Perintah ini nantinya akan perlu kamu set sebagai service.


Kalau mau nyoba di Windows, tinggal download aja https://github.com/caidongyun/beanstalkd-win. Harus install dulu cygwin terminal lalu jalankan servicenya dengan perintah ./beanstalkd.exe -l 127.0.0.1 -p 11300


Lalu pasang aplikasi beanstalk admin ini https://github.com/ptrofimov/beanstalk_console pasang di localhost PHP biar bisa mantau queuenya beneran masuk atau engga.


Menjalankan Consumer

Command untuk consumer sudah dibuat di class application/cli/Queue.php. Untuk menjalankan consumer tinggal jalankan melalui terminal perintah php cli command queue/consume/email -d domain.name. Perintah ini nantinya akan perlu kamu daftarkan sebagai service menggunakan pm2.


email pada command di atas adalah contoh nama tube yang ingin dipantau queuenya. Kode worker untuk queue email disimpan di application/cli/queueWorker/EmailWorker.php. Kode worker lainnya bisa dilihat di folder application/cli/queueWorker/, begitu pula kalau ingin membuat worker baru, simpan disitu.


Untuk menambahkan job ke queue cukup menuliskan satu baris kode             App\libraries\Beanstalk::produce('email', $payload);


Contoh penulisan job bisa dicek di application/controllers/Test.php method produce().


---

Referensi penyusunan modul: https://jtreminio.com/blog/queues-working-smart-faster-in-parallel/