Deploy website using git

HTML5 စာအုပ် စ ရေးတုန်းက github pages ကို အသုံးပြုခဲ့တယ်။ github page သုံးတဲ့ အတွက် တစ်ခုခု ပြင်ပြီးတာနဲ့ တစ်ခါတည်း push လုပ်လိုက်ရုံပါပဲ။ FTP ကို ချိတ် ။ upload တင် စတာတွေကို လုပ်နေစရာမလိုတဲ့ အတွက် တော်တော်လေးကို သက်သာပါတယ်။

သို့ပေမယ် ကျွန်တော် HTML5 စာအုပ်ကို opensource လုပ်ချင်တာ မဟုတ်ပါ။ ဒါကြောင့် github ကနေ ပြန်ပြီးတော့ ဖျက်ချခဲ့ပါတယ်။ github လိုမျိုး feature ရအောင် appfog ကို အသုံးပြုခဲ့တယ်။ mmwebfonts သုံးခဲ့တုန်းက appfog က custom domain အသုံးပြုခွင့်ပေးထားပါတယ်။ အခုတော့ ၁ လကို US $ 20 ပေးမှသာ custom domain အသုံးပြုခွင့်ရလိမ့်မယ်။ ဒါနဲ့ appfog မှာ တင်ဖို့ ကိစ္စကို လက်လျော့လိုက်တယ်။

github pages လိုမျိုး ကိုယ့် server မှာ ကိုယ်တင်လို့ မရဘူးလား။ Git server side တစ်ခု ထောင်မယ်။ website dir က git push လုပ်လိုက်တာနဲ့ အလိုလို pull လုပ်မယ်။ မဖြစ်နိုင်ဘူးလား ? github pages တောင် ရသေးတာပဲ ဆိုပြီး တော့ တချက်ရှာကြည့်တော့ အတော့်ကို လွယ်တာကို တွေ့ပါတယ်။

Setting up git server

ကျွန်တော်တို့ အရင်ဆုံး git server တစ်ခု ဆောက်ရအောင်။ ကျွန်တော်ကတော့ ubuntu server ကို ပဲ အသုံးပြုထားပါတယ်။

sudo apt-get install git

ဆိုပြီး git ကို အရင် သွင်းပါ။

ပြီးရင်တော့ ssh key ကို ကျွန်တော်တို့တွေ ထည့်ရပါမယ်။ ကိုယ် သုံးမယ့် computer ထဲကနေ ssh key ကို generate လုပ်ပါ။ မသိရင် github မှာ ရေးထားတာကို ဖတ်ပါ။ id_rsa.pub ကို ကျွန်တော်တို့တွေ ~/.ssh/id_rsa.pub ဆိုပြီးရပါမယ်။

cat ~/.ssh/id_rsa.pub

ဆိုပြီး တော့ ssh key ကို ကြည့်ပါ။ copy ကူးပါ။

Server side ဘက်မှာ

vi /tmp/id_rsa.myusername.pub

ဆိုပြီး ဖန်တီးပြီး i ကို နှိပ်ပြီး insert လုပ်ပါ။ copy ကူးထားတဲ့ code ကို paste လုပ်လိုက်ပါ။ ပြီးရင် :wq နဲ့ ပြန်ထွက်ပါ။

mkdir ~/.ssh/

ဆိုပြီး ဖန်တီးပါ။

cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys

ဆိုပြီး ssh key ကို authorized_keys ထဲ ထည့်ပါ။

ဒါဆိုရင်တော့ ssh key ထည့်တဲ့ ကိစ္စတော့ ပြီးသွားပြီ။ git server ဖန်တီးရအောင်။

mkdir /opt/git

mkdir /opt/git/myproject.git

cd /opt/git/myproject.git

git --bare init

အခုဆိုရင် /opt/git/myproject.git အောက်မှာ ကျွန်တော်တို့ git repo ဖန်တီးပြီးပါပြီ။ git push လုပ်လိုက်တာ နဲ့ update ဖြစ်သွားအောင် hook တစ်ခု ဖန်တီးပါမယ်။

cd /opt/git/myproject.git/hooks

vi post-update

post-update ထဲမှာ

GIT_WORK_TREE=/path/htdocs git checkout -f

ဆိုပြီး ထည့်ပါ။ /path/htdocs ဆိုတာကတော့ သင့် ရဲ့ website လမ်းကြောင်းပါ။ :wq နဲ့ save လုပ်ပြီး ပြန်ထွက်။

Publish website using Git

အခု local computer ဆီ ပြန်သွားရအောင်။ folder တစ်ခုလောက် အရင် ဆောက်ပြီး git repo ကို ထည့်ဖို့လိုပါတယ်။

cd myproject

touch README.md

git init

git add .

git commit -m 'initial commit'

git remote add origin root@yourIP:/opt/git/myproject.git

git push origin master

ဒါဆိုရင် တော့ myproject folder ထဲမှာ server က git repo ထည့်ပြီးပါပြီ။ သင့်ရဲ့ website path ကို server ဘက်မှာ သွားကြည့်လိုက်ပါ။ ကျွန်တော့် example အရ ဆိုရင်တော့ /path/htdocs ပေါ့။ အဲဒီမှာ README.md file လေး တွေ့ပါမယ်။ push လုပ်လိုက်တာနဲ့ post-update hook ကို ခေါ်ပါတယ်။ git checkout အစား နှစ်သက်ရာ git command ကို အသုံးပြုနိုင်ပါတယ်။

website တစ်ခု လုံး local computer က myproject folder ထဲကို ထည့်။ ပြီးရင် git နဲ့ push လုပ်လိုက်တဲ့ အခါမှာတော့ server ပေါ်က web dir ထဲ အလိုလို ရောက်သွားပါမယ်။

Git အသုံးပြုတာ FTP upload ထက်ပိုပြီးကောင်းတာက

– ပြင်ထားတဲ့ file တွေကို သာ upload လုပ်ခြင်း

– git က distributed revision control and source code management (SCM) system ဖြစ်တဲ့ အတွက် team work နဲ့ အလုပ်လုပ်နိုင်သလို version control အတွက်ပါ အဆင်ပြေပါတယ်။

– FTP မှာ လို login ဝင် ။ dir နေရာ သွား။ file တွေ ရွေးပြီး upload တင်ဖို့မလိုတဲ့အတွက် အချိန်ကုန် သက်သာခြင်း

စတာတွေ ထူးပါတယ်။

ကျွန်တော်ကတော့ http://books.saturngod.net ကို git နဲ့ deploy လုပ်ထားပါတယ်။ HTML5 စာအုပ် update ဖြစ်တာ ဖြစ်ဖြစ် စာအုပ် အသစ် တစ်အုပ် ထပ်ဖြည့်တာ ဖြစ်ဖြစ် လွယ်လွယ် ကူကူ publish လုပ်နိုင်ပါတယ်။

How to use Git ?

Git အသုံးပြုပုံကို echo magazine April issue မှာ ဖတ်နိုင်ပါတယ်။

Reference

– http://git-scm.com/book/en/Git-on-the-Server-Setting-Up-the-Server

– http://danielmiessler.com/study/git/

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from Saturngod

Subscribe now to keep reading and get access to the full archive.

Continue reading