اذهب إلى المحتوى

عبد اللطيف ايمش

الأعضاء
  • المساهمات

    1395
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    63

كل منشورات العضو عبد اللطيف ايمش

  1. ما هي PHP؟ PHP هي اختصارٌ للعبارة PHP: Hypertext Preprocessor؛ وهي معروفةٌ كلغة سكربتات (scripting language) مُفسَّرة (interpreter) من جهة الخادوم تُستعمَل لتطوير الويب؛ وهذا يعني أنَّ PHP تُستعمَل على الخادوم لتوليد صفحات الويب الديناميكية. ما يُقصَد بصفحات الويب الديناميكية هي تلك الصفحات التي تُنشَأ أو تُعدَّل من الخادوم قبل إرسالها إلى العميل. إن لم تكن تعرف ما هو الخادوم وما هو العميل، فافتح لسانًا جديدًا في متصفح الويب الخاص بك واكتب فيه academy.hsoub.com، وبهذا يُصبِح متصفحك "عميلًا" (client) والمكان الذي تأتي منه صفحة الويب المطلوبة هو "الخادوم" (خادوم الويب أو web server). يمكن تضمين سكربتات PHP في مستندات HTML، وهي لغةٌ سهلة التعلم، وتشبه بنيتها كثيرًا البنية القاعدية للغات C و Java و Perl. التثبيت يمكنك بسهولة تثبيت WAMP (على نظام ويندوز) أو LAMP (على لينُكس) أو حزمة البرمجيات XAMPP (التي تعمل على ويندوز، ولينُكس، وماك) وذلك تبعًا لنظام تشغيل حاسوبك، راجع مقال كيفية تنصيب ووردبريس محليا باستخدام MAMP لمزيدٍ من المعلومات عن MAMP. تجربة الأمثلة يمكنك تجربة سكربتات PHP عبر تثبيت خادم أباتشي مع دعم PHP يدويًا أو عبر تثبيت حزم جاهزة كالتي ذكرناها آنفًا، لكن توفِّر PHP لك طريقتين لتنفيذ الملفات: عبر سطر الأوامر، وعبر الخادوم المدمج مع PHP؛ وسنشرح كلا الطريقتين في هذا الدرس. استخدام الخادوم المدمج وفَّرت PHP من الإصدار 5.4.0 خادومًا مدمجًا معها يُسهِّل تجربة السكربتات دون عبء تثبيت خادوم ويب كامل مثل أباتشي وضبطه؛ لكن الغرض منه هو تجربة البرامج فقط وليس مصممًا للاستعمال كخادوم إنتاجي على الشبكة. ستُخدَّم الملفات الموجودة في مجلد العمل الحالي عبر ذاك الخادوم المدمج، الذي يُشغَّل كالآتي: cd ~/public_html php -S localhost:8000 PHP 5.5.9-1ubuntu4.5 Development Server started at Fri Jan 8 13:58:31 2016 Listening on http://localhost:8000 Document root is /home/user/public_html Press Ctrl-C to quit. الأمر php -S localhost:8000 سيشغِّل الخادوم في مجلد العمل الحالي (‎~/public_html) وسيكون متاحًا للوصول من الجهاز المحلي فقط، وسيعمل على المنفذ 8000؛ إن أردت أن يعمل على البطاقات الشبكية، فضع 0.0.0.0 بدلًا من localhost؛ اضغط على Ctrl+C لإيقاف الخادوم. أنشِئ الملف test.php وضع فيه المحتويات الآتية لتجربه: <?php // هذه تجربة لتنفيذ سكربتات PHP من الخادوم المدمج echo "test"; ?> افتح الآن المتصفح وأدخِل http://localhost:8000/test.php في شريط العنوان، وستحصل على نتيجة مشابهة لما يلي: يجدر بالذكر أنَّه بإمكانك تخديم صفحات HTML الثابتة عبر هذا الخادوم، وليس بالضرورة أن تكون الصفحة بلاحقة PHP. ملاحظة: اختر رقمًا أكبر من 1024 كرقم للمنفذ الذي سيستعمله الخادوم، كي لا تحتاج إلى امتيازات إدارية لتشغيله. استعمال سطر الأوامر من البدهي أن تستطيع تنفيذ شيفرات PHP (كغيرها من لغات السكربتات) من سطر الأوامر؛ كل ما عليك فعله هو استدعاء السكربت من الأمر PHP كالآتي: php ~/public_html/test.php أو يمكن تضمين ما يسمى shebang في الأنظمة الشبيهة بيونكس (كنظامَي لينُكس وماك) في بداية السكربت ليبدو كما يلي: #!/usr/bin/php <?php // هذه تجربة لتنفيذ سكربتات PHP من سطر الأوامر echo "test"; ?> وعندها تستطيع تنفيذ السكربت مباشرةً دون استدعاء مفسر PHP كما يلي: ~/public_html/test.php ملاحظة: لا تنسَ إعطاء الملف امتيازات التنفيذ قبل محاولة تنفيذه: chmod +x ~/public_html/test.php يمكن أيضًا تنفيذ الشيفرات تفاعليًا، عبر تنفيذ الأمر php -a ثم كتابة الأوامر تفاعليًا كما يظهر في الصورة الآتية (لاحظ أنه بإمكانك استعمال زر tab لإكمال أسماء الدوال والأصناف وغيرها): البنية القاعدية للغة لنأخذ مثالًا بسيطًا لنشرح فيه القواعد الأساسية للكتابة. <?php /* author: Abd Allatif Eymsh website: academy.hsoub.com version: 1.0 date: 22 12 2015 */ // هذا تعليقٌ ذو سطرٍ وحيد // يتم تجاهل التعليقات من المفسِّر $variable = 'variable'; // نستعمل عبارة echo لطباعة الجمل echo "string"; echo $variable; ?> انسخ ما سبق والصقه في ملفٍ باسم index.php في مجلد htdocs (في نظام ويندوز) أو www (في لينُكس) أو أي مكان تريده إن كنت تستعمل الخادوم المدمج، ثم افتح ذاك الملف في متصفح الويب (بعد أن تُشغِّل الخادوم) وستحصل على النتيجة "stringvariable"، لنُقسِّم الآن الملف ولنشرح بنيته. تُكتَب شيفرات PHP في ملفٍ بامتداد ‎.php تُكتَب شيفرات PHP بين وسمَيّ البداية ‎<?php والنهاية ‎?>‎ وكما في لغتَيّ C أو Perl، تتطلب PHP أن تنتهي التعليمات البرمجية بفاصلة منقوطة ";" يُشير الرمز $ إلى متغير (variable)، سنتحدث عن المتغيرات في هذا الدرس لاحقًا تكافئ علامات الاقتباس المفردة والمزدوجة بعضها (لكنها ليس لها نفس المعنى تمامًا، سنشرح الاختلاف البسيط لاحقًا) يُستعمَل الأمر echo لطباعة البيانات التعليقات التعليقات جزءٌ من البرنامج لا ينفِّذها مُفسِّر اللغة؛ وهي ملاحظاتٌ لكي يتذكر القارئ أو يفهم أمرًا برمجيًا ما لاحقًا. وهنالك نوعان من التعليقات: التعليقات ذات السطر الوحيد: وهذه التعليقات قصيرةٌ تمتد لسطرٍ وحيدٍ فقط، وتبدأ عادةً بالرمز "//"، ولا بأس أن يكون قبلها تعليماتٌ برمجية، لكن التعليق سينتهي مع نهاية السطر؛ ويستحق أن نذكر أننا نستطيع أن نبدأ التعليقات ذات السطر الوحيد برمز المربع (#) بدلًا من شرطتين مائلتين. التعليقات متعددة الأسطر: وهي تعليقاتٌ طويلة، قد تمتد لأكثر من سطر؛ وتوضع بين علامة البداية ‎/*‎ وعلامة النهاية ‎*/‎، ومن استعمالات هذا النوع من التعليقات أيضًا هي تعطيل جزء من الشيفرة ﻷغراض التجربة. يمكنك أن ترى نوعَيّ التعليقات السابقين في المثال أعلاه. المتغيرات تسمح لك المتغيرات بتخزين ومعالجة البيانات في السكربتات، ويمكنك اعتبارها شبيهةً بالمتغيرات التي تستعملها في الرياضيات؛ إذ أنَّ المتغير -ببساطة- هو حاويةٌ تحوي قيمةً معيّنة؛ أُطلِقَت تسمية "المتغيرات" عليها لأنها القيمة المُسنَدة إليها قد تتغير أثناء تنفيذ السكربت، وقابلية التغير تلك تجعل من المتغيرات أداةً مفيدةً جدًا. وكما ذكرنا سابقًا، يبدأ اسم المتغير بالإشارة $. هذه بعض الأمثلة عن أسماءٍ صحيحةٍ للمتغيرات: ‎$simple ‎$_start_with_underscore ‎$_includes_numbers_23 ‎$_includes_UPPERCASE_2 ‎$_23_it_is_valid ملاحظة: لا يمكنك بدء اسم المتغير برقمٍ كالاسم الآتي ‎$2_invalid_variable_name، ولا يمكن أيضًا أن تستعمل الشرطة "-" في اسمه. أنواع البيانات أنواع البيانات (data types) هي أنواع المتغيرات في PHP؛ وأنواعُ البياناتِ البسيطة في PHP هي: الأعداد الصحيحة (integers) الأعداد ذات الفاصلة (floats) السلاسل النصيّة (strings) القيم المنطقية البوليانية (صح [true] أو خطأ [false])؛ وهنالك أنواع بياناتٍ أخرى مثل الكائنات (objects) والمصفوفات (arrays) سنتحدث عنها لاحقًا في هذه السلسلة. ملاحظة: إن كانت لديك معلوماتٌ سابقة عن إحدى لغات البرمجة التي تُحدِّد نوع البيانات المُخزَّنة في المتغيرات (أي strongly typed)، فاعلم أنَّ PHP هي لغةٌ لا تتطلب منك تحديد النوع (أي أنها loosely typed)؛ فلا تحتاج إلى أن تخبر اللغة ما نوع البيانات التي ستُخزَّن في المتغير. الثوابت الثابت هو مُعرِّف (أي اسم) يحمل قيمةً معيّنة، وكما يوحي اسمه، لن تتغير قيمته أثناء تنفيذ السكربت بعد أن تُعرَّف لأول مرة، واسمه حساسٌ لحالة الأحرف، وتُستعمَل الأحرف الكبيرة فيه عادةً؛ وله نفس قواعد تسمية المتغيرات (لا يجوز أن يبدأ برقم، أو يحتوي على شرطة…)، لكن لا يوضع الرمز $ قبله. <?php /* author: Abd Allatif Eymsh website: academy.hsoub.com version: 1.0 date: 22 12 2015 */ // هذا تعليقٌ ذو سطرٍ وحيد $variable = 'variablename'; echo "string"; echo $variable; define( "MY_CONSTANT", "19" ); define('PI', 3.14); echo PI; echo MY_CONSTANT; ?> تكون PI و MY_CONSTANT ثوابت في المثال السابق. ملاحظة: يمكن استعمال الكلمة المحجوزة const لتعريف الثوابت بدلًا من الدالة define()‎ في إصدار PHP 5.3 وما بعده كما يلي: <?php // تعمل في إصدار PHP 5.3 const CONSTANT = 'Hello World'; echo CONSTANT; ?> لكن لا يمكن تعريف الثوابت باستخدام const داخل الدوال أو الحلقات، لأنها تُعرَّف في وقت التصريف (compile-time). المعاملات يأخذ المعامل قيمةً أو أكثر (أو "تعبيرًا" [expressions] كما نقول في الاصطلاحات البرمجية) ويُنتِج قيمةً أخرى. يمكن أن تُجمَّع المعاملات بناءً على عدد القيم التي تأخذها، فمثلًا المعاملات الأحادية (unary operators) تأخذ قيمةً واحدةً فقط (مثل معامل الزيادة الذي شرحناها أدناه)، والمعاملات الثنائية تأخذ قيمتين مثل المعاملات الحسابية البسيطة (الجمع والطرح والضرب…) وتُصنَّف أغلبية المعاملات في PHP ضمن هذا القسم؛ وهنالك معامل ثلاثي وحيد يأخذ ثلاث قيم سنشرحه في درسٍ لاحق. هنالك عددٌ كبيرٌ من المعاملات في لغة PHP، أهمها: المعاملات الحسابية الإسناد معاملات الأعداد الثنائية (Bitwise) معاملات المقارنة الزيادة أو الإنقاص معامل السلاسل النصية المعاملات الحسابية هي تلك المعاملات التي تستعملها في الحسابات الرياضية، مثل الجمع (+)، والطرح (-)، والضرب (*)، والقسمة (/)، وباقي القسمة (%)؛ مثال: $a = 4 + 5; // + هو معامل حسابي لاحظ الفرق بين المعاملين / و %، إذ أنَّ / هو معامل القسمة بينما % هو باقي القسمة؛ أي ‎8 /5‎ = 1.6 ‎‎، بينما ‎8 % 5 = 3 (إذ أنَّ ‎8 = 5 *1 +3، فإن باقي القسمة هو 3). أما معامل الإسناد، فيسند القيم إلى المتغيرات، وهو إشارة = كما في المثال الآتي: ‎$a = 4;‎. تجري المعاملات الثنائية العمليات الحسابية على البتات الموجودة في الأعداد الصحيحة، وهي & ‏(and)، و | ‏(or)، و >> (الإزاحة نحو اليسار)، و << (الإزاحة نحو اليمين)، و ^ ‏(XOR)، و ~ (NOR)؛ مثال على ذلك هو ‎14 & 3 = 2‎، لأنَّ ‎00001110 & 00000011 = 00000010‎. أما معاملات المقارنة، فهي -كما يدل اسمها- تقارن بين قيمتين؛ يُظهِر الجدول الآتي معاملات المقارنة الشائعة: المثال اسم المعامل النتيجة ‎$a == $b المساواة TRUE إن كان المتغير ‎$a مساويًا بالقيمة إلى المتغير ‎$b ‎$a === $b مطابقة TRUE إن كان المتغير ‎$a مساويًا المتغير ‎$b بالقيمة والنوع ‎$a != $b ‎$a <> $b عدم مساواة TRUE إن لم يكن المتغير ‎$a مساويًا للمتغير ‎$b ‎$a !== $b عدم مطابقة TRUE إن لم يكن المتغير ‎$a مساويًا للمتغير ‎$b بالقيمة أو بالنوع ‎$a < $b أصغر من TRUE إن كان المتغير ‎$a أصغر تمامًا من المتغير ‎$b ‎$a > $b أكبر من TRUE إن كان المتغير ‎$a أكبر تمامًا من المتغير ‎$b ‎$a <= $b أصغر من أو يساوي TRUE إن كان المتغير ‎$a أصغر أو يساوي المتغير ‎$b ‎$a >= $b أكبر من أو يساوي TRUE إن كان المتغير ‎$a أكبر أو يساوي المتغير ‎$b تستعمل معاملات الزيادة أو الإنقاص لزيادة أو إنقاص قيمة المتغير بقيمة 1. المثال شرحه ‎++$x;‎ إضافة القيمة 1 إلى المتغير ‎$x ثم إعادة القيمة النهائية ‎$x++;‎ إعادة قيمة المتغير ‎$x ثم إضافة 1 ‎–-$x;‎ إنقاص القيمة 1 من المتغير ‎$x ثم إعادة القيمة النهائية ‎$x–-;‎ إعادة قيمة المتغير ‎$x ثم إنقاص 1 <?php echo "Postincrement"; $a = 5; echo "Should be 5: " . $a++; echo "Should be 6: " . $a; echo "Preincrement"; $a = 5; echo "Should be 6: " . ++$a; echo "Should be 6: " . $a; echo "Postdecrement"; $a = 5; echo "Should be 5: " . $a--; echo "Should be 4: " . $a; echo "Predecrement"; $a = 5; echo "Should be 4: " . --$a; echo "Should be 4: " . $a; ?> معامل السلاسل النصية (.) يستعمل لجمع سلسلتين نصيتين أو متغيرين مع بعضهما بعضًا؛ انظر إلى الشيفرة الآتي: <?php $a = 4; $q = 5; $c = $a.$q; // المتغيران $a و $b أصبحا مدمجين مع بعضهما echo $c; $n = 'myname'; echo "string ".$n.' $n inserted'; // دمج ثلاث سلاسل نصيّة ?> حاول أن تتدَّرب على تعريف وطباعة قيمة المتغيرات الخاصة بك، وأن تستعمل مختلف المعاملات السابقة عليها. المصادر مقال Introduction to PHP لصاحبه Harish Kumar. صفحة Operators من دليل PHP، وغيرها.
  2. سنناقش في هذا الدرس كيفية تثبيت وضبط خادوم IRC‏ (ircd-irc2) وسنناقش أيضًا كيفية تثبيت وضبط خادوم المراسلة الفورية Jabber. خادوم IRC يحتوي مستودع أوبنتو على العديد من خواديم IRC، يشرح هذا القسم كيفية تثبيت وضبط خادوم IRC الأصلي ircd-irc2. التثبيت أدخِل الأمر الآتي في الطرفية لتثبيت خادوم ircd-irc2: sudo apt-get install ircd-irc2 يُخزَّن ملف الضبط في مجلد ‎/etc/ircd، والتوثيق متوفرٌ في مجلد ‎/usr/share/doc/ircd-irc2. الضبط يمكن أن تُضبَط إعدادات IRC بملف الضبط ‎/etc/ircd/ircd.conf؛ يمكنك ضبط اسم مضيف IRC بتعديل السطر الآتي: M:irc.localhost::Debian ircd default configuration::000A رجاءً تأكد أنك تضيف أسماء DNS البديلة لاسم مضيف IRC؛ على سبيل المثال، إذا ضبطت irc.liveciper.com كاسم مضيف IRC؛ فتأكد أن irc.liveciper.com يُحَّل في خادوم أسماء المضيفين عندك؛ لا يتوجب أن يكون اسم مضيف IRC هو نفسه اسم مضيف الخادوم. يمكن ضبط معلومات مدير IRC بتعديل السطر الآتي: A:Organization, IRC dept.:Daemon <ircd@example.irc.org>:Client Server::IRCnet: عليك إضافة أسطر خاصة لضبط قائمة بالمنافذ التي يستمع إليها IRC؛ ولضبط «الأوراق الاعتمادية للمشغل»، ولتضبط الاستيثاق من العميل ...إلخ. رجاءً ارجع إلى المثال عن ملف الضبط الموجود في ‎/usr/share/doc/ircd-irc2/ircd.conf.example.gz. لافتة IRC هي الرسالة التي تظهر في عميل IRC عندما يتصل إلى الخادوم، ويمكن أن تُضبَط في الملف ‎/etc/ircd/ircd.motd. بعد إجراء التعديلات الضرورية لملف الضبط، تستطيع إعادة تشغيل خادوم IRC بتنفيذ الأمر الآتي: sudo service ircd-irc2 restart مصادر ربما تكون مهتمًا بإلقاء نظرة إلى خواديم IRC الأخرى المتوفرة في مستودعات أوبنتو، التي تتضمن ircd-ircu، و ircd-hybrid. ارجع إلى IRCD FAQ للمزيد من التفاصيل حول خادوم IRC. خادوم المراسلة الفورية Jabber إن Jabber هو بروتوكول مراسلة فورية مبني على XMPP (معيار مفتوح للمراسلة الفورية) ويُستخدَم بواسطة عدِّة برمجيات مشهورة. يشرح هذا القسم طريقة إعداد خادوم Jabberd 2 على شبكة LAN محلية؛ يمكن أن يُعدَّل هذا الضبط لتوفير خدمات تبادل الرسائل فوريًا عبر الإنترنت. التثبيت لتثبيت jabberd2، أدخِل الأمر الآتي في الطرفية: sudo apt-get install jabberd2 الضبط هنالك ملفَيّ ضبط XML يُستخدَمان لضبط Jabberd2 لاستيثاق Berkeley DB من المستخدم؛ هذا شكل بسيط جدًا من أشكال الاستيثاق؛ لكن يمكن ضبط Jabberd2 لكي يَستخدم LDAP، أو MySQL، أو PostgreSQL ...إلخ. للاستيثاق من المستخدم. أولًا، عدِّل الملف ‎/etc/jabberd2/sm.xml مغيّرًا: <id>jabber.example.com</id> ملاحظة: استبدل jabber.example.com باسم المضيف أو بمعرِّف ID آخر لخادومك. الآن في قسم <storage>، عدِّل قيمة <driver> إلى: <driver>db</driver> ثم في ملف ‎/etc/jabberd2/c2s.xml، عدِّل في قسم <local>: <id>jabber.example.com</id> وعدِّل أيضًا <module> في قسم <authreg> إلى: <module>db</module> في النهاية، أعد تشغيل خدمة jabberd2 لتفعيل الضبط الجديد: sudo service jabberd2 restart يمكنك الآن الاتصال إلى الخادوم باستخدام عميل Jabber مثل بيدجن (Pidgin) على سبيل المثال. ملاحظة: ميزة استخدام Berkeley DB لمعلومات المستخدم هو أنها لا تحتاج إلى صيانة إضافية بعد ضبطها؛ إذا أردت المزيد من التحكم في حسابات المستخدمين، فمن المستحسن استخدام آلية استيثاق أخرى. مصادر يحتوي موقع Jabberd2 على المزيد من التفاصيل حول ضبط Jabberd2. للمزيد من خيارات الاستيثاق، راجع «Jabberd2 Install Guide». أيضًا، هنالك بعض المعلومات في صفحة ويكي أوبنتو «Setting Up Jabber Server». ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Chat Applications. حقوق الصورة البارزة: Designed by Freepik.
  3. واحدة من أكبر المشاكل مع البريد الإلكتروني اليوم هي مشكلة البريد غير المرغوب فيه (Unsolicited Bulk Email أو اختصارًا UBE) المعروف أيضًا بالبريد العشوائي (SPAM)؛ قد تحتوي هذه الرسائل أيضًا على فيروسات أو أشكالٍ أخرى من البرمجيات الخبيثة؛ ووفقًا لبعض التقارير، تشغل هذه الرسائل حيزًا كبيرًا من البريد الإلكتروني المُرسَل عبر الإنترنت. سيشرح هذا القسم طريقة دمج Amavisd-new، و Spamassassin، و ClamAV مع عميل نقل البريد Postfix؛ يمكن أيضًا التحقق من البريد عبر تمريره خلال مرشحات خارجية؛ هذه المرشحات يمكنها في بعض الأحيان تحديد إذا ما كانت الرسالةُ عشوائيةً دون الحاجة إلى معالجتها ببرمجيات تستهلك الموارد؛ أشهر هذه المرشحات هي opendkim و python-policyd-spf. Amavisd-new هو برنامج مُغلِّف (wrapper) يستطيع استدعاء أي عدد من برامج ترشيح المحتوى لاستكشاف الرسائل العشوائية، وللتصدي للفيروسات ...إلخ. يستخدم Spamassassin آلياتٍ عدِّة لترشيح البريد اعتمادًا على محتوى الرسالة. ClamAV هو مضاد فيروسات مفتوح المصدر. يوفر opendkim ما يسمىMilter (أي Sendmail Mail Filter) إلى المعيار القياسي DKIM (أي DomainKeys Identified Mail). يُفعِّل python-policyd-spf تحقق SPF (اختصار للعبارة Sender Policy Framework) مع Postfix. هذه هي آلية جمع القطع السابقة: تُقبَل رسالة البريد الإلكتروني من Postfix. تُمرَّر الرسالة إلى أي مرشحات خارجية مثل opendkim و python-policyd-spf في هذه الحالة. ثم يُعالِج Amavisd-new الرسالة. ثم يُستخدَم ClamAV لفحص الرسالة؛ إذا حوت الرسالة على فيروس، فسيرفضها Postfix. ستُحلَّل الرسائل «النظيفة» من Spamassassin للتحقق إذا كانت الرسالة هي رسالة عشوائية؛ ثم يضيف Spamassassin أسطر X-Header ليسمح للبرمجية Amavisd-new بإكمال معالجة الرسالة. على سبيل المثال، إذا كان «رصيد العشوائية» لرسالة ما أكبر من خمسين بالمئة، فيمكن أن تُزال الرسالة تلقائيًا من الطابور (queue) حتى دون إعلام المتلقي؛ طريقة أخرى للتعامل مع هذه الرسائل هي إيصالهم لعميل مستخدم البريد (MUA) والسماح للمستخدم بأن يتعامل مع الرسالة بما يراه مناسبًا. التثبيت راجع درس Postfix لمعلوماتٍ تفصيلية عن تثبيت Postfix. أدخل الأمرين الآتيين في سطر الأوامر لتثبيت بقية البرمجيات: sudo apt-get install amavisd-new spamassassin clamav-daemon sudo apt-get install opendkim postfix-policyd-spf-python هنالك بعض الحزم الأخرى التي يمكن أن تُدمَج مع Spamassassin لاكتشاف أفضل للرسائل العشوائية: sudo apt-get install pyzor razor بالإضافة إلى برمجيات الترشيح الرئيسية، سنحتاج إلى أدوات الضغط لنعالج بعض مرفقات البريد: sudo apt-get install arj cabextract cpio lha nomarch pax rar unrar unzip zip ملاحظة: إذا لم يُعثَر على بعض الحزم السابقة، فتأكد من تفعيل مستودع multiverse في ملف ‎/etc/apt/sources.list. إذا أجريتَ تعديلاتٍ على ذاك الملف، فتأكد من تحديث فهرس الحزم بتنفيذ الأمر sudo apt-get update قبل محاولة التثبيت مرةً أخرى. الضبط علينا الآن ضبط كل شيء مع بعضه بعضًا لترشيح البريد. ClamAV السلوك الافتراضي لبرمجية ClamAV تناسب احتياجاتنا؛ للمزيد من خيارات الضبط الخاصة ببرمجية ClamAV، راجع ملفات الضبط في ‎/etc/clamav. أضف المستخدم clamav إلى المجموعة amavis لكي يملك Amavisd-new الوصول الملائم لتفحص الملفات: sudo adduser clamav amavis sudo adduser amavis clamav Spamassassin يعثر Spamassassin تلقائيًا على المكونات الإضافية ويستخدمها إن توفرت؛ هذا يعني أنه لا حاجة لضبط pyzor و razor. عدِّل ملف الضبط ‎/etc/default/spamassassin لتفعيل عفريت Spamassassin، عدِّل قيمة ENABLED=0 إلى: ENABLED=1 ثم ابدأ تشغيل العفريت: sudo service spamassassin start Amavisd-new أولًا، فعِّل استكشاف الرسائل العشوائية ومضاد الفيروسات في Amavisd-new بتعديل الملف ‎/etc/amavis‎/conf.d/15-content_filter_mode: use strict; # You can modify this file to re-enable SPAM checking through spamassassin # and to re-enable antivirus checking. # # Default antivirus checking mode # Uncomment the two lines below to enable it # @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # Default SPAM checking mode # Uncomment the two lines below to enable it # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # insure a defined return قد تكون إعادة معالجة الرسائل العشوائية فكرةً سيئةً لأن العنوان المُعاد مزيفٌ غالبًا؛ ربما ترغب بتعديل الملف ‎/etc/amavis/conf.d/20-debian_defaults لتضبط ‎$final_spam_destiny إلى D_DISCARD بدلًا من D_BOUNCE، كما يلي: $final_spam_destiny = D_DISCARD; وربما ترغب بتعديل قيمة الخيارات الآتية لتعليم (flag) المزيد من الرسائل كرسائل عشوائية: $sa_tag_level_deflt = -999; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 6.0; # add 'spam detected' headers at that level $sa_kill_level_deflt = 21.0; # triggers spam evasive actions $sa_dsn_cutoff_level = 4; # spam level beyond which a DSN is not sent إذا كان اسم المضيف للخادوم (hostname) مختلفًا عن سجل MX للنطاق، فربما تحتاج إلى أن تضبط الخيار ‎$myhostname يدويًا؛ وإذا كان الخادوم يستلم البريد لأكثر من نطاق، فيجب تخصيص الخيار ‎@local_domains_acl أيضًا، وذلك بتعديل الملف ‎/etc/amavis/conf.d/50-user: $myhostname = 'mail.example.com'; @local_domains_acl = ( "example.com", "example.org" ); إذا أردت تغطية أكثر من نطاق، فعليك استخدام ما يلي في ‎/etc/amavis/conf.d/50-user: @local_domains_acl = qw(.); يجب إعادة تشغيل Amavisd-new بعد الضبط: sudo service amavis restart DKIM Whitelist يمكن ضبط Amavisd-new ليضيف عناوين من نطاقات معينة مع مفاتيح نطاق (Domain Keys) صالحة إلى القائمة البيضاء (Whitelist)؛ هنالك بعض النطاقات المضبوطة مسبقًا في ‎/etc/amavis/conf.d/40-policy_banks: هذه بعض الأمثلة لضبط القائمة البيضاء لنطاق: التعليمة ‎'example.com' => 'WHITELIST',‎: ستضيف أي عنوان من النطاق "example.com" إلى القائمة البيضاء. التعليمة ‎'‎.example.com' => 'WHITELIST‎'‎,‎: ستضيف أي عنوان من أي نطاق فرعي للنطاق "example.com" ويملك توقيع صالح (valid signature) إلى القائمة البيضاء. التعليمة ‎'‎.example.com/@example.com' => 'WHITELIST',‎: إضافة أي عنوان من النطاقات الفرعية للنطاق "example.com" الذي يستخدم توقيع النطاق الأب "example.com". التعليمة ‎'‎./@example.com' => 'WHITELIST',‎: يضيف العناوين من توقيع صالح من "example.com" هذا يستخدم عادةً لمجوعات النقاش التي توقَّع رسائلها. يمكن أن يملك نطاقٌ واحد أكثر من ضبط للقائمة البيضاء؛ عليك إعادة تشغيل amavisd-new بعد تعديل الملف: sudo service amavis restart ملاحظة: في هذا السياق؛ عندما يُضاف النطاق إلى القائمة البيضاء، فإن الرسالة لن تحصل على أي فحص من الفيروسات أو الرسائل العشوائية؛ ربما يكون أو لا يكون هذا هو السلوك الذي ترغبه لهذا النطاق. Postfix أدخل ما يلي في مِحَث الطرفية لدمج Postfix: sudo postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024' ثم عدِّل الملف ‎/etc/postfix/master.cf وأضف الأسطر الآتية إلى نهاية الملف: smtp-amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters أيضًا أضف السطرين الآتيين مباشرةً بعد خدمة النقل «pickup»: -o content_filter= -o receive_override_options=no_header_body_checks هذا سيمنع الرسائل المُولَّدة للتبليغ عن الرسائل العشوائية من تصنيفها كرسائل عشوائية؛ أعد الآن تشغيل Postfix: sudo service postfix restart يجب الآن أن يكون ترشيح المحتوى والعثور على الفيروسات مُفعَّلًا. الاختبار أولًا، اختبر أن Amavisd-new SMTP يستمع: telnet localhost 10024 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready ^] وفي ترويسة (header) الرسائل التي تُمرَّر عبر مُرشِّح المحتوى، يجب أن تُشاهِد: X-Spam-Level: X-Virus-Scanned: Debian amavisd-new at example.com X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0 tests=AWL, BAYES_00 X-Spam-Level: ملاحظة: قد تختلف النتائج المعروضة عمَّا سيظهر عندك، لكن من المهم وجود القيدين X-Virus-Scanned و X-Spam-Status. استكشاف الأخطاء أفضل طريقة لمعرفة سبب حدوث مشكلة ما هي مراجعة ملفات السجل. لتعليماتٍ عن التسجيل في Postfix راجع الدرس الخاص به. يستخدم Amavisd-new البرمجية Syslog لإرسال الرسائل إلى ‎/var/log/mail.log؛ يمكن زيادة مقدار التفاصيل بإضافة الخيار ‎$log_level إلى ملف ‎/etc/amavis/conf.d/50-user، وضبط القيمة من 1 إلى 5: $log_level = 2; ملاحظة: عند زيادة درجة الإسهاب لسجل Amavisd-new، فسيزداد ناتج سجل Spamassassin أيضًا. يمكن زيادة مستوى التسجيل لبرمجية ClamAV بتعديل الملف ‎/etc/clamav/clamd.conf وضبط الخيار الآتي: LogVerbose true افتراضيًا، سيُرسِل ClamAV رسائل السجل إلى ‎/var/log/clamav/clamav.log. ملاحظة: بعد تغيير إعدادات التسجيل للبرمجيات، تذكر أن تعيد تشغيل الخدمة لكي تأخذ الإعدادات الجديدة مفعولها؛ أيضًا تذكر أن تعيد القيمة الافتراضية بعد أن تحل المشكلة. مصادر للمزيد من المصادر حول ترشيح البريد، راجع الوصلات الآتية: توثيق Amavisd-new. توثيق ClamAV وويكي ClamAV. ويكي Spamassassin. صفحة Pyzor الرئيسية. صفحة Razor الرئيسية. DKIM.org Postfix Amavis New أيضًا، تستطيع أن تسأل أسئلتك في قناة ‎#ubuntu-sever على خادوم freenode. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Mail Filtering.
  4. Dovecot هو عميل تسليم البريد، مكتوبٌ مع اعتبار الحماية من الأولويات؛ ويدعم صيغتي صندوق البريد الرئيسيتين: mbox أو Maildir؛ يشرح هذا القسم كيفية ضبطه كخادوم imap أو pop3. التثبيت نفِّذ الأمر الآتي في الطرفية لتثبيت dovecot: sudo apt-get install dovecot-imapd dovecot-pop3d الضبط عدِّل الملف ‎ /etc/dovecot/dovecot.confلضبط dovecot، يمكنك اختيار البروتوكول الذي تريد استخدامه، حيث يمكن أن يكون pop3 أو pop3s (أي pop3 الآمن)، أو imap، أو imaps (أي imap الآمن)؛ شرح عن هذه البروتوكولات خارج عن نطاق هذا الدرس، للمزيد من المعلومات راجع مقالات ويكيبيديا عنهم: POP3 ،IMAP. بروتوكولَي IMAPS و POP3S أكثر أمانًا من بروتوكولَي IMAP و POP3 لأنهما يستخدمان تشفير SSL للاتصال؛ بعد أن تختار البروتوكول، فعليك تعديل السطر الآتي في الملف ‎/etc/dovecot/dovecot.conf: protocols = pop3 pop3s imap imaps ثم اختر صندوق البريد الذي تريد استخدامه، حيث يدعم Dovecot الصيغتين maildir و mbox؛ هاتان هما أشهر صيغتين مستعملتين للبريد؛ يملك كلاهما مزايا خاصةً به، ومشروحةً في موقع Dovecot. بعد أن تختار نوع صندوق البريد، عدِّل الملف ‎ /etc/dovecot/conf.d/10-mail.confوغيِّر السطر الآتي: mail_location = maildir:~/Maildir # (for maildir) أو mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u # (for mbox) ملاحظة: يجب عليك ضبط عميل نقل البريد (MTA) لنقل البريد الوارد إلى هذا النوع من صندوق البريد إذا كان مختلفًا عمَّا ضبطته. بعد الانتهاء من ضبط dovecot، يجب عليك إعادة تشغيل عفريت dovecot لتجرِّب عمل الخادوم: sudo service dovecot restart إذا فعَّلت imap، أو pop3؛ فيجب عليك أيضًا تجربة تسجيل الدخول باستخدام الأوامر telnet localhost pop3 أو telnet localhost imap2؛ لترى إن شاهدت شيئًا شبيهًا بما يلي، فستعلم أن التثبيت والإعداد قد نجحا: user@localbox:~$ telnet localhost pop3 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. +OK Dovecot ready. ضبط Dovecot SSL لضبط Dovecot ليستخدم SSL، تستطيع أن تحرِّر الملف ‎/etc/dovecot/conf.d/10-ssl.conf وتُعدِّل الأسطر الآتية: ssl = yes ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = </etc/ssl/private/dovecot.pem يمكنك الحصول على شهادة SSL من سلطة إصدار الشهادات أو إنشاء شهادة SSL موقعة ذاتيًا؛ الخيار الأخير هو خيار جيد للبريد الإلكتروني، ﻷن عملاء SMTP نادرًا ما يشتكون حول الشهادات الموقعة ذاتيًا؛ رجاءً عُد إلى درس الشهادات لمزيدٍ من المعلومات حول إنشاء شهادة SSL موقعة ذاتيًا؛ يجب عليك الحصول على ملف مفتاح وملف الشهادة بعد إنشائك للشهادة؛ رجاءً انسخهما إلى المكان المُشار إليه في ملف الضبط ‎/etc/dovecot/conf.d‎/10-ssl.conf. ضبط الجدار الناري لخادوم البريد الإلكتروني عليك ضبط الجدار الناري للسماح للاتصالات على المنافذ الضرورية للوصول إلى خادوم البريد من حاسوبٍ آخر، وهي: IMAP‏ – 143 IMAPs‏ – 993 POP3‏ – 110 POP3s‏ – 995 مصادر راجع موقع Dovecot لمزيدٍ من المعلومات. أيضًا صفحة ويكي أوبنتو «Dovecot» فيها تفاصيلٌ إضافية. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: DOvecot Server.
  5. Mailman هو برمجية مفتوحة المصدر لإدارة نقاشات البريد الإلكتروني وقوائم الأخبار الإلكترونية؛ وتعتمد العديد من قوائم البريد المفتوحة المصدر (بما فيها قوائم بريد أوبنتو) على Mailman كبرمجية قوائم البريد؛ حيث أنها قوية وسهلة التثبيت والإدارة. التثبيت يوفر Mailman واجهة ويب للمدراء والمستخدمين؛ مستخدمًا خادوم بريد خارجي لإرسال واستقبال الرسائل؛ حيث يعمل عملًا ممتازًا مع خواديم البريد الآتية: Postfix Exim Sendmail Qmail سنتعلم طريقة تثبيت وضبط Mailman مع خادوم ويب أباتشي ومع أحد خادومَي البريد Postfix أو Exim؛ إذا أردت استخدام Mailman مع خادوم بريد مختلف، فرجاءً عُد إلى قسم المصادر لمزيدٍ من المعلومات. ملاحظة: تحتاج إلى خادوم بريد وحيد فقط، و Postfix هو عميل نقل البريد الافتراضي في أوبنتو. Apache2 لتثبيت apache2، راجع درس إعداد خادوم أباتشي لمزيدٍ من التفاصيل. Postfix راجع درس Postfix لتعليمات عن تثبيت وضبط Postfix. Exim4 لتثبيت Exim4، راجع الدرس الذي شرحنا ذلك فيه. تُخزَّن ملفات الضبط في مجلد ‎ /etc/exim4بعد تثبيت exim4؛ وتكون ملفات ضبط exim4 مقسمة إلى عدة ملفات مختلفة افتراضيًا في أوبنتو؛ يمكنك تغيير هذا السلوك بتعديل قيمة المتغير الآتي في ملف ‎/etc/exim4 ‎/update-exim4.conf: dc_use_split_config='true' Mailman نفِّذ الأمر الآتي في الطرفية لتثبيت Mailman: sudo apt-get install mailman تنسخ هذه الحزمة ملفات التثبيت إلى مجلد ‎/var/lib/mailman، وتثبت سكربتات CGI في ‎/usr/lib/cgi-bin/mailman؛ وستُنشِئ مستخدم لينُكس المسمى list، وكذلك تُنشِئ المجموعة list؛ ستُملَك عملية mailman لهذا المستخدم. الضبط يفترض هذا القسم أنك ثبتت mailman و apache2 و postfix أو exim4 بنجاح؛ كل ما بقي عليك هو ضبطهم. Apache2 مثالٌ عن ملف ضبط أباتشي يأتي مع Mailman وهو موجود في ‎/etc/mailman/apache.conf، ولكي يستخدم أباتشي ملف الضبط هذا، فيجب أن يُنسَخ إلى ‎/etc/apache2/sites-available: sudo cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf هذا سيُنشِئ مضيفًا وهميًا في أباتشي لموقع إدارة Mailman؛ فعِّل الآن الضبط الجديد وأعد تشغيل أباتشي: sudo a2ensite mailman.conf sudo service apache2 restart يستخدم Mailman أباتشي ليشغِّل سكربتات CGI؛ تكون سكربتات CGI مثبتةً في ‎/usr/lib/cgi-bin/mailman، هذا يعني أن وصلة mailman ستكون http://hostname/cgi-bin/mailman؛ يمكنك إجراء تعديلات إلى ملف ‎/etc/apache2/sites-available/mailman.conf لتعديل هذا السلوك. Postfix سنربط النطاق lists.example.com مع القائمة البريدية للدمج مع Postfix؛ رجاءً استبدل lists.example.com بالنطاق الذي تختاره. يمكنك استخدام الأمر postconf لإضافة الضبط الضروري إلى ملف ‎/etc/postfix/main.cf: sudo postconf -e 'relay_domains = lists.example.com' sudo postconf -e 'transport_maps = hash:/etc/postfix/transport' sudo postconf -e 'mailman_destination_recipient_limit = 1' انظر أيضًا في ‎/etc/postfix/master.cf للتحقق من أن لديك «الناقل» (transporter) الآتي: mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} هذا سيستدعي السكربت postfix-to-mailman.py عندما يُسلَّم بريدٌ ما إلى القائمة. اربط بين النطاق lists.example.com إلى ناقل Mailman باستخدام خريطة الربط (transport map)، وعدِّل الملف ‎/etc/postfix/transport: lists.example.com mailman: عليك الآن جعل Postfix يبني خريطة الربط بإدخال الأمر الآتي في الطرفية: sudo postmap -v /etc/postfix/transport ثم أعد تشغيل Postfix لتفعيل الضبط الجديد: sudo service postfix restart Exim4 تستطيع تشغيل خادوم Exim بإدخال الأمر الآتي في الطرفية بعد تثبيت Exim4: sudo service exim4 start ولجعل mailman يعمل مع Exim4، فيجب عليك أن تضبط Exim4؛ وكما ذُكِرَ سابقًا، يستخدم Exim4 افتراضيًا عدِّة ملفات ضبط للأنواع المختلفة؛ لمزيد من التفاصيل، ارجع إلى موقع ويب Exim. يجب عليك إضافة ملف ضبط جديد يحتوي على أنواع الضبط الآتية لتشغيل mailman: Main (الرئيسي). Transport (النقل). Router (الموجه). يُنشِئ Exim ملف ضبط رئيسي بترتيب كل ملفات الضبط الصغيرة هذه؛ ولذلك ترتيب هذه الملفات أمرٌ ضروريٌ جدًا. الرئيسي جميع ملفات الضبط التي تنتمي إلى النوع الرئيسي (Main) يجب أن تُخزَّن في مجلد ‎/etc/exim4/conf.d/main/‎‎، يمكنك إضافة المحتويات الآتية في ملف جديد مُسمى ‎04_exim4-config_mailman: # start # Home dir for your Mailman installation -- aka Mailman's prefix # directory. # On Ubuntu this should be "/var/lib/mailman" # This is normally the same as ~mailman MM_HOME=/var/lib/mailman # # User and group for Mailman, should match your --with-mail-gid # switch to Mailman's configure script. Value is normally "mailman" MM_UID=list MM_GID=list # # Domains that your lists are in - colon separated list # you may wish to add these into local_domains as well domainlist mm_domains=hostname.com # # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # # These values are derived from the ones above and should not need # editing unless you have munged your mailman installation # # The path of the Mailman mail wrapper script MM_WRAP=MM_HOME/mail/mailman # # The path of the list config file (used as a required file when # verifying list addresses) MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck # end النقل جميع الملفات التي تنتمي إلى نوع النقل (transport) يجب أن تُخزَّن في مجلد ‎/etc/exim4/conf.d/transport/‎؛ تستطيع إضافة المحتويات الآتية إلى ملف جديد باسم ‎40_exim4-config_mailman: mailman_transport: driver = pipe command = MM_WRAP \ '${if def:local_part_suffix \ {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \ {post}}' \ $local_part current_directory = MM_HOME home_directory = MM_HOME user = MM_UID group = MM_GID الموجه جميع الملفات التي تنتمي إلى نوع الموجه (router) يجب أن تُخزَّن في مجلد ‎/etc/exim4/conf.d/router/‎؛ تستطيع إضافة المحتويات الآتية إلى ملف جديد باسم 101‎_exim4-config_mailman: mailman_router: driver = accept require_files = MM_HOME/lists/$local_part/config.pck local_part_suffix_optional local_part_suffix = -bounces : -bounces+* : \ -confirm+* : -join : -leave : \ -owner : -request : -admin transport = mailman_transport تحذير: ترتيب ملفات الضبط «الرئيسي» و«النقل» غير مهم، لكن ترتيب ملفات ضبط التوجيه مهم؛ حيث يجب أن يظهر هذا الملف قبل ملف 200‎_exim4-config_primary؛ هذان الملفان يحتويان على نفس نوع المعلومات، وتكون الأولوية للذي يأتي أولًا. Mailman بعد تثبيت mailman، تستطيع تشغيله بالأمر الآتي: sudo service mailman start عليك الآن إنشاء قائمة بريدية افتراضية؛ وذلك بتنفيذ ما يلي: sudo /usr/sbin/newlist mailman Enter the email address of the person running the list: bhuvan at ubuntu.com Initial mailman password: To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the `newaliases' program: ## mailman mailing list mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" Hit enter to notify mailman owner... # لقد ضبطنا إما Postfix أو Exim4 للتعرف على كل البريد من mailman؛ لذلك ليس ضروريًا إنشاء أيّة قيود جديدة في ‎/etc/aliases؛ إذا أجريت أيّة تعديلات إلى ملفات الضبط، فرجاءً تأكد أنك أعدت تشغيل هذه الخدمات قبل الإكمال إلى القسم الآتي. ملاحظة: لا يَستخدِم Exim4 الأسماء البديلة في الأعلى لتمرير البريد إلى Mailman، حيث أنه يستخدم طريقة «الاكتشاف»؛ لتجاهل الأسماء البديلة (aliases) عند إنشاء القائمة، فأضف السطر MTA=None إلى ملف ضبط Mailman، الذي هو ‏‎/etc/mailman/mm_cfg.py. الإدارة لنفرض أن لديك تثبيتًا افتراضيًا وأنَّك أبقيت على سكربتات CGI في المجلد ‎/usr/lib/cgi-bin/mailman/‎. يوفر Mailman أداة ويب للإدارة؛ وجِّه متصفحك إلى العنوان الآتي للوصول إليها: http://hostname/cgi-bin/mailman/admin ستظهر القائمة البريدية الافتراضية على الشاشة وهي mailman؛ إذا ضغطت على اسم القائمة البريدية، فستُسأل عن كلمة المرور للاستيثاق؛ إذا أدخلت كلمة مرور صحيحة، فستكون قادرًا على تغيير الإعدادات الإدارة للقائمة البريدية؛ يمكنك إنشاء قائمة بريدية جديدة باستخدام الأداة السطرية ‎/usr/sbin/newlist؛ أو بشكل بديل يمكنك إنشاؤها عبر واجهة الويب. المستخدمون يوفر Mailman واجهة ويب للمستخدمين، وجِّه متصفحك نحو العنوان الآتي للوصول لتلك الصفحة: http://hostname/cgi-bin/mailman/listinfo ستظهر القائمة البريدية الافتراضية mailman على الشاشة؛ وإذا ضغطت على اسم القائمة البريدية، فسيظهر نموذج للاشتراك فيها؛ يمكنك إدخال بريدك الإلكتروني واسمك (اختياري) وكلمة المرور للاشتراك؛ سيُرسَل بريد للدعوة إلى بريدك الإلكتروني، ويمكنك اتباع التعليمات في البريد للاشتراك. مصادر دليل تثبيت GNU Mainman. HOWTO – Using Exim 4 and Mailman 2.1 together. راجع أيضًا صفحة ويكي أوبنتو «Mailman».
  6. Exim4 هو عميل نقل رسائل آخر مطور في جامعة كامبردج لاستخدامه في أنظمة يونكس المتصلة إلى الإنترنت؛ يمكن تثبيت Exim بدلًا من sendmail، وذلك على الرغم من أن ضبط exim مختلف كثيرًا عن ضبط sendmail. التثبيتنفِّذ الأمر الآتي في الطرفية لتثبيت exim4: sudo apt-get install exim4الضبطنفِّذ الأمر الآتي لضبط Exim4: sudo dpkg-reconfigure exim4-configستظهر واجهة مستخدم تسمح لك بضبط العديد من المعاملات؛ فمثلًا تُقسَّم ملفات الضبط في Exim4 إلى عدِّة ملفات، إذا أردت أن تجعلهم في ملف واحد، فتستطيع ضبط ذلك من هذه الواجهة. جميع المعاملات التي ضبطتها في واجهة المستخدم مخزنةٌ في ملف ‎/etc/exim4/update-exim4.conf؛ وإذا أردت إعادة الضبط، فتستطيع تشغيل معالج الضبط أو تعديل هذا الملف يدويًا باستخدام محررك النصي المفضل؛ وبعد أن تنتهي من الضبط، يمكنك تنفيذ الأمر الآتي لتولد ملف ضبط رئيسي: sudo update-exim4.confيولَّد ويُخزَّن ملف الضبط الرئيسي في ‎/‎var/lib/exim4/config.autogenerated. تحذير: عليك عدم تعديل ملف الضبط الرئيسي بتاتًا؛ حيث يُحدَّث تلقائيًا في كل مرة تُنفِّذ فيها update-exim4.conf. نفِّذ الأمر الآتي لتشغيل عفريت Exim4: sudo service exim4 startاستيثاق SMTPيشرح هذا القسم كيفية ضبط Exim4 لاستخدام SMTP-AUTH مع TLS و SASL. أول خطوة هي إنشاء شهادة لاستخدامها مع TLS؛ وذلك بإدخال الأمر الآتي في الطرفية: sudo /usr/share/doc/exim4-base/examples/exim-gencertيجب أن يُضبَط Exim4 الآن لاستخدام TLS بتعديل الملف ‎/etc/exim4/conf.d/main/03_exim4-config_tlsoptions وإضافة ما يلي: MAIN_TLS_ENABLE = yesثم ستحتاج إلى ضبط Exim4 لاستخدام saslauthd للاستيثاق؛ عدِّل الملف ‎/etc/exim4/conf.d/auth ‎/30_exim4-config_examples وأزل التعليقات عن قسمَيّ plain_saslauthd_server و login_saslauthd_server: plain_saslauthd_server: driver = plaintext public_name = PLAIN server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}} server_set_id = $auth2 server_prompts = : .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}} .endif # login_saslauthd_server: driver = plaintext public_name = LOGIN server_prompts = "Username:: : Password::" # don't send system passwords over unencrypted connections server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}} server_set_id = $auth1 .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}} .endifلكي يتمكن عميل البريد الخارجي من الاتصال إلى خادوم exim الجديد، فمن الضروري إضافة مستخدمين جدد إلى exim بتنفيذ الأوامر الآتية: sudo /usr/share/doc/exim4/examples/exim-adduserيجب أن يحمي المستخدمون ملفات كلمة المرور الجديدة لخادوم exim بالأوامر الآتية: sudo chown root:Debian-exim /etc/exim4/passwd sudo chmod 640 /etc/exim4/passwdفي النهاية، حدِّث ضبط Exim4 وأعد تشغيل الخدمة: sudo update-exim4.conf sudo service exim4 restartضبط SASLيوفر هذا القسم معلومات حول ضبط خدمة saslauthd لتوفير الاستيثاق لخادوم Exim4. أول خطوة هي تثبيت حزمة sasl2-bin من الطرفية بإدخال الأمر الآتي: sudo apt-get install sasl2-binلضبط saslauthd، عدِّل ملف الضبط ‎/etc/default/saslauthd واضبط START=no إلى: START=yesثم يجب أن يكون المستخدم Debian-exim جزءًا من مجموعة sasl لكي يستخدم Exim4 الخدمةَ saslauthd: sudo adduser Debian-exim saslعليك الآن تشغيل خدمة saslauthd: sudo service saslauthd startضُبِط الآن Exim4 مع SMTP-AUTH ليستخدم TLS واستيثاق SASL. مصادرراجع موقع exim.org لمزيدٍ من المعلومات.يتوفر أيضًا كتاب «Exim4 Book».مصدر آخر هو صفحة ويكي أوبنتو «Exim4».ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Exim4.
  7. تشترك العديد من الأنظمة في عملية الحصول على بريد إلكتروني من شخصٍ لآخر عبر الشبكة أو الإنترنت التي تعمل مع بعضها بعضًا؛ ويجب أن يُضبَط كل واحد من هذه الأنظمة ضبطًا صحيحًا لكي تتم العملية بنجاح؛ يستخدم المُرسِل «عميل مستخدم البريد» (Mail User Agent اختصارًا MUA) أو عميل بريد إلكتروني، لإرسال رسالة عبر واحد أو أكثر من «عملاء نقل البريد» (Mail Transfer Agents اختصارًا MTA)، سيسلم آخرهم البريد إلى «عميل إيصال البريد» (Mail Delivery Agent اختصارًا MDA) لإيصال البريد إلى صندوق بريد المستلم، الذي بدوره يحصل عليه عميل البريد الإلكتروني للمستلم عادةً باستخدام خادوم POP3 أو IMAP. Postfixإن Postfix هو عميل نقل البريد (MTA) الافتراضي في أوبنتو؛ الذي يُوصَف بأنه سريع وسهل الإدارة، وآمن ومتوافق مع عميل نقل البريد sendmail؛ يشرح هذا القسم طريقة تثبيت وضبط Postfix، ويشرح أيضًا كيفية إعداد خادوم SMTP باستخدام اتصال آمن (لإرسال رسائل البريد الإلكتروني بأمان). ملاحظة: لن نتطرّق إلى «Postfix Virtual Domains» للمزيد من المعلومات حول النطاقات الوهمية وغيرها من إعدادات الضبط المتقدمة، فراجع قسم «مصادر» في نهاية هذا القسم. التثبيتنفِّذ الأمر الآتي في الطرفية لتثبيت postfix: sudo apt-get install postfixستُسأل بعض الأسئلة أثناء عملية التثبيت، وسيُشرَح الضبط بتفاصيل أكبر في المرحلة القادمة. الضبط الأساسينفِّذ الأمر الآتي في الطرفية لضبط postfix: sudo dpkg-reconfigure postfixستظهر واجهة مستخدم، اختر منها القيم الآتية على كل شاشة: Internet Sitemail.example.comstevemail.example.com, localhost.localdomail, localhostNo‎127.0.0.1/8 8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24‎0+allملاحظة: استبدل mail.example.com بالنطاق الذي سيقبل استلام البريد عليه، و 192.168.0.0/24 بالشبكة التي عندك ومجالها؛ و steve باسم ملائم للمستخدم. الآن هو وقتٌ ملائمٌ لتحديد صيغة صندوق البريد التي تنوي استخدامها؛ افتراضيًا Postfix يستخدم mbox لصيغة صندوق البريد؛ وبدلًا من تعديل ملف الضبط مباشرةً، يمكنك استخدام الأمر postconf لضبط كل معاملات postfix؛ ستُخزَّن معاملات الضبط في ملف ‎/etc/postfix/main.cf؛ وإذا أردت إعادة ضبط معامل معيَّن، يمكنك إما أن تنفذ الأمر أو تعدل الملف يدويًا؛ فلضبط صيغة صندوق البريد إلى Maildir: sudo postconf -e 'home_mailbox = Maildir/'ملاحظة: هذا سيضع البريد الجديد في مجلد ‎/home/username/Maildir، لذلك تريد ضبط عميل تسليم البريد (MDA) لاستخدام نفس المسار. استيثاق SMTPيسمح SMTP-AUTH للعميل بالتعريف عن نفسه باستخدام آلية استيثاق (SASL)، يجب استخدام أمن طبقة النقل (TLS) لتشفير عملية الاستيثاق؛ سيسمح خادوم SMTP للعميل بأن ينقل البريد بعد الاستيثاق. لضبط Postfix مع SMTP-AUTH باستخدام SASL‏ (Dovecot SASL): sudo postconf -e 'smtpd_sasl_type = dovecot' sudo postconf -e 'smtpd_sasl_path = private/auth-client' sudo postconf -e 'smtpd_sasl_local_domain =' sudo postconf -e 'smtpd_sasl_security_options = noanonymous' sudo postconf -e 'broken_sasl_auth_clients = yes' sudo postconf -e 'smtpd_sasl_auth_enable = yes' sudo postconf -e 'smtpd_recipient_restrictions = \ permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'ملاحظة: الضبط smtpd_sasl_path هو مسار نسبي إلى مجلد طلبيات Postfix. ثم ولِّد أو احصل على شهادة TLS رقمية، راجع درس الشهادات للتفاصيل؛ هذا المثال يستخدم أيضًا سلطة شهادات (Certificate Authority أو CA)، للمزيد من المعلومات حول ذلك، انظر إلى قسم «سلطة الشهادات» في نفس الدرس. ملاحظة: عملاء مستخدمي البريد (MUA) التي تتصل إلى خادوم البريد عبر TLS يجب أن تتعرف على الشهادة المستخدمة في TLS؛ يمكن فعل ذلك إما باستخدام شهادة من سلطة شهادات تجارية، أو استخدام شهادة موقعة ذاتيًا، وعلى المستخدمين أن يُثبِّتوا أو يقبلوا الشهادة يدويًا، شهادات TLS من عميل نقل بريد إلى عميل نقل بريد آخر لا يُتحقَّق منها إلا بعد موافقة مسبقة من المنظمات المتأثرة؛ لا يوجد سبب لعدم استخدام شهادة موقعة ذاتيًا عند استعمال TLS من MTA إلى MTA، ما لم تتطلب السياسات المحلية ذلك؛ راجع قسم «إنشاء شهادة موقعة ذاتيا» لمزيدٍ من المعلومات في درس الشهادات. بعد أن تحصل على الشهادة، اضبط Postfix لتوفير تشفير TLS للبريد المُرسَل والمُستلَم: sudo postconf -e 'smtp_tls_security_level = may' sudo postconf -e 'smtpd_tls_security_level = may' sudo postconf -e 'smtp_tls_note_starttls_offer = yes' sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key' sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt' sudo postconf -e 'smtpd_tls_loglevel = 1' sudo postconf -e 'smtpd_tls_received_header = yes' sudo postconf -e 'myhostname = mail.example.com'إذا كنت تستخدم سلطة الشهادات الخاصة بك لتوقيع الشهادة، فأدخِل: sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'ملاحظة: بعد تنفيذ كل الأوامر السابقة، فيكون Postfix قد ضُبِطَ ليستخدم SMTP-AUTH وشهادة موقعة ذاتيًا أُنشِئت لاتصال TLS مشفر. # See /usr/share/postfix/main.cf.dist for a commented, more complete # version smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h myhostname = server1.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = server1.example.com, localhost.example.com, localhost relayhost = mynetworks = 127.0.0.0/8 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject _unauth_destination smtpd_tls_auth_only = no smtp_tls_security_level = may smtpd_tls_security_level = may smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/ssl/private/smtpd.key smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandomبعد إكمال الضبط الابتدائي لخدمة postfix؛ فنفذ الأمر الآتي لإعادة تشغيل العفريت: sudo service postfix restartيدعم Postfix استخدام SMTP-AUTH كما هو معرَّف في RFC2554؛ الذي هو مبني على SASL؛ لكنه يبقى ضروريًا إعداد استيثاق SASL قبل استخدام SMTP-AUTH. ضبط SASLيدعم Postfix نسختين من SASL هما Cyrus SASL و Dovecot SASL؛ لتفعيل Dovecot SASL، فيجب تثبيت حزمة dovecot-common، وذلك بإدخال الأمر الآتي من الطرفية: sudo apt-get install dovecot-commonيجب عليك تعديل ملف الضبط ‎/etc/dovecot/conf.d/10-master.conf؛ مغيِّرًا ما يلي: service auth { # auth_socket_path points to this userdb socket by default. It's typically # used by dovecot-lda, doveadm, possibly imap process, etc. Its default # permissions make it readable only by root, but you may need to relax these # permissions. Users that have access to this socket are able to get a list # of all usernames and get results of everyone's userdb lookups. unix_listener auth-userdb { #mode = 0600 #user = #group = } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix }ولكي نسمح لعملاء Outlook باستخدام SMTP-AUTH، فعدِّل السطر الآتي في قسم authentication mechanisms في ملف ‎/etc/dovecot/conf.d/10-auth.conf: auth_mechanisms = plainإلى ما يلي: auth_mechanisms = plain loginبعد أن ضَبَطَتَ Dovecot، فأعد تشغيله بالأمر: sudo service dovecot restartMail-Stack Deliveryخيار آخر لضبط Postfix لاستعمال SMTP-AUTH هو استخدام الحزمة mail-stack-delivery (كانت تُحزَّم مسبقًا باسم dovecot-postfix)؛ هذه الحزمة ستُثبِّت Dovecot وتضبط Postfix ليستخدمها لاستيثاق SASL وعميل تسليم البريد (MDA)؛ تضبط هذه الحزمة Dovecot أيضًا للخدمات IMAP و IMAPS و POP3 و POP3S. ملاحظة: ربما تريد أو لا تريد تشغيل IMAP، أو IMAPS، أو POP3، أو POP3S على خادوم البريد عندك؛ على سبيل المثال، إذا كنت تضبط خادومك ليكون بوابةً للبريد، أو مُرَشِّحًا للرسائل العشوائية (Spam) أو الفيروسات ...إلخ. فإذا كانت هذه هي الحالة عندك، فمن الأسهل استخدام الأوامر السابقة لضبط Postfix لاستخدام SMTP-AUTH. لتثبيت الحزمة، أدخِل ما يلي في الطرفية: sudo apt-get install mail-stack-deliveryيجب أن تحصل الآن على خادوم بريد يعمل تمامًا؛ لكن هنالك بعض الخيارات التي تريد ضبطها لمزيدٍ من التخصيص؛ على سبيل المثال، تستخدم الحزمة السابقة شهادة ومفتاح من حزمة ssl-cert، وفي بيئة إنتاجية يجب أن تستخدم شهادة ومفتاح مولَّد للمضيف. عدِّل الخيارات الآتية في ملف ‎/‎etc/postfix/main.cf بعد أن تخصص الشهادة والمفتاح للمضيف: smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem smtpd_tls_key_file = /etc/ssl/private/ssl-mail.keyثم أعد تشغيل Postfix: sudo service postfix restartالاختباراكتمل الآن ضبط SMTP-AUTH؛ حان الآن الوقت لاختبار الإعدادات. للتأكد إذا كان SMTP-AUTH و TLS يعملان عملًا صحيحًا، فنفِّذ الأمر الآتي: telnet mail.example.com 25بعد أن تُنشِئ اتصالًا لخادوم البريد postfix، اكتب ما يلي: ehlo mail.example.comإذا رأيت الأسطر الآتية بين غيرها، فإن كل شيء يعمل على ما يرام؛ اكتب quit للخروج. 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIMEاستكشاف الأخطاء وإصلاحهاسنقدم في هذا القسم بعض الطرق الشائعة لتحديد السبب إذا حدثت مشكلة ما. الخروج من chrootستُثبَّت الحزمة postfix في أوبنتو افتراضيًا في بيئة «chroot» لأسبابٍ أمنية؛ يمكن أن يزيد هذا من تعقيد إصلاح المشاكل. لتعطيل عمل chroot، حدد السطر الآتي في ملف ‎/etc/postfix/master.cf: smtp inet n - - - - smtpdوعدِّله كما يلي: smtp inet n - n - - smtpdتحتاج إلى إعادة تشغيل Postfix لاستخدام الضبط الجديد، وذلك بإدخال الأمر الآتي في الطرفية: sudo service postfix restartSmtpsإذا احتجت إلى smtps، فعدِّل الملف ‎/etc/postfix/master.cf وأزل التعليق عن السطر الآتي: smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATINGملفات السجليُرسِل Postfix جميع رسائل السجل إلى ملف ‎/var/log/mail.log، لكن يمكن أن تضيع رسائل الخطأ والتحذير في السجل العادي، لذلك فإنها تُسجَّل أيضًا إلى ‎/var/log/mail.err و ‎/var/log/mail.warn على التوالي وبالترتيب. لمراقبة الرسائل الداخلة إلى السجل في الوقت الحقيقي، فاستخدم الأمر tail مع الخيار ‎-f كما يلي: tail -f /var/log/mail.errيمكن زيادة كمية التفاصيل التي ستُسجَّل؛ هذه بعض خيارات الضبط لزيادة مستوى التسجيل لبعض «المناطق» المذكورة أعلاه. لزيادة نشاط تسجيل TLS، فاضبط الخيار smtpd_tls_loglevel إلى قيمة من 1 إلى 4: sudo postconf -e 'smtpd_tls_loglevel = 4'إذا كانت لديك مشكلة في إرسال أو استقبل البريد من نطاق معين، فيمكنك إضافة ذاك النطاق إلى معامل debug_peer_list: sudo postconf -e 'debug_peer_list = problem.domain'يمكنك زيادة درجة الإسهاب لأي عملية تابعة لعفريت Postfix بتعديل الملف ‎/etc/postfix/master.cf وبإضافة الخيار ‎-v بعد القيد، على سبيل المثال، عدِّل القيد smtp كما يلي: smtp unix - - - - - smtp -vملاحظة: من الضروري ملاحظة أنه بعد إنشاء تعديل من تعديلات التسجيل المذكورة آنفًا، فيجب أن يعاد تحميل عملية Postfix لكي تُدرِك الضبط الجديد: sudo service postfix reloadلزيادة مقدار المعلومات المسجلة عند استكشاف مشاكل SASL، يمكنك ضبط الخيارات الآتية في ملف ‎/etc/dovecot/conf.d/10-logging.conf: auth_debug=yes auth_debug_passwords=yesملاحظة: مثل Postfix، إذا عدَّلت ضبط Dovecot فيجب إعادة تحميل العملية: sudo service dovecot reloadملاحظة: يمكن أن تزيد بعض الخيارات من مقدار المعلومات المُرسَلة إلى السجل زيادةً كبيرةً؛ تذكر أن تُعيد مستوى التسجيل إلى الحالة الطبيعية بعد أن تحلّ المشكلة؛ ثم أعد تحميل العفريت الملائم كي يأخذ الضبط الجديد مفعوله. مصادريمكن أن تكون مهمة إدارة خادوم Postfix مهمةً معقدةً جدًا؛ وستحتاج في مرحلةٍ ما إلى الاستعانة بمجتمع أوبنتو للحصول على المساعدة. مكان رائع للسؤال عن مساعدة في Postfix والاشتراك في مجتمع أوبنتو هو قناة ‎#ubuntu-server على خادوم freenode؛ يمكنك أيضًا نشر موضوع في أحد المنتديات.لمعلومات معمقّة عن Postfix، فينصح مطورو أوبنتو بكتاب «The Book of Postfix».موقع Postfix فيه توثيق رائع لمختلف خيارات الضبط المتوفرة.راجع أيضًا صفحة ويكي أوبنتو «Postfix» للمزيد من المعلومات.ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Postfix. حقوق الصورة البارزة: Designed by Freepik.
  8. إن CVS هو خادوم تحكم بالإصدارات؛ تستطيع استخدامه لتسجيل تاريخ ملفات المصدر. التثبيتنفِّذ الأمر الآتي في الطرفية لتثبيت CVS: sudo apt-get install cvsبعد تثبيت cvs، يجب عليك تثبيت xinetd لتشغيل أو إيقاف خادوم cvs؛ وذلك بإدخال الأمر الآتي في الطرفية: sudo apt-get install xinetdالضبطبعد أن تثبت cvs، فإنه سيُهيّء مستودعًا تلقائيًا؛ يقبع المستودع افتراضيًّا في مجلد ‎/srv/cvs؛ ويمكنك تغيير هذا المسار بتنفيذ الأمر الآتي: cvs -d /your/new/cvs/repo initتستطيع ضبط xinetd لبدء خادوم CVS بعد أن يُضبَط المستودع الابتدائي؛ يمكنك نسخ الأسطر الآتية إلى ملف ‎/etc/xinetd.d/cvspserver: service cvspserver { port = 2401 socket_type = stream protocol = tcp user = root wait = no type = UNLISTED server = /usr/bin/cvs server_args = -f --allow-root /srv/cvs pserver disable = no }ملاحظة: تأكد أن تعدِّل المستودع إذا غيرت مجلد المستودع الافتراضي (‎/srv/cvs). بعد أن تضبط xinetd؛ يمكنك بدء خادوم CVS بإدخال الأمر الآتي: sudo service xinetd restartيمكنك التأكد من عمل خادوم CVS بإدخال الأمر الآتي: sudo netstat -tap | grep cvsيجب أن ترى مخرجاتٍ شبيهةً بالمخرجات الآتية بعد تنفيذ الأمر السابق: tcp 0 0 *:cvspserver *:* LISTENمن هنا يمكنك المتابعة في إضافة المستخدمين والمشاريع الجديدة وإدارة خادوم CVS. تحذير: يسمح CVS للمستخدم بإضافة مستخدمين بشكل مستقل عن نظام التشغيل؛ وربما أسهل طريقة هي استخدام مستخدمي لينُكس لخادوم CVS، على الرغم من أن لها مساوئ أمنية؛ راجع دليل CVS للتفاصيل. إضافة مشاريعيشرح هذا القسم كيفية إضافة مشاريع جديدة إلى مستودع CVS؛ أنشِئ مجلدًا وأضف المستندات والملفات المصدرية إليه؛ ثم نفِّذ الأمر الآتي لإضافة هذا المشروع إلى مستودع CVS: cd your/project cvs -d :pserver:username@hostname.com:/srv/cvs import -m "Importing my project to CVS repository" . new_project startتنويه: يمكن استخدام متغير البيئة CVSROOT لتخزين المجلد الجذر لخادوم CVS؛ يمكنك تجنب استخدام الخيار ‎-d في أمر cvs السابق بعد أن «تُصدِّر» (export) متغير البيئة CVSROOT. السلسلة النصية new_project هي وسم «vendor»، و start هي وسم «release»، لا يخدمان أي هدف في هذا السياق، لكن ولما كان خادوم CVS يتطلب وجودهما؛ فيجب أن تضعهما. تحذير: عندما تضيف مشروعًا جديدًا، فيجب أن يملك مستخدم CVS إذن الوصول إلى مستودع (CVS (/srv/cvs‎؛ تملك المجموعة src افتراضيًا إذن الكتابة إلى مستودع CVS؛ لذلك تستطيع إضافة المستخدم إلى هذه المجموعة، ثم سيستطيع إضافة وإدارة المشاريع في مستودع CVS.
  9. إن Subversion هو نظام إدارة إصدارات مفتوح المصدر؛ يمكنك باستخدام Subversion أن تُسجِّل تاريخ كل الملفات المصدرية والمستندات؛ حيث يدير الملفات والمجلدات مع مرور الزمن. توضع شجرة من الملفات في مستودع مركزي، هذا المستودع يشبه كثيرًا خادوم الملفات العادي، عدا أنه «يتذكر» كل تعديل جرى على الملفات والمجلدات. التثبيتللوصول إلى مستودع Subversion عبر بروتوكول HTTP، يجب عليك تثبيت وضبط خادوم ويب، أُثبِتَ عمل Subversion مع أباتشي؛ للوصول إلى مستودع Subversion باستخدام بروتوكول HTTPS، فثبِّت واضبط الشهادة الرقمية في خادوم أباتشي. عليك تنفيذ الأمر الآتي في الطرفية لتثبيت Subversion: sudo apt-get install subversion libapache2-svnضبط الخادوميشرح هذا القسم كيفية إنشاء مستودع Subversion، والوصول إلى المشروع. إنشاء مستودع Subversionيمكن إنشاء مستودع Subversion بتنفيذ الأمر الآتي في الطرفية: svnadmin create /path/to/repos/projectاستيراد الملفاتتستطيع استيراد الملفات إلى المستودع بعد أن تُنشِئه؛ أدخِل الأمر الآتي في الطرفية لاستيراد مجلد: svn import /path/to/import/directory file:///path/to/repos/projectطرق الوصوليمكن الوصول إلى مستودعات Subversion (السحب [checked out]) بطرقٍ مختلفة على الجهاز المحلي أو عبر بروتوكولات الشبكة المختلفة؛ لكن مكان المستودع (repository location) هو دائمًا عنوان URL؛ الجدول الآتي يحتوي على أنماط URL المختلفة لمختلف طرق الوصول. الوصول المباشر إلى المستودعسنرى -في هذا القسم- كيفية ضبط Subversion لكل طرق الوصول السابقة؛ سنشرح هنا الأساسيات، رجاءً عُد إلى كتاب «svn book» لتفاصيل استخدام متقدمة. هذه هي أبسط طرق الوصول؛ لا تحتاج إلى أي خادوم Subversion يعمل؛ تُستخدَم هذه الطريقة للوصول إلى Subversion من نفس الجهاز؛ شكل الأمر المُدخَل في سطر الأوامر هو: svn co file:///path/to/repos/projectأو: svn co file://localhost/path/to/repos/projectملاحظة: إن لم تحدد اسم المضيف، فهنالك ثلاث خطوط مائلة (///) حيث اثنتين منها للبروتوكول بالإضافة إلى الخط المائل في أول المسار؛ إذا حددت اسم المضيف، فسيكون هنالك خطين مائلين فقط. تعتمد أذونات المستودع على أذونات نظام الملفات؛ إذا امتلك المستخدم إذن القراءة والكتابة، فيمكنه السحب من المستودع أو الإيداع إليه. الوصول عبر بروتوكول WebDAV‏ (http://‎)يجب عليك ضبط خادوم أباتشي للوصول إلى مستودع Subversion عبر بروتوكول WebDAV؛ أضف الأسطر الآتية بين العنصرين <VirtualHost> و <‎/VirtualHost> في ملف ‎/etc/apache2/sites-available ‎/default؛ أو ملف VirtualHost آخر: <Location /svn> DAV svn SVNPath /home/svn AuthType Basic AuthName "Your repository name" AuthUserFile /etc/subversion/passwd Require valid-user </Location>ملاحظة: يفترض الضبط السابق أن مستودعات Subversion موجودةٌ في مجلد ‎/home/svn باستخدام الأمر svnadmin؛ ويملك مستخدم HTTP امتيازات وصول كافية على تلك الملفات، ويمكن الوصول إليها عبر الوصلة http://hostname/svn/repos_name. التغيير السابق في ضبط أباتشي يتطلب إعادة تحميل الخدمة، وذلك بالأمر الآتي: sudo service apache2 reloadلاستيراد أو إيداع ملفات إلى مستودع Subversion عبر HTTP، فيجب أن يكون المستودع مملوكًا من مستخدم HTTP؛ يكون مستخدم HTTP عادةً في أنظمة أوبنتو هو www-data؛ أدخِل الأمر الآتي في الطرفية لتغيير ملكية ملفات المستودع: sudo chown -R www-data:www-data /path/to/reposملاحظة: بتغيير ملكية المستودع إلى www-data، فلن تتمكن من استيراد أو إيداع الملفات في المستودع بالأمر svn import file:///‎ عبر أي مستخدم عدا المستخدم www-data. عليك الآن إنشاء الملف ‎/etc/subversion/passwd الذي يحتوي معلومات استيثاق المستخدم؛ نفِّذ الأمر الآتي في الطرفية لإنشاء الملف (الذي سيُنشِئ الملف ويضيف أول مستخدم): sudo htpasswd -c /etc/subversion/passwd user_nameلإضافة مستخدمين آخرين، احذف الخيار ‎-c، حيث يستبدل هذا الخيار الملفَ القديم؛ واستخدم الشكل الآتي عوضًا عنه: sudo htpasswd /etc/subversion/passwd user_nameسيُضاف المستخدم بعد إدخالك لكلمة المرور بنجاح؛ يمكنك الآن الوصول إلى المستودع بتنفيذ الأمر الآتي: svn co http://servername/svnتحذير: ستُنقل كلمة المرور كنص واضح، إذا كنت قلقًا على التجسس على كلمة المرور، فمن المستحسن استخدام تشفير SSL، اقرأ القسم الآتي للتفاصيل. الوصول إلى بروتوكول WebDAV عبر اتصال SSL مشفر (https://‎)الوصول إلى مستودع Subversion عبر بروتوكول WebDAV مع تشفير SSL يشبه كثيرًا الوصول إلى http://‎ عدا أنه عليك تثبيت وضبط الشهادة الرقمية في خادوم أباتشي؛ أضف الضبط السابق إلى ملف ‎/etc/apache2/sites-available/default-ssl.conf لاستخدام SSL مع Subversion؛ راجع الدرس الذي يشرح أباتشي للمزيد من المعلومات حول ضبط أباتشي مع SSL. يمكنك تثبيت شهادة رقمية مُصدَرَة من سلطة توقيع الشهادات؛ أو يمكنك تثبيت شهادتك الموقعة ذاتيًا. تفترض هذه الخطوة أنك ثبتت وضبطت شهادةً رقميةً في خادوم أباتشي؛ راجع الأوامر في القسم السابق للوصول إلى مستودع Subversion، حيث أنَّ الخطوات متماثلة تمامًا عدا البروتوكول، حيث عليك استخدام https://‎ للوصول إلى مستودع Subversion. الوصول عبر بروتوكول خاصيمكنك ضبط التحكم بالوصول بعد إنشاء مستودع Subversion؛ تستطيع تعديل الملف ‎/path/to/repos ‎/project/conf/svnserve.conf لضبط التحكم بالوصول؛ على سبيل المثال، يمكنك إزالة التعليق عن الأسطر الآتية في ملف الضبط لضبط الاستيثاق: # [general] # password-db = passwdبعد إزالة التعليق عن السطرين السابقين، يمكنك إدارة قائمة المستخدمين في ملف passwd، لذلك عدِّل ملف passwd في نفس المجلد وأضف مستخدمًا جديدًا كما يلي: username = passwordللوصول إلى Subversion عبر البروتوكول الخاص svn://‎؛ من الجهاز نفسه أو من جهاز آخر، تستطيع تشغيل svnserver بالأمر svnserve؛ الذي يكون شكله العام كما يلي: svnserve -d --foreground -r /path/to/repos # -d -- daemon mode # --foreground -- run in foreground (useful for debugging) # -r -- root of directory to serveسيبدأ Subversion بالاستماع إلى المنفذ الافتراضي (3690) بعد تنفيذ الأمر السابق؛ عليك تنفيذ الأمر الآتي من الطرفية للوصول إلى مستودع البرنامج: svn co svn://hostname/project project --username user_nameوبناءً على إعدادات الخادوم، قد يُطلَب منك توفير كلمة مرور؛ وبعد أن تستوثق، فسيُسحب الكود من مستودع Subversion. ولمزامنة مستودع المشروع مع نسخة محلية، يمكنك تنفيذ الأمر الفرعي update؛ الشكل العام للأمر المُدخَل إلى الطرفية هو كما يلي: cd project_dir ; svn updateللمزيد من التفاصيل حول استخدام كل أمر فرعي من أوامر Subversion، يمكنك الرجوع إلى الدليل؛ على سبيل المثال، لتعلم المزيد عن الأمر co (أي السحب checkout)، رجاءً نفِّذ الأمر الآتي من الطرفية: svn co helpالوصول عبر البروتوكول الخاص مع تشفير SSL‏ (svn+ssh://‎)طريقة ضبط وتشغيل الخادوم هي نفسها في طريقة svn://‎؛ يفترض هذا القسم أنك اتبعت الخطوة السابقة وبدأت خادوم Subversion باستخدام svnserve. يُفترَض أيضًا أنه لديك خادوم ssh في ذاك الجهاز ويسمح للاتصالات القادمة؛ للتأكد من ذلك، رجاءً جرِّب تسجيل الدخول إلى ذاك الحاسوب باستخدام ssh، إذا استطعت الدخول فإن كل شيء على ما يرام؛ وإلا فعليك حلّ المشكلة قبل الإكمال. البروتوكول svn+ssh://‎ يُستخدَم للوصول إلى مستودع Subversion باستخدام تشفير SSL؛ البيانات المنقولة في هذه الطريقة مشفرة، وللوصول إلى مستودع المشروع (للسحب على سبيل المثال)؛ فعليك استخدام الصيغة الآتية: svn co svn+ssh://hostname/var/svn/repos/projectملاحظة: عليك تحديد مسار كامل (‎/path/to/repos/project) للوصول إلى مستودع Subversion باستخدام طريقة الوصول هذه. قد تُسأل عن كلمة المرور اعتمادًا على ضبط الخادوم؛ إذ عليك إدخال كلمة المرور التي تستخدمها للوصول عبر ssh؛ وبعد أن يستوثق منك الخادوم، فيمكن سحب الكود من مستودع Subversion. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Subversion.
  10. نظام التحكم بالإصدارات Gitإن Git هو نظام تحكم بالإصدارات موزَّع (distributed) ومفتوح المصدر مطوَّر من لينوس تورفالدس لدعم تطوير نواة لينُكس؛ حيث يكون كل مجلد في Git عبارة عن مستودع مع تأريخ كامل وإمكانيات لتتبع الإصدارات، وليس متعمِدًا على الوصول على الشبكة أو على خادوم مركزي. التثبيتيمكن تثبيت نظام التحكم بالإصدارات git باستخدام الأمر الآتي: sudo apt-get install gitالضبطيجب لكل مستخدم git أن يعرِّف نفسه أولًا إلى git، وذلك بتنفيذ الأمرّين الآتيين: git config --global user.email "you@example.com" git config --global user.name "Your Name"الاستخدام الأساسيما سبق يكفي لاستخدام git في طريقة موزعة وآمنة، حيث يُفترَض أنَّ المستخدمين يستطيعون الوصول إلى الخادوم عبر SSH؛ حيث يمكن إنشاء مستودع جديد على الخادوم بالأمر: git init --bare /path/to/repositoryملاحظة: الأمر السابق يُنشِئ مستودعًا «فارغًا» (bare)، أي أنه ليس بالإمكان استخدامه للتعديل على الملفات مباشرةً. إذا أردت الحصول على نسخة من محتويات المستودع على الخادوم، فاحذف الخيار ‎--bare. يمكن لأي عميل يملك وصولًا عبر SSH إلى الخادوم أن ينسخ المستودع بالأمر: git clone username@hostname:/path/to/repositoryبعد نسخ الملفات إلى جهاز العميل، يمكنه تعديلها ثم إيداعها ومشاركتها بالأوامر: cd /path/to/repository # edit some files git commit -a # Commit all changes to the local version of the repository git push origin master # Push changes to the server's version of the repositoryتثبيت خادوم gitoliteعلى الرغم من أنّ ما سبق كافٍ لإنشاء ونسخ وتعديل المستودعات، لكن المستخدمين الذين يريدون تثبيت git على خادوم سيريدون عمومًا إنجاز المهام في git كنظام إدارة التحكم بالأكواد المصدرية تقليدي؛ وعند وجود عدِّة مستخدمين وامتيازات وصول لهم، فالحل الأمثل هو تثبيت gitolite كما يلي: sudo apt-get install gitoliteضبط Gitoliteضبط خادوم Gitolite مختلف قليلًا عن معظم الخواديم في الأنظمة الشبيهة بِيونكس؛ فبدلًا من ملفات الضبط التقليدية في ‎/etc/‎، فإن gitolite يُخزِّن الضبط في مستودع git؛ أول خطوة لضبط تثبيت جديد هي السماح بالوصول إلى مستودع الضبط. أولًا، علينا إنشاء مستخدم لأجل gitolite لكي نصل إليه عبره: sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git gitسنترك الآن gitolite لكي يعرف عن مفتاح SSH العمومي لمدير المستودع؛ هنا نفترض أن المستخدم الحالي هو مدير المستودع؛ إذا لم تضبط مفتاح SSH بعد، فراجع الدرس الخاص بخادوم OpenSSH لمزيدٍ من التفاصيل: cp ~/.ssh/id_rsa.pub /tmp/$(whoami).pubلنبدِّل إلى المستخدم git ونستورد مفتاح المدير إلى gitolite: sudo su - git gl-setup /tmp/*.pubسيسمح Gitolite لك بعمل تغيرات مبدئية لضبطه أثناء عملية الإعداد؛ يمكنك الآن نسخ وتعديل مستودع ضبط gitolite من المستخدم المدير (المستخدم الذي استوردت مفتاح SSH العمومي الخاص به)؛ عُد إلى ذاك المستخدم، ثم انسخ مستودع الضبط: exit git clone git@$IP_ADDRESS:gitolite-admin.git cd gitolite-adminالمجلد gitolite-admin فيه مجلدين فرعيين، المجلد «conf» و «keydir»؛ ملفات الضبط موجودة في مجلد conf، ويحتوي مجلد keydir على مفاتيح SSH العمومية للمستخدم. إدارة مستخدمي ومستودعات gitoliteإضافة مستخدمين جدد إلى gitolite هي عملية سهلة: احصل على مفتاح SSH العمومي لهم ثم أضفه إلى مجلد keydir بالاسم USERNAME.pub، لاحظ أن أسماء مستخدمي gitolite لا تطابق بالضرورة أسماء مستخدمي النظام، حيث تُستخدَم أسمائهم في ملف ضبط gitolite فقط، وذلك لإدارة التحكم بالوصول؛ وبشكل مشابه، يمكن حذف المستخدمين بحذف ملف المفتاح العمومي الخاص بهم؛ ولا تنسَ أن تودع التغييرات وتدفعها إلى خادوم git بعد كل تعديل: git commit -a git push origin masterتُدار المستودعات بتعديل الملف conf/gitolite.conf؛ الشكل العام له هو قيود مفصولة بفراغات تُحدِّد ببساطة قائمةً بالمستودعات ثم بعض قواعد الوصول؛ ما يلي هو المثال الافتراضي لهذا الملف: repo gitolite-admin RW+ = admin R = alice repo project1 RW+ = alice RW = bob R = deniseاستخدام خادومكلاستخدام الخادوم المُنشَأ حديثًا، يجب أن يستورد مدير gitolite مفاتيح المستخدمين العمومية إلى مستودع ضبط gitolite، ثم يمكنهم الوصول إلى أي مستودع لهم حق الوصول إليه عبر الأمر الآتي: git clone git@$SERVER_IP:$PROJECT_NAME.gitأو إضافة مشروع في الخادوم عن بعد: git remote add gitolite git@$SERVER_IP:$PROJECT_NAME.gitترجمة -وبتصرف- للمقال Ubuntu Server Guide: Git.
  11. التحكم بالإصدارات (Version Control) هو فن إدارة التغييرات إلى المعلومات؛ وهي أداة محورية للمبرمجين، الذين يمضون وقتهم بإجراء تعديلات صغيرة إلى البرمجيات ومن ثم يتراجعون عنها في اليوم التالي! لكن فائدة برمجيات التحكم بالإصدارات تمتد خارج حدود عالم تطوير البرمجيات؛ في أي مكان تجد فيه أشخاصًا يستخدمون الحواسيب لإدارة معلومات تتغير عادةً، فهنالك مكان للتحكم بالإصدارات. Bazaarإن Bazaar هو نظام جديد للتحكم بالإصدارات ممول من كانوكيال – الشركة التجارية التي تقف خلف أوبنتو، وعلى النقيض من Subversion و CVS اللذان يدعمان نمط المستودع المركزي، فإن Bazaar يدعم أيضًا «التحكم الموزَّع بالإصدارات» (distributed version control)، مما يسمح للناس بالتعامل بطريقة تعاونية أكثر فعاليةً؛ وخصوصًا أن Bazaar مصمم لتعظيم درجة اشتراك المجتمع في المشاريع المفتوحة المصدر. التثبيتأدخِل الأمر الآتي في الطرفية لتثبيت bzr: sudo apt-get install bzrالضبطلكي «تُعرِّف نفسك» إلى bzr، فاستخدم الأمر whoami كما يلي: bzr whoami 'Joe Doe <joe.doe@gmail.com>'تعلم Bazaarيأتي Bazaar مع توثيق مدمج مثبَّت في ‎/usr/share/doc/bzr/html افتراضيًا؛ يأتي الأمر bzr أيضًا مع مساعدة مدمجة فيه: bzr helpلتعلم المزيد عن أمرٍ ما: bzr help fooالدمج مع Launchpadعلى الرغم من أنه مفيد كنظام يعمل بمفرده، لكنه يملك قابلية الدمج الاختياري مع Launchpad، الذي هو نظام التطوير التعاوني المستخدم من كانوكيال ومجتمع البرمجيات المفتوحة المحيط بها لإدارة وتوسيع أوبنتو؛ للمزيد من المعلومات حول كيفية استخدام Bazaar مع Launchpad للتعاون في البرمجيات مفتوحة المصدر، راجع هذا الرابط. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Bazaar.
  12. CUPS هي الآلية الرئيسية للطباعة وخدمات الطباعة في أوبنتو وهي «النظام الشائع للطباعة في يونكس» (Common UNIX Printing System اختصارًا CUPS)، نظام الطباعة هذا هو طبقة محمولة متوفرة مجانًا التي أصبحت المعيار القياسي الجديد للطباعة في غالبية توزيعات لينُكس. يدير CUPS مهام الطباعة والطلبيات ويوفر خدمات طباعة عبر الشبكة باستخدام «بروتوكول الطباعة عبر الإنترنت» (Internet Printing Protocol اختصارًا IPP)، بينما يوفر CUPS دعمًا لمجالٍ واسعٍ جدًا من الطابعات، بدءًا من طابعات مصفوفة النقط (dot-matrix) إلى الطابعات الليزرية وما بينهما؛ ويدعم CUPS أيضًا «PostScript Printer ‎Description»‏‎‏ (PPD) والاكتشاف التلقائي لطابعات الشبكة، ويوفر واجهة ويب بسيطة كأداة للضبط والإدارة. التثبيتأدخل الأمر الآتي في الطرفية لتثبيت CUPS: sudo apt-get install cupsسيعمل خادوم CUPS تلقائيًا بعد نجاح التثبيت. ولاستكشاف الأخطاء، يمكنك الوصول إلى أخطاء خادوم CUPS عبر ملف سجل في ‎/var/log/cups ‎/error_log؛ إذا لم يُظهِر سجل الأخطاء معلوماتٍ كافيةً لحل المشاكل التي تواجهك، فيمكن زيادة درجة «الإسهاب» لسجل CUPS بتغيير التعليمة LogLevel في ملف الضبط إلى "debug" أو حتى إلى "debug2"، مما يؤدي إلى تسجيل كل شيء؛ تأكد من إعادة القيمة الافتراضية "info" بعد حل مشكلتك لتفادي زيادة حجم السجل زيادةً كبيرةً جدًا. الضبطيُضبَط سلوك خادوم CUPS عبر تعليمات موجودة في ملف ‎/etc/cups/cupsd.conf؛ يتبِّع ملف ضبط CUPS نفس الصيغة العامة لملف الضبط الرئيسي لخادوم أباتشي؛ سنذكر هنا بعض الأمثلة عن الإعدادات التي يمكن تغييرها. تنويه: عليك إنشاء نسخة من الملف الأصلي قبل تعديل ملف الضبط، وعليك حماية تلك النسخة من الكتابة، لذلك ستكون لديك الإعدادات الافتراضية كمرجع أو لإعادة استخدامها وقت الحاجة. انسخ الملف ‎/etc/cups/cupsd.conf واحمهِ من الكتابة بالأوامر الآتية: sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original sudo chmod a-w /etc/cups/cupsd.conf.originalالتعليمة ServerAdmin: لضبط عنوان البريد الإلكتروني لمدير خادوم CUPS، عليك أن تُحرِّر ملف الضبط ‎/etc/cups/cupsd.conf، ثم أضف أو عدِّل سطر ServerAdmin بما يلائمك؛ فمثلًا إن كنت أنت مدير خادوم CUPS، وكان بريدك الإلكتروني هو user@example.com، فعليك تعديل سطر ServerAdmin ليبدو كما يلي: ServerAdmin user@example.comالتعليمة Listen: يستمع خادوم CUPS في أوبنتو افتراضيًا على بطاقة loopback فقط على عنوان IP 127.0.0.1؛ ولكي تجعل خادوم CUPS يستمع على عنوان IP لبطاقة شبكية، فعليك تحديد إما اسم مضيف، أو عنوان IP، أو اختيارًا، عنوان IP ومنفذ؛ وذلك بإضافة التعليمة Listen؛ على سبيل المثال، لو كان خادوم CUPS يقبع على شبكة محلية بعنوان IP هو 192.168.10.250 وتريد أن تجعله متاحًا لبقية الأنظمة على هذه الشبكة الفرعية؛ فعليك تعديل ‎/etc/cups/cupsd.conf؛ وإضافة التعليمة Listen، كما يلي: Listen 127.0.0.1:631 # existing loopback Listen Listen /var/run/cups/cups.sock # existing socket Listen Listen 192.168.10.250:631 # Listen on the LAN interface, Port 631 (IPP)قد تحذف أو تضع تعليقًا قبل الإشارة إلى عنوان loopback‏ (127.0.0.1) إذا لم ترغب في أن يستمع cupsd إلى هذه البطاقة لكنك تريده أن يستمع فقط إلى بطاقة إيثرنت للشبكة المحلية LAN؛ لتفعيل الاستماع لكل منافذ الشبكة بما فيها loopback لمضيف معيّن، فتستطيع إنشاء قيد Listen لاسم المضيف (socrates) كما يلي: Listen socrates:631 # Listen on all interfaces for the hostname 'socrates'أو بحذف التعليمة Listen واستخدام Port عوضًا عنها: Port 631 # Listen on port 631 on all interfacesللمزيد من الأمثلة عن تعليمات الضبط لخادوم CUPS، راجع صفحة الدليل الخاصة بملف الضبط بإدخال الأمر الآتي: man cupsd.confملاحظة: في كل مرة تُعدِّل فيها على ملف الضبط ‎/etc/cups/cupsd.conf؛ فستحتاج إلى إعادة تشغيل خادوم CUPS بكتابة الأمر التالي في الطرفية: sudo service cups restartواجهة الويبملاحظة: يمكن أن يُضبَط ويُراقَب CUPS باستخدام واجهة ويب، التي تتوفر افتراضيًا على http://localhost:631/admin؛ يمكن استخدام واجهة الويب لإجراء كل مهام إدارة الطابعة. لكي تنفذ المهام الإدارية عبر واجهة الويب، فعليك إما تفعيل حساب الجذر على خادومك، أو الاستيثاق كمستخدم في المجموعة lpadmin؛ ولأسبابٍ أمنية، لن يستوثق CUPS من مستخدم لا يملك كلمة مرور. لإضافة مستخدم إلى المجموعة lpadmin، فعليك تنفيذ الأمر الآتي في الطرفية: sudo usermod -aG lpadmin usernameيتوفر توثيق في لسان Documentation/Help في واجهة الويب. مصادرموقع CUPS الإلكتروني. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: CUPS - Print Server.
  13. نظام ملفات الشبكة (NFS)يسمح NFS للنظام بمشاركة المجلدات والملفات مع الآخرين عبر الشبكة؛ إذ يمكن للمستخدمين والبرامج الوصول إلى الملفات في الأنظمة البعيدة كأنها ملفاتٌ محلية باستخدام NFS. بعض الميزات الملحوظة التي يوفرها استخدام NFS: محطات العمل المحلية تستهلك مساحة قرص أقل ﻷنها تستخدم بيانات يمكن تخزينها على جهاز واحد وتبقى متاحةً للبقية عبر الشبكة.لا توجد حاجة ليُنشَأ للمستخدمين مجلدات منزل منفصلة في كل جهاز شبكي؛ حيث يمكن ضبط مجلدات المنزل على خادوم NFS وتتوفر للجميع عبر الشبكة.أجهزة التخزين مثل سواقات CD-ROM وأقراص USB يمكن استخدامها من الأجهزة الأخرى على الشبكة، وربما يقلل هذا من عدد مشغلات الوسائط القابلة للإزالة في الشبكة.التثبيتأدخل الأمر الآتي في الطرفية لتثبيت خادوم NFS: sudo apt-get install nfs-kernel-serverالضبطتستطيع ضبط المجلدات لكي «تُصدَّر» عبر إضافتها لملف ‎/etc/exports، على سبيل المثال: /ubuntu *(ro,sync,no_root_squash) /home *(rw,sync,no_root_squash)تستطيع استبدال * بإحدى صيغ أسماء المضيفين، تأكد من أن تعريف اسم المضيف محدد كي لا تستطيع الأنظمة غير المعنية أن تصل إلى NFS. نفِّذ الأمر الآتي في مِحَث الطرفية لتشغيل خادوم NFS: sudo service nfs-kernel-server startضبط عميل NFSاستخدم الأمر mount لوصل مجلد NFS مشترك من جهاز لآخر؛ وذلك بكتابة أمرٍ شبيه بالأمر الآتي في الطرفية: sudo mount example.hostname.com:/ubuntu /local/ubuntuتحذير: يجب أن تكون نقطة الوصل ‎/local/ubuntu موجودةً مسبقًا، ولا يجب أن يكون هنالك أيّة ملفات أو مجلدات فرعية في نقطة الوصل. طريقة أخرى لوصل مشاركة NFS من جهاز لآخر هي إضافة سطر إلى ملف ‎/etc/fstab؛ يجب أن يُحدِّد هذا السطر اسم مضيف خادوم NFS، والمجلد الذي صُدِّرَ من الخادوم، والمجلد في الجهاز المحلي الذي يجب وصل NFS إليه؛ الشكل العام للسطر الذي سيُضاف إلى ملف ‎/etc/fstab هو: example.hostname.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intrإذا حدثت معك مشكلة في وصل NFS، فتأكد أن الحزمة nfs-common مثبتة في نظام عميلك؛ وذلك بإدخال الأمر الآتي في الطرفية: sudo apt-get install nfs-commonمصادرLinux NFS faqصفحة ويكي أوبنتو «NFS Howto»«مبادر»‏ iSCSI‏إن iSCSI‏ (Internet Small Computer System Interface) هو بروتوكول يسمح بنقل أوامر SCSI عبر الشبكة؛ عادةً يُستخدَم iSCSI في SAN‏ (Storage Area Network) للسماح للخواديم بالوصول إلى مخزن كبير لمساحة القرص الصلب؛ يُشير بروتوكول iSCSI للعملاء «بالمبادرين» (initiators) ولخواديم iSCSI بالأهداف (targets). يمكن أن يُضبَط خادوم أوبنتو كمبادر أو هدف iSCSI، يوفر هذا الدرس الأوامر والضبط اللازم لإعداد مبادر iSCSI، على فرض أنك تملك هدف iSCSI في شبكتك وتملك الامتيازات المناسبة للاتصال إليه؛ التعليمات حول إعداد هدف تختلف اختلافًا كبيرًا بين مزودي العتاد، لذلك راجع توثيق الشركة لضبط هدف iSCSI الذي عندك. تثبيت مبادر iSCSIلضبط خادوم أوبنتو كمبادر iSCSI، فثبِّت الحزمة open-iscsi بإدخال الأمر الآتي: sudo apt-get install open-iscsiضبط مبادر iSCSIبعد أن تُثبَّت حزمة open-iscsi، عليك تعديل الملف ‎/etc/iscsi/iscsid.conf مغيرًا ما يلي: node.startup = automaticتستطيع التأكد إذا كان الهدف متوفرًا حاليًا باستخدام الأداة iscsiadm؛ وذلك بإدخال الأمر الآتي في الطرفية: sudo iscsiadm -m discovery -t st -p 192.168.0.10‎-m: يحدد النمط الذي سيُنفَّذ فيه iscsiadm.‎-t: يحدد نوع الاستكشاف.‎-p: يحدد عنوان IP للهدف.ملاحظة: عدِّل 192.168.0.10 إلى عنوان IP للهدف على شبكتك المحلية. إذا كان الهدف متوفرًا، فيجب أن تشاهد مخرجات شبيهة بما يلي: 192.168.0.10:3260,1 iqn.1992-05.com.emc:sl7b92030000520000-2ملاحظة: قد يختلف رقم iqn وعنوان IP في الأعلى بناءً على العتاد الذي تستخدمه. يجب أن تكون الآن قادرًا على الاتصال بهدف iSCSI، واعتمادًا على إعدادات الهدف، فربما تحتاج لإدخال بيانات المستخدم لتسجيل الدخول إلى عقدة iSCSI: sudo iscsiadm -m node --loginتأكد الآن أن القرص الجديد قد عُثِرَ عليه باستخدام dmesg: dmesg | grep sd [ 4.322384] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 4.322797] sd 2:0:0:0: [sda] 41943040 512-byte logical blocks:(21.4GB/20.0 GiB) [ 4.322843] sd 2:0:0:0: [sda] Write Protect is off [ 4.322846] sd 2:0:0:0: [sda] Mode Sense: 03 00 00 00 [ 4.322896] sd 2:0:0:0: [sda] Cache data unavailable [ 4.322899] sd 2:0:0:0: [sda] Assuming drive cache: write through [ 4.323230] sd 2:0:0:0: [sda] Cache data unavailable [ 4.323233] sd 2:0:0:0: [sda] Assuming drive cache: write through [ 4.325312] sda: sda1 sda2 < sda5 > [ 4.325729] sd 2:0:0:0: [sda] Cache data unavailable [ 4.325732] sd 2:0:0:0: [sda] Assuming drive cache: write through [ 4.325735] sd 2:0:0:0: [sda] Attached SCSI disk [2486.941805] sd 4:0:0:3: Attached scsi generic sg3 type 0 [2486.952093] sd 4:0:0:3: [sdb] 1126400000 512-byte logical blocks: (576 GB/537 ↪ GiB) [2486.954195] sd 4:0:0:3: [sdb] Write Protect is off [2486.954200] sd 4:0:0:3: [sdb] Mode Sense: 8f 00 00 08 [2486.954692] sd 4:0:0:3: [sdb] Write cache: disabled, read cache: enabled, ↪ doesn't support DPO or FUA [2486.960577] sdb: sdb1 [2486.964862] sd 4:0:0:3: [sdb] Attached SCSI diskفي الناتج أعلاه، يكون sdb هو قرص iSCSI الجديد؛ تذكر أن هذا مجرد مثال، قد يختلف الناتج عمّا تراه على الشاشة. أنشِئ الآن قسمًا، وهيّء نظام الملفات، وصِل قرص iSCSI الجديد؛ وذلك بإدخال ما يلي في الطرفية: sudo fdisk /dev/sdb n p enter wملاحظة: الأوامر الآتية من داخل الأداة fdisk؛ راجع man fdisk لتعليمات تفصيلية؛ أيضًا الأداة cfdisk في بعض الأحيان تكون «صديقة» للمستخدم أكثر. هيّء الآن نظام الملفات وصِله إلى ‎/srv على سبيل المثال: sudo mkfs.ext4 /dev/sdb1 sudo mount /dev/sdb1 /srvفي النهاية، أضف مدخلة إلى ‎/etc/fstab لوصل قرص iSCSI أثناء الإقلاع: /dev/sdb1 /srv ext4 defaults,auto,_netdev 0 0فكرة جيدة هي التأكد أن كل شيء يعمل على ما يرام قبل إعادة تشغيل الخادوم. مصادرموقع Open-iSCSI الإلكتروني.صفحة ويكي دبيان «Open-iSCSI».ترجمة -وبتصرف- للمقالين: Ubuntu Server Guide: Network File System NFS و Ubuntu Server Guide: ISCSI Initiator.
  14. إذا كان لديك أكثر من حاسوب في نفس الشبكة، فعند حدٍّ معيَّن ستحتاج إلى مشاركة الملفات بين تلك الحواسيب. خادوم FTPبروتوكول نقل الملفات (File Transfer Protocol اختصارًا FTP) هو بروتوكول TCP لتنزيل الملفات بين الحواسيب؛ في الماضي، كان يُستخدم أيضًا لرفع الملفات، لكن هذه الطريقة لا توفر إمكانية التشفير، وستُنقَل معلومات المستخدم مع البيانات في صيغة سهلة التفسير؛ إذا كنت تبحث هنا عن طريقة آمنة لرفع أو تنزيل الملفات، فألقِ نظرةً على خادوم OpenSSH. يعمل FTP وفق نمط «عميل/خادوم»؛ حيث تُسمى مكونة FTP في الخادوم «عفريت FTP»، الذي يستمع بشكل متواصل لطلبات FTP من العملاء البعيدين؛ وعند وصول طلب، فإنه يجري عملية الدخول ويُهيِّء الاتصال، وستُنفَّذ الأوامر المُرسَلة من عميل FTP أثناء مدة عمل الجلسة. يمكن الوصول إلى خادوم FTP بإحدى الطريقتين: مستخدم مجهول.مستخدم موثوق.في نمط المستخدم المجهول (Anonymous)؛ يمكن للعملاء البعيدين الوصول إلى خادوم FTP بحساب المستخدم الافتراضي المُسمى «anonymous» أو «ftp» ويرسلون عنوان بريد إلكتروني ككلمة مرور؛ أما في نمط المستخدم الموثوق، فيجب على المستخدم امتلاك حساب وكلمة مرور؛ الخيار الثاني غير آمن أبدًا ولا يجب أن يستخدم إلا في الحالات الخاصة؛ إذا كنت تبحث عن طريقة آمنة لنقل الملفات، فانظر إلى SFTP في OpenSSH-Server. وصول المستخدم إلى مجلدات وملفات خادوم FTP يتعلق بالأذونات المعطية للحساب أثناء تسجيل الدخول؛ وكقاعدة عامة، سيخفي عفريت FTP المجلد الجذر لخادوم FTP وسيحول المستخدم إلى مجلد منزل FTP؛ وهذا سيخفي بقية نظام الملفات من الجلسات البعيدة. تثبيت خادوم FTP‏ ‎«vsftpd»‎إن vsftpd هو عفريت FTP متوفر في أوبنتو، ومن السهل تثبيته وإعداده وصيانته؛ لتثبيت vsftpd، عليك تنفيذ الأمر الآتي في الطرفية: sudo apt-get install vsftpdضبط الوصول المجهول لخادوم FTPافتراضيًا، لم يُضبَط vsftpd للسماح للمستخدمين المجهولين بالتنزيل؛ إذا كنت تريد السماح لهم بالتنزيل، فعدِّل الملف ‎/etc/vsftpd.conf مغيّرًا: anonymous_enable=Yesسيُنشَأ مستخدم باسم ftp مع مجلد المنزل ‎/srv/ftp أثناء التثبيت؛ هذا هو مجلد FTP الافتراضي. إذا أردت تغيير هذا المسار إلى ‎/srv/files/ftp على سبيل المثال، فببساطة أنشِئ مجلدًا في مكانٍ آخر، وغيّر مجلد المنزل للمستخدم ftp: sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftpأعد تشغيل الخدمة vsftpd بعد عمل التغيرات السابقة: sudo restart vsftpdفي النهاية، انسخ أيّة ملفات ومجلدات تريد للمستخدمين المجهولين تنزيلها عبر ftp إلى ‎/srv/files/ftp أو إلى ‎/srv/ftp إذا أبقيت على الإعدادات الافتراضية. ضبط FTP للاستيثاق من المستخدمينافتراضيًا، يكون vsftpd مضبوطًا على الاستيثاق من مستخدمي النظام والسماح لهم بتنزيل الملفات؛ إذا أردت السماح للمستخدمين برفع الملفات، فعدِّل الملف ‎/etc/vsftpd.conf: write_enable=YESثم أعد تشغيل vsftpd: sudo restart vsftpdالآن عندما يتصل مستخدمو النظام عبر FTP، فسيبدؤون في مجلد المنزل الخاص بهم، حيث يستطيعون تنزيل أو رفع الملفات أو إنشاء المجلدات ...إلخ. وبشكلٍ مشابه، لا يُسمَح افتراضيًا للمستخدمين المجهولين برفع الملفات إلى خادوم FTP؛ لتغيير ذلك الإعداد عليك أن تُزيل التعليق عن السطر الآتي وتُعيد تشغيل خدمة vsftpd: anon_upload_enable=YESتحذير: إن السماح للمستخدمين المجهولين برفع الملفات إلى الخادوم هو أمرٌ خطيرٌ جدًا، ولا يُفضَّل أبدًا أن يُسمَح للمستخدمين المجهولين برفع الملفات مباشرةً من الإنترنت. يحتوي ملف الضبط على العديد من خيارات الضبط؛ توجد معلومات حول كل خيار في ملف الضبط؛ ويمكنك مراجعة صفحة الدليل man 5 vsftpd.conf للمزيد من التفاصيل حول كل إعداد. تأمين FTPهنالك خيارات في ‎/etc/vsftpd.conf للمساعدة في جعل vsftpd أكثر أمانًا؛ فمثلًا يمكن أن يقيّد وصول المستخدمين إلى مجلدات المنزل الخاصة بهم بإزالة التعليق عن السطر: chroot_local_users=YESيمكنك أن تقيّد قائمة محددة من المستخدمين إلى مجلدات المنزل الخاصة بهم فقط: chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_listبعد إزالة التعليق عن الخيارات السابقة؛ أنشِئ ملف ‎/etc/vsftpd.chroot_list الذي يحتوي على قائمة بالمستخدمين المسموح لهم واحدًا في كل سطر؛ ثم أعد تشغيل vsftpd: sudo restart vsftpdيحتوي الملف ‎/etc/ftpusers أيضًا على قائمة بالمستخدمين غير المسموح لهم بالوصول إلى FTP؛ القائمة الافتراضية تتضمن root، و daemon، و nobody ...إلخ. لتعطيل الوصول إلى FTP لمستخدمين آخرين، فأضفهم ببساطة إلى القائمة. يمكن أن يُشفَّر FTP باستخدام FTPS، الذي يختلف عن SFTP؛ FTPS هو FTP عبر طبقة المقابس الآمنة (SSL)؛ إن SFTP هو مثل جلسة FTP عبر اتصال SSH مشفر؛ اختلاف رئيسي هو أن مستخدمي SFTP يجب أن يملكوا حساب «shell» على النظام، بدلًا من صدفة nologin؛ قد لا يكون توفير صدفة لكل المستخدمين أمرًا ملائمًا في بعض البيئات مثل خادوم ويب مشترك؛ لكن من الممكن تقييد مثل هذه الحسابات إلى SFTP فقط وتعطيل التعامل مع الصدفة، راجع درس OpenSSH لمزيدٍ من المعلومات. لضبط FTPS، عدِّل الملف ‎/etc/vsftpd.conf وأضف في النهاية: ssl_enable=Yesأيضًا، لاحظ الخيارات المتعلقة بالشهادة والمفتاح: rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.keyضُبِطَت هذه الخيارات افتراضيًا إلى الشهادة والمفتاح الموفر من الحزمة ssl-sert؛ لكن يجب استبدالهما في البيئات الإنتاجية بالشهادة والمفتاح المُولَّد لمضيف محدد؛ للمزيد من المعلومات حول الشهادات، راجع الدرس الخاص بها في هذه السلسلة. أعد الآن تشغيل vsftpd، وسيُجبر المستخدمون غير المجهولين على استخدام FTPS: sudo restart vsftpdللسماح للمستخدم بصدفة ‎/usr/sbin/nologin بالوصول إلى FTP، لكن عدم امتلاك وصول للصدفة، فعدِّل ملف ‎/etc/shells مضيفًا الصدفة nologin: # /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologinهذا ضروريٌ لأن vsftpd يستخدم PAM افتراضيًا للاستيثاق؛ والملف ‎/etc/pam.d/vsftpd يحتوي على: auth required pam_shells.soالصدفات التي تسمح الوحدة PAM لها بالوصول هي الصدفات المذكورة في ملف ‎/etc/shells. يمكن ضبط أغلبية عملاء FTP الشهيرين ليتصلوا عبر FTPS. الأداة lftp التي تعمل من سطر الأوامر لها إمكانية استخدام FTPS أيضًا. مصادرراجع موقع vsftpd الرسمي لمزيدٍ من المعلومات.لتفاصيل الخيارات في ‎/etc/vsftpd.conf راجع صفحة دليل vsftpd.conf.ترجمة -وبتصرف- للمقال Ubuntu Server Guide: FTP Server.
  15. تثبيت LAMP (الذي هو Linux + Apache + MySQL + PHP/Perl/Python) هو إعداد شائع لخواديم أوبنتو؛ هنالك تشكيلة واسعة جدًا من البرمجيات مفتوحة المصدر المكتوبة لتجميعة برامج LAMP؛ أشهر تلك البرمجيات هي تطبيقات الويكي، وأنظمة إدارة المحتوى، وبرمجيات الإدارة مثل phpMyAdmin. ميزة من مزايا LAMP هي المرونة غير العادية لاستخدام قواعد بيانات أو خواديم ويب أو لغات برمجية مختلفة! بدائل شائعة لقواعد MySQL تتضمن PostgreSQL و SQLite؛ وتُستخدَم Python أو Perl أو Ruby بدلًا من PHP؛ ويَستبدل Nginx أو Cherokee أو Lighttpd الخادوم أباتشي. أسرع طريقة للبدء في تثبيت LAMP هي استخدام tasksel؛ الأداة tasksel هي أداة خاصة بدبيان/أوبنتو التي تُثبِّت حزمًا مترابطة للقيام «بمهمة» في نظامك؛ أدخِل الأمر الأتي في الطرفية لتثبيت خادوم LAMP: sudo tasksel install lamp-serverبعد إتمام عملية التثبيت، ستكون قادرًا على تثبيت أغلبية تطبيقات LAMP بهذه الطريقة: تنزيل أرشيف يحتوي على الملفات المصدرية للتطبيق.استخراج الملفات من الأرشيف إلى مجلد يمكن لخادوم الويب الوصول إليه.اعتمادًا على المكان الذي استخرجت الملفات إليه، فاضبط خادوم الويب ليُخدِّم الصفحات من هناك.اضبط التطبيق للاتصال بقاعدة البيانات.شغِّل سكربتًا، أو افتح صفحةً من التطبيق لتثبيت قاعدة البيانات التي يحتاج لها هذا التطبيق.بعد أن أجريت الخطوات السابقة أو خطواتٍ شبيهةٍ بها، فأنت جاهزٌ الآن للبدء باستعماله.عيب من عيوب هذه الطريقة هي أن ملفات التطبيق لا توضع في مكان قياسي في نظام الملفات، الأمر الذي قد يسبب فوضى؛ عيب آخر كبير هو تحديث التطبيق، فعند إصدار نسخة جديدة منه، فيجب إجراء نفس عملية تثبيت التطبيق لتحديثه. لحسن الحظ، هنالك عدد من تطبيقات LAMP مُحزَّمة في أوبنتو، ومتوفرة للتثبيت كغيرها من التطبيقات؛ لكن حسب التطبيق، فربما هنالك خطوات أخرى للضبط والإعداد؛ سيشرح هذا الفصل تثبيت بعض تطبيقات LAMP. Moin Moinإن MoinMoin هو محرك ويكي مكتوب بلغة بايثون ومبني على محرك الويكي PikiPiki ومرخص برخصة GUN GPL. التثبيتنفِّذ الأمر الآتي لتثبيت MoinMoin: sudo apt-get install python-moinmoinيجب أن تكون قد ثبتت خادوم أباتشي؛ رجاءً راجع درس تثبيت أباتشي لمزيدٍ من المعلومات حول تثبيت أباتشي. الضبطلضبط أول تطبيق ويكي خاص بك، فعليك تنفيذ سلسلة الأوامر الآتية؛ على فرض أنك تُنشِئ «ويكي» باسم mywiki: cd /usr/share/moin sudo mkdir mywiki sudo cp -R data mywiki sudo cp -R underlay mywiki sudo cp server/moin.cgi mywiki sudo chown -R www-data.www-data mywiki sudo chmod -R ug+rwX mywiki sudo chmod -R o-rwx mywikiيجب الآن أن تضبط MoinMoin لكي يرى الويكي الجديد mywiki؛ لضبط MoinMoin، افتح الملف ‎/etc/moin/mywiki.py وعدِّل السطر الآتي: data_dir = '/org/mywiki/data'إلى: data_dir = '/usr/share/moin/mywiki/data'أيضًا، تحت الخيار data_dir، أضف الخيار data_underlay_dir: data_underlay_dir='/usr/share/moin/mywiki/underlay'ملاحظة: إذا لم يكن الملف ‎/etc/moin/mywiki.py موجودًا، فعليك نسخ ‎/usr/share/moin/‎config/wikifarm/mywiki.py إلى ‎/etc/moin/mywiki.py ثم تنفيذ التغيير المذكور آنفًا. ملاحظة: إذا سميت الويكي باسم my_wiki_name، فيجب إضافة السطر: ‎("my_wiki_name",r".*") إلى ملف ‎/etc/moin/farmconfig.py بعد السطر: ‎("mywiki", r".*")بعد أن تضبط MoinMoin ليعثر على أول تطبيق ويكي mywiki عليك ضبط أباتشي وجعله جاهزًا لتطبيق الويكي. يجب أن تُضيف الأسطر الآتية في ملف ‎/etc/apache2/sites-available/default ضمن الوسم ‎<VirtualHost *>‎: ### moin ScriptAlias /mywiki "/usr/share/moin/mywiki/moin.cgi" alias /moin_static193 "/usr/share/moin/htdocs" <Directory /usr/share/moin/htdocs> Order allow,deny allow from all </Directory> ### end moinبعد أن تضبط خادوم أباتشي وتجعله جاهزًا لتطبيق الويكي، يجب عليك أن تعيد تشغيله، وذلك بإدخال الأمر الآتي لإعادة تشغيل خادوم أباتشي: sudo service apache2 restartالتجربةللتأكد من عمل تطبيق الويكي، وجِّه متصفحك للوصلة الآتية: http://localhost/mywiki للمزيد من المعلومات، راجع موقع MoinMoin الرسمي. مصادرللمزيد من المعلومات انظر إلى ويكي «moinmoin».أيضًا، صفحة ويكي أوبنتو «MoinMoin».MediaWikiإن MediaWiki هي برمجية Wiki مبنية على الويب مكتوبة بلغة PHP؛ يمكنها أن تستخدم نظام إدارة قواعد بيانات MySQL أو PostgreSQL. التثبيتقبل تثبيت MediaWiki، يجب عليك تثبيت أباتشي ولغة برمجة PHP5 ونظام إدارة قواعد بيانات؛ وأشهرها MySQL أو PostgreSQL، اختر واحدًا بناءً على احتياجاتك، رجاءً ارجع إلى الأقسام التي تشرح تثبيتها في هذه السلسلة للمزيد من المعلومات. نفِّذ الأمر الآتي في الطرفية لتثبيت MediaWiki: sudo apt-get install mediawiki php5-gdلوظائف MediaWiki إضافية، انظر إلى الحزمة mediawiki-extensions. الضبطملف ضبط أباتشي mediawiki.conf مثبَّتٌ في ‎‎/etc/apache2/conf-available/‎، يجب عليك إزالة التعليق من السطر الآتي للوصول إلى تطبيق MediaWiki: # Alias /mediawiki /var/lib/mediawikiبعد أن تُزيل التعليق من السطر السابق، ففعِّل الضبط ثم أعد تشغيل خادوم أباتشي ثم ادخل إلى MediaWiki عبر الرابط الآتي http://localhost/mediawiki/config/index.php: sudo a2enconf mediawiki.conf sudo service apache2 restartبعد إكمال الضبط، يجب عليك أن تنقل الملف LocalSettings.php إلى المجلد ‎/etc/mediawiki: sudo mv /var/lib/mediawiki/config/LocalSettings.php /etc/mediawiki/ربما تريد أيضًا تعديل ‎/etc/mediawiki/LocalSettings.php لكي تضبط حد الذاكرة الأقصى (معطَّل افتراضيًا): ini_set( 'memory_limit', '64M' );الإضافاتتوفِّر الإضافات ميزات وتحسينات على تطبيق MediaWiki؛ تمنح هذه الإضافات مدراء الويكي والمستخدمين النهائيين القدرة على تخصيص MediaWiki لتناسب احتياجاتهم. يمكنك تنزيل إضافات MediaWiki كأرشيف أو عبر سحبها (checkout) من مستودع Subversion؛ عليك أن تنسخها إلى مجلد ‎/var/lig/mediawiki/extensions؛ يجب عليك أيضًا إضافة السطر الآتي في نهاية الملف ‎/etc/mediawiki/LocalSettings.php: require_once "$IP/extensions/ExtentionName/ExtentionName.php";مصادرللمزيد من المعلومات، رجاءً راجع موقع MediaWiki.يحتوي كتاب «MediaWiki Administrators’ Tutorial Guide» على معلوماتٍ قيمة لمدراء MediaWiki الجدد.صفحة ويكي أوبنتو «MediaWiki» هي مصدرٌ جيدٌ أيضًا.phpMyAdminإن phpMyAdmin هو تطبيق LAMP مكتوب خصيصًا لإدارة خواديم MySQL، وهو مبرمج بلغة PHP، ويمكن الوصول إليه عبر متصفح الويب، حيث يوفِّر phpMyAdmin واجهة رسومية لمهام إدارة قواعد البيانات. التثبيتقبل تثبيت phpMyAdmin فستحتاج إلى وصول إلى قاعدة بيانات MySQL سواءً على نفس المضيف الذي سيُثبَّت عليه phpMyAdmin أو على مضيف آخر متوفر عبر الشبكة؛ للمزيد من المعلومات حول MySQL فانظر إلى القسم الخاص بها في هذا الكتاب؛ أدخِل الأمر الآتي لتثبيت phpMyAdmin: sudo apt-get install phpmyadminستظهر لك نافذة لاختيار أي خادوم ويب سيُضبَط ليستخدمه phpMyAdmin؛ سنستخدم لبقية هذا القسم خادوم أباتشي كخادوم ويب. في المتصفح، اذهب إلى http://server/phpmyadmin مستبدلًا server باسم مضيف الخادوم الحقيقي؛ وعند صفحة تسجيل الدخول، اكتب root في حقل اسم المستخدم، أو أي مستخدم MySQL إذا كنت قد أعددت واحدًا؛ ثم أدخل كلمة مرور ذاك المستخدم. بعد تسجيل الدخول، تستطيع إعادة ضبط كلمة مرور الجذر إن كان ذلك ضروريًا، وإنشاء المستخدمين، وإنشاء أو حذف قواعد البيانات والجداول ...إلخ. الضبطملفات الضبط الخاصة ببرمجية phpMyAdmin موجودةٌ في مجلد ‎/etc/phpmyadmin؛ ملف الضبط الرئيسي هو ‎/etc/phpmyadmin/config.inc.php يحتوي هذا الملف خيارات الضبط التي تُطبَّق عمومًا على phpMyAdmin. لاستخدام phpMyAdmin لإدارة قواعد بيانات MySQL على خادوم آخر، عدِّل قيمة ما يلي في ملف ‎/etc/phpmyadmin/config.inc.php: $cfg['Servers'][$i]['host'] = 'db_server';ملاحظة: استبدل db_server باسم مضيف الخادوم البعيد أو عنوان IP الخاص به؛ أيضًا تأكد أن مضيف phpMyAdmin لديه الأذونات الكافية للوصول إلى قاعدة البيانات البعيدة. بعد ضبطه، سجل خروجك من phpMyAdmin ثم أعد تسجيل الدخول، ويجب أن تستطيع الوصول إلى الخادوم الجديد. الملفان config.header.inc.php و config.footer.inc.php يستخدمان لإضافة ترويسة وتذييل HTML إلى phpMyAdmin. ملف ضبط آخر مهم هو ‎/etc/phpmyadmin/apache.conf، توجد وصلة رمزية لهذا الملف في ‎/etc/apache2/conf.d/phpmyadmin.conf ويُستخدَم لضبط أباتشي لتخديم صفحات phpMyAdmin؛ يحتوي هذا الملف على تعليمات لتحميل PHP، وأذونات المجلد ...إلخ. مصادريأتي توثيق phpMyAdmin مثبتًا مع الحزمة ويمكن الوصول إليه من وصلة «phpMyAdmin Documentation» تحت شعار phpMyAdmin؛ يمكن الوصول إلى التوثيق الرسمي أيضًا في موقع phpMyAdmin.كتاب «Mastering phpMyAdmin» هو مصدر جيد للمعلومات.مصدر ثالث هو صفحة ويكي أوبنتو «phpMyAdmin».ووردبريسإن ووردبريس (Wordpress) هي أداة تدوين، ومنصة نشر، ونظام إدارة محتوى مكتوبة بلغة PHP ومرخصة برخصة GNU GPLv2. التثبيتنفِّذ الأمر الآتي في سطر الأوامر لتثبيت ووردبريس: sudo apt-get install wordpressيجب عليك أيضًا تثبيت خادوم أباتشي وخادوم MySQL؛ راجع الأقسام التي تُعنى بتثبيتهما وإعدادهما في هذه السلسلة. الضبطلضبط أول تطبيق ووردبريس، فعليك ضبط موقع أباتشي؛ افتح الملف ‎/etc/apache2/sites-available/wordpress.conf وضع فيه الأسطر الآتية: Alias /blog /usr/share/wordpress <Directory /usr/share/wordpress> Options FollowSymLinks AllowOverride Limit Options FileInfo DirectoryIndex index.php Order allow,deny Allow from all </Directory> <Directory /usr/share/wordpress/wp-content> Options FollowSymLinks Order allow,deny Allow from all </Directory>ثم فعِّل الموقع الجديد: sudo a2ensite wordpressبعد أن انتهيت من ضبط خادوم أباتشي، وجعلته جاهزًا لتطبيق ووردبريس، فعليك الآن إعادة تشغيله وذلك بتنفيذ الأمر الآتي: sudo service apache2 restartلتبسيط تشغيل عدِّة نسخ من ووردبريس، فسمِّ ملف الضبط بناءً على اسم المضيف؛ وهذا يعني أنك تستطيع أن تملك عدّة مضيفين وهميين بمطابقة اسم المضيف في ملف الضبط مع ملف اسم المضيف الوهمي في أباتشي؛ فعلى سبيل المثال، تكون أسماء الملفات هي ‎/etc/wordpress/config-10.211.55.50.php، أو ‎/etc/wordpress/config-hostalias1.php ...إلخ. هذه التعليمات تفترض أنك تستطيع الوصول إلى أباتشي عبر المضيف المحلي (ربما باستخدام نفق SSH)؛ إذا لم يكن ذلك هو الأمر، فاستبدل ‎/etc/wordpress/config-localhost.php بالاسم ‎/etc/wordpress/config/NAME_OF_VIRTUAL ‎_HOST.php. بعد أن يُكتَب ملف الضبط، فعليك اختيار نمط ﻷسماء مستخدمي MySQL وكلمات مرورهم لكل نسخة ووردبريس؛ لكن سنعرض في هذا الدرس مثالًا واحدًا هو localhost فقط. علينا الآن ضبط ووردبريس لاستخدام قاعدة بيانات MySQL؛ افتح الملف ‎/etc/wordpress/config-localhost.php واكتب الأسطر الآتية: <?php define('DB_NAME', 'wordpress'); define('DB_USER', 'wordpress'); define('DB_PASSWORD', 'yourpasswordhere'); define('DB_HOST', 'localhost'); define('WP_CONTENT_DIR', '/usr/share/wordpress/wp-content'); ?>ثم أنشِئ قاعدة البيانات، وذلك بفتح ملف مؤقت باسم wordpree.sql فيه أوامر MySQL الآتية: CREATE DATABASE wordpress; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'yourpasswordhere'; FLUSH PRIVILEGES;نفِّذ أوامر MySQL السابقة بالأمر: cat wordpress.sql | sudo mysql --defaults-extra-file=/etc/mysql/debian.cnfيجب أن تكون نسخة ووردبريس عندك قابلة للضبط بزيارة الوصلة http://localhost/blog/wp-admin/install.php، ثم اكتب اسم الموقع واسم المستخدم وكلمة المرور وبريدك الإلكتروني ثم اضغط على «تثبيت ووردبريس». لاحظ كلمة المرور المُولَّدة إن لم تختر واحدةً، ثم سجِّل دخولك إلى لوحة تحكم ووبرديس. مصادرتوثيق Wordpress.org Codex.صفحة ويكي أوبنتو «WordPress».ترجمة -وبتصرف- للمقال Ubuntu Server Guide: LAMP Applications.
  16. توفر أوبنتو خادومَيّ قواعد بيانات شهيرَين هما: قواعد بيانات MySQL.قواعد بيانات PostgreSQL.حيث تتوفران في المستودع الرئيسي (main)؛ ويشرح هذا الدرس كيفية تثبيت وضبط خادومَي قواعد البيانات آنفَيّ الذكر. MySQLإن MySQL هو خادوم قواعد بيانات سريع ومتعدد الخيوط (multi-threaded) ومتعدد المستخدمين ومرن جدًا؛ مُطوَّر للأنظمة الإنتاجية المحورية والتي تتحمل حِملًا ثقيلًا، ويمكن أيضًا تضمينه في البرمجيات سريعة النشر (mass-deployed). التثبيتنفذِّ الأمر الآتي في الطرفية لتثبيت MySQL: sudo apt-get install mysql-serverسيُطلب منك إدخال كلمة مرور للمستخدم الجذر لخادوم MySQL أثناء التثبيت. بعد أن ينتهي التثبيت، فيجب أن يبدأ خادوم MySQL تلقائيًا؛ تستطيع تنفيذ الأمر الآتي في الطرفية للتحقق إذا كان خادوم MySQL يعمل أم لا: sudo netstat -tap | grep mysqlيجب أن تشاهد شيئًا شبيهًا بما يلي بعد تنفيذ الأمر السابق: tcp 0 0 localhost:mysql *:* LISTEN 2556/mysqldإذا لم يكن يعمل الخادوم، فتستطيع تشغيله بالأمر: sudo service mysql restartالضبطتستطيع تعديل الملف ‎/etc/mysql/my.cnf لضبط الإعدادات الأساسية، مثل ملف السجل، ورقم المنفذ ...إلخ. فمثلًا لضبط MySQL ليستمع إلى الاتصالات من مضيفي الشبكة، عليك تعديل قيمة التعليمة bind-address إلى عنوان IP للخادوم: bind-address = 192.168.0.5ملاحظة: عدِّل 192.168.0.5 إلى العنوان الملائم. بعد إجراء التعديلات على ملف ‎/etc/mysql/my.cnf؛ فيجب إعادة تشغيل عفريت MySQL: sudo service mysql restartأدخل الأمر الآتي في الطرفية إذا رغبت بتغيير كلمة مرور المستخدم الجذر (root) في MySQL: sudo dpkg-reconfigure mysql-server-5.5سيُوقَف عمل عفريت MySQL، وستُسأل عن كلمة المرور الجديدة. محركات قاعدة البياناتعلى الرغم من أن الضبط الافتراضي لخادوم MySQL الموفر من حزم أوبنتو يعمل عملًا صحيحًا دون مشاكل، لكن هنالك بعض الأمور التي عليك أخذها بعين الاعتبار قبل الإكمال. صُمِّمَت قواعد بيانات MySQL للسماح بتخزين البيانات بطرقٍ مختلفة؛ يُشار لهذه الطرق إما بمحركات قواعد البيانات أو محركات التخزين (Storage engine)؛ هنالك محركان رئيسيان ستكون مهتمًا بهما: InnoDB و MyISAM؛ لا تتغير طريقة التعامل مع محركات التخزين المختلفة بالنسبة للمستخدم النهائي؛ حيث تتعامل MySQL مع الأمور بطريقة مختلفة وراء الستار، أي أنه بغض النظر عن محرك التخزين الذي تستخدمه، فإنك ستتعامل مع قواعد البيانات بنفس الطريقة تمامًا. لكل محرك إيجابياته وسلبياته؛ وبينما من الممكن دمج عدِّة محركات قواعد بيانات على مستوى الجدول، لكن ذلك خطيرٌ، فربما يقلل ذلك من الفعالية والأداء لأنك تُقسِّم الموارد بين محركين بدلًا من تخصيصها لمحرك واحد فقط. المحرك MyISAM هو الأقدم بين المحركين المذكورين؛ يمكن أن يكون أسرع من InnoDB في حالات معيّنة ويفضل الأعمال التي تتطلب القراءة فقط؛ تتمحور بعض تطبيقات الويب حول MyISAM (على الرغم أنها لن تُبطَئ إذا استخدمت InnoDB)؛ يدعم MyISAM أيضًا نوع البيانات FULLTEXT؛ الذي يسمح بالبحث بسرعة كبيرة في كمياتٍ كبيرةٍ من النص؛ لكن MyISAM قادر على قفل الجدول بأكمله فقط عند الكتابة، هذا يعني أن عمليةً واحدةً فقط تستطيع تحديث الجدول في لحظة زمنية معينّة؛ قد يكون هذا إعاقةً لتوسع تطبيق يعتمد على هذا الجدول؛ ولا يحتوي MyISAM على ميزة «journaling»، وهذا يعني أنه من الصعب استرجاع البيانات بعد حدوث انهيار.المحرك InnoDB هو محرك قواعد بيانات أكثر حداثةً، صُمِّم ليكون متوافقًا مع ACID الذي يضمن إجراء العمليات على قواعد البيانات بطريقة عملية؛ قفل الكتابة يحدث على مستوى السجل (row) ضمن الجدول؛ هذا يعني أنه من الممكن إجراء عدِّة تحديثات لسجلات جدولٍ ما في نفس الوقت؛ التخزين الموقت للبيانات يحدث في الذاكرة ضمن محرك قواعد البيانات، مما يسمح بالتخزين على أساس السجل وليس على أساس كتلة الملف (file block)؛ ولكي يتوافق مع ACID، فإن كل العمليات تحدث بطريقة «journaled» مستقلةً عن الجداول الرئيسية؛ وهذا يؤدي إلى استرجاع البيانات استرجاعًا عمليًا.إن InnoDB هو المحرك الافتراضي في MySQL 5.5 ومن المستحسن بشدة استخدامه بدلًا من MyISAM ما لم تكن تريد استخدام مزايا خاصة بذاك المحرك. الضبط المتقدم: إنشاء ملف ضبط my.cnfهنالك عدد من المعاملات التي يمكن تعديلها في ملف ضبط MySQL مما يسمح لك بتحسين أداء الخادوم مع مرور الوقت؛ ربما تجد الأداة «Percona's my.cnf generating tool» مفيدةً للإعداد الابتدائي؛ ستولد هذه الأداة ملف my.cnf ليكون أكثر ملائمةً لإمكانيات ومتطلبات خادومك. لا تستبدل ملف my.cnf المولد من Percona إذا وضعت بيانات في قاعدة بيانات، بعض التغييرات في الملف لن تسبب مشاكل لأنها تُعدِّل طريقة تخزين البيانات على القرص الصلب ولن تتمكن من تشغيل MySQL؛ إذا أردت استخدامه وكانت لديك بيانات موجودة مسبقًا، فعليك أن تجري mysqldump ثم تعيد التحميل: mysqldump --all-databases --all-routines -u root -p > ~/fulldump.sqlستُسأل عن كلمة مرور المستخدم الجذر لقواعد MySQL قبل إنشاء نسخة من البيانات؛ من المستحسن أن تتأكد أنه لا يوجد مستخدمين أو عمليات تستخدم قاعدة البيانات قبل إجراء هذه الخطوة؛ ربما تأخذ عملية النسخ بعض الوقت بناءً على مقدار البيانات الموجودة في قاعدة البيانات لديك؛ لن ترى شيئًا على الشاشة أثناء تنفيذ الأمر السابق. أغلق خادوم MySQL بعد إكمال عملية التفريغ (dump): sudo service mysql stopخذ الآن نسخةً احتياطيةً من my.cnf واستبدله بالملف الجديد: sudo cp /etc/my.cnf /etc/my.cnf.backup sudo cp /path/to/new/my.cnf /etc/my.cnfالآن احذف وأعد تهيئة مجال قواعد البيانات وتأكد أن الملكية صحيحة قبل إعادة تشغيلMySQL: sudo rm -rf /var/lib/mysql/* sudo mysql_install_db sudo chown -R mysql: /var/lib/mysql sudo service start mysqlكل ما تبقى الآن هو إعادة استيراد بياناتك؛ وللحصول على فكرة عن مدى إتمام عملية الاستيراد، فربما تجد الأداة pv‏ (Pipe Viewer) مفيدةً؛ الأمر الآتي يظهر كيفية تثبيت واستخدام pv لهذه الحالة، ربما لا تريد أن تستخدمها وكل ما عليك فعله هو استبدال pv بالأمر cat؛ تجاهل أية أوقات متوقعة للانتهاء (ETA) مولدة من pv؛ لأنها مبنية على الوقت المستغرق لكي يُعالَج كل سجل من الملف، لكن سرعة إدراج البيانات قد تختلف اختلافًا كبيرًا من سجل إلى سجل: sudo apt-get install pv pv ~/fulldump.sql | mysqlملاحظة: هذا ليس ضروريًا لكل تعديلات my.cnf؛ أغلبية المتغيرات التي قد ترغب في تعديلها لتحسين الأداء يمكن أن تُغيَّر حتى وإن كان يعمل الخادوم؛ تأكد من الحصول على نسخة احتياطية من ملفات الضبط والبيانات قبل إجراء التعديلات. MySQL Tunerالأداة «MySQL Tuner» هي أداة مفيدة تستطيع الاتصال إلى خدمة MySQL التي تعمل وتوفر اقتراحات عن كيفية ضبطها بأفضل ضبط لحالتك؛ وكما كان يعمل الخادوم لوقتٍ أطول، كلما كانت «النصيحة» التي سيوفرها mysqltuner أفضل؛ خذ بعين الاعتبار الانتظار لمدة 24 ساعة في بيئة إنتاجية قبل تشغيل هذه الأداة؛ تستطيع تثبيت mysqltuner من مستودعات أوبنتو: sudo apt-get install mysqltunerثم تشغيلها بعد تثبيتها بالأمر: mysqltunerوانتظر التقرير النهائي، سيوفر القسم العلوي معلوماتٍ عن خادوم قاعدة البيانات، ويوفر القسم السفلي اقتراحاتٍ لكي تعدلها في ملف my.cnf؛ يمكن تعديل أغلبية الاقتراحات على الخادوم مباشرةً دون إعادة تشغيله، انظر إلى توثيق MySQL الرسمي للمتغيرات المناسبة لتعديلها في البيئات الإنتاجية؛ ما يلي هو جزء من تقرير من قاعدة بيانات إنتاجية الذي يُظهِر أن هنالك بعض الفائدة من زيادة مقدار ذاكرة تخزين الطلبية: -------- Recommendations ----------------------------------------------------- General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance Increase table_cache gradually to avoid file descriptor limits Variables to adjust: key_buffer_size (> 1.4G) query_cache_size (> 32M) table_cache (> 64) innodb_buffer_pool_size (>= 22G)تعليق أخير عن ضبط قواعد البيانات: بينما نستطيع أن نقول أن بعض الإعدادات هي الأفضل، لكن قد يختلف الأداء من تطبيق لآخر؛ على سبيل المثال، ما يعمل عملًا ممتازًا لووردبريس (Wordpress) قد لا يكون الأفضل لدروبال (Drupal) أو جوملا (Joomla) أو التطبيقات التجارية؛ الأداء متعلقٌ بأنواع الطلبيات واستخدام الفهارس، وإذا ما كان تصميم قاعدة البيانات جيدًا، وهكذا... ربما من الجيد إنفاق بعض الوقت في البحث عن إعدادات ملائمة لقواعد البيانات بناءً على التطبيقات التي تستخدمها؛ لكن بعد أن تتجاوز التعديلات حدًا معيّنًا، فإن أيّة تغييرات تجريها لا تتسبب إلا بتحسين بسيط جدًا في أداء التطبيق، ومن الأفضل لك تحسين التطبيق نفسه، أو التفكير في توسيع خادوم MySQL إما باستخدام عتاد أفضل أو بإضافة خواديم تابعة (slave). مصادرراجع الموقع الرئيسي لقواعد MySQL لمزيدٍ من المعلومات.التوثيق الكامل متوفر بصيغ online و offline من «MySQL Developers portal».لمعلومات عامة حول SQL، انظر إلى كتاب «Using SQL Special Edition».صفحة ويكي أوبنتو «Apache MySQL PHP» فيها بعض المعلومات المفيدة.PostgreSQLPostgreSQL هي قاعدة بيانات علائقية تعتمد على الكائنات وتملك ميزات أنظمة قواعد البيانات التجارية التقليدية مع تحسينات موجودة في الجيل الجديد من أنظمة DBMS. التثبيتأدخل الأمر الآتي في الطرفية لتثبيت PostgreSQL: sudo apt-get install postgresqlبعد انتهاء التثبيت، عليك ضبط خادوم PostgreSQL بناءً على متطلباتك، على الرغم من أن الضبط الافتراضي قابل للاستخدام. الضبطالاتصال عبر TCP/IP معطَّل افتراضيًا؛ تدعم PostgreSQL عدّة طرق للاستيثاق من العميل؛ طريقة الاستيثاق IDENT تُستعمَل للمستخدمين المحليين ولمستخدم postgres ما لم يُضبَط غير ذلك؛ رجاءً راجع «PostgreSQL Administrator's Guide» إذا أردت ضبط بدائل مثل Kerberos. سنفترض في ما يلي أنك ستُفعِّل اتصالات TCP/IP وتستخدم طريقة MD5 للاستيثاق من العميل؛ تُخزَّن ملفات ضبط PostgreSQL في المجلد ‎/etc/postgresql/<version>/main؛ على سبيل المثال، إذا ثبتت خادوم PostgreSQL 9.1، فإن ملفات الضبط ستُخزَّن في المجلد ‎/etc/postgresql/9.1/main. تنويه: لضبط الاستيثاق بطريقة ident، فأضف مدخلات إلى ‎/etc/postgresql/9.1/‎ main/pg_ident.conf؛ هنالك تعليقات تفصيلية في الملف لتساعدك. لتفعيل اتصالات TCP/IP، عليك تعديل الملف ‎/etc/postgresql/9.1/main/postgresql.conf ومن ثم تحديد السطر: ‎‎#listen_addresses = 'localhost‎‎'‎ ثم تغييره إلى: listen_addresses = '*'ملاحظة: للسماح باتصالات IPv4 و IPv6، استبدل «localhost» بالرمز «::». ربما تريد تعديل بقية المعاملات، إذا كنت تعرف ماذا تفعل! للتفاصيل، ارجع إلى ملف الضبط أو إلى توثيق PostgreSQL. الآن وبعد أن استطعنا الاتصال بخادوم PostgreSQL فإن الخطوة الآتية هي ضبط كلمة مرور للمستخدم postgres؛ نفذ الأمر الآتي في الطرفية للاتصال بقاعدة بيانات PostgreSQL الافتراضية: sudo -u postgres psql template1يتصل الأمر السابق بقاعدة بيانات PostgreSQL المسماة template1 كالمستخدم postgres؛ بعد أن تتصل إلى خادوم PostgreSQL وتحصل على مِحَث لإدخال تعليمات SQL، فيمكنك إدخال أمر SQL الآتي في مِحَث psql لضبط كلمة المرور للمستخدم postgres: ALTER USER postgres with encrypted password 'your_password';بعد ضبط كلمة المرور، عدِّل الملف ‎/etc/postgresql/9.1/main/pg_hba.conf لاستخدام استيثاق MD5 مع المستخدم postgres: local all postgres md5في النهاية، يجب أن تُعيد تشغيل خدمة PostgreSQL لتهيئة الضبط الجديد، وذلك بإدخال الأمر الآتي من الطرفية: sudo service postgresql restartتحذير: الضبط السابق ليس كاملًا بأي شكل من الأشكال، رجاءً راجع «PostgreSQL Administrator's Guide» لمعاملات ضبط إضافية. يمكنك اختبار اتصالات الخادوم من الأجهزة الأخرى باستخدام عملاء PostgreSQL: sudo apt-get install postgresql-client psql -h postgres.example.com -U postgres -Wملاحظة: استبدل اسم النطاق في المثال السابق باسم نطاقك الفعلي. مصادركما ذُكِر سابقًا، فإن «PostgreSQL Administrator's Guide» هو مصدر رائع، وهو متوفر أيضًا في حزمة postgresql-doc-9.1؛ نفذ ما يلي لتثبيت تلك الحزمة:sudo apt-get install postgresql-doc-9.1أدخِل الوصلة file:///usr/share/doc/postgresql-doc-9.1/html/index.html في شريط العنوان في متصفحك لمشاهدة الدليل.راجع أيضًا صفحة ويكي أوبنتو «PostgreSQL» لمزيدٍ من المعلومات.ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Databases.
  17. إن أباتشي تومكات (Apache Tomcat) هو «حاوية ويب» (web container) يسمح لك بتخديم Java Servlets و JSP ‏(Java Server Pages). في أوبنتو دعمٌ لإصدارَيّ تومكات 6 و 7، حيث تومكات 6 هي النسخة القديمة؛ و تومكات 7 هي النسخة الحالية التي تضاف إليها الميزات الجديدة. يُعتَبَر أن كلا الإصدارين مستقر، لكننا سنركز على نسخة تومكات 7، لكن أغلبية تفاصيل الضبط المشروحة هنا صالحة لكلي النسختين. تَدعم حزم تومكات في أوبنتو طريقتين مختلفتين لتشغيل تومكات؛ يمكنك تثبيته بالطريقة الكلاسيكية لعموم النظام، مما يجعل تومكات يبدأ في وقت الإقلاع وسيعمل كمستخدم tomcat7 (أو tomcat6) بدون امتيازات؛ لكنك تستطيع إنشاء نسخ خاصة منه وتشغيلها بامتيازات المستخدم، الذي يمكنك بدؤه أو إيقافه بنفسك؛ الطريقة الثانية هي مفيدة خصوصًا في الخادوم التطويري حيث يحتاج عدّة مستخدمين إلى اختبار البرمجيات في نسخ تومكات الخاصة بهم. التثبيت لعموم النظامعليك إدخال الأمر الآتي في الطرفية لتثبيت خادوم تومكات: sudo apt-get install tomcat7الأمر السابق سيُثبِّت خادوم تومكات مع تطبيق الويب الافتراضي ROOT؛ الذي يُظهِر صفحةً بسيطةً تحتوي على "It works". الضبطملفات ضبط تومكات موجودة في ‎/etc/tomcat7، بعض تعديلات الضبط الشائعة ستُشرَح هنا فقط؛ رجاءً راجع توثيق Tomcat 7.01 للمزيد. تغيير المنافذ الافتراضيةيعمل تومكات 7.0 افتراضيًا بواصل HTTP‏ (HTTP connector) على المنفذ 8080 وواصل AJP على المنفذ 8009؛ ربما تريد تغيير هذين المنفذين الافتراضيين لتفادي التضاربات مع خواديم أخرى على النظام، يمكن فعل ذلك بتعديل الأسطر الآتية في ‎/etc/tomcat7/server.xml: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ... <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />تبديل JVM المستخدمةيعمل تومكات افتراضيًا عملًا ممتازًا مع OpenJDK، ثم سيُجرِّب JVM الخاصة بشركة Sun؛ ثم سيجرب JVMs الأخرى؛ إذا كان لديك عدّة JVMs مثبتةً، فيمكنك ضبط أيٌّ منها سيستخدم عبر JAVA_HOME في ‎/etc/default ‎/tomcat7: JAVA_HOME=/usr/lib/jvm/java-6-sunتعريف المستخدمين وأدوارهميمكن أن تُعرَّف أسماء المستخدمين وكلمات مرورهم وأدوارهم (المجموعات) في حاوية Servlet؛ يتم ذلك في ملف ‎/etc/tomcat7/tomcat-users.xml: <role rolename="admin"/> <user username="tomcat" password="s3cret" roles="admin"/>استخدام تطبيقات الويب القياسية التابعة لتومكاتيأتي تومكات مع تطبيقات ويب تستطيع تثبيتها لأغراض التوثيق أو الإدارة أو لأغراض تجريبية. توثيق تومكاتتحتوي الحزمة tomcat7-docs على توثيق تومكات محزمًّا كتطبيق ويب تستطيع الدخول إليه افتراضيًا عبر http://server:8080/docs، وتستطيع تثبيت تلك الحزمة بالأمر الآتي: sudo apt-get install tomcat7-docsتطبيقات الويب لإدارة تومكاتتحتوي الحزمة tomcat7-admin على تطبيقَيّ ويب تستطيع استخدامهما لإدارة خادوم تومكات عبر واجهة ويب، يمكنك تثبيتهما عبر إدخال الأمر الآتي في الطرفية: sudo apt-get install tomcat7-adminأولهما هو تطبيق الويب «manager»؛ الذي يمكن الوصول إليه افتراضيًا عبر http://server:8080/manager/html؛ ويُستخدَم للحصول على حالة الخادوم وإعادة تشغيل تطبيقات الويب. ملاحظة: الوصول إلى تطبيق manager محميٌ افتراضيًا: عليك أن تُعرِّف مستخدمًا بدور «manager-gui» في ‎/etc/tomcat7/tomcat-users.xml قبل الوصول إليه. التطبيق الآخر هو «host-manager» الذي يمكن الوصول إليه افتراضيًّا عبر http://server:8080/host-manager/html، ويمكن أن يُستخدَم لإنشاء مضيفين وهميين ديناميكيًّا. ملاحظة: الوصول إلى تطبيق host-manager محميٌ افتراضيًا أيضًا: عليك أن تُعرِّف مستخدمًا بدور «admin-gui» في ‎/etc/tomcat7/tomcat-users.xml قبل الوصول إليه. لأسباب تتعلق بالحماية، لا يمكن للمستخدم tomcat7 أن يكتب إلى مجلد ‎/etc/tomcat7 افتراضيًا؛ بعض الميزات في تطبيقات الويب هذه (نشر التطبيقات، أو إنشاء مضيف وهمي) تحتاج إلى إذن الكتابة إلى ذاك المجلد؛ إذا أردت استخدام هذه الميزات، فعليك تنفيذ الأوامر الآتية لإعطاء المستخدمين في مجموعة tomcat7 الامتيازات اللازمة: sudo chgrp -R tomcat7 /etc/tomcat7 sudo chmod -R g+w /etc/tomcat7تطبيقات ويب تومكات للتجربةتحتوي حزمة tomcat7-example على تطبيقَيّ ويب يُستخدمان لاختبار أو شرح ميزات Servlets و JSP؛ تستطيع الوصول إليهما افتراضيًا عبر http://server:8080/examples؛ يمكنك تثبيتهما بالأمر: sudo apt-get install tomcat7-examplesاستخدام نسخ خاصةيُستخدم تومكات استخدامًا واسعًا في التطوير وحالات الاختبار حيث لا يكون استخدام نسخة واحدة لعموم النظام كافيًا لعدة مستخدمين على نظام واحد؛ تأتي حزم تومكات في أوبنتو مع الأدوات اللازمة لإنشاء نسخ موجهة للمستخدمين، مما يسمح لكل مستخدم في النظام بتشغيل (دون امتيازات الجذر) نسخة خاصة منفصلة بينما ما تزال تستخدم تلك النسخة المكتبات المثبتة على النظام. ملاحظة: من الممكن تشغيل نسخة لعموم النظام، ونسخ خاصة على التوازي (أي معًا)؛ شريطة ألّا يستخدموا نفس منافذ TCP. تثبيت دعم النسخ الخاصةيمكنك تثبيت كل ما يلزم لدعم النسخ الخاصة بتنفيذ الأمر الآتي في الطرفية: sudo apt-get install tomcat7-userإنشاء نسخة خاصةيمكنك إنشاء مجلد لنسخة خاصة بإدخال الأمر الآتي في الطرفية: tomcat7-instance-create my-instanceسيُنشِئ الأمر السابق مجلد my-instance جديد مع كل المجلدات الفرعية والسكربتات اللازمة؛ يمكنك على سبيل المثال تثبيت المكتبات الشائعة في المجلد الفرعي lib/‎ ووضع تطبيق الويب في مجلد webapps/‎؛ لا توجد أيّة تطبيقات ويب افتراضيًا. ضبط نسختك الخاصةستجد ملفات ضبط تومكات التقليدية في النسخة الخاصة في المجلد الفرعي conf/‎؛ يجب عليك، على سبيل المثال، تعديل ملف conf/server.xml لتغيير المنفذ الافتراضي المُستخدَم من نسخة تومكات الخاصة لتفادي التضارب مع النسخ الأخرى التي قد تكون تعمل على النظام. بدء أو إيقاف النسخة الخاصةيمكنك بدء نسختك الخاصة بإدخال الأمر الآتي في الطرفية (بفرض أن نسختك موجودةٌ في مجلد my-instance): my-instance/bin/startup.shملاحظة: عليك التحقق من المجلد الفرعي logs/ لأي خطأ؛ إذا حصلت على خطأ: java.net.BindException: Address already in use<null>:8080 فاعلم أن المنفذ مُستخدَم من قبل وعليك تغييره. يمكنك إيقاف نسختك الخاصة بتنفيذ الأمر الآتي في سطر الأوامر: my-instance/bin/shutdown.shمصادرراجع موقع Apache Tomcat لمزيدٍ من المعلومات.كتاب «Tomcat: The Definitive Guide» هو مصدر جيد لبناء تطبيقات الويب مع تومكات.راجع قائمة «Tomcat Books» لمزيدٍ من الكتب.ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Apache Tomcat.
  18. إن Squid هو خادوم تخزين وسيط للويب (web proxy cache server) الذي يوفر خدمات الوساطة والتخزين لبروتوكول نقل النص الفائق (HTTP)، وبروتوكول نقل الملفات (FTP)، وغيرهما من بروتوكولات الشبكة الشهيرة؛ يمكن أن يدعم Squid التخزين والوساطة لطلبات طبقة المقابس الآمنة (SSL) وتخزين طلبيات DNS؛ ويدعم Squid أيضًا بروتوكولات تخزين مخبأ مختلفة، مثل بروتوكول تخزين الإنترنت (Internet Cache Protocol اختصارًا ICP)، وبروتوكول تخزين النص الفائق (Hyper Text Caching Protocol اختصارًا HTCP)، وبروتوكول تخزين مصفوفة التوجيه (Cache Array Routing Protocol اختصارًا CARP)، وبروتوكول تنسيق تخزين الويب (Web Cache Coordination Protocol اختصارًا WCCP). إن الخادوم الوسيط Squid هو حل ممتاز لاحتياجاتٍ كثيرةً للوساطة أو التخزين المؤقت، والتوسع من مكتب فرعي إلى شبكة الشركة الكبيرة وذلك بتوفير آليات مراقبة وتحكم في الوصول للمعاملات المهمة باستخدام بروتوكول إدارة الشبكة المبسط (Simple Network Management Protocol اختصارًا SNMP). عند اختيار حاسوب ليعمل كخادوم Squid، فتأكد أنه مضبوط مع كمية كبيرة من الذاكرة الفيزيائية، حيث يستخدم Squid التخزين في الذاكرة لزيادة الأداء. التثبيتأدخِل الأمر الآتي في الطرفية لتثبيت خادوم Squid: sudo apt-get install squid3الضبطيُضبَط Squid بتعديل التعليمات الموجودة ضمن ملف الضبط ‎/etc/squid3/squid.conf؛ الأمثلة الآتية تعرض بعض التعليمات التي يمكن تعديلها لتغيير سلوك خادوم Squid؛ للمزيد من التفاصيل المعمَّقة حول Squid، فانظر إلى قسم المصادر. تنويه: قبل تعديل ملف الضبط، تأكد أنك ستُنشِئ نسخةً من الملف الأصلي وتحميها من الكتابة كي تحصل على الإعدادات الافتراضية كمرجعٍ لك، أو أن تعيد استخدامها وقت الحاجة. انسخ الملف ‎/etc/squid/squid.conf واحمهِ من الكتابة بإدخال الأوامر الآتية في الطرفية: sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.original sudo chmod a-w /etc/squid3/squid.conf.originalلضبط خادوم Squid لكي يستمع إلى منفذ TCP ذو الرقم 8888 بدلًا من منفذ TCP الافتراضي 3128، فعدِّل التعليمة http_port كما يلي: http_port 8888عدِّل التعليمة visible_hostname لكي تعطي خادوم Squid اسم مضيف خاص به؛ هذا الاسم لا يفترض أن يكون نفس اسم المضيف للحاسوب؛ ضُبِطَ في هذا المثال إلى weezie: visible_hostname weezieباستخدام التحكم في الوصول الخاص بخادوم Squid، ربما تضبط استخدام خدمات الإنترنت التي يكون فيها Squid وسيطًا لتتوفر للمستخدمين الذي يملكون عناوين IP معيّنة؛ ففي هذا المثال، سنسمح بالوصول لمستخدمي الشبكة الفرعية 192.168.42.0/24 فقط: أضف ما يلي إلى نهاية قسم ACL من ملف ضبط ‎/etc/squid3/squid.conf: acl fortytwo_network src 192.168.42.0/24ثم أضف ما يلي إلى بداية قسم http_access في ملف ‎/etc/squid3/squid.conf: http_access allow fortytwo_networkباستخدام ميزات التحكم بالوصول الممتازة التي يوفرها Squid؛ فربما تضبط استخدام خدمات الإنترنت التي يكون فيها Squid وسيطًا كي تتوفر فقط أثناء ساعات العمل العادية؛ على سبيل المثال، سنحاكي وصول الموظفين خلال ساعات العمل من 9:00AM إلى 5:00PM ومن الاثنين إلى الجمعة، الذين يستخدمون الشبكة الفرعية 10.1.42.0/42: أضف ما يلي إلى نهاية قسم ACL في ملف ‎/etc/squid3/squid.conf: acl biz_network src 10.1.42.0/24 acl biz_hours time M T W T F 9:00-17:00ثم أضف ما يلي إلى أعلى قسم http_access في ملف ‎/etc/squid3/squid.conf: http_access allow biz_network biz_hoursملاحظة: بعد عمل تغيرات إلى ملف الضبط ‎/etc/squid3/squid.conf، فاحفظ الملف ثم أعد تشغيل خادوم Squid لكي تأخذ التغيرات مجراها بإدخال الأمر الآتي في الطرفية: sudo service squid3 restartمصادرموقع Squid.صفحة ويكي أوبنتو «Squid».ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Squid - Proxy Server.
  19. أباتشي هو خادوم يعتمد على الوحدات، هذا يعني أن الوظيفة الأساسية فقط هي مضمَّنة في أساس الخادوم؛ الميزات الإضافية متوفرة عبر وحدات يمكن تحميلها إلى أباتشي؛ تُضمَّن افتراضيًّا مجموعة أساسية من الوحدات في الخادوم أثناء البناء، إذا بُنِي الخادوم ليستخدم الوحدات المُحمَّلة ديناميكيًا، فيمكن بناء تلك الوحدات بناءً منفصلًا ويمكن أن تضاف في أي وقت باستخدام التعليمة LoadModule؛ عدا ذلك، فيجب إعادة بناء أباتشي في كل مرة تُضاف أو تُحذف فيها الوحدات. يبني أوبنتو أباتشي ليسمح بالتحميل الديناميكي للوحدات؛ يمكن أن تُضاف تعليمات الضبط شرطيًّا في حال تطلب وجود وحدة معينة بوضعها في قسم <IfModule>. تستطيع تثبيت وحدات أباتشي إضافية واستخدامها في خادوم الويب؛ على سبيل المثال، نفِّذ الأمر الآتي من الطرفية لتثبيت وحدة الاستيثاق الخاصة بقواعد بيانات MySQL: sudo apt-get install libapache2-mod-auth-mysqlانظر إلى مجلد ‎/etc/apache2/mods-available للمزيد من الوحدات. استخدم الأداة a2enmod لتفعيل وحدة: sudo a2enmod auth_mysql sudo service apache2 restartوبشكلٍ مشابه، الأداة a2dismod ستعطل وحدة: sudo a2dismod auth_mysql sudo service apache2 restartضبط HTTPSتُضيف الوحدة mod_ssl ميزةً مهمةً لخادوم أباتشي، ألا وهي القدرة على تشفير الاتصالات؛ وهذا يعني أنه عندما يتواصل متصفح الويب باستخدام SSL، فستُستخدَم السابقة https‎://‎ في بداية URL في شريط العنوان في المتصفح. تتوفر الوحدة mod_ssl في الحزمة apache2-common؛ نفِّذ الأمر الآتي من الطرفية لتفعيل وحدة mod_ssl: sudo a2enmod sslهنالك ملف ضبط HTTPS افتراضي في ‎/etc/apache2/sites-available/default-ssl.conf؛ ولكي يستطيع أباتشي توفير HTTPS، فيجب توفير شهادة ومفتاح أيضًا؛ ضبط HTTPS الافتراضي سيستخدم شهادة ومفتاح مولد من الحزمة ssl-cert؛ هذه الشهادات مناسبة للاختبار، لكن يجب استبدال الشهادة والمفتاح المولد تلقائيًا بشهادة خاصة بالموقع أو الخادوم، للمزيد من المعلومات حول توليد مفتاح والحصول على شهادة، راجع درس الشهادات. أدخِل الأمر الآتي لضبط أباتشي ليتعامل مع HTTPS: sudo a2ensite default-sslملاحظة: المجلدان ‎/etc/ssl/certs و ‎/etc/ssl/private هما المساران الافتراضيان للشهادة والمفتاح؛ إذا ثبتت الشهادة والمفتاح في مجلد آخر، فتأكد من تغيير قيمة SSLCertificateFile و SSLCertificateKeyFile بما يلائمك. بعد أن ضبطنا أباتشي ليستخدم HTTPS، فعلينا إعادة تشغيل الخدمة لتفعيل الإعدادات الجديدة: sudo service apache2 restartملاحظة: اعتمادًا على من أين حصلت على الشهادة، ربما تحتاج إلى إدخال عبارة مرور عند تشغيل أباتشي. تستطيع الوصول إلى صفحات الخادوم الآمنة بكتابة https://hostname/url/‎ في شريط العنوان في المتصفح. لغة السكربتات PHP5إن PHP هي لغة برمجة عامة ملائمة لتطوير الويب؛ يمكن تضمين سكربت PHP في HTML؛ وهذا القسم سيشرح كيفية تثبيت وضبط PHP5 على خادوم أوبنتو مع أباتشي و MySQL. يفترض هذا القسم أنك ثبتت وضبطت خادوم الويب أباتشي وقواعد بيانات MySQL؛ تستطيع الرجوع إلى الأقسام التي تشرح ضط أباتشي و MySQL في هذه السلسلة لمزيدٍ من المعلومات. التثبيتلغة PHP5 متوفرة في أوبنتو، وعلى عكس بايثون وبيرل المثبتتين في النظام افتراضيًّا، يجب تثبيت PHP يدويًّا. أدخِل الأمر الآتي في الطرفية لتثبيت PHP5: sudo apt-get install php5 libapache2-mod-php5تستطيع تشغيل سكربتات PHP5 من سطر الأوامر؛ يجب عليك تثبيت الحزمة php5-cli لتنفيذ سكربتات PHP5 من سطر الأوامر؛ وذلك بإدخال الأمر الآتي في الطرفية: sudo apt-get install php5-cliتستطيع أيضًا تشغيل سكربتات PHP5 دون تثبيت وحدة PHP5 التابعة لأباتشي؛ للقيام بذلك، عليك تثبيت الحزمة php5-cgi؛ وذلك بإدخال الأمر الآتي في الطرفية: sudo apt-get install php5-cgiلاستخدام MySQL مع PHP5، فعليك تثبيت الحزمة php5-mysql، وبذلك بتنفيذ الأمر الآتي: sudo apt-get install php5-mysqlوبشكل مشابه، لاستخدام PostgreSQL مع PHP5، فعليك تثبيت الحزمة php5-pgsql: sudo apt-get install php5-pgsqlالضبطبعد أن تُثبِّت PHP5، تستطيع تشغيل سكربتات PHP5 من متصفح الويب، وإذا ثبتت الحزمة php5-cli فتستطيع تشغيل سكربتات php5 من سطر الأوامر. خادوم أباتشي مضبوطٌ افتراضيًا لتشغيل سكربتات PHP5؛ بكلمات أخرى، وحدة PHP5 مفعَّلة افتراضيًا في خادوم أباتشي بعد تثبيت الوحدة مباشرةً؛ رجاءً تأكد إذا كانت الملفات etc/apache2/mods/‎enabled/php5.conf/ و ‎/etc/apache2/mods-enabled/php5.load موجودةً، إن لم تكن موجودةً، فتستطيع تفعيل الوحدة باستخدام الأمر a2enmod. بعد أن تثبت الحزمة المتعلقة بلغة PHP5 وتُفعِّل وحدة أباتشي، فعليك أن تعيد تشغيل خادوم أباتشي لتستطيع تنفيذ سكربتات PHP5؛ وذلك بالأمر الآتي: sudo service apache2 restartالاختبارللتأكد من التثبيت الصحيح للغة PHP؛ فنفِّذ سكربت phpinfo الآتي: <?php phpinfo(); ?>عليك حفظ محتويات الملف السابق باسم phpinfo.php ووضعه تحت مجلد DocumentRoot في خادوم ويب أباتشي؛ وعندما توجه متصفحك نحو http://hostname/phpinfo.php فسوف يعرض لك إعدادات ضبط PHP5 المختلفة. مصادرلتفاصيل أكثر، راجع توثيق موقع php.net.هنالك مجموعة كبيرة من الكتب عن PHP، كتابان جيدان من O'Reilly هما «Learning PHP5»، و «PHP CookBook».Ruby on Railsإن Ruby on Rails هو إطار عمل مفتوح المصدر للويب لتطوير تطبيقات ويب يعتمد على قواعد البيانات؛ حيث يُفضِّل هذا الإطار المبدأ «convention over configuration». التثبيتقبل تثبيت Ruby on Rails، يجب أن يكون لديك خادومي أباتشي و MySQL؛ رجاءً عُد للأقسام التي تشرح تثبيت أباتشي و MySQL في هذه السلسلة للمزيد من المعلومات. بعد أن تُثبَّت حزم أباتشي و MySQL؛ فيجب أن تكون جاهزًا لتثبيت حزمة Ruby on Rails؛ وذلك بإدخال الأمر الآتي في الطرفية: sudo apt-get install railsالضبطعدِّل ملف الضبط ‎/etc/apache2/sites-available/000-default.conf لإعداد النطاقات. أول شيء يجب تغييره هو التعليمة DocumentRoot: DocumentRoot /path/to/rails/application/publicثم عدِّل التعليمة ‎<Directory "/path/to/rails/application/public">‎: <Directory "/path/to/rails/application/public"> Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny allow from all AddHandler cgi-script .cgi </Directory>يجب أن تُفعِّل الوحدة mod_rewrite لأباتشي، وذلك بإدخال الأمر الآتي في الطرفية: sudo a2enmod rewriteفي النهاية، يجب أن تُعدِّل ملكية ‎/path/to/rails/application/public و ‎‎/path/to/‎ rails/application/tmp للمستخدم الذي يُشغِّل عملية أباتشي: sudo chown -R www-data:www-data /path/to/rails/application/public sudo chown -R www-data:www-data /path/to/rails/application/tmpهذا كل ما في الأمر! يجب أن يكون خادومك جاهزًا الآن لتخديم تطبيقات Ruby on Rails. مصادرراجع موقع Ruby on Rails لمزيدٍ من المعلومات.Agile Development with Rails هو مصدر رائع قد تستفيد منه.صفحة ويكي أوبنتو «Ruby on Rails».ترجمة -وبتصرف- للمقالين: Ubuntu Server Guide: PHP5 - Scripting Language و Ubuntu Server Guide: Ruby on Rails.
  20. خادوم الويب هو برمجية مسؤولة عن قبول طلبات HTTP من العملاء المعروفين بمتصفحات الويب، وتخديمهم بردود HTTP مع محتويات البيانات الاختيارية؛ التي تكون عادةً صفحات ويب كمستندات HTML والكائنات الأخرى مثل الصور والفيديو ...إلخ. خادوم أباتشي (HTTPD)أباتشي (Apache) هو أشهر خادوم ويب مستخدم في أنظمة لينُكس؛ تُستعمَل خواديم الويب لتخديم الصفحات المطلوبة من العملاء؛ يَطلب ويَعرض العملاءُ صفحاتَ الويب عادةً باستخدام متصفح ويب مثل فايرفكس أو كروميوم أو أوبرا أو موزيلا. يُدخِل المستخدم URL (اختصار للعبارة Uniform Resource Locator) للإشارة إلى خادوم ويب باسم النطاق الكامل (FQDN) والمسار إلى الهدف المطلوب؛ على سبيل المثال، لعرض الصفحة الرئيسية لموقع أوبنتو، فسيدخل المستخدم اسم النطاق الكامل فقط: www.ubuntu.com لعرض الصفحة الفرعية للمجتمع، فإن المستخدم سيُدخِل اسم النطاق الكامل متبوعًا بمسار: www.ubuntu.com/community أشهر بروتوكول مُستخدَم لنقل صفحات الويب هو بروتوكول نقل النص الفائق (Hyper Text Transfer Protocol، اختصارًا HTTP)، بروتوكولات أخرى مدعومة مثل بروتوكول نقل النص الفائق فوق طبقة مقابس آمنة (Hyper Text Transfer Protocol over Secure Sockets Layer، اختصارًا HTTPS)، وبروتوكول نقل الملفات (File Transfer Protocol، اختصارًا FTP) الذي هو بروتوكول لرفع (upload) أو تنزيل (download) الملفات. يُستخدَم خادوم ويب أباتشي عادةً مع محرك قواعد بيانات MySQL، ولغة معالجة النصوص الفائقة (PHP)، وغيرها من «لغات السكربتات» (scripting languages) مثل بايثون و بيرل؛ يُسمَّى هذا الضبط بالمصطلح LAMP‏ (Linux, Apache, MySQL and Perl/Python/PHP) ويُشكِّل منصةً قوية ومرنةً لتطوير ونشر تطبيقات الويب. التثبيتخادوم أباتشي متوفر في أوبنتو؛ أدخل الأمر الآتي لتثبيته: sudo apt-get install apache2الضبطيُضبَط أباتشي بوضع تعليمات (directives) في ملفات ضبط نصية بسيطة؛ هذه التعليمات موزعة بين الملفات والمجلدات الآتية: ملف apache2.conf: ملف ضبط أباتشي الرئيسي؛ يحتوي على الإعدادات العامة لأباتشي.الملف httpd.conf: تاريخيًا كان ملف ضبط أباتشي الرئيسي؛ وسُمِّي هذا الملف باسم عفريت httpd؛ الآن الملفُ فارغٌ افتراضيًا، حيث نُقِلَت معظم خيارات الضبط إلى المجلدات تالية الذكر؛ يمكن أن يُستخدَم هذا الملف لإعدادات الضبط التي يجريها المستخدم وتؤثر على ضبط أباتشي العام.المجلد conf-available: يحتوي على ملفات الضبط المتوفرة لأباتشي؛ جميع الملفات التي كانت في مجلد ‎/etc/apache2/conf.d انتقلت إلى ‎/etc/apache2/conf-available.المجلد conf-enabled: يحتوي على الوصلات الرمزية للملفات في مجلد ‎/etc/apache2/conf-available؛ فعندما تُضاف وصلة رمزية لملف ضبط، فإنه سيُفعَّل عندما يُعاد تشغيل خدمة أباتشي.الملف envvars: الملف حيث تُضبَط قيم متغيرات البيئة (environment variables) لأباتشي.مجلد mods-available: يحتوي هذا المجلد على ملفات خاصة لتحميل الوحدات (modules) وضبطها، لا تملك جميع الوحدات ملفات ضبط خاصة بها.مجلد mods-enabled: يحتوي على الوصلات الرمزية إلى الملفات في ‎/etc/apache2/mods-available؛ فعندما تُضاف وصلة رمزية لملف ضبط خاص بوحدة، فإن هذه الوحدة ستُفعَّل في المرة القادمة التي سيُعاد تشغيل أباتشي فيها.ملف ports.conf: يحتوي على التعليمات التي تُحدِّد منافذ TCP التي يستمع إليها أباتشي.مجلد sites-available: يحتوي هذا المجلد على ملفات الضبط «للمضيفين الوهميين» (Virtual Hosts) في أباتشي؛ يسمح المضيفون الوهميون بضبط أباتشي لتشغيل عدة مواقع تملك ضبطًا منفصلًا.مجلد sites-enabled: مثل mods-enabled، يحتوي مجلد sites-enabled على وصلاتٍ رمزية لمحتويات مجلد ‎/etc/apache2/sites-available؛ وبشكل مشابه، فإن ملفات الضبط التي تُوصَل وصلًا رمزيًا لهذا المجلد ستُفعَّل في المرة القادمة التي سيُعاد تشغيل خادوم أباتشي فيها.الملف magic: يُستخدَم لتحديد نوع MIME بناءً على أول عدِّة بايتات من الملف.بالإضافة لذلك، يمكن أن تُضاف ملفات ضبط أخرى باستخدام التعليمة Include؛ ويمكن أن تُستخدم المحارف الخاصة (wildcards) لتضمين العديد من ملفات الضبط؛ أي تعليمة يمكن أن توضع في أيّ من ملفات الضبط تلك. لا تؤخذ التعديلات على ملفات الضبط الرئيسية بعين الاعتبار من أباتشي إلا إذا بدء أو أعيد تشغيله. يقرأ الخادوم أيضًا ملفًا يحتوي على أنواع المستندات (mime types)؛ يُحدَّد اسم الملف بالتعليمة TypesConfig ويكون عمومًا هو الملف ‎/etc/apache2/mods-available/mime.conf؛ الذي ربما يحتوي على إضافات أو تعديلات على ‎/etc/mime.types. الإعدادات الأساسيةيشرح هذا القسم معاملات ضبط خادوم أباتشي الأساسية؛ ارجع إلى توثيق أباتشي للمزيد من التفاصيل. يأتي أباتشي مع ضبط افتراضي «صديق» للمضيفين الوهميين؛ هذا يعني أنه مضبوط مع مضيف وهمي وحيد افتراضيًا (باستخدام التعليمة VirtualHost) الذي يمكن أن يعدَّل أو يُستخدَم كما هو لو أردت الحصول على موقع وحيد فقط؛ أو تستطيع استخدامه كقالب للمضيفين الوهميين الإضافيين إذا كنت تريد الحصول على عدِّة مواقع؛ إذا تُرِكَ كما هو، فسيُخدِّم المضيف الوهمي الافتراضي موقعك الافتراضي؛ أو الموقع الذي سيراه مستخدمو الموقع لو أن عنوان URL الذي أدخلوه لا يُطابِق التعليمة ServerName لأيٍّ من مواقعك المخصصة؛ لتعديل المضيف الوهمي الافتراضي فيجب تعديل الملف ‎/etc/apache2‎/sites-available/default. ملاحظة: التعليمات المضبوطة لمضيفٍ وهمي لا تطبَّق إلا عليه فقط؛ إذا ضُبِطَت تعليمة لعموم الخادوم ولم يعاد تعريفها في ضبط المضيف الوهمي، فسيُستخدَم الضبط الافتراضي؛ على سبيل المثال، تستطيع ضبط عنوان بريد webmaster ولا تُعيد تعريفه لكل مضيف وهمي. إذا أردت ضبط مضيفٍ وهميٍ جديد أو موقع؛ فانسخ هذا الملف إلى نفس المجلد باسمٍ من اختيارك؛ على سبيل المثال: sudo cp /etc/apache2/sites-available/000-default.conf \ /etc/apache2/sites-available/mynewsite.confعدِّل ملف ضبط الموقع الجديد باستخدام بعض التعليمات المشروحة في الأسفل. التعليمة ServerAdmin تحدد البريد الإلكتروني لمدير الخادوم؛ القيمة الافتراضية هي webmaster@localhost؛ يجب أن تُعدَّل القيمة إلى البريد الإلكتروني الخاص بك (إذا كنت مديرًا للنظام)؛ إذا حدثت مشكلة مع موقع الويب، فسيُظهِر أباتشي رسالة خطأ تحتوي على هذا البريد الإلكتروني للتبليغ عن المشكلة؛ اعثر على هذه التعليمة في ملف ضبط الموقع الخاص بك في ‎/etc/apache2/sites-available.التعليمة listen تحدد المنفذ وبشكل اختياري عنوان IP الذي يجب على أباتشي الاستماع إليه؛ إذا لم يُحدَّد عنوان IP، فسيستمع أباتشي على جميع عناوين IP المُسندَة للخادوم الذي يعمل عليه أباتشي؛ القيمة الافتراضية للتعليمة listen هي 80؛ عدِّل هذه القيمة إلى 127.0.0.1:80 لجعل أباتشي يستمع فقط إلى بطاقة loopback لذلك لن يكون متوفرًا إلى الإنترنت، عدِّل القيمة إلى 81 (على سبيل المثال) لتغيير المنفذ الذي يستمع إليه أباتشي؛ أو اتركه كما هو للعمل العادي؛ هذه التعليمة توجد وتُعدَّل في ملفها الخاص ‎/etc/apache2/ports.conf.التعليمة ServerName هي اختيارية وتحدد ما هو اسم النطاق الكامل (FQDN) لموقعك الذي سيستجيب أباتشي له؛ المضيف الوهمي الافتراضي لا يملك خاصية ServerName مُحدَّدة، لذلك سيستجيب لجميع الطلبات التي لا تطابقها التعليمة ServerName في أي مضيف وهمي آخر؛ إذا حصل وامتلكتَ النطاق ذو الاسم ubunturocks.com وأردت أن تستضيف الموقع على خادومك، فإن قيمة ServerName في ملف ضبط المضيف الوهمي الخاص بك ستكون ubunturocks.com، أضف هذه التعليمة إلى ملف ضبط المضيف الوهمي الجديد الذي أنشَأناه سابقًا (‎/etc/apache2/sites-available/mynewsite.conf).ربما تريد من موقعك أن يستجيب إلى www.ubunturocks.com، ولما كان العديد من المستخدمين يعتبرون أنّ السابقة www هي سابقة ملائمة لمواقع الويب؛ فعليك استخدام التعليمة ServerAlias لهذا الغرض؛ ربما تستخدم المحارف الخاصة (wildcards) للتعليمة ServerAlias. فمثلًا، سيسبب الضبط الآتي استجابة موقعك لأي طلب نطاق ينتهي بالعبارة «‎.ubunturocks.com»: ServerAlias *.ubunturocks.comتُحدِّد التعليمة DocumentRoot أين يجب أن يبحث أباتشي عن الملفات لإنشاء الموقع؛ القيمة الافتراضية هي ‎/var/www كما هو محدد في ‎/etc/apache2/sites-available/000-default.conf؛ يمكنك تستطيع تعديل هذه القيمة في ملف ضبط مضيفك الوهمي؛ لكن تذكر أن تُنشِئ المجلد إذا كان ذلك ضروريًا. فعِّل المضيف الوهمي الجديد باستخدام الأداة a2ensite وأعد تشغيل أباتشي: sudo a2ensite mynewsite sudo service apache2 restartملاحظة: تأكد أنك ستستبدل mynewsite باسم أكثر وصفًا للمضيف الوهمي؛ إحدى الطرق لتسمية الملف هي استخدام قيمة ServerName للمضيف الوهمي. وبشكلٍ مشابه، استخدم الأداة a2dissite لتعطيل المواقع؛ يمكن أن يكون هذا مفيدًا عند استكشاف أخطاء الضبط عند وجود أكثر من مضيف وهمي: sudo a2dissite mynewsite sudo service apache2 restartالإعدادات الافتراضيةسيشرح هذا القسم إعدادات الضبط الافتراضية لخادوم أباتشي؛ مثلًا، إذا أضفت مضيفًا وهميًا فالإعدادات التي ستضبطها للمضيف الوهمي ستكون لها الأولوية لذاك المضيف الوهمي؛ وستُستخدَم القيمة الافتراضية للتعليمات غير المُعرَّفة ضمن إعدادات المضيف الوهمي. التعليمة DirectoryIndex هي الصفحة الافتراضية المُخدَّمة من الخادوم عندما يَطلب المستخدم فهرس الدليل بإدخال شرطة أمامية (‎/‎) في نهاية اسم الدليل.على سبيل المثال، عندما يطلب المستخدم الصفحة ‎http://www.example.com/directory/‎‎‎ فأنه إما سيحصل على صفحة DirectoryIndex إن وجدت، أو على قائمة بمحتويات المجلد مولدَّةً من الخادوم إذا لم تكن موجودةً وكان قد حُدِّد الخيار Indexes، أو صفحة «Permission Denied» إن لم يتحقق أيٌّ منهما. سيحاول الخادوم إيجاد أحد الملفات المذكورة في التعليمة DirectoryIndex وستُعيد أول ملف ستجده؛ إذا لم تجد أي ملف من تلك الملفات وكان الخيار «Options Indexes» مضبوطًا لهذا المجلد، فسيولِّد الخادوم قائمةً بصيغة HTML للمجلدات الفرعية والملفات في هذا الدليل؛ القيمة الافتراضية الموجودة في ملف ‎/etc/apache2/mods-available/dir.conf هي "index.html index.cgi index.pl index.php index.xhtml index.htm" وبالتالي إذا عَثَر أباتشي على ملف في المجلد المطلوب يطابق أحد تلك الأسماء، فسيُظهِر أول مطابقة. التعليمة ErrorDocument تسمح لك بتحديد ملف لكي يستعمله أباتشي عند حدوث خطأ معين؛ على سبيل المثال، إذا طلب المستخدم ملفًا غير موجودٍ، فسيحدث خطأ 404؛ وافتراضيًا، سيُعيد أباتشي الرمز HTTP 404؛ راجع ‎/etc/apache2/conf.d/localized-error-pages لمعلومات تفصيليّة عن استخدام ErrorDocument بما فيها أماكن ملفات الأمثلة.يكتب الخادوم سجل النقل افتراضيًا إلى الملف ‎/var/log/apache2/access.log، تستطيع تغيير هذا لكل موقع بناءً على ملفات ضبط مضيفك الوهمي باستخدام التعليمة CustomLog؛ أو أن تقبل باستخدام القيمة الافتراضية المحددة في ‎/etc/apache2/conf.d/other-vhosts-access-log. ربما تحدد أيضًا الملف الذي تريد تسجيل الأخطاء إليه باستخدام التعليمة ErrorLog، التي تكون قيمتها الافتراضية هي ‎/var/log/apache2/error.log؛ لكن اترك هذا السجل منفصلًا عن سجل النقل للمساعدة في استكشاف الأخطاء الحاصلة مع خادوم أباتشي؛ ربما تحدد أيضًا التعليمة LogLevel (القيمة الافتراضية هي "warn") و LogFormat (راجع ‎/etc/apache2/apache2.conf للقيمة الافتراضية). تُحدَّد بعض الخيارات على أساس المجلد بدلًا من الخادوم؛ التعليمة Options هي إحداها، يكون قسم Directory محاطًا بوسوم شبيهة بلغة XML، كما يلي: <Directory /var/www/mynewsite> ... </Directory>التعليمة Options ضمن قسم Directory تقبل قيمة واحدة أو أكثر من القيم الآتية مفصولةً بفراغات:ExecCGI: السماح بتنفيذ سكربتات CGI، لن تُنفَّذ سكربتات CGI ما لم يُحدَّد هذا الخيار.تنويه: لا يجب أن تُنفَّذ أغلبية الملفات كسكربتات CGI، لأن ذلك سيكون خطرًا جدًا! سكربتات CGI يجب أن تُبقى في مجلد منفصل وخارج المجلد الجذر لموقعك، ويجب أن يكون الخيار ExecCGI مضبوطًا لهذا المجلد فقط؛ هذا هو الضبط الافتراضي، والمكان الافتراضي لسكربتات CGI هو ‎/usr/lib/cgi-bin. Includes: السماح بتضمينات من جهة الخادوم؛ حيث تسمح تضمينات الخادوم لملف HTML بتضمين الملفات الأخرى، راجع «Apache SSI Documentation» لمزيدٍ من المعلومات.IncludesNOEXEC: السماح بتضمينات من جهة الخادوم، لكن تعطيل الأمرَين ‎#exec و ‎#Include في سكربتات CGI.Indexes: عرض قائمة مُنسَّقة بمحتويات المجلد، إذا لم يُعثر على ملف DirectoryIndex (مثل index.html) في المجلد المطلوب.تحذير: لأغراض تتعلق بالحماية، لا يجب أن يُضبَط هذا الخيار عادةً؛ وخصوصًا في مجلد جذر الموقع! فعِّل هذا الخيار بحذر لكل مجلد على حدة إن كنت متأكدًا أنك تريد أن يتمكن المستخدمون من رؤية كامل محتويات المجلد. Multiview: دعم «content-negotiated multiviews»؛ هذا الخيار مُعطَّل افتراضيًا لأسباب أمنية، راجع توثيق أباتشي حول هذا الخيار.SysLinksIfOwnerMatch: اتباع الوصلات الرمزية فقط إذا كان الملف أو المجلد الهدف له نفس مالك الوصلة.إعدادات httpdيشرح هذا القسم بعض إعدادات ضبط عفريت httpd الأساسية. التعليمة LockFile: تضبط التعليمة LockFile المسار إلى ملف القفل الذي سيستخدم عندما يُبنى الخادوم مع أحد الخيارين USE_FCNTL_SERIALIZED_ACCEPT أو USE_FLOCK_SERIALAIZED_‎ ACCEPT؛ يجب أن يكون الملف مخزنًا على قرصٍ محلي، ويجب أن يترك لقيمته الافتراضية ما لم يكن مجلد السجلات موجودًا على مشاركة NFS، إذا كانت هذه هي الحالة، فيجب أن تبدَّل القيمة إلى مسار في القرص المحلي، وإلى مجلد قابل للقراءة من المستخدم الجذر (root) فقط.التعليمة PidFile: التعليمة PidFile تضبط الملف الذي يُسجِّل فيه الخادوم رقم عمليته (process ID أو pid اختصارًا)؛ يجب أن يكون هذا الملف قابلًا للقراءة فقط من الجذر، وفي أغلب الحالات، يجب أن تترك هذه التعليمة بقيمتها الافتراضية.التعليمة User: تَضبُط التعليمة User معرِّف userid المستعمل من الخادوم للإجابة عن الطلبيات؛ هذا الخيار يُعرِّف حدود وصول الخادوم، لن يتمكن زوار الموقع من الوصول إلى أي ملف لا يمكن لهذا المستخدم الوصول إليه، القيمة الافتراضية لهذه التعليمة هي "www-data".تحذير: ما لم تكن متأكدًا تمامًا مما تفعل، فلا تضبط التعليمة User إلى root، سيسبب استخدام الجذر كمستخدم هنا في إنشاء ثغرات كبيرة في خادوم الويب.التعليمة Group: التعليمة Group شبيهة بالتعليمة User، التعليمة Group تحدد المجموعة التي سيجيب عبرها الخادوم عن الطلبيات؛ المجموعة الافتراضية هي "www-data" أيضًا.مشاركة إذن الكتابةلكي يتمكن أكثر من مستخدم من الكتابة إلى نفس المجلد، فمن الضروري أن نعطي إذن الكتابة للمجموعة التي يشتركون بها؛ المثال الآتي يُشارِك إذن الكتابة للمجلد ‎/var/www للمجموعة «webmasters»: sudo chgrp -R webmasters /var/www sudo find /var/www -type d -exec chmod g=rwxs "{}" \; sudo find /var/www -type f -exec chmod g=rws "{}" \;ملاحظة: لو أردت أن يُمنَح الوصول لأكثر من مجموعة واحدة للمجلد، ففعِّل قوائم التحكم بالوصول (ACLs). مصادرتوثيق أباتشي، الذي يشرح بعمق معلومات حول تعليمات ضبط أباتشي، وأيضًا راجع الحزمة apache2-doc لتوثيق أباتشي الرسمي.راجع توثيق Mod SSL للمزيد من المعلومات المتعلقة بالوحدة SSL.كتاب O'Reilly المسمى «Apache Cookbook» هو مصدر رائع للقيام بضبط خاص لأباتشي.لأسئلة حول أباتشي على أوبنتو، فاسأل في قناة IRC المسماة ‎#ubuntu-server على خادوم freenode.net.لما كان أباتشي يُدمَج عادةً مع PHP و MySQL، فصفحة ويكي أوبنتو «Apache MySQL PHP» هي مصدر جيد للمعلومات.ترجمة -وبتصرف- للمقال Ubuntu Server Guide: HTTPD - Apache2 Web Server.
  21. المراقبة هي جزء مهم من إدارة الخواديم والخدمات الأساسية؛ تُراقَب معظم الخدمات الشبكية للأداء (performance) أو التوفر (availability) أو كليهما؛ سيَشرح هذا الفصل طريقة تثبيت وضبط Nagios لمراقبة التوفر، و Munin لمراقبة الأداء. سنستخدم في أمثلة هذا الفصل خادومين بأسماء server01 و server02؛ سيُضبَط server01 مع Nagios لمراقبة الخدمات التي عليه وعلى الخادوم server02؛ وسيُضبَط server01 مع Munin لجمع المعلومات من الشبكة، باستخدام حزمة munin-node، وسيُضبَط server02 لكي يُرسِل المعلومات إلى server01. نأمل أن تساعدك هذه الأمثلة البسيطة في مراقبة الخواديم والخدمات الإضافية في شبكتك. Nagiosالتثبيتأولًا، ثبت الحزمة nagios على خادوم server01، وذلك بإدخال الأمر الآتي في الطرفية: sudo apt-get install nagios3 nagios-nrpe-pluginسيُطلَب منك إدخال كلمة مرور لمستخدم nagiosadmin، تصاريح المستخدم مخزنة في ‎/etc/nagios3/htpasswd.users. ولتعديل كلمة مرور nagiosadmin أو إضافة مستخدمين آخرين إلى سكربتات Nagios CGI، فاستخدم htpasswd الذي هو جزء من حزمة apache2-utils. على سبيل المثال، لتغيير كلمة المرور لمستخدم nagiosadmin: sudo htpasswd /etc/nagios3/htpasswd.users nagiosadminلإضافة مستخدم جديد: sudo htpasswd /etc/nagios3/htpasswd.users steveالآن على خادوم server02، ثبِّت الحزمة nagios-nrpe-server؛ بتنفيذ الأمر الآتي على server02: sudo apt-get install nagios-nrpe-serverملاحظة: سيسمح NRPE لك بتنفيذ فحوصات محلية على الأجهزة البعيدة، هنالك طرق أخرى للقيام بذلك عبر إضافات Nagios أخرى. لمحة عن الضبطهنالك عدة مجلدات تحتوي على ضبط Nagios وملفات التحقق (check files). ‎/etc/nagios3: يحتوي على ملفات الضبط لعمل عفريت nagios، وملفات CGI، والمضيفين ...إلخ.‎/etc/nagios-plugins: يحتوي ملفات الضبط للتحقق من الخدمات.‎/etc/nagios: في المضيفين البعيدين، ويحتوي على ملفات ضبط nagios-nrpe-server.‎/usr/lib/nagios/plugins/‎: المكان الذي تخزَّن فيه ملفات التحقق الثنائية، استخدم الخيار ‎-h لمشاهدة المساعدة لتحققٍ ما. مثال: ‎/usr/lib/nagios/plugins/check_dhcp -hهنالك وفرة في التحققات التي يمكن ضبط Nagios ليجريها على أي مضيف؛ سيُضبَط Nagios في هذا المثال للتحقق من مساحة القرص الصلب المتوفرة و DNS و MySQL؛ سيُجرى تحقق DNS على server02 وتحقق MySQL على server01 و server02. هنالك بعض المصطلحات التي عندما تُشرَح ستُسهِّل فهم ضبط Nagios: المضيف (host): خادوم أو محطة عمل (workstation)، أو جهاز شبكي ...إلخ. الذي يُراقَب.مجموعة مضيفين (host group): مجموعة من المضيفين المتشابهين؛ على سبيل المثال، تستطيع أن تُجمِّع كل خواديم الويب أو خواديم الملفات ...إلخ.الخدمة (service): الخدمة التي تُراقَب في المضيف، مثل HTTP أو DNS أو NFS ...إلخ.مجموعة الخدمات (service group): تسمح لك بجمع عدِّة خدمات متشابهة مع بعضها بعضًا، هذا مفيد لتجميع عدّة خدمات HTTP على سبيل المثال.جهة الاتصال (contact): الشخص الذي سيُنبَّه عندما يحدث حدثٌ ما؛ يمكن ضبط Nagios ليرسل بريدًا إلكترونيًا أو رسائل SMS ...إلخ.افتراضيًا، يكون ضبط Nagios ليتحقق من HTTP، والمساحة التخزينية المتوفرة في القرص، و SSH، والمستخدمين الحاليين، والعمليات، والحِمل على localhost؛ سيتحقق Nagios أيضًا من البوابة بعمل ping لها. تثبيتات Nagios الضخمة قد يصبح ضبطها معقدًا جدًا، لذلك من الأفضل عادةً البدء بمضيف واحد أو اثنين ثم التوسع بعد ضبطهما جيدًا. الضبطأولًا، أنشئ ملف ضبط للمضيف للخادوم server02؛ ما لم يُذكر عكس ذلك، فعليك تنفيذ هذه الأوامر على server01؛ أدخِل ما يلي في الطرفية: sudo cp /etc/nagios3/conf.d/localhost_nagios2.cfg \ /etc/nagios3/conf.d/server02.cfgملاحظة: في الأوامر السابقة أو التالية استبدل «server01» و «server02» و 172.18.100.100 و 172.18.100.101 بأسماء المضيفين وعناوين IP لخادومَيك. ثم عدِّل الملف ‎/etc/nagios3/conf.d/server02.cfg: define host{ use generic-host ; Name of host template to use host_name server02 alias Server 02 address 172.18.100.101 } # check DNS service. define service { use generic-service host_name server02 service_description DNS check_command check_dns!172.18.100.101 }أعد تشغيل عفريت nagios لتفعيل الضبط الجديد: sudo service nagios3 restartأضف الآن تعريفًا للتحقق من MySQL بإضافة ما يلي إلى ‎/etc/nagios3/conf.d/‎ services_nagios.cfg: # check MySQL servers. define service { hostgroup_name mysql-servers service_description MySQL check_command check_mysql_cmdlinecred!nagios!secret!$HOSTADDRESS use generic-service notification_interval 0 ; set > 0 if you want to be renotified }يجب الآن تعريف مجموعة المضيفين mysql-servers؛ عدِّل الملف ‎/etc/nagios3/conf.d ‎/hostgroups_nagios2.cfg مضيفًا: # MySQL hostgroup. define hostgroup { hostgroup_name mysql-servers alias MySQL servers members localhost, server02 }يحتاج Nagios لأن يستوثق إلى MySQL، فأضف مستخدم nagios إلى MySQL بإدخال الأمر: mysql -u root -p -e "create user nagios identified by 'secret';"ملاحظة: يجب أن يتواجد المستخدم nagios في كل المضيفين في مجموعة mysql-servers. أعد تشغيل nagios ليبدأ التحقق من خواديم MySQL: sudo service nagios3 restartأخيرًا، اضبط NRPE للتحقق من المساحة الفارغة في القرص على الخادوم server02. أضف التحقق من الخدمة في server01 في ملف ‎/etc/nagios3/conf.d/server02.cfg: # NRPE disk check. define service { use generic-service host_name server02 service_description nrpe-disk check_command check_nrpe_1arg!check_all_disks!172.18.100.101 }الآن على الخادوم server02، عدِّل الملف ‎/etc/nagios/nrpe.cfg مغيّرًا: allowed_hosts=172.18.100.100ثم في منطقة تعريف الأمر أضف ما يلي: command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -eفي النهاية، أعد تشغيل nagios-nrpe-server: sudo service nagios-nrpe-server restartوأيضًا على الخادوم server01 أعد تشغيل nagios: sudo service nagios3 restartيجب أن تكون قادرًا على رؤية المضيف والتحقق من الخدمات في ملفات Nagios CGI؛ للوصول إليهم، وجِّه متصفحك إلى http://server01/nagios3؛ ثم ستُسأل عن اسم مستخدم nagiosadmin وكلمة مروره. مصادرلم يشرح هذا القسم من الدرس إلا القليل من ميزات Nagios؛ تحتوي الحزمتين nagios-plugins-extra و nagios-snmp-plugins على المزيد من تحققات الخدمات. للمزيد من المعلومات، راجع موقع Nagios، تحديدًا موقع «التوثيق».هنالك قائمة بالكتب المتعلقة بمراقبة الشبكة و Nagios.صفحة ويكي أوبتتو «Nagios» فيها بعض التفاصيل الإضافية.Muninالتثبيتقبل تثبيت Munin على server01، فيجب أن يُثبَّت قبله apache2؛ الضبط الافتراضي كافٍ لتشغيل خادوم munin. أولًا، ثبت munin على الخادوم server01 بإدخال الأمر: sudo apt-get install muninالآن ثبِّت الحزمة munin-node على الخادوم server02: sudo apt-get install munin-nodeالضبطعدِّل الملف ‎/etc/munin/munin.conf على الخادوم server01 مُضيفًا عنوان IP للخادوم server02: ## First our "normal" host. [server02] address 172.18.100.101ملاحظة: استبدل server02 و 172.18.100.101 باسم المضيف وعنوان IP الحقيقي لخادومك. الآن اضبط munin-node على الخادوم server02، بتعديل ‎/etc/munin/munin-node.conf للسماح بالوصول إلى الخادوم server01: allow ^172\.18\.100\.100$ملاحظة: استبدل ‎^172\.18\.100\.100$ بعنوان IP لخادوم Munin الخاص بك. أعد تشغيل munin-node على server02 لكي تأخذ التعديلات مجراها: sudo service munin-node restartفي النهاية، وجِّه متصفحك إلى http://server01/munin، يجب أن ترى روابط إلى مخططات بيانية جميلة تعرض معلومات من الحزمة القياسية munin-plugins للقرص والشبكة والعمليات والنظام. ملاحظة: لما كان هذا التثبيت حديثًا، فربما ستحتاج لبعض الوقت لعرض معلومات مفيدة. إضافات أخرىتحتوي حزمة munin-plugins-extra على تحققات من أداء خدماتٍ إضافية مثل DNS و DHCP، وسامبا ...إلخ. أدخل الأمر الآتي لتثبيت هذه الحزمة: sudo apt-get install munin-plugins-extraتأكد من تثبيت هذه الحزمة على جهازَيّ الخادوم والعقدة. مصادرراجع موقع Munin لمزيدٍ من التفاصيل.تحديدًا صفحة «توثيق Munin» التي تحتوي على معلومات عن الإضافات الأخرى، وكيفية كتابة إضافات ...إلخ.مصدر آخر هو صفحة ويكي أوبنتو «Munin».ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Monitoring.
  22. إن eCryptfs هو نظام ملفات للتشفير متوافق مع معايير POSIX ومن فئة الشركات لنظام لينُكس؛ وبتشكيل طبقة فوق طبقة نظام الملفات، فإن eCryptfs يحمي الملفات بغض النظر عن نظام الملفات المُستخدَم أو نوع القسم ...إلخ. هنالك خيار أثناء التثبيت لتشفير قسم ‎/home، هذا سيضبط تلقائيًا كل شيء يحتاج له النظام لتشفير ووصل ذاك القسم. سنشرح هنا طريقة الضبط لتشفير ‎/srv باستخدام eCryptfs. استخدام eCryptfsأولًا، ثبِّت الحزم اللازمة، بإدخال الأمر الآتي من الطرفية: sudo apt-get install ecryptfs-utilsالآن صِل القسم الذي تريد تشفيره: sudo mount -t ecryptfs /srv /srvستُسأل الآن عن بعض التفاصيل حول كيفية تشفير البيانات. لاختبار أن الملفات الموجودة في ‎/srv هي مشفرة، فانسخ المجلد ‎/etc/default إلى ‎/srv: sudo cp -r /etc/default /srvثم افصل القسم ‎/srv، وحاول عرض الملف: sudo umount /srv cat /srv/default/cronإعادة وصل ‎/srv باستخدام ecryptfs ستجعل البيانات قابلةً للعرض مرةً أخرى. وصل الأقسام المشفرة تلقائياهنالك طريقتان لوصل نظام ملفات مُشفَّر باستخدام ecryptfs أثناء الإقلاع؛ سيستخدم هذا المثال الملف ‎/root/.ecryptfsrc الذي يحتوي على خيارات الوصل، بالإضافة إلى ملف مرور موجود على قرص USB. أنشِئ أولًا الملف ‎/root/.ecryptfsrc الذي يحتوي على: key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txt ecryptfs_sig=5826dd62cf81c615 ecryptfs_cipher=aes ecryptfs_key_bytes=16 ecryptfs_passthrough=n ecryptfs_enable_filename_crypto=nملاحظة: عدِّل ecryptfs_sig إلى التوقيع في ‎/root/.ecryptfs/sig-cache.txt. ثم أنشِئ ملف المرور ‎/mnt/usb/passwd_file.txt: passphrase_passwd=[secrets]أضف الآن الأسطر الضرورية إلى ملف ‎/etc/fstab: /dev/sdb1 /mnt/usb ext3 ro 0 0 /srv /srv ecryptfs defaults 0 0تأكد أن قرص USB سيوصل قبل القسم المشفر. في النهاية، أعد الإقلاع ويجب أن يوصل ‎/srv باستخدام eCryptfs. أدوات أخرىالحزمة ecryptfs-utils تحتوي على أدواتٍ أخرى مفيدة: الأداة ecryptfs-setup-private تُنشِئ مجلد ‎~/Private الذي يحتوي على المعلومات المشفرة؛ يمكن تنفيذ هذه الأداة من المستخدمين العاديين للحفاظ على بياناتهم من المستخدمين الآخرين على النظام.الأداة ecryptfs-mount-private والأداة ecryptfs-umount-private ستصل أو تفصل مجلد ‎~/Private على التوالي وبالترتيب.ecryptfs-add-passphrase: إضافة عبارة مرور لما يسمى «kernel keyring».ecryptfs-manager: إدارة كائنات eCryptfs مثل المفاتيح.ecryptfs-stat: السماح لك بعرض معلومات eCryptfs الوصفية لملفٍ ما.مصادرللمزيد من المعلومات حول eCryptfs، راجع صفحة المشروع على Lanuchpad.هنالك مقالة في Linux Journal تشرح eCryptfs.للمزيد من خيارات eCryptfs، راجع صفحة الدليل man ecryptfs.لدى صفحة ويكي أوبنتو «eCryptfs» المزيد من التفاصيل.ترجمة -وبتصرف- للمقال Ubuntu Server Guide: eCryptfs.
  23. واحدة من أكثر الأشكال الشائعة للتشفير في وقتنا الراهن هي التشفير وفق المفتاح العمومي (public-key cryptography)؛ يستخدم التشفير وفق المفتاح العمومي مفتاحًا عامًا (public key) ومفتاحًا خاصًا (private key)؛ يعمل النظام بتشفير (encrypt) المعلومات باستخدام مفتاح عمومي، ولا يمكن أن يُفَكّ تشفيرها (decrypted) إلا باستخدام المفتاح الخاص. استخدام شائع للتشفير وفق المفتاح العمومي هو تشفير البيانات المنقولة باستخدام اتصال SSL ‏(Secure Socket Layer) أو TLS‏ (Transport Layer Security)؛ على سبيل المثال، إن ضبط أباتشي لتوفير HTTPS -بروتوكول HTTP عبر SSL- يسمح بتشفير البيانات في بروتوكول لا يوفر بحد ذاته آليةً للتشفير. الشهادة (Certificate) هي طريقة تستخدم لتوزيع المفتاح العمومي وغيره من المعلومات عن الخادوم والمنظمة المسؤولة عنه؛ تُوقَّع الشهادات إلكترونيًا بواسطة «سلطة الشهادات» (CA)، إن سلطة الشهادات هي طرفٌ ثالثٌ موثوق تأكد من دقة المعلومات الموجودة في الشهادة. أنواع الشهاداتلضبط خادوم آمن باستخدام تشفير وفق المفتاح العمومي، عليك إرسال -في أغلب الحالات- طلب الشهادة (متضمنًا المفتاح العمومي الخاص بك) ودليلًا على هوية شركتك ودفعةً ماليةً إلى سلطة شهادات؛ ثم ستتحقق سلطة الشهادات من طلب الشهادة ومن هويتك، ثم ستُرسِل الشهادة إلى خادومك الآمن. بشكلٍ بديل، تستطيع إنشاء شهادتك الموقعة ذاتيًا. للحصول على شهادة SSL قم باتباع الخطوات الموضحة في درس كيفية تثبيت شهادة SSL من سلطة شهادات تجارية أو يمكنك الحصول على شهادة SSL مجانية عبر خدمة Let's encrypt. ملاحظة: لاحظ أنه لا يجدر بك استخدام الشهادات الموقعة ذاتيًا في أغلبية بيئات العمل الإنتاجية. بإكمال مثال HTTPS، ستوفر شهادة موقعة من سلطة الشهادات إمكانيتَين مهمتين لا تملكهما الشهادات الموقعة ذاتيًا: المتصفحات تتعرف (عادةً) تلقائيًا على الشهادة وتسمح بإنشاء اتصال آمن دون طلب موافقة المستخدم.عندما تعطي سلطة الشهادات شهادةً موقعة، فإنها تضمن هوية المنظمة التي توفر صفحات الويب إلى المتصفح.أغلبية متصفحات الويب والحواسيب التي تدعم SSL لديها قائمة بسلطات الشهادات التي تُقبَل شهاداتها تلقائيًا؛ إذا واجه المتصفح شهادةً لم تكن سلطة الشهادات التي أصدرتها في قائمته، فإنه (أي المتصفح) سيطلب من المستخدم قبول أو رفض الاتصال؛ وقد تُولِّد بعض التطبيقات الأخرى رسالة خطأ عند استخدام شهادة موقعة ذاتيًا. عملية الحصول على شهادة من سلطة الشهادات هي عملية سهلة جدًا، لمحة سريعة هي الآتية: أنشِئ زوج مفاتيح خاص وعام.أنشِئ طلب شهادة بناءً على المفتاح العمومي، يحتوي طلب الشهادة على معلومات عن خادومك والشركة التي تستضيفه.أرسل طلب الشهادة مع الوثائق التي تثبت هويتك إلى سلطة الشهادات؛ لا نستطيع إخبارك أيّة سلطة شهادات عليك أن تختارها؛ ربما يكون قرارك مبنيًا على تجارب سابقة، أو على تجارب أحد أصدقائك أو زملائك، أو على عوامل اقتصادية.بعد أن تختار سلطة الشهادات، فعليك اتباع تعليماتهم التي يوفرونها عن كيفية الحصول على شهادة منهم.بعد أن تتأكد سلطة الشهادات أنك من تدعيّ أنك هو؛ فسيرسلون لك شهادةً رقميةً.ثبِّت هذه الشهادة على خادومك الآمن، واضبط البرامج الملائمة لاستخدام هذه الشهادة.توليد طلب توقيع الشهادة (CSR)إذا كنت ستحصل على شهادة من سلطة شهادات أو كنت ستُوقِّع شهادتك ذاتيًا، فإن أول خطوة هي توليد مفتاح. إذا كانت الشهادة ستُستخدَم من عفاريت الخدمات، مثل أباتشي، أو Postfix، أو Dovecot ...إلخ. فإن مفتاحًا بدون عبارة مرور (passphrase) كافٍ عادةً؛ عدم وجود عبارة مرور تسمح للخدمات أن تبدأ دون تدخل يدوي، وهذه هي الطريقة المفضلة لبدء تشغيل عفريت. سيغطي هذا القسم طريقة توليد مفتاح مع عبارة مرور، وواحد آخر بدون عبارة مرور؛ ثم سنستخدم المفتاح بدون عبارة مرور لتوليد شهادة ستُستخدَم في مختلف عفاريت الخدمات. تحذير: تشغيل خدمة آمنة بدون عبارة مرور هو أمر ملائم ﻷنك لن تحتاج إلى إدخال عبارة المرور كل مرة تبدأ فيها خدمتك الآمنة، لكن هذا غير آمن وأي كشف عن المفتاح سيؤدي إلى جعل الخادوم عرضةً للهجمات. لتوليد «مفاتيح» لطلب توقيع الشهادة، عليك تنفيذ الأمر الآتي من مِحَث الطرفية: openssl genrsa -des3 -out server.key 2048 Generating RSA private key, 2048 bit long modulus ..........................++++++ .......++++++ e is 65537 (0x10001) Enter pass phrase for server.key:تستطيع الآن إدخال عبارة مرورك، لأفضل قدر من الحماية، يجب أن تحتوي على الأقل على ثمانية محارف؛ الطول الأدنى عند تحديد الخيار ‎-des3 هو أربعة محارف؛ ويجب أن تحتوي على أرقام أو على علامات ترقيم ولا تحتوي على كلمة من القاموس؛ تذكر أن عبارة المرور حساسة لحالة الأحرف. أعد كتابة عبارة المرور للتحقق؛ وبعد إعادة كتابتها بشكل صحيح، فسيُولَّد مفتاح الخادوم وسيُخزَّن في ملف server.key. أنشِئ الآن مفتاحًا غير آمن (insecure أي بدون عبارة مرور) ثم بدِّل بين أسماء المفاتيح: openssl rsa -in server.key -out server.key.insecure mv server.key server.key.secure mv server.key.insecure server.keyأصبح الآن اسم ملف المفتاح غير الآمن هو server.key، وسنستخدم هذا الملف لتوليد CSR بدون عبارة مرور. نفِّذ الأمر الآتي في مِحَث الطرفية لإنشاء CSR: openssl req -new -key server.key -out server.csrستُسأل عن إدخال عبارة المرور، إذا أدخلت عبارةً صحيحةً، فستُسأل عن إدخال اسم الشركة، واسم الموقع، ومعرف البريد الإلكتروني ...إلخ. بعد أن تُدخِل كل هذه التفاصيل، فسيُنشَأ طلب توقيع الشهادة (CSR) وسيُخزَّن في ملف server.csr. يجب الآن إرسال ملف طلب توقيع الشهادة إلى سلطة الشهادات لمعالجته؛ ستستخدم سلطة الشهادات ملف طلب توقيع الشهادة لإصدار الشهادة؛ وعلى الكفة الأخرى، تستطيع توليد شهادتك الموقعة ذاتيًا باستخدام طلب توقيع الشهادة السابق. إنشاء شهادة موقعة ذاتيانفِّذ الأمر الآتي في الطرفية لإنشاء شهادة موقعة ذاتيًا: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crtسيسألك الأمر السابق عن عبارة المرور، بعد أن تدخل عبارة المرور الصحيحة، فستُنشَأ الشهادة وتُخزَّن في ملف server.crt. تحذير: إذا استُخدِم خادومك الآمن في بيئة إنتاجية، فربما تحتاج إلى شهادة موقع من سلطة الشهادات (CA)، ليس من المستحسن استخدام شهادة موقعة ذاتيًا. تثبيت الشهادةتستطيع تثبيت ملف المفتاح server.key وملف الشهادة server.crt أو ملف الشهادة المُصدَر من سلطة الشهادات، بتنفيذ الأمرين الآتيين في الطرفية: sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/privateاضبط الآن ببساطة أيّة تطبيقات فيها إمكانية استخدام التشفير وفق المفتاح العمومي لكي تستخدم ملفات الشهادة والمفتاح؛ على سبيل المثال، يمكن أن يزود أباتشي HTTPS، و Dovecot يستطيع أن يزود IMAPS و POP3S ...إلخ. سلطة الشهاداتإذا كانت تتطلب الخدمات على شبكتك أكثر من مجرد بضع شهادات موقعة ذاتيًا، فربما يكون من المفيد بذل جهد إضافي وإعداد سلطة شهادات داخلية؛ ستسمح الشهادات الموقعة من سلطة الشهادات الخاصة بك لمختلف الخدمات باستخدام الشهادات لكي تثق بسهولة بالخدمات الأخرى التي تملك شهادات مُصدَرة من نفس سلطة الشهادات. أنشِئ أولًا المجلدات التي سنضع فيها شهادة سلطة الشهادات والملفات المتعلقة بذلك: sudo mkdir /etc/ssl/CA sudo mkdir /etc/ssl/newcertsتحتاج سلطة الشهادات إلى بضعة ملفات إضافية لكي تعمل، واحدٌ لكي يتعقب آخر رقم تسلسلي اُستخدِم من سلطة الشهادات، إذ يجب أن تملك كل شهادة رقمًا تسلسليًا فريدًا؛ وملفٌ آخر لتسجيل الشهادات التي أُصدِرَت: sudo sh -c "echo '01' > /etc/ssl/CA/serial" sudo touch /etc/ssl/CA/index.txtالملف الثالث هو ملف ضبط سلطة الشهادات، على الرغم من أنه ليس مطلوبًا، لكن من المنطقي وجوده عند إنشاء عدّة شهادات؛ عدِّل ملف ‎/etc/ssl/openssl.cnf وفي قسم [ CA_default ]، غيِّر ما يلي: dir = /etc/ssl/ # Where everything is kept database = $dir/CA/index.txt # database index file. certificate = $dir/certs/cacert.pem # The CA certificate serial = $dir/CA/serial # The current serial number private_key = $dir/private/cakey.pem # The private keyثم أنشِئ الشهادة الجذر الموقعة ذاتيًا: openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem \ -days 3650ستُسأل عن إدخال التفاصيل حول الشهادة. الآن ثبت الشهادة الجذر والمفتاح: sudo mv cakey.pem /etc/ssl/private/ sudo mv cacert.pem /etc/ssl/certs/أنت الآن جاهزٌ لبدء توقيع الشهادات، أول شيء مطلوب هو «طلب توقيع الشهادة» (راجع القسم السابق لمزيد من المعلومات)، بعد أن تحصل على طلب توقيع الشهادة، فأدخِل ما يلي لتوليد شهادة موقعة من سلطة الشهادات: sudo openssl ca -in server.csr -config /etc/ssl/openssl.cnfبعد إدخال كلمة المرور لمفتاح سلطة الشهادات، فستُسأل عن توقيع الشهادة، ومرةً أخرى لإصدار الشهادة، يجب أن ترى كميةً كبيرةً من المخرجات المتعلقة بإنشاء الشهادة. يجب أن يكون هنالك ملف جديد هو ‎/etc/ssl/netcerts/01.pem يحتوي على نفس المخرجات، انسخ والصق كل شيء من بداية السطر -----BEGIN CERTIFICATE----- إلى السطر ----END CERTIFICATE----- إلى ملف مسمى بنفس اسم المضيف لخادومك مكان تثبيت الشهادة؛ فمثلًا الاسم mail.example.com.crt هو اسم وصفي جيد. الشهادات المتتالية ستُسمى 02‎.pem ،03‎.pem ...إلخ. ملاحظة: استبدل mail.example.com.crt بالاسم الوصفي الخاص بك. في النهاية، انسخ الشهادة الجديدة إلى المضيف الذي يحتاج لها واضبط الخدمات الملائمة لكي تستخدمها، المكان الافتراضي لتثبيت الشهادات هو ‎/etc/ssl/certs، وهذا ما سيُمكِّن عدِّة خدمات من استخدام نفس الشهادة دون تعقيد أذونات الملف. للتطبيقات التي يمكن ضبطها لاستخدام شهادة CA، يجب أن تَنسخ أيضًا الملف ‎/etc/ssl/certs/cacert.pem إلى مجلد ‎/etc/ssl/certs/‎ على كل خادوم. مصادرلتعليمات تفصيلية عن استخدام التشفير، راجع صفحة «SSL Certificates HOWTO».صفحة ويكيبيديا HTTPS لديها المزيد من المعلومات حول HTTPS.للمزيد من المعلومات حول OpenSSL، راجع الصفحة الرئيسية لموقع OpenSSL.أيضًا، كتاب «Network Security with OpenSSL» من O'Reilly هو مرجع معمّق.ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Certifications.
  24. إن AppArmor هو وحدة حماية في لينُكس تقيّد وصول البرامج المختلفة إلى قائمة بالملفات التابعة لها والإمكانيات المذكورة في مسودة posix 1003.le. إن AppArmor مثبَّت ومفعَّل افتراضيًا، ويستخدم «ملفات ضبط» (profiles) للتطبيقات لتحديد أيّة ملفات وأذونات يتطلبها التطبيق، بعض الحزم تُثبِّت ملفات الضبط الخاصة بها، ويمكن العثور على ملفات ضبط إضافية في حزمة apparmor-profiles. أدخل الأمر الآتي في الطرفية لتثبيت حزمة apparmor-profiles: sudo apt-get install apparmor-profilesلملفات ضبط AppArmor نمطين من التنفيذ: البناء أو التعلم (Complaining/Learning): من المسموح تجاوز ملف الضبط وستُسجَّل تلك التجاوزات؛ يفيد هذا النمط في اختبار وتطوير ملفات ضبط جديدة.الإجبار أو التقييد (Enforced/Confined): إجبار السياسة في ملفات الضبط، وتسجيل التجاوزات أيضًا. استخدام AppArmorتنويه: هذا القسم معلول بعلِّة1، فللأسف لن تعمل الأوامر التي فيه كما يجب. تحتوي حزمة apparmor-utils على أدوات سطر أوامر تمكِّنك من تغيير نمط تنفيذ AppArmor، أو معرفة حالة ملف ضبط، أو إنشاء ملفات جديدة ...إلخ. يُستخدَم الأمر apparmor_status لعرض حالة ملفات ضبط AppArmor. sudo apparmor_statusيضع الأمر aa-complain ملفَ ضبطٍ قيدَ البناء: sudo aa-complain /path/to/binالأمر aa-enforce يضعُ ملفَ ضبطٍ قيدَ التنفيذ: sudo aa-enforce /path/to/binالمجلد ‎/etc/apparmor.d هو مكان تواجد ملفات ضبط AppArmor؛ يمكن أن يُستخدَم لتعديل «نمط» جميع ملفات الضبط. أدخِل ما يلي لوضع كل الملفات في نمط البناء: sudo aa-complain /etc/apparmor.d/*لوضع جميع الملفات قيد التنفيذ: sudo aa-enforce /etc/apparmor.d/*يُستخدَم الأمر apparmor_parser لتحميل ملف ضبط إلى النواة، ويمكن أن يُستخدَم لإعادة تحميل ملف ضبط مُحمَّل مسبقًا باستخدام الخيار ‎-r؛ لتحميل ملف ضبط: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -aولإعادة تحميل ملف ضبط محمَّل مسبقًا: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -rيمكن استخدام ‎service apparmor لإعادة تحميل كل ملفات الضبط: sudo service apparmor reloadيمكن استخدام المجلد ‎/etc/apparmor.d/disable مع الخيار ‎‎apparmor_parser‏ ‎‎-R لتعطيل ملف ضبط: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/profile.nameلإعادة تفعيل ملف ضبط معطَّل، احذف الوصلة الرمزية إلى الملف في ‎/etc/apparmor.d/disable ثم أعد تحميل ملف الضبط باستخدام الخيار ‎-a: sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -aيمكن تعطيل AppArmor، وسيزال تحميل وحدة النواة بإدخال ما يلي: sudo service apparmor stop sudo update-rc.d -f apparmor removeلإعادة تفعيل AppArmor، أدخِل: sudo service apparmor start sudo update-rc.d apparmor defaultsملاحظة: استبدل profile.name باسم ملف الضبط الذي تريد تعديله، أيضًا استبدل ‎/path/to/bin بمسار الملف التنفيذي الحقيقي؛ على سبيل المثال، للأمر ping استخدم ‎/bin/ping. ملفات الضبطملفات الضبط (profiles) هي ملفات نصية بسيطة موجودة في ‎/etc/apparmor.d/‎؛ هذه الملفات مسماةٌ وفقًا للمسار الكامل للملف التنفيذي الذي تضبطه لكن مع إبدال «‎/» بنقطة «.»؛ على سبيل المثال، ‎/etc/apparmor.d/bin.ping هو ملف ضبط AppArmor للأمر ‎/bin/ping. هنالك نوعان رئيسيان من القواعد المستخدمة في ملفات الضبط: قيود المسار (Path entries): التي تحدد الملفات التي يمكن للتطبيق الوصول إليها في نظام الملفات.قيود الإمكانيات (Capability entries): تحدد الامتيازات التي يُسمَح لعملية مقيدة بإجرائها.ألقِ نظرةً على ‎/etc/apparmor.d/bin.ping كمثال: #include <tunables/global> /bin/ping flags=(complain) { #include <abstractions/base> #include <abstractions/consoles> #include <abstractions/nameservice> capability net_raw, capability setuid, network inet raw, /bin/ping mixr, /etc/modules.conf r, }‎#include <tunables/global>‎: تضمين تعبيرات من ملفات أخرى، وهذا يسمح للعبارات المشتركة بين عدّة تطبيقات بالتواجد في ملف مشترك.(‎/bin/ping flags=(complain: المسار إلى التطبيق صاحب ملف الضبط، وضبط النمط إلى complain.capability net_raw,‎: السماح للتطبيق بالوصول إلى امتياز CAP_NET_RAW Posix.le.‎/bin/ping mixr,‎: السماح للتطبيق بوصول القراءة والتنفيذ إلى الملف.ملاحظة: يجب إعادة تحميل ملف الضبط بعد تعديله، راجع القسم «استخدام AppArmor» للتفاصيل. إنشاء ملف ضبط1. صمم خطة اختبار: فكر كيف يمكن «تمرين» التطبيق؛ يجب أن تُقسَّم خطة الاختبار إلى حالات اختبار صغيرة، وكل حالة اختبار لها شرح صغير وقائمة بالخطوات التي يجب اتباعها. بعض حالات الاختبار القياسية هي: بدء تشغيل البرنامج.إيقاف البرنامج.إعادة تحميل البرنامج.اختبار جميع الأوامر المدعومة من سكربت init.2. توليد ملف الضبط الجديد: استخدم aa-genprof لتوليد ملف ضبط جديد؛ من الطرفية: sudo aa-genprof exectableعلى سبيل المثال: sudo aa-genprof slapd3. لكي يُضمَّن ملف الضبط الجديد الخاص بك في حزمة apparmor-profiles، فبلِّغ عن علة في Lanuchpad2 عن حزمة AppArmor: ضمِّن خطة الاختبار وحالات الاختبار.أضف ملف الضبط الجديد إلى العلة.تحديث ملفات الضبطعندما لا يعمل برنامج ما كما يجب؛ فافحص الرسائل التي تُرسَل إلى ملفات السجل؛ يمكن أن يُستخدَم البرنامج aa-logprof لفحص ملفات السجل لرسائل التدقيق الخاصة ببرنامج AppArmor؛ راجعها وحدِّث ملفات الضبط. sudo aa-logprofمصادرراجع «AppArmor Administraion Guide» لإعدادات الضبط المتقدمة.للتفاصيل حول استخدام AppArmor مع إصدارات أخرى من أوبنتو، فراجع صفحة ويكي المجتمع حول AppArmor.صفحة «OpenSUSE AppArmor» هي تقديم آخر إلى AppArmor.مكان رائع للسؤال حول المساعدة في AppArmor، والاندماج مع مجتمع خواديم أوبنتو هو قناة ‎ ‎#ubuntu-server على خادوم Freenode (شبكة IRC).ترجمة -وبتصرف- للمقال Ubuntu Server Guide: AppArmor.
  25. تتضمن نواة لينُكس النظام الفرعي Netfilter الذي يُستخدَم لتعديل أو تحديد مصير البيانات الشبكية الداخلة أو الخارجة من الخادوم، تَستخدم جميع الجدر النارية في لينُكس هذا النظام لترشيح الرزم الشبكية. نظام ترشيح الرزم الخاص بالنواة لن يكون مفيدًا لمدراء الأنظمة دون واجهة لإدارته، وهذا هو الغرض من iptables؛ فعندما تصل رزمة شبكية إلى خادومك، فستتوجه إلى النظام الفرعي Netfilter للموافقة أو التعديل أو الرفض بناءً على القواعد الموفَّرة لها من المستخدم عبر iptables؛ ولهذا سيكون iptables هو كل ما تحتاج لإدارة الجدار الناري إن كان مألوفًا لديك، لكن العديد من الواجهات المتوفرة له ستُبسِّط العملية. الجدار الناري ufw‏أداة ضبط الجدار الناري الافتراضية في أوبنتو هي ufw، التي طُوِّرَت لتسهيل ضبط جدار iptables الناري، توفر ufw واجهة «صديقة» للمستخدم لإنشاء جدار ناري لعناوين IPv4 أو IPv6. إن ufw معطَّل افتراضيًّا. من صفحة دليل man ufw: هذه بعض أمثلة استخدام ufw: أولًا، يجب أن نفعِّل ufw، أدخِل الأمر الآتي في الطرفية: sudo ufw enableلفتح منفذ ما (ssh في هذا المثال): sudo ufw allow 22وبشكلٍ مشابه، لإغلاق منفذ مفتوح: sudo ufw deny 22لحذف قاعدة، استخدم الكلمة delete متبوعةً بالقاعدة: sudo ufw delete deny 22من الممكن أيضًا السماح بالوصول من مضيفين أو شبكات محددة لمنفذٍ ما؛ يسمح المثال الآتي بالوصول لمنفذ ssh من المضيف 192.168.0.2 لأي عنوان IP في هذا المضيف: sudo ufw allow proto tcp from 192.168.0.2 to any port 22يمكن استخدام 192.168.0.0/24 بدلًا من 192.168.0.2 للسماح بالوصول عبر ssh لكامل الشبكة الفرعية. إضافة الخيار ‎--dry-run لأمر ufw سيجعله يخرج القواعد الناتجة، لكنه لن يطبقها؛ على سبيل المثال، ما يلي هو ما سيحدث لو فتحنا منفذ HTTP: sudo ufw --dry-run allow http*filter :ufw-user-input - [0:0] :ufw-user-output - [0:0] :ufw-user-forward - [0:0] :ufw-user-limit - [0:0] :ufw-user-limit-accept - [0:0] ### RULES ### ### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 -A ufw-user-input -p tcp --dport 80 -j ACCEPT ### END RULES ### -A ufw-user-input -j RETURN -A ufw-user-output -j RETURN -A ufw-user-forward -j RETURN -A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT]: " -A ufw-user-limit -j REJECT -A ufw-user-limit-accept -j ACCEPT COMMIT Rules updatedيمكن تعطيل ufw بالأمر: sudo ufw disableأدخل الأمر لمعرفة حالة الجدار الناري: sudo ufw statusلمعلومات تفصيلية عن حالة الجدار الناري، استخدم: sudo ufw status verboseلعرض أرقام بجوار القواعد (لحذفها مثلًا) فاستخدم الكلمة المحجوزة numbered: sudo ufw status numberedملاحظة: إن كان المنفذ الذي تريد فتحه أو إغلاقه معرفًا في ‎/etc/services، فيمكنك استخدام اسم المنفذ بدلًا من رقمه؛ حيث استبدل 22 بالكلمة ssh في الأمثلة السابقة. هذه مجرد مقدمة سريعة عن استخدام ufw، رجاءً راجع صفحة دليل ufw لمزيد من المعلومات. دمج التطبيقات مع ufwتستطيع التطبيقات التي تفتح منافذ أن تُضمِّن ملف ufw الذي يبيّن أيّة منافذ يحتاج التطبيق لفتحها لكي يعمل عملًا تامًا؛ هذه الملفات موجودة في ‎/etc/ufw/applications.d ويمكن أن تُعدَّل إذا تغيَّرت المنافذ الافتراضية. استخدم الأمر الآتي في الطرفية لعرض التطبيقات التي ثبتت أحد تلك الملفات: sudo ufw app listوبشكل شبيه للسماح بالاتصالات إلى منفذ معين، فيُفعَّل استخدام ملف ضبط أحد التطبيقات بالأمر: sudo ufw allow Sambaيمكن استخدام التعبير المُوسَّع كالآتي: ufw allow from 192.168.0.0/24 to any app Sambaاستبدل «Samba» و 192.168.0.0/24 باسم التطبيق ومجال IP لشبكتك. ملاحظة: لا توجد هنالك حاجة لتحديد البروتوكول للبرنامج الذي ستُفعِّله، لأن هذه المعلومات مفصَّلة بالملف الخاص به، لاحظ أن اسم التطبيق يستبدل رقم المنفذ. لعرض معلومات حول المنافذ والبروتوكولات (...إلخ.) المُعرَّفة لتطبيقٍ ما، فأدخِل الأمر: sudo ufw app info Sambaليس لكل التطبيقات التي تتطلب فتح منفذ شبكي ملف ufw خاص؛ إذا كتبت ذاك الملف لتطبيق ما، وأردت أن يُضمَّن هذا الملف مع الحزمة، فرجاءً بلِّغ عن علة في تلك الحزمة على Lanuchpad: ubuntu-bug nameofpackageتنكر IPالغاية من تنكر IP‏ (IP Masquerading) هو السماح للأجهزة التي تملك IP خاص غير قابل للتوجيه في شبكتك بالوصول إلى الإنترنت عبر الجهاز الذي يقوم بالتنكر؛ يجب أن تُعالَج البيانات الشبكية من شبكتك الخاصة إلى الإنترنت لكي توجَّه الردود إلى الجهاز الذي قام بالطلب، ويجب أن تُعدِّل النواة قيمة عنوان IP المصدر لكل رزمة شبكية لكي تصبح قابلة للتوجيه إلى الخادوم، بدلًا من عنوان IP الخاص (private IP) الذي قام بالطلب، الذي يكون مستحيلًا عبر الإنترنت؛ يستخدم لينُكس تعقب الاتصال (conntrack) لكي يتعقب أيّة اتصالات تتعلق بأيّة أجهزة وإعادة توجيه كل رزمة مُعادة وفقًا لذلك؛ أي أن البيانات الشبكية الخارجة من شبكتك المحلية هي «مُتنكِّرة» ﻷنها تنشأ من البوابة (خادومك)؛ يُشار إلى هذه العملية في توثيق مايكروسوفت باسم «مشاركة اتصال الإنترنت» (Internet Connection Sharing). تنكر ufwيمكن أن يجرى تنكر IP بقواعد ufw مخصصة؛ هذا ممكن لأن السند الخلفي للأداة ufw هو iptables-restore مع ملفات القواعد المخزنة في ‎/etc/ufw/*.rules؛ هذه الملفات هي مكان ممتاز لإضافة قواعد iptables بدون ufw، وللقواعد التي تتعلق تعلقًا كبيرًا بالبوابات الشبكية أو الجسور. تُقسَّم القواعد إلى ملفين مختلفين، القواعد التي يجب أن تُنَفَّذ قبل القواعد السطرية التابعة للأداة ufw، والقواعد التي تُنفَّذ بعدها. أولًا، يجب أن يُفعَّل تمرير الرزم في ufw، يجب أن يُعدَّل ملفي إعدادات؛ غيِّر قيمة DEFAULT_FORWARD_POLICY إلى "ACCEPT" في ملف ‎/etc/default/ufw: DEFAULT_FORWARD_POLICY="ACCEPT"ثم عدِّل الملف ‎/etc/ufw/sysctl.conf وأزل التعليق عن: net/ipv4/ip_forward=1وبشكل مشابه، لتمرير IPv6 أزل التعليق عن: net/ipv6/conf/default/forwarding=1سنضيف الآن القواعد إلى ملف ‎/etc/ufw/before.rules؛ القواعد الافتراضية تضبط جدول filter فقط، ويجب ضبط جدول nat لتفعيل التنكر؛ أضف ما يلي إلى أعلى الملف بعد تعليقات الترويسة مباشرةً: # nat Table rules *nat :POSTROUTING ACCEPT [0:0] # Forward traffic from eth1 through eth0. -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE # don't delete the 'COMMIT' line or these nat table rules won't be processed COMMITليست التعليقات ضروريةً، لكنها من المستحسن توثيق ملفات الضبط؛ وعند تعديل أي من ملفات «القواعد» في ‎/etc/ufw، فتأكد من أن هذين السطرين موجودان في نهاية الملف لكل جدول عدَّلته: # don't delete the 'COMMIT' line or these nat table rules won't be processed COMMITيجب أن تتوفر عبارة COMMIT في نهاية كل جدول، وقد ظهر في الأمثلة السابقة جدولا nat و filter فقط، لكنك تستطيع إضافة القواعد لجدولَيّ raw و mangle. ملاحظة: استبدل-في المثال السابق- eth0 و eth1 و 192.168.0.0/24 بالبطاقات ومجال IP الملائمين. في النهاية، عطِّل وأعد تفعيل ufw لتطبيق التغيرات: sudo ufw disable && sudo ufw enableيجب أن يُفعَّل تنكر IP الآن، تستطيع إضافة أية قواعد FORWARD إضافية إلى ملف ‎/etc/ufw/before.rules؛ من المستحسن إضافة هذه القواعد في سلسلة ufw-before-forward. تنكر iptablesيمكن أن يُستخدَم iptables لتفعيل التنكر. وبشكل شبيه للأداة ufw، أول خطوة هي تفعيل تمرير IPv4 بتعديل ملف ‎/etc/sysctl.conf وإزالة التعليق عن السطر الآتي: net.ipv4.ip_forward=1إذا أردت تفعيل تمرير IPv6، فأزل التعليق عن: net.ipv6.conf.default.forwarding=1تاليًا، نفِّذ الأمر sysctl لتفعيل الإعدادات الجديدة في ملف الضبط: sudo sysctl -pيمكن أن يُفعَّل تنكر IP بقاعدة iptables واحدة، التي يمكن أن تختلف اختلافًا بسيطًا بناءً على ضبط شبكتك: sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADEيفترض الأمر السابق أن مجال شبكتك الخاصة هو 192.168.0.0/16 وأن الجهاز الذي يمتلك اتصالًا بالإنترنت هو ppp0، نستطيع تقسيم الأمر السابق كما يلي: ‎-t nat: القاعدة ستذهب لجدول nat.‎-A POSTROUTING: ستُضاف القاعدة (‎-A) إلى سلسلة POSTROUTING.‎-s 192.168.0.0/16: تطبَّق القاعدة على البيانات الآتية من مجال العناوين المحدد.‎-o ppp0: القاعدة تُطبَّق على البيانات المقرر توجيهها عبر الجهاز الشبكي المحدد.‎-j MASQUERADE: ستقفز (jump) البيانات المُطابِقة لهذه القاعدة إلى هدف MASQUERADE لكي تُعالَج كما هو مشروح في الأعلى.أيضًا، كل سلسلة في جدول filter (الجدول الافتراضي، ومكان حدوث أغلبية ترشيح الرزم الشبكية) تكون سياستها الافتراضية هي ACCEPT؛ لكن إن كنت تُنشِئ جدارًا ناريًا بالإضافة إلى بوابة، فربما تحتاج إلى ضبط السياسات إلى DROP أو REJECT؛ وفي هذه الحالة تحتاج البيانات المتنكرة إلى السماح لها في سلسلة FORWARD لكي تعمل القاعدة السابقة: sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT sudo iptables -A FORWARD -d 192.168.0.0/16 -m state \ --state ESTABLISHED,RELATED -i ppp0 -j ACCEPTستسمح الأوامر السابقة لجميع الاتصالات من شبكتك المحلية إلى الإنترنت، ولعودة البيانات المتعلقة بهذه الاتصالات إلى الجهاز الذي طلبها. إذا أردت تفعيل التنكر عند الإقلاع -الذي تريد تفعيله في غالب الأحيان- فعدِّل ملف ‎/etc/rc.local وأضف الأوامر السابقة؛ على سبيل المثال، أضف الأمر السابق دون ترشيح: iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADEالسجلات Logsسجلات الجدار الناري مهمة جدًا للتعرف على الهجمات، واستكشاف أخطاء قواعد الجدار الناري، وملاحظة النشاط غير الطبيعي في شبكتك؛ يجب أن تضمِّن قواعد للتسجيل في جدارك الناري لكي تولَّد السجلات، ويجب أن تأتي قواعد السجلات قبل قواعد الإنهاء (القواعد التي تحدد مصير الرزمة، مثل ACCEPT، أو DROP، أو REJECT). إذا كنت تستخدم ufw، فبإمكانك تفعيل التسجيل بإدخال الأمر الآتي في الطرفية: sudo ufw logging onلكي توقف التسجيل في ufw، فببساطة بدل on بالكلمة off في الأمر السابق. إذا كنت تستخدم iptables بدلًا من ufw، فأدخل الأمر: sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 \ -j LOG --log-prefix "NEW_HTTP_CONN: "طلبيةٌ على المنفذ 80 من الجهاز المحلي ستولدُ سجلًا في dmesg الذي يبدو كما يلي (سطرٌ واحدٌ فقط قُسِّمَ إلى عدِّة أقسام): [4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0سيظهر السجل السابق في ملف ‎/var/log/massages، و ‎/var/log/syslog، و ‎/var/log/kern.log؛ يمكن تعديل هذا السلوك بتعديل ‎/etc/syslog.conf تعديلًا ملائمًا أو بتثبيت وضبط ulogd وباستخدام الهدف ULOG بدلًا من LOG، العفريت ulogd هو خادوم في مجال المستخدم (userspace server) الذي يستمع إلى تعليمات التسجيل من النواة وخصوصًا للجدر النارية، ويمكنك التسجيل إلى أي ملف تريد، وحتى إلى قواعد بيانات PostgreSQL أو MySQL؛ يمكن تسهيل فهم سجلات الجدار الناري باستخدام أداة تحليل سجلات مثل logwatch، أو fwanalog، أو fwlogwatch، أو lire. أدوات أخرىهنالك أدوات عديد متوفرة لتساعدك في بناء جدار ناري كامل دون أن تكون لديك المعرفة الجيدة باستخدام iptables؛ للميالين للبرامج الرسومية: برنامج fwbulider1 هو قوي جدًا وسيكون مألوفًا للمدراء الذين تعاملوا مع أدوات تجارية لإدارة الجدر النارية، مثل Checkpoint FireWall-1. إذا كنت تُفضّل أداةً من سطر الأوامر مع ملفات ضبط نصيّة: الأداة Shorewall2 هي أداة قوية جدًا لتساعدك في ضبط جدار ناري متقدم لأي شبكة. مصادرصفحة ويكي أوبنتو «Ubuntu Firewall التي تحتوي على معلومات عن تطوير ufw.أيضًا، صفحة دليل ufw تحتوي معلومات مفيدة جدًا: man ufw.راجع الصفحة «packet-filtering-HOWTO» للمزيد من المعلومات حول استخدام iptables.صفحة «nat-HOWTO» تحتوي تفاصيل إضافية عن التنكر.صفحة ويكي أوبنتو «IPTables HowTo» هي مصدر رائع للمعلومات.ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Firewall.
×
×
  • أضف...