Apache 2.2 to 2.4 with Ubuntu 13.10
Sat 19 October 2013Ubuntu 13.10 ထွက်တော့ မနေနိုင်မထိုင်နိုင် Server တွေကို Upgrade လုပ်လိုက်မိတာ ငါးပါးမှောက်တော့တာပဲ သုံးနေတဲ့ Server တွေက အများအားဖြင့် Webserver မသုံးတာ အတော်နည်းပါတယ် ဖြစ်ချင်တော့ Ubuntu 13.10 မှာက Apache ကို 2.2. ကနေ 2.4. နဲ့ပါလာတယ် 2.2 နဲ့ 2.4 ဟာ Configuration files တွေက သဟဇာတမမျှဘူး 2.2 ရဲ့ Config ကို 2.4 မှာသုံးလို့မရ ကိုယ်ကလည်း အများအားဖြင့်က Default ပါလာတဲ့ Config တွေက မပြင်တာရယ်မရှိဘူး Server Loading အတွေအတွက် အကုန်လုံးက Tweak လုပ်ပြီးသားတွေဆိုတော့ အလုပ်များကုန်တော့တယ် 2.4 ကပါလာတဲ့ Default config ကိုပဲအရင်သုံးထားလိုက်ပြီးတော့ နှစ်ခုယှဉ်ကြည့်ပြီးတော့ Manual လိုက်ပြင်ထည့်ရတော့တယ်။
# /etc/apache2/
# |-- apache2.conf
# | `-- ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf-enabled
# | `-- *.conf
# `-- sites-enabled
# `-- *.conf
Default config ကိုသုံးလိုက်တော့ Apache ပြန်တက်လာပေမယ့် နောက်ထပ်ပြဿနာက ထပ်ထွက်လာတယ် ရှိသမျှ Virtual Host တွေအကုန်လုံးက အလုပ်မလုပ်တော့ဘူး Virtual Host တခုကိုခေါ်လိုက်ရင် Server ရဲ့ Default Site ပဲတက်လာတယ် အဲဒါနဲ့ a2dissite နဲ့ Distable လုပ်ကြည့်တော့လည်း အဲဒီ Site မရှိဘူးဆိုတော့ Virtual Host Config တွေပဲ ပျောက်နေသလား ခေါင်းခြောက်ရတော့တယ် ဘယ်လိုလုပ်လုပ်ရတော့ main config file ထဲကို Virtual Host တခုထည့်ကြည့်တော့ အလုပ်လုပ်တယ် အဲဒါနဲ့ အသေအချာ ဖတ်ကြည့်တော့ Config file အစမှာ အသေအချာ ရေးထားတယ် Config Structure ကပြောင်းသွားတယ် အရင်က sites-enabled directory ထဲက Config တွေက file extension မပါဘူး အခုက sites-enabled ထဲက Config တွေမှာ .conf extension ပါတယ်ဆိုပြီး ရှာနေတာ။ အလွယ်ဆုံးနည်းက main config ထဲမှာ .conf ကိုဖြုတ်လိုက်လို့ရတယ် ဒါပေမယ့် အခုရှုပ်မှနောင်ရှင်းဆိုပြီး sites-enabled ထဲက config file softlink တွေကို manulally ဖျက်လိုက်ပြီးတော့ sites-available ထဲက config file တွေကို .conf လိုက်ထည့်လိုက်ပြီး a2ensite နဲ့ enable ပြန်လုပ်လိုက်တော့ Virtual Host တွေပြန်အလုပ်လုပ်သွားတယ်။
sudo a2ensite www.mywebsite.com.conf
Virtual Host တွေပြန်တက်လာပေမယ့် မပြီးဆုံးသေးသော 2.2 နဲ့ 2.4 ရဲ့ config ပြဿနာတွေက ထပ်ထွက်လာတယ် Virtual Host config တွေထဲက directives တွေလည်း မတူတော့တဲ့အတွက် ဝင်လိုက်တာနဲ့ permission denied error တွေနဲ့ပဲရပ်နေတော့ Apache 2.4 upgrade manual ကိုသွားရှာပြီးတော့ virtual host config တွေကိုပါလိုက်ကြည့်ရတော့တယ် အဲဒီမှာ Access control directives တွေအကုန်လုံးက အပြောင်းအလဲထဲမှာပါနေတော့ အကုန်လုံးလိုက်ပြီးတော့ အစားထိုးရတော့တယ်။
Apache Error Log:
[authz_core:error] [pid 5163] [client xxx.xxx.xxx.xxx:59181] AH01630: client denied by server configuration:
Apache 2.2.*
Order deny,allow Deny from all
Apache 2.4.*
Require all denied
Apache 2.2.*
Order allow,deny Allow from all
Apache 2.4.*
Require all granted
Apache 2.2.*
Order Deny,Allow Deny from all Allow from example.org
Apache 2.4.*
Require host example.org
Access control directives တွေအကုန်လုံး အစားထိုးပြီးတဲ့နောက်မှ Virtual Host တွေအကုန်လုံး ပြန်အလုပ်သွားတော့တယ် ဒါတောင်မှ နောက်ဆုံးလက်ကျန်အနေနဲ့ Site တွေထဲက .htaccess ထဲမှာ 2.2.* format နဲ့ directives တွေသုံးထားရင် Error ထပ်တက်သေးတယ် အဲဒါတွေလိုက်ရှင်းနဲ့ အချိန်အတော်ကုန်သွားတယ် တခါတခါ Upgrade ဆို Restart ချပြီးရင် ချောချောမောမော Server တက်ပါစေဆိုပြီး ဆုတောင်းရတာက ထုံးတမ်းစဉ်လာ အရင်ကတော့ Update အသစ်ထွက်ပြီး နည်းနည်းကြာမှ Update လုပ်တယ် သူများပြဿနာတက်ပြီးမှ ကိုယ်ကလိုက်လုပ်ရင် သူတို့ရှင်းပြီးသားအတိုင်း လိုက်ရှင်းရုံပဲ အခုတော့အလုပ်များတာနဲ့ နောက်ရက်တွေ မအားပါဘူးဆိုပြီး ရတဲ့အချိန်လေးထပြီးတော့ Upgrade လုပ်လိုက်တာ ကိုယ်တိုင်ရှင်းလိုက်ရပါရောလား။