كيفية تثبيت Lighttpd مع MySQL و PHP على FreeBSD 11.0


أحمد صحبي

Lighttpd هو خادوم ويب خفيف مفتوح المصدر، وهو الأمثل للبيئات عالية السرعة مع الحفاظ على استخدام أقل للموارد. وهو بديل ممتاز لخوادم الويب شائعة الاستخدام Nginx و Apache. في هذا المقال سيتم تثبيت وإعداد Lighttpd على خادوم يعمل بنظام FreeBSD 11.0. يمكنك أيضا إضافة MySQL و PHP إلى خادوم الويب Lighttpd الجديد الخاص بك حتى تتمكن من تشغيل خدمات الويب فضلا عن محتويات ثابتة.

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي ستحتاج إلى:

  • خادوم بنظام تشغيل FreeBSD 11.0.
  • حساب مستخدم تم إعداده لتشغيل الأوامر مع sudo .

إن حساب freebsd الافتراضي الذي يأتي مع Digital Ocean FreeBSD Droplet كاف لهذا البرنامج التعليمي. لمعرفة المزيد حول إعداد FreeBSD اقرأ سلسلة المقالات حول FreeBSD.

الخطوة 1 - تثبيت Lighttpd

هناك عدة خيارات لتثبيت Lighttpd، ولكن في هذا الدرس سوف نستخدم حزم التثبيت. هذه الطريقة أسرع من التثبيت من المصدر أو عبر المنافذ (Ports)، والبرمجيات المثبتة مع هذه الطريقة أسهل تحديثًا.
لتثبيت Lighttpd مع الحزمة الخاصة به، أولًا حدّث معلومات المستودع للتأكد من أن لديك أحدث قائمة من الحزم المتاحة:

sudo pkg update 

بعد ذلك حمّل وثبت الحزمة lighttpd:

sudo pkg install lighttpd

أكّد التثبيت عن طريق كتابة y . سيتم تثبيت Lighttpd.
باستخدام هذا الإعداد الافتراضي سيظهر لك هذا الخطأ عند بدء تشغيل الخادوم:

(network.c.260) warning: please use server.use-ipv6 only for hostnames, not without server.bind / empty address; your config will break if the kernel default for IPV6_V6ONLY changes

وذلك لأن إعدادات Lighttpd الافتراضية لم يتم تهيئتها لدعم IPv6. لتجنب المفاجآت في وقت لاحق حرر ملف إعدادات Lighttpd ثم عطل دعم IPv6، لأنك لن تحتاج إليها لإكمال هذا الدرس. يمكنك تمكينه في المستقبل إذا قررت استخدامه:

sudo ee /usr/local/etc/lighttpd/lighttpd.conf 

ابحث عن هذا الجزء:

...
##
## Use IPv6?
##
server.use-ipv6 = "enable"
...

وغير enable إلى disable

...
...
server.use-ipv6 = "disable"
...

بعد ذلك حدد موقع هذا السطر في نهاية ملف الإعداد:

...
...
$SERVER["socket"] == "0.0.0.0:80" { } 

ألغه بإضافة الرمز # في أوله، لأنه لا لزوم له إذ كنا لا نستخدم IPv6:

#$SERVER["socket"] == "0.0.0.0:80" { }

ثم احفظ الملف وأغلق المحرر.
بعد هذا سوف نقوم بإعداد MySQL

الخطوة 2 - تركيب وإعداد MySQL

MySQL هو نظام إدارة قواعد بيانات من شأنها أن تسمح بإنشاء قواعد بيانات لتطبيقات PHP التي تخطط لاستضافتها على خادوم الويب الخاص بك Lighttpd. سوف تقوم بتثبيت MySQL عبر الحزم، تماما كما فعلت مع Lighttpd. ثم عليك إعداد كلمة مرور للمستخدم الجذر MySQL وتعطيل بعض خيارات الاختبار الأخرى. وهذا يضمن أنه سيكون لديك إعداد آمن لــ MySQL. بما أنك قمت بتحديث معلومات مستودع pkg في الخطوة 1، يمكنك الآن تحميل وتثبيت حزمة خادوم MySQL بسرعة:

