Soe Zayar.
မီနူး
ဆွေးနွေးရန်
လုပ်ဆောင်မှုမှတ်တမ်း F

ဆာဗာတစ်လုံး၊ အက်ပ်များစွာ: ကိုယ်တိုင်ထိန်းသိမ်းသော အက်ပ်ပလက်ဖောင်း

Linux ဆာဗာတစ်လုံးပေါ်မှာ Laravel၊ Node၊ Next.js နဲ့ Docker အက်ပ်တွေကို HTTPS နှင့် code ပို့ရုံဖြင့် လွှင့်တင်နိုင်အောင် စနစ်တကျ လည်ပတ်ပေးသော ပလက်ဖောင်း။

ပါဝင်လုပ်ဆောင်မှုပုံစံ
ကိုယ်ပိုင် ထုတ်ကုန်
ကျွန်တော့် တာဝန်
ဒီဇိုင်းရေးဆွဲ တည်ဆောက်ခဲ့သည်။
လက်ရှိ အခြေအနေ
လုပ်ငန်းတွင်း အသုံးပြုနေသည်

ရိုးရိုးရှင်းရှင်း ပြောရရင်

ယခင် အခြေအနေ

ထုတ်ကုန်ငယ်တွေမှာ အက်ပ်တစ်ခုစီအတွက် hosting သီးခြားငှားရတာ ဒါမှမဟုတ် လူတစ်ယောက်ပဲ နားလည်တဲ့ ဆာဗာတစ်လုံးကို လက်ဖြင့် ပြင်ဆင်သုံးရတာမျိုး ဖြစ်တတ်ပါတယ်။ အက်ပ်အသစ်တစ်ခု ထည့်တိုင်း အစအဆုံး ပြန်ပြင်ဆင်ရ၊ HTTPS လက်မှတ် သက်တမ်းကုန်တာ မသိရနဲ့ ဖိုင်တွေ ဆာဗာထဲ ကူးတင်ပြီး အဆင်ပြေဖို့ မျှော်လင့်ရတာမျိုးတွေ ကြုံရပါတယ်။

ကျွန်တော် တည်ဆောက်ခဲ့သည့်အရာ

Linux ဆာဗာတစ်လုံးမှာ အက်ပ်အများအပြားကို စနစ်တကျ လည်ပတ်နိုင်တဲ့ ထပ်တူပြန်သုံးနိုင်သော ပုံစံကို တည်ဆောက်ခဲ့ပါတယ်။ ကနဦး script တစ်ခုက ဆာဗာအသစ်မှာ web server၊ PHP၊ ဒေတာဘေ့စ်၊ Node၊ firewall နဲ့ ထပ်ခါတလဲလဲ ဝင်ရောက်ရန် ကြိုးစားမှု ကာကွယ်ရေးတို့ကို ပြင်ဆင်ပေးပါတယ်။ အက်ပ်တိုင်းက တူညီတဲ့ ဖွဲ့စည်းပုံကို လိုက်နာပြီး Laravel၊ Node API၊ Next.js ဒါမှမဟုတ် Docker အက်ပ် မည်သည့်အမျိုးအစားဖြစ်စေ ကိုယ်ပိုင် လွှင့်တင် script ရှိပါတယ်။

Code ကို ပေါင်းထည့်လိုက်တာနဲ့ GitHub Actions က ဆာဗာကို သက်ဆိုင်ရာ script လည်ပတ်ခိုင်းပြီး ဗားရှင်းအသစ် လွှင့်တင်ပါတယ်။ အက်ပ်တစ်ခုစီမှာ HTTPS ပါသော ကိုယ်ပိုင် domain ရှိပြီး အင်တာနက်ထံ web server တစ်ခုတည်းကိုသာ ဖွင့်ထားပါတယ်။

စာရွက်ပေါ်က ပုံစံတစ်ခုသာ မဟုတ်ပါဘူး။ ဒီဆိုက်မှာ ဖော်ပြထားတဲ့ MidnightMM နဲ့ EzeeRecap အပါအဝင် အက်ပ်တွေက ဒီပလက်ဖောင်းပေါ်မှာ လက်တွေ့ လည်ပတ်နေပါတယ်။

နည်းပညာ အသေးစိတ်

စနစ် ဖွဲ့စည်းပုံ

  1. GitHub Actions
  2. ကန့်သတ် SSH key
  3. လွှင့်တင် script
  4. Nginx + HTTPS
  5. Laravel · Node · Docker

အသုံးပြုထားသည့် နည်းပညာများ

  • Ubuntu နှင့် Bash ဖြင့် ကနဦး ပြင်ဆင်မှု
  • Nginx၊ PHP-FPM၊ MariaDB
  • nvm မှတစ်ဆင့် Node၊ PM2
  • Docker Compose
  • Let's Encrypt (Certbot)
  • UFW၊ fail2ban၊ SSH လုံခြုံရေး ပြင်ဆင်မှု
  • SSH မှတစ်ဆင့် GitHub Actions

ဆုံးဖြတ်ချက်များ

  • လွှင့်တင်ပုံကို ဆာဗာပေါ်က ဗားရှင်းထိန်းသိမ်းထားတဲ့ script တွေထဲမှာ ထားပါတယ်။ CI က ခွင့်ပြုထားတဲ့ command ကိုသာ အသုံးပြုနိုင်တဲ့ SSH key နဲ့ script ကို စတင်ခိုင်းရုံ ဖြစ်လို့ CI အချက်အလက် ပေါက်ကြားရင်လည်း မည်သည့် command မဆို လုပ်ဆောင်လို့ မရပါဘူး။
  • အက်ပ်အမျိုးအစားတိုင်းမှာ တည်နေရာနဲ့ လည်ပတ်ပုံကို တိတိကျကျ သတ်မှတ်ထားပါတယ်။ Laravel က PHP-FPM ပေါ်မှာ လည်ပတ်ပြီး environment ဖိုင်နဲ့ storage ကို release အပြင်မှာ ထားပါတယ်။ Node နဲ့ Next.js ကို အတွင်းပိုင်း port များပေါ် PM2 ဖြင့် လည်ပတ်စေပြီး ထုတ်ကုန်အသစ်တွေကို Docker Compose ပရောဂျက် သီးခြားစီ ထားပါတယ်။
  • အင်တာနက်ကို Nginx တစ်ခုတည်းကသာ လက်ခံပါတယ်။ အက်ပ်တွေက အတွင်းပိုင်း loopback port ပေါ်မှာ နေပြီး HTTPS လက်မှတ်တွေကို Let's Encrypt မှ ရယူပါတယ်။
  • ကနဦး script တစ်ခုက SSH လုံခြုံရေး၊ UFW firewall နဲ့ fail2ban အပါအဝင် အခြေခံစနစ်ကို ပြင်ဆင်ပေးပါတယ်။ ဒီဝဘ်ဆိုက်ကလည်း သီးသန့် command ကန့်သတ်ထားတဲ့ CI key နဲ့ လွှင့်တင်ပါတယ်။
  • CI နဲ့ မချိတ်ဆက်ခင် လွှင့်တင် script တိုင်းကို ကိုယ်တိုင် လည်ပတ်စစ်ဆေးပါတယ်။

ဆက်စပ် ဝန်ဆောင်မှုများ

ဒီလိုစနစ်မျိုး တည်ဆောက်ဖို့ လိုအပ်လား။