Friday, June 24, 2011

لينكس عربي خفيف | Arabized Light Linux

من حين لآخر أحتاج لتوزيعة خفيفة، لأسباب عدّة تتعلق بما يتوفر من عتاد نحتاج إلى تثبيت نظام تشغيل عليه، وطبعا إستخدام ويندوز له إجابة مفروغ منها : "أتعتقد أنني مجنون؟ ويندوز؟" مشكلتي تكون دوما أنني أحتاج لتوزيعة أثبتها وأنساها، إذ أنه لو كنت أنا من سيستخدم الجهاز، لن أعبأ كثيرا بكيف يبدوا النظام أو أين أجد الأشياء، فسطر الأوامر صديقي. ولكن المشكلة تطرأ عندما أريد أن اثبت لينكس على جهاز سيستخدمه آخرون، ولن أكون موجودا كي يسألوني كلما وجدوا شيئا على غير ما ألفوه!

أوبونتو إجمالا يقوم بالمهمة على أحسن وجه، فهي توزيعة ذات واجهة تدعم عشرات اللغات وتتوفر آلاف البرامج لها على بعد نقرتين، ولكن أوبونتو بكل مزاياه وواجهة جنوم الإفتراضية فيه يثقل كاهل الأجهزة الأقدم أو الأقل كفاءة. وعندما نتذكر كم من مناطقنا المهمشة ليس لدى أبناءها أجهزة حاسوب، ناهيك أن تكون قوية، يصبح السؤال أكثر إلحاحا، بل يصير قضية وطنية!

هناك توزيعة DSL (Damn Small Linux)، أي "لينكس صغير بشكل إبن كلب" تقريبا ... الترجمة ليست حرفية :) توزيعة خفيفة جدا، برامجها مختارة بعناية لتكون أخف ما يمكن ويمكن تشغيلها من القرص المدمج مباشرة، وبذاكرة صغيرة حتى 16 ميغا بايت يمكن أن يشتغل بواجهة رسومية ... اخو تيت فعلا !! لكن والحق يقال، الخفّة تأتي بثمن، ليس دي إس إل لينكس أجمل توزيعة رسوميا أو أسهلها أستخداما!

خيار آخر خفيف وأجمل قليلا، لينكس إبن كلب فعلا! والترجمة حرفية! يعني لينكس الجرو (Puppy Linux)، يعمل بواجهة رسومية بإستخدام Icevm أو JVM ايضا! هذه التوزيعة يمكن أن تعمل بذاكرة في حدود 48 ميغا بايت كحد أدنى.

أذكر إستخدام فيكتور لينكس لايت (Vector Linux Light) وكان لطيفا وخفيفا بشكل لافت، وإن اعد بواجهة icevm أو حتى jvm الرسومية، فسيعمل على أي عتاد بذاكرة 64 ميغابايت، بل اقل من ذلك.

المشترك بالتوزيعات السابقة كلها أنها تعتمد واجهات Icevm و JVM، وهي واجهات لطيفة ولكنها أقل إنسيابية وقد تشعر المستخدم بالغربة قليلا... كما أنها تسعى لإيجاد برمجيات بديلة وخفيفة جدا. أما تدوينة اليوم فهي جاءت لما وجدت إصدارة تدعم العربية جيدا وتعمل بذاكرة 256 إلى 512 بشكل ممتاز، بل جربناها وأظهرت أداء ممتازا ... وأفضل من هذا كله، أنها تستخدم نظام إدارة حزم دبيان العظيم!! وتقدّم لنا البرمجيات المعتادة في بيئة أوبونتو ولكن بواجهة خفيفة هي XFCE! التوزيعة هي xubuntu! (وتقرأ زوبونتو) وأنا سعيد جدا اليوم بها وأستخدمها على حاسوبي المحمول وأدل مستخدمين على الهاتف عندما يجدون شيئا من الصعوبة في إيجاد شيء دون أن أجد أنا صعوبة بذلك أو يجد من يحدثني على الطرف الآخر بأنه يتعامل مع شيء صعب!

تعديل: xfce يدعم الآن تحويل اللغة بشكل أفضل، ألقوا نظرة على xfce4-xkb-plugin، والتي يمكن تفعيلها عبر بزرار الفأرة الأيمن على مساحة فارغة على الpanel، وإختيار لوحة المفاتيح.

الهفوة الوحيدة هي هفوة تحويل اللغة! XFCE لا يقدم واجهة رسومية كما يفعل Gnome لتحويل اللغة، ولكن الحل بسيط للغاية. إليك إياه. بعد تثبيت زوبونتو، إضغط على رسم الفأر في الزاوية العليا، هذه قائمة البرامج، إختر الإعدادات (Settings) ثم Session and Startup ثم Application Autostart , أضف برنامجا إلى القائمة بالضغط على Add واعطه إسما، فليكن "برنامج تغيير لوحة المفاتيح"ما تضعه ليس مهما جدا وأعطه وصفا، ما تضعه ليس مهما جدا ثم ضع في خانة "الأمر" الآتي:

setxkbmap -option grp:switch,grp:alt_shift_toggle,grp_led:scroll us,ar


ويمكنك بعدها الخروج من الواجهة والولوج ثانية وستتمكن من تحويل لغة الإدخال من لوحة المفاتيح بضغط Alt مع Shift! مبروك نظامك الخفيف نسبيا، الإنسيابي والذي يوفر لك ذات ما يوفره أوبونتو.

عمتم مساءا! وتذكروا دم السوريين، ذهبت لقاء الحرية

Sunday, June 19, 2011

HTTP Error 500, suexec and fcgi debugging tricks

I have been getting error 500 on my webserver in many occasions that i personally would consider inappropriate! because the error logs are simply cryptic, general and misleading, or even non-existent. I had to figure out a few tricks that allow me to figure out whats the reason for the errors without relaying much on the logs. here is a short documentation of them:

emulation of suexec+fcgi :

On the command line, switch to the user that is executing the php scripts, lets assume its "mywebsiteuser1"; so :

su - mywebsiteuser1

this might fail because this user might not have a login shell (login shell set to /bin/false for example); thus you might need to edit /etc/passwd and set a loginshell for this user; lets say /bin/bash. its a good idea to use vipw instead of vi (you need to do this as root).

Now cd to the directory where you have your .php files, and try something like this:

cat index.php | /var/www/fcgi/mywebsite.tld/php5-fcgi-starter


This should reveal more info about the error that what you are getting (or not getting) in the logs or in the browser. the file output is being piped to is the fcgi php wrapper.

I hope a similar thing can be doable in real life, imagine to be able to track and debug the problems in palestine/israel, where the logs are also very messy, cryptic or even non-existent. and you usually end up with the Israeli error 500 (internal system error) hiding the details of the permissions denied for liberty of Palestinians; my people.

Note that permissions must be correct on every part of this mess! the file owners, the user running the code, the wrapper owner ...etc.