sudo pkg install mysql57-server 

أكد التثبيت عن طريق الضغط على: y.
بعد اكتمال التثبيت، مكّن MySQL لكي يبدأ عند تشغيل النظام:

  sudo sysrc mysql_enable=yes

ثم شغل خدمة mysql-server :

  sudo service mysql-server start

بعد بدء تشغيل الخدمة أمّن تثبيت MySQL باستخدام السكريبت mysql_secure_installation . سيؤدي هذا إلى إزالة بعض الإعدادات الافتراضية الخطرة وإغلاق الوصول إلى نظام قاعدة البيانات قليلا. شغل السكريبت بالأمر:

sudo mysql_secure_installation 

سترى الرسالة التالية:

Securing the MySQL server deployment.
Connecting to MySQL server using password in '/root/.mysql_secret'

بعد ذلك سيتم سؤالك عما إذا كنت تريد إعداد إضافة للتحقق من صحة كلمات المرور:

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
تحذير: تمكين هذه الميزة لهو شيء من الحكمة. إذا تم التمكين فسيتم رفض كلمات المرور التي لا تتطابق مع المعايير المحددة من قبل MySQL مع إظهار رسالة خطأ. وهذا سوف يسبب مشاكل إذا كنت تستخدم كلمة مرور ضعيفة أو كان لك برنامج يقوم تلقائيا بإعداد بيانات اعتماد مستخدم MySQL. لذلك يعد من الآمن أن تترك التحقق معطلًا، ولكن يجب عليك دائمًا استخدام كلمات مرور قوية وفريدة من نوعها لبيانات اعتماد قاعدة البيانات.

أجب بنعم أو أيّ شيء آخر للمتابعة دون تمكين. إذا اخترت تمكين هذه الميزة فسيطلب منك تحديد مستوى التحقق من صحة كلمة المرور. ضع في اعتبارك أنه إذا قمت بإدخال 2 –وهو أقوى مستوى- فسوف تتلقى أخطاء عند محاولة تعيين أي كلمة المرور لا تحتوي على أرقام وحروف كبيرة وصغيرة ورموزا خاصة أو أي كلمة المرور هي موجودة في قواميس كلمات السر الشائعة.

There are three levels of password validation policy:
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 

بعد ذلك سيتم سؤالك عما إذا كنت ترغب في تغيير كلمة المرور للمستخدم الجذر:

Change the password for root ? ((Press y|Y for Yes, any other key for No):

اضغط على Y لتغيير كلمة المرور هذه. إذا مكنت التحقق من صحة كلمة المرور فستظهر لك قوة كلمة المرور للجذر الحالية، وستسأل إذا كنت تريد تغيير كلمة المرور هذه.

New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No):

اضغط Y للمتابعة مع كلمة المرور الجديدة. بالنسبة لبقية الأسئلة اضغط على Y ثم على مفتاح الإدخال في كل مرة. سيؤدي ذلك إلى إزالة بعض المستخدمين المجهولين وقاعدة بيانات الاختبار وتعطيل تسجيلات الجذر عن بعد وتحميل هذه القواعد الجديدة بحيث تجعل MySQL يعمل بالتغييرات التي أجريناها فورا.
ثم قم بإعادة تشغيل خدمة mysql-server للتأكد من أن المثيل (Instance) الخاص بك نفَّذ على الفور التغييرات الأمنية:

sudo service mysql-server restart 

بعد تثبيت وتشغيل MySQL يمكننا تثبيت وإعداد PHP.

الخطوة 3 - تثبيت وإعداد PHP

