إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

ورشة عمل: بناء سيرفر لينوكس 100%

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • ورشة عمل: بناء سيرفر لينوكس 100%

    بسم الله الرحمن الرحيم

    هذا الموضوع هو متابعة فكرة الاخ raptor (فكرة انشاء ورشة عمل) مثل هذا الموضوع:
    http://www.linuxac.org/showthread.php?t=541

    ولكن هذا الموضوع موسع اكثر بكثير وهو غير مقتصر على انشاء خادم ايميل باستخدام postfix.

    مدة هذه الورشة مفتوحة ولكنها لن تطول ان شاء الله.

    في نهاية هذا الموضوع، فانه سيكون عندنا الاتي:

    1- سيرفر لينوكس (الشرح سيكون بداية على Ubuntu 6.06 Dapper Drake Server وعندما انتهي من الشرح كليا، ساكتب واحد مبني على CentOS 4.4 موضحا الفروقات البسيطة التي تختلف عن Ubuntu)

    2- توزيع الانترنت على اجهزة الشبكة + وجود كاش لتسريع التصفح + حجب مواقع باستخدام كلمات او عناوين + حجب تنزيل بعض الامتدادات مثل .avi, .dat + تحديد سرعة تنزيل بعض الامتدادات (مثلا .exe لا يزيد سرعة تنزيل هذا النوع من الملفات عن 1ك.ب.) + تحديد سرعة التنزيل والتحميل على بعض الاجهزة.

    3- انشاء خادم dhcp + dns لتوزيع IP على الاجهزة بشكل تلقائي.

    4- خادم SAMBA لمشاركة الملفات مع اجهزة الشبكة (سيكون samba معد ليعمل كـ PDC) + مضاد للفايروسات (antivirus)

    5- خادم ايميل + مضاد فايروسات (postfix + clamv + amavis-new)

    6- خادم LAMP (linux + apache + mysql + php5 + proftpd/vsftpd)

    عندما ننتهي من هذا ان شاء الله فاننا سندخل على مواضيع متقدمة اكثر مثل انشاء خادم LDAP لتوحيد المستخدمين.

    ----------------------------

    مقدمة:
    في هذا الموضوع، لن أقوم بشرح كيفية إنشاء شبكة من الصفر (كيفية عمل الكوابل، كيفية إعداد الـ switch، router, ADSL modem، الخ...
    بل سأفترض انه يوجد عندنا شبكة جاهزة ولكن نريد استبدال السيرفر الحالي بسيرفر يعمل على لينوكس.

    لنتأمل الصورة التالية:



    من خلال هذه الصورة، فإننا نستنتج الآتي:

    - العنوان IP الخاص بهذه الشبكة هو: 172.16.1.0
    - الـ netmask الخاص بهذه الشبكة هو 255.255.0.0
    - عناوين الـ IP تم تعيينها للأجهزة يدويا.
    - وجود جهاز مهم اسمه Backups
    - وجود خط انترنت عن طريق ADSL

    هذه هي المعلومات الخاصة بالاجهزة بشكل عام، الان معلومات حول السيرفر نفسه:

    1- يحتوي على واجهتين للشبكة (interfaces):
    الاولى: eth0 متصلة بالمودم adsl
    الثانية: eth1 متصلة بالـ switch الخاص بالشبكة.

    عنوان الاي بي الخاص بهذا السيرفر هو: 172.16.1.1/16

    القسم الاول: تثبيت Ubuntu Dapper Drake Server

    قم بتنزيل النسخة من خلال الرابط التالي:
    http://se.releases.ubuntu.com/6.06/u...erver-i386.iso

    ساترك شرح تركيب اوبونتو لوقت اخر. ولكن تاكد انك قمت بتثبيتها وبعد التثبيت تاكد من تحديث النظام وتركيب بعض البرامج التي ربما تكون غير مثبتة:

    كود:
    sudo -s
    apt-get update
    apt-get upgrade
    apt-get install iptables
    ستجد شرح مفصل للامر sudo في هذا الرابط:
    http://www.linuxac.org/showthread.php?t=528

    1- مشاركة خط الانترنت مع اجهزة الشبكة:

    قبل مشاركة خط الانترنت، لنتاكد اولا ان الفايروول (firewall) لن يقوم باعاقتنا (في النهاية ساشرح كيفية بناء فايروول بسيط لهذا السيرفر)

    لنمسح كافة الروولز:

    كود:
    sudo iptables -F
    sudo iptables -X
    sudo iptables -t nat -F
    sudo iptables -t nat -X
    sudo iptables -t mangle -F
    sudo iptables -t mangle -X
    استخدام NAT (Network Address Translation)

    كود:
    [[email protected] ~]# modprobe iptable_nat
    [[email protected] ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
    [[email protected] ~]# iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
    ملاحظة: غير eth0 بالواجهة المتصلة بالانترنت.
    اذا كنت اتصلت بالانترنت عن طريق pppoe (باستخدام البرنامج pppoeconf مثلا، فان الواجهة المتصلة بالانترنت ستكون على الاغلب ppp0، نفذ الامر ifconfig لتتاكد)

    هذه الاوامر تعمل على مشاركة للانترنت القادم من الواجهة eth0 مع كل بطاقات الشبكة الموجودة في السيرفر، لهذا السبب لا يوجد داعي لتحديد الكرت المتصل بالشبكة.

    الامر الاول يقوم بتحميل الوحدة البرمجية (kernel module) التي تحمل الاسم iptables_nat الى الرام. هذه الوحدة البرمجية هي المسؤولة عن تفعيل NAT.
    الامر الثاني يقوم بتفعيل ip_forward . وهو المسؤول عن توجيه الـ packets.
    الامر الاخير هو الذي يقوم باخذ كافة الطلبات القادمة من اجهزة الشبكة والمتوجهة الى الانترنت.

    باضافة الاوامر الثلاثة السابقة، فان هذا السيرفر اصبح يتصرف كراوتر (router) الان وهو الـ gateway الخاص بشبكتنا.

    في كثير من التوزيعات نحتاج لاضافة امر رابع (خاصة عندما نشارك خط adsl) وذلك بهدف تصحيح حجم الـ packets القادمة من الانترنت مع الـ MTU (لن ادخل في تفاصيله) المستخدم في الشبكة المحلية.

    لعمل هذا، نفذ هذا الامر:

    كود:
    [[email protected] ~]# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss \
    1400:1536 -j TCPMSS --clamp-mss-to-pmtu
    انشاء script لتشغيل او ايقاف مشاركة الانترنت:

    سنقوم بانشاء script صغير يساعدنا لتشغيل او ايقاف مشاركة الانترنت:
    نفذ:

    كود:
    sudo nano /usr/bin/net-share
    اضف التالي اليه:

    كود:
    #!/bin/bash
    
    start_share(){
    modprobe iptable_nat
    echo '1' > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss \
    1400:1536 -j TCPMSS --clamp-mss-to-pmtu
    }
    stop_share(){
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    }
    case "$1" in
    "start") start_share ;;
    "stop") stop_share ;;
    "restart") stop_share; start_share ;;
    *) echo "Use $0 [start|stop|restart]"
    esac
    الان، لنقم بمشاركة الانترنت:

    كود:
    sudo chmod +x /usr/bin/net-share
    sudo net-share stop
    sudo net-share start
    اعداد اجهزة الشبكة لتستخدم الانترنت:
    اعداد اجهزة الشبكة لتستخدم السيرفر الجديد للحصول على الانترنت امر بسيط وسهل جدا، كل ما عليك فعله، هو اضافة الـ IP الخاص بهذا السيرفر في الخانة gateway والخانة dns كما هو موضح في الصورة التالية:



    ملاحظة: اذا كنت تستخدم Microsoft ISA قم بازالة البرنامج من كافة اجهزة الشبكة ازالة تامة، وتاكد ان اعدادات المتصفح (browser) الخاصة بالبروكسي لا تحتوي على اي عنوان، اتركها فارغة.

    كما رايتم، مشاركة الانترنت باستخدام NAT عملية سهلة جدا، ولكن لا تتوقعوا سرعة فائقة في التصفح، لان هذه العملية لا تستخدم cache.

    2- اضافة خادم DHCP:

    كما لاحظنا، اضطررنا اعداد كافة اجهزة الشبكة يدويا، واضفنا ايضا عنوان الـ gateway والـ dns بالاضافة الى عنوان الـ IP والـ netmask الذي تم اعداده يدويا في وقت سابق.

    اذا كانت اجهزة الشبكة قليلة، فان ادخال عنوان الgateway وعنوان dns وعنوان ip يدويا لن تكون مشكلة كبيرة، ولكن تخيل لو كان لديك 30 جهاز او اكثر في الشبكة؟ او كانت اجهزة الشبكة موجودة في اكثر من مكان؟ حتما ستكون هذه مهمة صعبة ومملة.

    شخصيا، احب حصر كافة اعدادات الشبكة في الخادم، بحيث اي تعديل يطرا، سيكون علي تعديل السيرفر وحده، دون الحاجة الى تعديل اي شيء في اجهزة الشبكة. هنا يدخل dhcp.

    لمن لا يعرف، dhcp عبارة عن برنامج يقوم بتزويد اجهزة الشبكة عنوان ip خاص بها، دون الحاجة ان تذهب لكل جهاز في الشبكة واعطائه عنوان اي بي خاص به.

    سنقوم باعداد كافة اجهزة الشبكة لاستخدام خادم dhcp لتحصل على عنوان ip خاص بها وايضا تحصل على معلومات ال gateway وال dns من خلال خادم dhcp بشكل الي.

    تثبيت خادم DHCP

    كود:
    [[email protected] ~]# sudo apt-get install dhcp3-server
    بعد تثبيت الخادم dhcp سنقوم باعداده. ملف الاعداد الخاص به موجود في الدليل /etc/dhcp3:

    كود:
    sudo -s
    cd /etc/dhcp3
    mv dhcpd.conf dhcpd.conf.original
    touch dhcpd.conf
    nano dhcpd.conf
    اضف التالي:

    كود:
    ddns-update-style none;
    default-lease-time 600;
    max-lease-time 7200;
    authoritative;
    subnet 172.16.1.0 netmask 255.255.0.0 {
    range 172.16.1.100 172.16.1.201;
    option routers 172.16.1.1;
    option domain-name-servers 172.16.1.1;
    option broadcast-address 172.16.1.255;
    }
    في هذا الملف، اكثر خيار يهمنا معرفته هو السطر الذي يبدأ بالكلمة range

    لاحظ انه يحتوي على الاي بي 172.16.1.100 والاي بي 172.16.1.201

    هاذين العنوانين يعنيان ان اي جهاز في الشبكة عندما يحصل على ip فانه سيحصل على ip واقع ضمن 172.16.1.100-172.16.1.201

    بعد ان تحفظ الملف، قم بتحرير الملف التالي:

    كود:
    sudo nano /etc/default/dhcp3-server
    ابحث عن INTERFACES وغيره ليكون الاتي:

    كود:
    INTERFACES="eth1"
    قم بتشغيل الخادم dhcp

    كود:
    sudo /etc/init.d/dhcp3-server restart
    اذا لاحظت في الصورة التي توضح معالم الشبكة، ستلاحظ انه يوجد جهاز مهم اسمه backups وهذا الجهاز يستخدم لتخزين نسخ احتياطية.
    كونه جهاز مهم، فانه من الضروري ان لا يتم تغيير عنوان الاي بي الخاص به. علينا ترك عنوان هذا الجهاز ثابت كما هو.

    يمكننا عمل هذا بطريقتين:

    الاولى: هي تركه كما هو دون تغيير اي شيء.
    الطريقة الثانية (الافضل): هي ان نجبر الخادم dhcp ان يعطيه عنوان اي بي ثابت بناء على mac address.

    حتى تكتشف الـ mac address الخاص به يمكنك تنفيذ الامر التالي في الجهاز نفسه (على فرض انه يعمل على ويندوز اكس بي)

    كود:
    Dos> ipconfig /all
    سيظهر لك عنوان الـ mac address، قم بنسخه.


    طريقة ثانية لاكتشاف الـ mac address للجهاز دون ان تقوم من مكانك هي استخدام الامر arping

    في حال لم يكن مثبت، قم بتثبيته:

    كود:
    sudo apt-get install arping
    كود:
    [[email protected] ~]# arping 172.16.1.7
    ARPING 172.16.1.7 from 172.16.1.1 eth1
    Unicast reply from 172.16.1.7 [00:14:2A:F5:44:FB]  0.634ms
    Unicast reply from 172.16.1.7 [00:14:2A:F5:44:FB]  0.647ms
    Unicast reply from 172.16.1.7 [00:14:2A:F5:44:FB]  0.650ms
    Sent 3 probes (1 broadcast(s))
    كما ترى اكتشف لنا ال mac address

    الان، في ملف الاعداد الخاص ب dhcp اضف التالي:

    كود:
    host backups {
    hardware ethernet 00:14:2A:F5:44:FB;
    fixed-address 172.16.1.7;
    }
    ملف الاعداد النهائي سيكون بهذا الشكل:

    كود:
    ddns-update-style none;
    default-lease-time 600;
    max-lease-time 7200;
    authoritative;
    subnet 172.16.1.0 netmask 255.255.0.0 {
    range 172.16.1.100 172.16.1.201;
    option routers 172.16.1.1;
    option domain-name-servers 172.16.1.1;
    option broadcast-address 172.16.1.255;
    }
    
    host backups {
    hardware ethernet 00:14:2A:F5:44:FB;
    fixed-address 172.16.1.7;
    }
    الان اعد تشغيل الخادم dhcp:

    كود:
    sudo /etc/init.d/dhcp3-server restart
    اعداد اجهزة الشبكة لتستخدم الخادم dhcp:

    اعداد الاجهزة امر بسيط جدا واكثر من سهل:



    فقط اترك الاعدادات كما هو موضح في الصورة واعد تشغيل الجهاز.

    3- اضافة خادم كاش (cache server) لتسريع التصفح باستخدام squid:

    عندما تشارك الانترنت باستخدام NAT فان كل اجهزة الشبكة تستطيع استخدام الانترنت بشكل مباشر بدون قيود، عدا عن البطء النسبي للتصفح.
    ولكن عندما نضيف proxy server فان الوضع يختلف، ويصبح هناك تحكم اكثر من حيث ما هو مسموح الوصول اليه وما هو غير مسموح الوصول اليه، واي جهاز مسموح له استخدام الانترنت واي جهاز غير مسموح له، عدا عن زيادة سرعة التصفح.

    من بعض فوائد استخدام proxy server:

    1- امكانية تحديد وقت التصفح (من الساعة كذا الى الساعة كذا)

    2- امكانية السماح لبعض المستخدمين بالتصفح والبعض لا.

    3- امكانية حجب التصفح بناء على اي بي الجهاز.

    4- امكانية حجب بعض المواقع او الانترنت كاملة والسماح لبعض المواقع فقط بالعمل

    5- البروكسي (proxy) يعمل على تخزين الصفحات التي تم الوصول اليها، بحيث يجعل التصفح اسرع لانه لن يعيد فتح الصفحة نفسها مرتين، بل مرة واحدة فقط ثم يقوم بتزويد نسخة مخزنة منها.

    في الوقت الحاضر، اغلب مواقع الانترنت اصبحت ديناميكية والمحتوى يتغيير مع كل زيارة للموقع تقريبا، ولكن مع هذا فان الخادم بروكسي قادر على مساعدتنا، فبالرغم من ان المحتوى تغير، فان اشياء كثيرة لا تتغير باستمرار مثل الbanner، عروض فلاش، صور، الخ...

    6- قادر على معرفة الصفحات التي تم زيارتها من الشبكة، وبالتالي دراسة محتوى هذه المواقع فيما وبعد واتخاذ الاجراء اللازم (اما قفل الموقع او تركه)

    تثبيت الخادم squid:

    كود:
    sudo apt-get install squid
    بعد ان ينتهي التثبيت، لنبدا باعداده:

    كود:
    sudo -s
    cd /etc/squid
    mv squid.conf squid.conf.original
    touch squid.conf
    nano squid.conf
    اضف التالي الى الملف:

    كود:
    http_port 3128
    visible_hostname server
    acl all src 0.0.0.0/0.0.0.0
    http_access allow all
    هذه السطور الاربعة كافية للحصول على خادم بروكسي "شغال"

    السطور الاربعة تعني الاتي:

    http_port 3128: البوابة (port) التي سيقبل الاتصال القادم اليها.
    الرقم 3128 هو الافتراضي، ولكن يمكنك تغييره الى 8080 مثلا (احباب ms-isa يحبون هذا الرقم كثيرا ).

    Visible_hostname server: اسم الخادم، هنا يمكنك اضافة اي اسم تريد، ولكن يفضل ان يكون اسم هذا الخادم (server)

    Acl all src 0.0.0.0/0.0.0.0 و http_access allow all: هاذين السطرين ينشان acl (access control list( اسمها all تحتوي على كل عناوين ال اي بي المتوفرة.
    وهي تسمح لاي كان باستخدام البروكسي.

    لتجريب الاعدادات، اعد تشغيل البروكسي وقم باعداد المتصفح كالاتي:

    كود:
    sudo /etc/init.d/squid restart
    اعداد المتصفح:





    انشاء اعدادات متقدمة اكثر:
    المشكلة بالسطور الاربعة التي ذكرتها في الاعلى هي انها تجعل البروكسي غير امن ومتوفر للجميع وهذا طبعا شيء نحن لا نريده، بل نريد ان نجعل البروكسي متوفر للشبكة المحلية فقط.
    لنجعل البروكسي اكثر امانا ونسمح لاجهزة الشبكة فقط باستخدام البروكسي، سنقوم بانشاء ملف اعداد اكثر "تعقيدا" من الاول.

    كود:
    http_port 3128
    visible_hostname server
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 901 # swat
    acl Safe_ports port 1025-65535 # portas altas
    acl purge method PURGE
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    acl localnetwork src 172.16.1.0/16
    
    http_access allow localhost
    http_access allow localnetwork
    http_access deny all
    لاحظ انه يوجد عدد من الـ acl الجديدة هنا.
    ولكن ليس كلها يهمنا، ما يهمنا هو اثنين منها فقط وهما:

    كود:
    acl localhost src 127.0.0.1/255.255.255.255
    acl localnetwork src 172.16.1.0/16
    السطر الاول (acl localhost) يحتوي على العنوان 127.0.0.1 وهو ضروري إذا اردت ان تتصفح الانترنت من خلال السيرفر نفسه.

    اما السطر الثاني (acl localnetwork) فهذا السطر يحتوي على عنوان الشبكة عندنا (عنوان الشبكة هو 172.16.1.0)

    ايضا لاحظ اننا وضعنا 3 سطور اخرى وهي:

    كود:
    http_access allow localhost
    http_access allow localnetwork
    http_access deny all
    بهذه السطور الثلاثة، فاننا نسمح لهذا السيرفر ولاجهزة الشبكة فقط استخدام البروكسي (proxy).

    ملاحظة: الترتيب مهم، يعني إذا وضعت السطر

    كود:
    http_access deny all
    قبل السطور الاخرى فانك لن تستطيع استخدام البروكسي لا من السيرفر ولا من أجهزة الشبكة!
    احرص على ان يكون في الاخر.

    إعداد الكاش (cache) للصفحات والملفات:

    بالإعدادات السابقة، فإننا حصلنا على سيرفر squid شغال واكثر امانا، ولكن هذه الاعدادات وحدها لا تعمل كاش للصفحات والملفات.

    إذا اعتمدت على الاعدادات السابقة، فانك لن تشعر بفرق سواء وجد squid او بقيت على NAT لوحده.

    لننشيء الاعدادات الخاصة بالكاش، علينا اولا معرفة انواع الكاش المدعومة في squid وهي اثنين:

    1: كاش الرام (RAM)، وهو كاش سريع ولكنه صغير نظرا لمحدودية حجم الرام.
    2: كاش عن طريق القرص الصلب (hard disk) وهذا أبطا قليلا من السابق، لان الملفات يتم قراءتها من القرص الصلب بدل من الرام ولكنه بالمقابل كبير وحجمه يعتمد على حجم القرص الصلب او القسم الموجود فيه.

    الكاش المخزن في الرام ممتاز لتخزين ملفات صغيرة مثل صفحات html وبعض الصور الصغيرة.

    بينما الكاش الموجود في القرص الصلب فانه يستخدم لتخزين ملفات كبيرة مثل الحزم التي تم تثبيتها عن طريق apt-get أو yum أو ملفات Windows Update أو أي نوع آخر من الملفات.

    إعداد كاش الرام:

    إعداد كمية الرام (RAM) التي سيتم حجزها يتم عن طريق اضافة هذا الخيار الى ملف اعداد squid:

    كود:
    cache_mem 64 MB
    لاحظ اننا حجزنا 64 MB من الرام وهذه الكمية ستستخدم لتخزين الصفحات الصغيرة والصور واشياء اخرى صغيرة الحجم.

    ملاحظة: انتبه عندما تغير هذه القيمة، واياك ان تضعها كل الرام التي عندك (النظام ايضا يحتاج الى الرام لتشغيل البرامج واشياء اخرى) يفضل ان تكون هذه القيمة اما خمس الرام أو ربعها.

    عدا عن تحديد الكمية التي سيتم حجزها للكاش في الرام، فاننا نحتاج الى تحديد حجم الملفات التي ستخزن في هذا الكاش، لفعل هذا اضف الخيار التالي:

    كود:
    maximum_object_size_in_memory 64 KB
    لاحظ اننا اخترنا حجم صغير وهو شبه كافي للصفحات المواقع وبعض الصور.
    يمكنك زيادة هذا الرقم ولكن لا انصح بزيادته لان زيادته ستعمل على تخزين ملفات كبيرة قد يتم تنزيلها بدل من تخصيص هذا الكاش للصفحات والصور.

    إعداد كاش القرص الصلب (hard disk):

    يتراوح تخزين هذا الكاش بين ملفات حجمها 0 الى 16 م.ب. ولكن لا شيء يمنعك من زيادة هذا الحجم لتخزين ملفات كبيرة (مثل Windows Updates أو حزم البرامج (packages) )

    لاعداد هذا الكاش اضف السطرين التاليين:

    كود:
    maximum_object_size 512 MB
    minimum_object_size 0 KB
    هنا قمنا بتحديد اقصى حجم يمكن تخزينه (512 م.ب.) وايضا حددنا اقل حجم يمكن تخزينه ( 0 ك.ب. مما يعني ان كل شيء صغير سيخزن ايضا).

    علينا الان تحديد النسبة المؤية التي سيبدا عندها squid بحذف الملفات القديمة الموجودة في الكاش.
    بشكل افتراضي، يبدا squid بازالة الملفات القديمة عندما يكون الكاش ممتليء بنسبة 95% ويستمر بحذف الملفات القديمة الى ان ينخفض نسبة امتلاء الكاش الى 90%

    اضف السطرين التاليين:

    كود:
    cache_swap_low 90
    cache_swap_high 95
    الان بقي علينا حجز المساحة التي ستستخدم للكاش وهذا يتم عن طريق اضافة الخيار التالي:

    كود:
    cache_dir ufs /var/spool/squid 2048 16 256
    ufs هو نوع الكاش الذي سيتم استخدامه، يوجد اكثر من نوع مدعوم في squid ولكني لن اخوض في تفاصيله، يمكنك ترك الافتراضي.

    المسار /var/spool/squid هو المكان الذي ستخزن فيه الملفات.

    2048 هذه القيمة بالـ MB وهي المساحة التي سيتم حجزها من القرص الصلب للكاش، يمكنك زيادتها ان اردت.

    الرقمين 16 و 256 يعنيان ان 16 مجلد سيتم انشائهم وداخل كل واحد 256 مجلد فرعي.
    ارقام المجلدات يختلف حسب نظام الملفات المستخدم، ولكن الخيار الافتراضي يتناسب مع اغلب الحالات، لذا لا داعي لتعديله.

    الخيار التالي يحدد مكان ملف الـ log الخاص بـ squid

    كود:
    cache_access_log /var/log/squid/access.log
    خيار اخر ايضا يمكننا تعديله هو هذا:

    كود:
    refresh_pattern ^ftp: 15 20% 2280
    refresh_pattern ^gopher: 15 0% 2280
    refresh_pattern . 15 20% 2280
    يمكنك تعديل هذه السطور ولكن عليك مراعاة وجودها مع بعضها البعض دائما، بكلام اخر اذا حذفت واحد منها، فان squid سيقوم بتجاهل الاثنين المتبقيان.

    هذا الخيار يحدد لـ squid الزمن الذي يجب انتظاره (بالدقائق) قبل فحص ملف موجود في الكاش (صفحة html على سبيل المثال) ليرى ان كان حدث تحديث في الصفحة الاصلية الموجودة في الانترنت او لا.

    الرقم الاول (15) يجعل squid ينتظر 15 دقيقة قبل اعادة فصح الكاش ليرى ان كان هناك موقع تم تحديثه.
    عملية الفحص سريعة لانها تقوم بحساب حجم الملف، اذا كان حجم الملف الموجود في الكاش هو نفس حجم الملف الموجود في الانترنت فان squid سيستمر بتزويد الصفحة الموجود في الكاش، اما اذا اختلف الحجم فانه سيقوم بتحديث الصفحة بشكل الي.

    الرقم الثالث ( 2280 يعني يومين) يعني اقصى مدة يمكن لملف المكوث في الكاش بدون تحديث، اي ملف موجود عمره اكثر من هذا فانه سيتم فحصه.

    بعد اضافة هذه الخيارات كلها، فان ملف اعداد squid سيختلف ليصبح كالاتي:

    كود:
    http_port 3128
    visible_hostname server
    
    cache_mem 32 MB
    maximum_object_size_in_memory 64 KB
    
    maximum_object_size 512 MB
    minimum_object_size 0 KB
    cache_swap_low 90
    cache_swap_high 95
    cache_dir ufs /var/spool/squid 2048 16 256
    
    cache_access_log /var/log/squid/access.log
    
    refresh_pattern ^ftp: 15 20% 2280
    refresh_pattern ^gopher: 15 0% 2280
    refresh_pattern . 15 20% 2280
    
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 901 # SWAT
    acl purge method PURGE
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    acl localnetwork src 172.16.1.0/16
    http_access allow localhost
    http_access allow localnetwork
    http_access deny all
    بهذا فاننا حصلنا على ملف اعداد اكثر تكامل وامانا وايضا معد لاستخدام الكاش وهذه الاعدادات جيدة لاستخدام squid في شبكة صغيرة.

    التحكم بالتصفح:

    احيانا نحتاج الى ان نتحكم بالتصفح بحيث نسمح للبعض بالتصفح والبعض الاخر لا، ونتحكم بمن يستطيع الوصول الى الصفحة الفلانية ومن لا يستطيع، والصفحة كذا يجب حجبها ، الخ.

    حجب المواقع بناء على اسم الدومين (domain) او كلمات:

    يتح لنا squid امكانية حجب مواقع غير مرغوبة بطريقة سهلة وبسيطة، فكل ما علينا فعله هو اضافة acl تحتوي على المواقع التي لا نريدها وبعدها اضافة شرط اغلاق لها، كالاتي:

    كود:
    acl blocked dstdomain hotmail.com Microsoft.com msn.com
    http_access deny blocked
    هنا قمت بانشاء acl اسمها blocked مع الخيار dstdomain واضفت بعدها المواقع التي اريد حجبها، ثم قمت باضافة الشرط الذي يحجبها وهو http_access deny blocked

    ملاحظة: كثير من المواقع يمكن الوصول اليها سواء اضفت www او لا، بالنسبة لـ squid الموقع www.msn.com يختلف عن الموقع msn.com
    اذا حجبت msn.com فان المستخدمين مازالوا يستطيعون الوصول الى الموقع عن طريق كتابة www.msn.com لهذا السبب عليك اضافة الاثنين معا.

    يمكنك حجب عدد المواقع التي تريدها، يكفي فقط اضافتها كلها في سطر واحد وان تفصل بينها بفراغ، ولكن اذا لاحظت ان السطر بدا يطول كثيرا فانه يمكنك اضافة المواقع في ملف نص مع مراعاة وضع كل موقع في سطر لوحده كالاتي:

    كود:
    sudo -s
    cd /etc/squid
    touch blocked
    nano blocked
    الان اضف المواقع التي تريد حجبها داخل الملف كالاتي:

    كود:
    msn.com
    www.msn.com
    hotmail.com
    www.hotmail.com
    microsoft.com
    www.microsoft.com
    غير الاعداد بحيث يصبح الاتي:

    كود:
    acl blocked url_regex –i "/etc/squid/blocked"
    http_access deny blocked
    في بعض الاحيان قد تفضل حجب الانترنت "كاملة" والسماح ببعض المواقع فقط بالتصفح، في هذه الحالة اعمل الاتي:

    كود:
    acl allowed url_regex -i "/etc/squid/allowed"
    http_access allow allowed
    http_access deny all
    لاحظ هنا اننا انشانا ملف اسمه allowed وهو يحتوي على المواقع التي نريد السماح بتصفحها ثم قمنا بمنع الباقي (http_access deny all)

    في الاصدارات الحديثة من squid، عندما تحجب موقع فانه يقوم بحجب العنوان IP الخاص به بشكل الي، ولكن مع هذا يوجد بعض المواقع التي لا تحتوي على اسم دومين، بل يتم الوصول اليها باضافة عنوان الـ IP مباشرة، لمنعها يمكنك اضافة التالي:

    كود:
    acl blocked-ips dst 216.239.57.99 216.239.37.99
    http_access deny blocked-ips
    لمعرفة عنوان IP موقع معيين استخدم الامر التالي:

    كود:
    $ host google.com
    google.com A 216.239.57.99
    google.com A 216.239.37.99
    اذا اردت حجب المواقع التي تحتوي على كلمات معينة فانه يمكنك ذلك استخدام الخيار
    dstdom_regex كالاتي:

    كود:
    sudo -s
    cd /etc/squid
    touch blockedwords
    ثم اضف في الملف الكلمات التي تريد منعها مثل:

    كود:
    porn
    Porn
    gay
    Gay
    lesbian
    Lesbian
    ثم في ملف اعداد squid اضف التالي:

    كود:
    acl blockedwords dstdom_regex "/etc/squid/blockedwords"
    http_access deny blockedwords
    بعد اضافة الخيارات الجديدة، فان ملف الاعداد سيصبح كالاتي:

    كود:
    http_port 3128
    visible_hostname server
    
    cache_mem 32 MB
    maximum_object_size_in_memory 64 KB
    
    maximum_object_size 512 MB
    minimum_object_size 0 KB
    cache_swap_low 90
    cache_swap_high 95
    cache_dir ufs /var/spool/squid 2048 16 256
    
    cache_access_log /var/log/squid/access.log
    
    refresh_pattern ^ftp: 15 20% 2280
    refresh_pattern ^gopher: 15 0% 2280
    refresh_pattern . 15 20% 2280
    
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 901 # SWAT
    acl purge method PURGE
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    
    acl blocked url_regex -i "/etc/squid/blocked"
    http_access deny blocked
    acl blockedwords dstdom_regex "/etc/squid/blockedwords"
    http_access deny blockedwords
    
    acl localnetwork src 172.16.1.0/16
    http_access allow localhost
    http_access allow localnetwork
    http_access deny all
    التحكم بالباندويث (bandwidth controlling):

    Squid يوفر طريقة سهلة للتحكم بالباندويث بحيث يمكننا تحديد كم من الباندويث مسموح لـ squid باستخدام وتحديد كم من الباندوث مسموح لكل مستخدم بحيث تترك الباقي للخدمات الاخرى التي سيوفرها السيرفر. وهذا يتم عن طريق يسمى delay pools.

    ملاحظة: عندما نتعامل مع delay pools فان القيم التي نتعامل معها تكون بالبايت.

    اذا لديك خط ADSL 512 فان هذا يمثل 65536 بايت (512 = 512 kbits = 65536 bytes)

    ملاحظة: العملية الحسابية السابقة تمت بقسمة 512 على 8 وضرب الباقي بـ 1024 هكذا تحصل على القيمة بالبايت.

    لنقسم الخط الذي لدينا بحيث نعطي squid اقصى باندويث 128 kbit والباقي نتركه للخدمات الاخرى التي سيوفرها هذا السيرفر ونعطي كل مستخدم 32 kbit.

    ملاحظة: 128/8 = 16
    16 × 1024 = 16384
    32/8 = 4
    4 × 1024 = 4096

    بعد ان قمنا بالعملية الحسابية لنعدل في ملف اعداد squid

    كود:
    acl localnetwork src 172.16.1.0/16
    delay_pools 1
    delay_class 1 2
    delay_parameters 1 16384/16384 4096/4096
    delay_access 1 allow localnetwork
    http_access allow localhost
    http_access allow localnetwork
    http_access deny all
    بهذا فاننا حددنا قيمة 16384 كاقصى قيمة يمكن ان يستخدمها squid و 4096 كاقصى قيمة يمكن ان يستخدمها كل مستخدم.

    لاحظ اننا حددنا هذه الشروط للـ acl localnetwork ولم نحددها لـ acl localhost. هذا يعني اننا نستطيع استخدام الخط كاملا في هذا السيرفر.

    ايضا يمكن انشاء شروط بحيث تنطبق على عنوان ip معين، بحيث تسمح لبعض الاجهزة في الشبكة باستخدام الخط كامل بدون تحديد او العكس.

    ايضا يمكننا تحديد الباندويث على انواع معينة من الملفات، وليس على كل شيء.
    لعمل هذا اتبع الاتي:

    منع تنزيل بعض الامتدادات:

    كود:
    acl video url_regex -i \.avi
    http_access deny video
    بهذا فاننا منعنا اي ملف يحمل الامتداد .avi من التنزيل على اي جهاز من اجهزة الشبكة.
    يمكنك ايضا انشاء ملف واضافة المزيد من الامتدادات اليه كالاتي:

    كود:
    sudo –s
    touch blocked_ex
    nano blocked_ex
    الان اضف اليه بعض الامتدادات التي لا تريد السماح بتنزيلها:

    كود:
    avi
    dat
    mpg
    mpeg
    wmv
    exe
    rar
    zip
    tar.gz
    tgz
    tar.bz2
    tbz
    واضاف التالي الى ملف اعداد squid:

    كود:
    acl blocked_ex url_regex -i "/etc/squid/blocked_ex"
    http_access deny blocked_ex
    لتحديد باندويث لبعض الامتدادات فقط بدل تحديد باندويث لكل شيء:

    كود:
    acl blocked_ex url_regex -i "/etc/squid/blocked_ex"
    delay_pools 1
    delay_class 1 1
    delay_parameters 1 4096/4096
    delay_access 1 allow blocked_ex
    اضافة مستخدمين لـ squid (proxy authentication)

    يمكنك زيادة امان squid بحيث تسمح لمن لديه اسم مستخدم وكلمة مرور بالتصفح فقط.
    اغلب المتصفحات حاليا تستطيع حفظ كلمة المرور، بهذا فان المستخدم سيضطر لادخال اسم المستخدم وكلمة المرور مرة واحدة.

    لنفعل هذا، فاننا نحتاج الى البرنامج htpasswd وهو جزء من الحزمة apache-utils.

    لتثبيتها:

    كود:
    sudo apt-get install apache-utils
    بعد تثبيت الحزمة، قم بانشاء الملف الذي سيخزن اسماء المستخدمين واضف اليه المستخدمين كالاتي:

    كود:
    sudo –s
    touch /etc/squid/squid_passwd
    htpasswd /etc/squid/squid_passwd muslim
    ملاحظة: muslim هو اسم المستخدم الذي اريد انشائه.

    بعد انشاء المستخدمين، اضف السطور التالية الى ملف اعداد squid

    كود:
    auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
    acl allowed_users proxy_auth REQUIRED
    http_access allow allowed_users
    ---------------------------------------
    4- اعداد SAMBA

    ربما من اكثر الخدمات جدلا حول كيفية اعدادها هو samba. ليس لانه مقعد، ولكن بسبب كثرة خياراته المتاحة وتعدد طرق اعداده.
    يكمن سبب تعدد خياراته وطرق اعداده بسبب طبيعة العمل الذي يؤديه، اذ يمكنه ان يعمل 4 وظائف رئيسية وكل وظيفة لديها طريقة اعداد خاصة بها.

    على العموم، هذا المقال لن يغطي سوى وظيفة واحدة لـ samba وهي ان يعمل بوضعية Stand Alone Service بحيث يوفر مشاركة الملفات والمجلدات بدون ان تضطر الى الخوض في خياراته الكثيرة.

    المرحلة الاولى: تثبيت SAMBA

    كود:
    [[email protected]:~]# apt-get install samba
    بعد الانتهاء من تثبيت سامبا، لنبدا باعداده، حيث ستجد ملف الاعداد في الدليل: /etc/samba/smb.conf/

    كود:
    [[email protected]:~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
    [[email protected]:~]# touch /etc/samba/smb.conf
    كما ذكرت سابقا، بالرغم من كثرة خيارات وطرق اعداد samba الا اننا في الحقيقة نحتاج الى 3 سطور فقط لجعله يعمل وهذه السطور هي: (اكتبها داخل الملف smb.conf)

    كود:
    [global]
    netbios name = alpha
    workgroup = mshome
    ماذا تعني هذه السطور؟
    [global] هو القسم العام الذي يندرج اغلب اعداد samba تحته، وهو اجباري، ومن دونه لن يعمل.
    netbios name هو الاسم الذي سيستخدمه بقية اجهزة الشبكة للاتصال بجهازك.
    workgroup هو اسم مجموعة العمل (هذا اليخيار ثابت حتى لو كنت تملك مجال "domain” بدل محطة العمل “workgroup”)

    شغل او اعد تشغيل samba الان:

    كود:
    [[email protected]:~]# /etc/init.d/samba stop
    [[email protected]:~]# /etc/init.d/samba start
    الان يمكنك الذهاب الى اي جهاز عليه ويندوز والدخول الى شبكة الاتصال لتجد جهازك متوفر هناك تحت الاسم alpha


    ملاحظة: يمكنك دائما التاكد ان ملف الاعداد لا يحتوي على اخطاء باستخدام الامر testparm كالاتي:
    كود:
    [[email protected]:~]# testparm
    Load smb config files from /etc/samba/smb.conf
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    Press enter to see a dump of your service definitions
    ولو تم ايجاد خطا، فانه سيظهر رسالة مثل:

    كود:
    [[email protected]:~]# testparm
    Load smb config files from /etc/samba/smb.conf
    Unknown parameter encountered: "wrkgroup"
    Ignoring unknown parameter "wrkgroup"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    Press enter to see a dump of your service definitions

    المرحلة الثانية: مشاركة مجلد


    مشاركة مجلد باستخدام سامبا يعتبر ايضا عملية سهلة جدا، كل ما عليك فعله هو اتباع الخطوات التالية:

    1. تحديد المجلد الذي تريد مشاركته (كمثال، ساستخدم /media/sda8/shares/samba/)

    كود:
    [[email protected]:~]# mkdir -p /media/sda8/shares/samba
    [[email protected]:~]# chmod 777 /media/sda8/shares/samba
    لاحظ الصلاحيات، بالرغم ان كل المستخدمين مسموح لهم الكتابة، الا ان سامبا سيحدد من يستطيع الكتابة ومن لا يستطيع بناء على الخيارات التي سنستخدمها.

    2. تحديد اسم المشاركة (عندما تفتح المشاركة من الاجهزة التي عليها ويندوز، ستظهر المشاركة بالاسم الذي اخترته) ساختار: test

    الان بالعودة الى ملف smb.conf، لنضف اليه بعض السطور الجديدة بحيث يصبح كالاتي:

    كود:
    [global]
    netbios name = alpha
    workgroup = mshome
    
    [test]
    path = /media/sda8/shares/samba/test
    comment = A shared folder which will not work!
    احفظ الملف واعد تشغيل samba.

    من اجهزة ويندوز، ستلاحظ انه ظهر جهاز اسمه alpha وايضا مجلد اسمه test ولكن ستلاحظ انه يطلب منك اسم مستخدم وكلمة مرور ومهما اضفت من اسماء مستخدمين لن تستطيع الدخول.
    هذا يحدث لاننا لم نخبر samba من لديه صلاحيات الدخول الى الجهاز.
    حتى يستطيع المستخدمون الوصول الى المجلدات المشاركة، علينا اتباع الاتي:

    1. اضف مستخدم جديد للنظام باستخدام الامر التالي:
    كود:
    [[email protected]:~]# adduser --disabled-login --no-create-home username
    2. الان اضف المستخدم الى قاعدة بيانات samba:
    كود:
    [[email protected]:~]# smbpasswd -a username
    اذهب الان الى اي جهاز ويندوز واستخدم اسم المستخدم وكلمة المرور لتدخل على المجلد.

    كما لاحظت، يمكنك دخول المجلد بدون اي مشكلة، ولكن لن تستطيع الكتابة عليه وهذا يحدث لان samba يعطي صلاحيات القراءة فقط لاي مجلد تم مشاركته، علينا اخبار samba اننا نريد الكتابة على هذا المجلد. سننشيء مشاركة جديدة اسمها project لنتبعها كمثال.

    كود:
    [[email protected]:~]# mkdir -p /media/sda8/shares/samba/project
    [[email protected]:~]# chmod 777 /media/sda8/shares/samba/project
    في الملف smb.conf اضف التالي:

    كود:
    [project]
    path = /media/sda8/shares/samba/project
    comment = This is a writable folder
    writable = yes
    لاحظ اننا اضفنا الخيار (writable = yes) الذي يجعل المجلد قابل للكتابة.
    لو كنت تريد المستخدم projectadmin فقط من يستطيع الكتابة على المجلد، اضف السطر (valid users = projectadmin) بحيث يصبح الاعداد كالاتي:

    كود:
    [project]
    path = /media/sda8/shares/samba/project
    comment = This is a writable folder
    writable = yes
    valid users = projectadmin
    بهذا، لن يستطيع الكتابة على هذا المجلد سوى المستخدم projectadmin.
    ولكن ماذا لو اردت العكس؟ يعني جميع المستخدمين قادرين على الكتابة الا المستخدم joha؟ نضيف خيار معاكس للاول وهو (invalid users = joha):

    كود:
    [project]
    path = /media/sda8/shares/samba/project
    comment = This is a writable folder
    writable = yes
    invalid users = joha
    ايضا يمكنك تحديد الاجهزة التي تستطيع الوصول الى المجلد المشارك وذلك باستخدام الخيار (hosts allow = ip)

    كود:
    [project]
    path = /media/sda8/shares/samba/project
    comment = This is a writable folder
    writable = yes
    valid users = projectadmin
    hosts allow = 172.16.1.23, 172.16.1.24
    الان فقط المستخدم projectadmin سيكون قادر على الكتابة على المجلد وايضا سيستطيع الكتابة على المجلد فقط اذا كان يستخدم الجهاز 172.16.1.23 او الجهاز 172.16.1.24

    ولكن ماذا لو اردت ان تجعل samba يقبل من الجميع الدخول اليه، سواء كان هناك اسم مستخدم وكلمة مرور او لا؟

    لعمل هذا، علينا اضافة 3 سطور اضافية للملف smb.conf كالاتي:

    كود:
    [global]
    netbios name = alpha
    workgroup = mshome
    map to guest = bad user
    guest account = smbguest
    
    [project]
    path = /media/sda8/shares/samba/project
    comment = This is a writable folder
    writable = yes
    valid users = projectadmin
    hosts allow = 172.16.1.23, 172.16.1.24
    guest ok = yes
    ملاحظة: اسم المستخدم smbguest هو مستخدم افتراضي يتم تعيينه لاي شخص يحاول الدخول الى المجلدات المشاركة وليس لديه اسم مستخدم وكلمة مرور.
    يمكنك تغيير هذا المستخدم باي واحد اخر تريده مثل anonusers كالاتي:
    كود:
    [[email protected]:~]# adduser --disabled-login --no-create-home anonuser
    [[email protected]:~]# smbpasswd -a anonuser
    وتعديل الخيار guest account = smbguest الى guest account = anonuser

    [color="red"اضافة سلة نفايات الى المجلدات المشاركة:[/color]

    في بعض الاحيان، يتم حذف ملف عن طريق الخطا، اذا حدث هذا لا يوجد طريقة سهلة لاستعادته، لهذا السبب، يوفر سامبا امكانية اضافة سلة نفايات للمجلدات المشاركة بحيث اي ملف يتم حذفه يذهب الى سلة المحذوفات. نستطيع استخدام هذه الميزة عبر تفعيل module اسمه recycle كالاتي:

    كود:
    [project]
    path = /media/sda8/shares/samba/project
    comment = This is a writable folder
    writable = yes
    valid users = projectadmin
    hosts allow = 172.16.1.23, 172.16.1.24
    guest ok = yes
    vfs object = recycle
    recycle:repository = trash
    recycle:keeptree = yes
    recycle:versions = yes
    شرح الخيارات الجديدة التي تم اضافتها:
    vfs object = recycle : قمنا بتفعيل الـ module الخاص بسلة المنفايات عبرئها (recycle)
    recycle:repository = trash : قمنا بتغيير اسم سلة النفايات الى trash (الافتراضي هو .recycle)
    recycle:keeptree = yes : قمنا بحفظ شجرة المجلدات كما هي (الافتراضي هو مزج كل الملفات في سلة النفايات)
    recycle:versions = yes : قمنا بالسماح بحفظ اصدارات مختلفة من نفس الملف بدل من حفظ اخر اصدار له.

    بعد كل هذه الاعداد، كل ما بقي علينا اعادة تشغيل سامبا.

    ================================================

    اعداد خادم ويب

    يمكن اعتبار خادم صفحات الانترنت apache الاكثر استخداما في العالم بحسب دراسات الموقع الشهير <a href="http://news.netcraft.com/archives/web_server_survey.html">NetCraft</a> وغالبية الخوادم التي يعمل عليها apache هي أنظمة لينوكس.
    في هذا الموضوع سنلقي نظرة عليه.

    Apache عبارة عن برنامج يقوم بعرض صفحات الانترنت، ويعتبر من أقدم البرامج في هذا المجال ومن اكثرهم امانا ايضا. كما أن مبدأ عمله بسيط جدا، إذ لا يتعدى عمله عرض صفحات html فقط وهذا هو عمله الى يومنا هذا.
    ولكن Apache يدعم امكانية تزويده بالاضافات. الامر الذي يجعله يتعدى دور عرض html فقط ليتمكن من عرض برامج مكتوبة بلغات مختلفة مثل PHP, Perl, Ruby, Python

    عدا عن امكانيته في دعم الاضافات، فانه يدعم ما يسمى بـ "الاستضافة الافتراضية" (Virtual Hosts) وهي امكانية استضافة مواقع كثيرة جدا على سيرفر واحد (Shared Server) وهذا هو حال اغلب الانترنت، حيث ان سيرفر واحد فقط بامكانه استضافة مئات المواقع وغالبية مواقع الانترنت تعمل بهذا الاسلوب.

    <h4>تركيب و تشغيل Apache</h4>

    كود:
    [email protected]:~# apt-get install apache2 apache2-utils
    كود:
    [email protected]:~# /etc/init.d/apache2 start
    الان افتح أي متصفح إنترنت عندك، وقم بكتابة التالي في شريط العنوان:
    http://localhost
    أو
    http://127.0.0.1

    يجب ان تظهر الصفحة الافتراضية لـ apache.

    كما قلت في تقديم apache، هو الان لا يعمل اكثر من عمله البسيط الاصلي وهو عرض صفحات html فقط.



    <h4>فهم ملفات الاعداد Apache</h4>

    Apache ومثل اغلب برامج لينوكس يمكن اعداده من خلال ملف اعداد خاص اسمه httpd.conf. وهذا الملف يحتوي على جميع خياراته.
    ولكن في التوزيعات المبنية على ديبيان، تم تقسيم هذا الملف الى ملفات ومجلدات بطريقة منطقية بحيث تسهل علينا التعامل مع apache والوصول الى الخيارات المرادة بسهولة ويسر.

    تأمل الصورة التالية:

    <img src="http://www.linuxdocs-ar.com/images/apache2_01.png" alt="اباتشي 2" />

    ستجد ان جميع الملفات والمجلدات موجودة داخل دليل واحد اسمه apache2، والذي كما هو في الصورة يحتوي على 5 مجلدات فرعية هي:

    sites-available و sites-enabled الذي يحتوي على معلومات "الاستضافة الافتراضية" للمواقع.
    mods-available و mods-enabled الذي يحتوي على معلومات الاضافات (plug-ins) التي يمكن اضافتها الى apache.
    conf.d الذي يحتوي على اعدادات للبرامج الخارجية مثل phpmyadmin وغيره.
    أيضا يوجد الملف ports.conf الذي يحتوي على البوابة الافتراضية التي سيعمل عليها البرنامج.

    كما ذكرت سابقا، بامكان apache استضافة مئات المواقع وكل موقع يمكن اعداده عن طريق انشاء ملف خاص به ووضعه داخل المجلد sites-available وتفعيله بانشاء اختصار له داخل الدليل sites-enabled او باستخدام الامر:

    كود:
    [email protected]:~# a2ensite linuxdocs-ar
    لتفعيل الموقع الجديد

    او
    كود:
    [email protected]:~# a2dissite linuxdocs-ar
    لايقاف الموقع

    ولو تابعنا نفس الفكرة، فانه بامكاننا استخدام الامر

    كود:
    [email protected]:~# a2enmod php5
    لتفعيل plug-in خارجي (في هذه الحالة الخاص بـ php)

    او تنفيذ
    كود:
    [email protected]:~# a2dismod php5
    لايقاف تفعيل الـ plug-in

    في حالات تفعيل/ايقاف الوحدات الاضافية plug-ins فانك تحتاج الى اعادة تشغيل خدمة apache والا لن تدخل التعديلات حيز التنفيذ.

    كود:
    [email protected]:~# /etc/init.d/apache2 restart
    اما في حال تفعيل/ايقاف المواقع لا تحتاج الى اعادة التشغيل، بل فقط اعادة التحميل (reload)

    كود:
    [email protected]:~# /etc/init.d/apache2 reload
    يتبع،،،،،،
    التعديل الأخير تم بواسطة سامر حداد; الساعة 18-08-2011, 07:29 PM.
    موقع وثائق لينوكس العربية
    موقع مختص بتوثيق لينكس

    ((شاركنا بمواضيعك، أفكارك، إقتراحاتك، ومساعدتك لنا هي أساس إستمرارنا ... فلا تبخل علينا بما لديك ولو كان بنظرك قليل، فهو بنظرنا الكثير))






  • #2
    ماشاء الله اخي مسلم
    ورشة بصح وصحيح
    انا مشترك من الان
    وجاهز.....متى نبدأ :002:
    :thinking: :thinking:
    http://www.no4denmark.com/ar/images/...sool-allah.gif
    ((لا يومن احدكم حتى اكون احب اليه من والده وولده والناس اجمعين))......اعادوا نشر الصور فاعدنا اكل الزبدة والجبنة...

    تعليق


    • #3
      بالتوفيق أخي مسلم ....
      لكن لدي سؤال عبيط قليلاً :
      6- خادم LAMP (linux + apache + mysql + php5 + proftpd/vsftpd)
      هل يمكنني حجز دومين على هذا الخادم ؟ اذا لك يكن ممكن هل من الممكن عمل شرح لهذا مستقبلا ؟
      دمت لنا اخي
      سبحانك اللهم وبحمدك سبحان الله العظيم
      لا إله إلا أنت إني كنت من الظالمين

      تعليق


      • #4
        مشكور يا اخي raptor.

        ولكن حتى اكون صريح هذا الموضع جاهز عندي لانه هو في الاساس عبارة عن كتاب كتبته واضفته في ارابيان 2007. ولكني انوي عرضه هنا بشكل متقطع حتى اضمن ان الجميع سيقراه.

        ولكن لا يوجد مانع ان رايت اني عملت شيء معين بطريقة ما ويوجد عندك طريقة افضل واسهل من التي عملتها، كما انه لا يوجد مانع بالقاء اسئلة واجوبة وافتراض حالات معينة.

        وفي النهاية، اهداف هذا الموضوع هي:

        1- الغاء السؤال المنتشر مثل الويندوز في هذا المنتدى وغيره وهو "كيف اشارك الانترنت مع اجهزة الشبكة"

        2- تبادل خبرات بين مديري الانظمة، حيث اني ساطرح هنا 60% من معرفتي في هذا المجال، طبعا ما تبقى (40%) فهي مواضيع واعدادات اكثر تقدما من التي وضعتها هنا.
        واتمنى ان اجد هنا ردودا تشرح اعداد معين (حتى لو قمت بشرحه) ولكن باستخدام اسلوب افضل او تفعيل خيارات لم افعلها (عمدا او جهلا).


        اخي الفايق: نعم يمكنك ان شاء الله استضافة موقع على هذا السيرفر (طبعا يشترط ان يكون عندك عنوان IP حقيقي وان توجه الى domain الى هذا الـ IP)
        موقع وثائق لينوكس العربية
        موقع مختص بتوثيق لينكس

        ((شاركنا بمواضيعك، أفكارك، إقتراحاتك، ومساعدتك لنا هي أساس إستمرارنا ... فلا تبخل علينا بما لديك ولو كان بنظرك قليل، فهو بنظرنا الكثير))





        تعليق


        • #5
          سابدا بطرح المواضيع غدا ان شاءا لله.
          موقع وثائق لينوكس العربية
          موقع مختص بتوثيق لينكس

          ((شاركنا بمواضيعك، أفكارك، إقتراحاتك، ومساعدتك لنا هي أساس إستمرارنا ... فلا تبخل علينا بما لديك ولو كان بنظرك قليل، فهو بنظرنا الكثير))





          تعليق


          • #6
            و انا معكم ان شاء الله و سأحاول بذل المستطاع كوني مشغول لرأسي هذه الأيام!!!
            V.I.P

            (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
            هود 115

            Linux is user-friendly, but it happens to be selective about its friends

            "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


            مجتمع لينوكس العربي: وقف لله تعالى وصدقة جارية، فلا بارك الله في كل من يحاول الإساءة إليه في الظاهر أو في الخفاء...


            تعليق


            • #7
              تسجيل حضوور

              ان شاء الله معكم

              تعليق


              • #8
                السلام عليكم
                بالتوفيق إن شاء الله و أنا معكم أيضا
                User N4m3 | FLoOoD HacKeR
                e-mail | e@Hotmail.com | zo@Hotmail.com
                ZoNe-H
                FaceBook

                تعليق


                • #9
                  فكرة ممتازة
                  انا اريد الاشتراك

                  تعليق


                  • #10
                    و انا ان شاء الله معكم.
                    لي سؤال اخي بارك الله فيك : هل يجب ان يكون لدينا عدة اجهزة للقيام بهذا العمل ؟

                    تعليق


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

                      تعليق


                      • #12
                        شكرا أخى مسلم
                        وأعتقد أنك تكرمت بوضعه فى الويكى سيكون أفضل و أوقع و أكثر تأثيرا
                        EgyMan.NET

                        تعليق


                        • #13
                          ان شاء الله ساضع الموضوع في الويكي ايضا، ولكن كما ذكرت سابقا هو اصلا مجمع لانه عبارة عن كتاب ولكن لا مشكلة في وضعه في الويكي ايضا.
                          موقع وثائق لينوكس العربية
                          موقع مختص بتوثيق لينكس

                          ((شاركنا بمواضيعك، أفكارك، إقتراحاتك، ومساعدتك لنا هي أساس إستمرارنا ... فلا تبخل علينا بما لديك ولو كان بنظرك قليل، فهو بنظرنا الكثير))





                          تعليق


                          • #14
                            على بركة الله استاذ مسلم

                            وفكرة جيدة جدا تقسيم الشرح الى حلقات لضمان المتابعة وطرح الاسئلة

                            شكرا لك

                            تعليق


                            • #15
                              الاخ fakir:

                              يفضل ان يكون لديك على الاقل جهازين، الاول ليكون السيرفر والثاني client، ولكن في حال لم يكن عندك، يمكنك استخدام vmware واستخدام جهاز واحد فقط.

                              ولكن في هذه الحالة ساضطر ان اشرح vmware قبل ان اشرح كيفية اعداد السيرفر، وهذا شيء لا انوي فعله حاليا، الا اذا كان راي الاغلبية ان افعل هذا قبل ان ابدا بشرح السيرفر.
                              موقع وثائق لينوكس العربية
                              موقع مختص بتوثيق لينكس

                              ((شاركنا بمواضيعك، أفكارك، إقتراحاتك، ومساعدتك لنا هي أساس إستمرارنا ... فلا تبخل علينا بما لديك ولو كان بنظرك قليل، فهو بنظرنا الكثير))





                              تعليق

                              يعمل...
                              X