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.