PHP هو المكون الذي يتكفل بعرض المحتوى الديناميكي. فإنه يمكنه أن يشغل السكريبتات، والاتصال بقواعد بيانات MySQL للحصول على المعلومات، وتسليم المحتوى إلى خادوم الويب لمعالجته ثم عرضه. مرة أخرى استخدم نظام الحزم لتثبيت PHP مع إضافة PHP المسماة mysqli لكي تضيف دعما MySQL:

sudo pkg install php71 php71-mysqli 

Lighttpd لا يحتوي على معالجة للــ PHP مثل بعض خوادم الويب الأخرى، لذلك سوف نستخدم PHP-FPM الذي سيعمل في ” إدارة عمليات FastCGI “. سنقوم بإعداد Lighttpd لاستخدام هذه الوحدة لمعالجة طلبات PHP. قبل أن نفعل ذلك نحن بحاجة إلى إعداد PHP-FPM نفسها. ابدأ بتعديل ملف إعدادات PHP-FPM:

sudo ee /usr/local/etc/php-fpm.d/www.conf 

سنقوم بإعداد PHP-FPM لاستخدام مقبس (socket) يونكس بدلا من منفذ شبكة للاتصال. هذا أكثر أمنا لخدمات التواصل داخل خادوم واحد.
ابحث عن هذا السطر في ملف التهيئة: /usr/local/etc/php-fpm.d/www.conf

 listen = 127.0.0.1:9000 

غيّر هذا السطر لكي يستخدم مقبس php-fpm :

listen = /var/run/php-fpm.sock 

الآن عيّن المالك والمجموعة والأذونات للمقبس الذي سيتم إنشاؤه. ابحث عن هذا الجزء من ملف الإعداد:

...
;listen.owner = www
;listen.group = www
;listen.mode = 0660
...

قم بإلغاء علامة التعليق من أول السطر (;) بحيث يبدو كالتالي:

...
listen.owner = www
listen.group = www
listen.mode = 0660
...

احفظ الملف وأغلقه بعد الانتهاء. بعد ذلك قم بإنشاء ملف php.ini ، هذا الملف سيقوم بإعداد السلوك العام لـ PHP. هناك نوعان من نماذج الملفات: php.ini-production و php.ini-development . سيكون php.ini-production أقرب إلى ما تريده لخادومك، لذا انسخه إلى المسار :

/usr/local/etc/

وهو الموضع الذي تتوقع PHP العثور عليه في إعداداتها:

sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

افتح الملف php.ini الجديد باستخدام محرر النصوص:

sudo ee /usr/local/etc/php.ini

داخل ملف الإعداد حدّد موقع الجزء الخاص بسلوك cgi.fix_pathinfo . ستراه مَلغِيّا ومعينا إلى القيمة 1 افتراضيا:

...
;cgi.fix_pathinfo=1
... 

قم بإزالة الفاصلة المنقوطة لتمكين السطر وتعيين القيمة إلى 0. هذا سيمنع PHP من محاولة تنفيذ أجزاء من المسار إذا لم يتم العثور على الملف الذي تم تمريره إلى العملية. هذا يمكن أن يستخدم من قبل المهاجم لتنفيذ الشيفرات الخبيثة.

...
cgi.fix_pathinfo=0
...

احفظ الملف وأغلق المحرر. ثم مكّن خدمة php-fpm لتبدأ مع بدء تشغيل النظام:

sudo sysrc php_fpm_enable=yes 

ثم شغّل الخدمة:

sudo service php-fpm start 

بعد ذلك لنقم بإعداد Lighttpd لمعالجة تطبيقات PHP.

الخطوة 4 - إعداد Lighttpd لخدمة تطبيقات PHP

في هذه الخطوة سوف نقوم بإعداد Lighttpd لاستخدام FastCGI و PHP-FPM. هذا سيمكّن الــ PHP على Lighttpd ويقدم دعما من PHP سريعا وفعّالا.
أولاً مكّن وحدة FastCGI. افتح ملف إعداد وحدات Lighttpd:

sudo ee /usr/local/etc/lighttpd/modules.conf

حدد موقع القسم التالي:

...
##
## FastCGI (mod_fastcgi)
##
#include "conf.d/fastcgi.conf"
...

أزل الإلغاء عن طريق إزالة الرمز # . إذا لم تجد هذا السطر، فأضفه إلى نهاية الملف، سيصبح هكذا:

...
##
## FastCGI (mod_fastcgi)
##
include "conf.d/fastcgi.conf"
...

احفظ الملف وأغلق المحرر. بعد ذلك قم بتحرير ملف إعداد FastCGI:

sudo ee /usr/local/etc/lighttpd/conf.d/fastcgi.conf 

يحتوي هذا الملف على عدة أمثلة ملغاة. أضف أسطر الإعداد التالية إلى نهاية الملف الذي سيقوم بإعداد Lighttpd لمعالجة ملفات PHP مع FastCGI و PHP-FPM:

..
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/var/run/php-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)...

بعد ذلك مكّن Lighttpd لكي يشتغل مع بداية تشغيل النظام. بهذه الطريقة سوف تبدأ Lighttpd تلقائيا كلما تم إعادة تشغيل خادوم الويب:

sudo sysrc lighttpd_enable=yes

ثم شغّل خدمة lighttpd :

sudo service lighttpd start

الآن بعد أن صار PHP على استعداد للاشتغال، دعونا نتأكد من أن كل شيء يعمل.

الخطوة 5 - اختبار إعداد الخادوم

لاختبار Lighttpd المعدّ حديثا أنشئ أولا المجلد /usr/local/www/data، هذا المجلد هو الذي سيبحث فيه Lighttpd عن صفحات الويب.

sudo ee /usr/local/www/data/info.php

ثم أنشئ info.php في المجلد /usr/local/www/data/ . سيختبر هذا الملف أن PHP يعمل ويتيح لك مراجعة المعلومات حول إعداد خادوم الويب في متصفح الويب:

sudo ee /usr/local/www/data/info.php

أضف هذا الكود إلى الملف:

<?php phpinfo(); ?>

احفظ الملف وأغلق المحرر. قم بزيارة الرابط http://your_server_ip/info.php من متصفحك سوف ترى مظهر الصفحة مثل هذا:


001.png


تعرض هذه الصفحة معلومات حول نظام التشغيل وخادوم الويب وكيفية معالجة خادوم الويب لملفات PHP. كما تتحقق من أن خادوم الويب الخاص بك يمكنه أن يعالج ملفات PHP بشكل صحيح. إذا لم تشاهد هذه الصفحة ، وبدلا من ذلك شاهدت ” Error 503 Service Not Available ” فتأكد من أن خدمة php-fpm اشتغلت بشكل صحيح في الخطوة السابقة.
بعد التحقق من أن الأمور تعمل قم بإزالة الصفحة info.php إذ أنها تعرض معلومات حول الخادوم الخاص بك يجب أن تبقى خاصة:

sudo rm /usr/local/www/data/info.php 

تم الآن إعداد خادوم الويب بالكامل وهو على استعداد للعمل. ما عليك الآن سوى أن تضع ملفاتك في /usr/local/www/data لكي تتم معالجتها.

الخلاصة

الآن بعد أن صار خادوم الويب Lighttpd في الخدمة يمكنك استضافة صفحات الويب والمستندات والملفات الأخرى عليه. لجعل خادوم الويب أكثر أمانا من خلال إضافة إعدادات SSL وغيرها من ميزات الأمان ولمزيد من المعلومات حول Lighttpd قم بزيارة منتديات Lighttpd .

ترجمة -وبتصرّف- للمقال How to Install Lighttpd with MySQL and PHP on FreeBSD 11.0 لصاحبه Brian Hogan





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن