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

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

كيفية إعداد خادم SVN لإستعماله لأغراض Configuration Management System

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

  • [شرح] كيفية إعداد خادم SVN لإستعماله لأغراض Configuration Management System

    السلام عليكم ورحمة الله وبركاته

    والله زماااااااااااان عالكتابة هنا ... هذا الموضوع قمت بعمله باللغة الإنجليزية لأغراض العمل ولهذا قلت أعمله بالعربي لمشاركة المبدأ والطريقة مع الجميع لعله يكون محل فائدة لأحدكم ...

    كيفية إستعمال Subversion لإدارة الملفات والإعدادات، أي إستعماله لغرض Configuration Management System ... حيث بعض الأحيان تقوم بعمل إعدادات معينة وبعد فترة تقوم بعمل إعدادات جديدة وكل هذا دون تسجيل أو حفظ لما قمت به ... فلو رغبت بالعودة الى الإعدادات السابقة لن تتمكن من ذلك إلا لو كنت حافظ الإعدادات وهذه مسألة غير صحية وأيضاً غير جيدة في حالة كان عندك أكثر من خادم تديره ...

    طبعاً سنقوم بشرح كيفية تنصيب وإعداد Subversion لنعمل خادم SVN وذلك لكي نستعمله لحفظ إعداداتنا وتغييراتها ... وأيضاً يمكنك إستعماله لغرض حفظ مستنداتك والتغييرات التي تطرأ عليها ...

    ملاحظة: لن أشرح في هذا الموضوع ما هو الـ Subversion ولا المستودعات Repositories ولا هيكليتها وذلك لأنها عبارة عن أجزاء كبيرة من كتاب Subversion، وأنصح كل مهتم بقراءة الكتاب بالكامل كما فعلت أنا ... الكتاب يوجد منه نسخة مجانية ومتوفرة هنا سواءاً للقراءة على النت أو تحميله ...


    لتنصيب subversion كل ما عليك فعله هو:
    - For Redhat/CentOS -
    كود:
    yum install subversion

    - For Debian/Ubuntu -
    كود:
    apt-get install subversion

    الآن لنقوم بعمل مستودع Repository الذي سنستعمله للأغراض التي ذكرناها ...
    كود:
    svnadmin create /usr/local/mysvn

    أو قم بإنشاءه في أي مكان تراه يناسبك ... فقط قم بتغيير المسار ...

    الآن لنقوم بإضافة /etc مثلا الى svn ... في البداية نعمل المجلد الذي سنضع فيه /etc في المستودع repository وذلك ممكن من خلال:
    كود:
    svn mkdir --parents file:///usr/local/mysvn/hosts/etc -m "/etc Directory in repository for $host"

    لاحقا حين تكمل الإعدادات يمكنك عمل هذا المجلد من خلال الويب مثلاً:
    كود:
    svn mkdir http://example.com/mysvn/hosts/etc -m "/etc Directory in repository for $host"

    الآن أذهب الى المجلد /etc:
    كود:
    cd /etc

    بعد ذلك نفذ الأمر التالي:
    كود:
    svn checkout file:///usr/local/mysvn/hosts/etc .

    هكذا أخبرنا svn بأن يضيف المجلد etc الى Version Control ... أرجوا أن لا تنسوا النقطة "." التي بآخر السطر أعلاه ... بعد ذلك لنقوم بإضافة الملفات والمجلدات كلها اليه:
    كود:
    svn add *

    والآن لم يتبقى لنا سوى إضافتهم بشكل حقيقي من خلال عمل commit:
    كود:
    svn commit -m "$host /etc config files"

    الى الآن نستطيع الوصول الى المستودع من خلال نظام الملفات فقط ومن خلال ssh كذلك (هذه نتركها لوقت آخر) ... الآن لنقوم بإعداد خادم الأباتشي لكي يستطيع التعامل مع SVN ونتمكن من الوصول أليه من أي متصفح ومن أي مكان عن بعد ... نحتاج الى ذلك تركيب موديول خاص بالأباتشي:
    - For Redhat/CentOS -
    كود:
    yum install mod_dav_svn

    - For Debian/Ubuntu -
    كود:
    apt-get install libapache2-svn

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

    الآن قم بفتح الملف الخاص بالـ subversion وفيه إعدادات أباتشي:
    كود:
    vim /etc/httpd/conf.d/subversion.conf

    بعد ذلك ضع الإعدادات التالية (يرجى التعديل عليها حسب إحتياجاتك وإعداداتك):
    كود:
    <Location /mysvn>
            DAV svn
            SVNPath /usr/local/mysvn
            AuthzSVNAccessFile /usr/local/mysvn/conf/authz
    
            Satisfy Any
            Require valid-user
    
            AuthType Basic
            AuthName "Subversion repos"
            AuthUserFile /etc/httpd/htpasswd
    </Location>

    أهم الأمور التي في ملف الإعدادات أعلاه هي:
    الخيار SVNPath، حيث نستعمله للإشارة الى مكان وجود المستودع SVN Repository
    أما ما يخص الخيار AuthzSVNAccessFile فهو لأغراض أمنية ... حيث يمكن من خلاله عمل Access Control أو ما يسمى بـ ACL على المستودعات ... وهذه تساعدنا في توزيع الصلاحيات على المستودع ... بحيث لا نقوم مثلاً بإعطاء صلاحيات وصول الى جميع المستودع سوى لأشخاص معيينيين (مدراء الأنظمة) وكذلك إن كنت تستعمل المستودع لحفظ مستنداتك ومستندات غيرك تستطيع من خلاله إعطاء صلاحيات لك على مكان تخزين مستنداتك دون وصول غيرك لها، ونفس الشيء بالنسبة لمستندات غيرك دون وصولك انت أو غيرك لها ... طبعاً يمكن توزيع الصلاحيات بناءاً على مستخدمين أو مجموعات مستخدمين ... لنوضح ذلك:

    الآن لو نفرض أريد عمل ثلاث مجموعات ... واحدة لمدراء الأنظمة administrators وأخرى للموظفين Employee's وأخرى لفريق عمل الـ Documentation ... وأريد أن يكون صلاحياتهم كالتالي:
    كود PHP:
    1Administration Group
            name
    administrators
            perm
    rw
            repo
    : / 
    هذه المجموعة لها كامل الصلاحيات (كتابة وقراءة) على المستودع كما نلاحظ من خلال / ...

    كود PHP:
    2Employee's Group
            name: employee
            perm: r    
            repo: /workingfiles 
    هذه المجموعة لها الصلاحيات القراءة فقط على جزء معيين من المستودع هو /workingfiles ...

    كود PHP:
        3Documentation Group
            name
    documentation
            perm
    rw
            repo
    : /workingfiles/doc 
    هذه المجموعة لها كامل الصلاحيات (كتابة وقراءة) على جزء معيين من المستودع هو /workingfiles/doc ...

    ملاحظة: طبعاً r تعني القراءة (read) و w تعني الكتابة (write) ...

    طيب لنقوم بتحرير الملف الذي فيه هذه الإعدادات حسب ما حددناه في ملف إعدادات أباتشي أعلاه هو /usr/local/mysvn/conf/authz، ولهذا قم بالتالي:
    كود:
    vim /usr/local/mysvn/conf/authz

    وقم بإضافة التالي له:
    كود:
    [groups]
    administrators = root
    employee = ali, mohamed
    documentation = sabri
    
    [/]
    @administrators = rw
    
    [/workingfiles]
    @employee = r
    
    [/workingfiles/doc]
    @documentation = rw
    قم بحفظ الملف وغلقه ... قمنا بعدل الإعدادات اللازمة لكل مجموعة ووضعنا مستخدمين لكل مجموعة، ففي المجموعة الأولى وضعنا المستخدم root وفي المجموعة الثانية ali و mohamed وفي المجموعة الثالثة والأخيرة وضعنا المستخدم sabri ... طبعاً كل هؤلاء المستخدمين لم نقم بإضافتهم بعد، لكننا حددنا صلاحياتهم على ضوء المجموعات ...

    الآن السؤال الذي يدور في ذهني: لا اتوقع بإن إضافة مجموعة أخرى وصلاحيات معينة على مكان معيين هو بالأمر الصعب عليكم ... صح ؟


    الآن لنقوم بإضافة المستخدمين جميعهم ... كل ما عليك فعله هو تنفيذ التالي (سيطلب منك إدخال كلمة سرية لكل مستخدم مرتين):
    كود:
    htpasswd -cm /etc/httpd/htpasswd root
    htpasswd -m /etc/httpd/htpasswd ali
    htpasswd -m /etc/httpd/htpasswd mohamed
    htpasswd -m /etc/httpd/htpasswd sabri

    كما تلاحظون في أول أمر أستعملنا الخيار c وذلك لعمل الملف /etc/httpd/htpasswd في حالة لم يكن موجود ... بعد ذلك نقوم بالإضافة فقط ...

    الآن لنقوم بالتأكد من عمل الأباتشي بعد إعادة التشغيل:
    كود:
    chkconfig httpd on

    ولنقوم بتشغيل الأباتشي الآن أو إعادة تشغيله:
    كود:
    service httpd restart

    الآن للوصول الى هذه المستودعات كل ما عليك فعله هو إستعمال الرابط الصحيح لكل مستخدم وإدخال اسم المستخدم والكلمة السرية له ... مثلا بالنسبة للمستخدم root فهو قادر على الوصول اليه من خلال:
    كود PHP:
    http://example.com/mysvn 

    بينما المستخدمين ali و mohamed من خلال:
    كود PHP:
    http://example.com/mysvn/workingfiles 

    ولا يستطيع المستخدمين ali أو mohamed من الوصول الى ما يستطيع الوصول أليه root فلقد حددنا صلاحياته على workingfiles وما هو أسفلها فقط ...

    وأخيراً لوصول المستخدم sabri كل ما عليك فعله هو إستعمال الرابط التالي:
    كود PHP:
    http://example.com/mysvn/workingfiles/doc 

    ونفس الشيء الآن بالنسبة لـ sabri لا يستطيع الوصول الى ما هو أعلى من doc فقط ما هو بداخله ...

    إن شاء الله تستفيدون من هذه الطريقة لعمل Configuration Management System على خوادمكم ... حيث الآن يمكنك متابعة جميع التغييرات وتسجيلها والعودة لأي تغيير قمت به حين تحتاج الى ذلك بكل سهولة ...

    إن شاء الله في موضوع آخر نتحدث عن كيفية إضافة ملف جديد وحذف ملف وتحديث ملف أو مجلد الى آخره من العمليات التي ستحتاجها بشكل يومي من خلال الأمر svn ... وإن لم تكن تستطيع الصبر؟ وهذا ما اتمناه، هو أن تراجع الكتاب الرائع Version Control with Subversion على الرابط التالي: أضغط هنا

    موفقين ...
    إِنَّمَـا الأُمَـمُ الأَخْـلاقُ مَا بَقِيَـتْ ... فَـإِنْ هُمُ ذَهَبَـتْ أَخْـلاقُهُمْ ذَهَبُـوا

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

    [ مواقع مفيدة: أروع موقع القرآن الكريم |مدونتي |Twitter |نظام طارق ]


  • #2
    الف شكر يا استاذي دائما مواضيعك متميزه

    منتظرين كل جديد منك يا غالي

    تعليق


    • #3
      لي سؤال صغير
      لم svn وليس git مثلا ؟

      تعليق


      • #4
        السلام عليكم ...
        أشكر جميع الأخوة الذين مروا من هنا وشكروني وإن شاء الله يكون الموضوع مفيد لكم سواءاً اليوم أو بالمستقبل ... شكراً يا شباب على دوام دعمكم وتشجيعكم ...

        المشاركة الأصلية بواسطة hamoodii مشاهدة المشاركة
        الف شكر يا استاذي دائما مواضيعك متميزه
        منتظرين كل جديد منك يا غالي
        الله يخليك يارب أخوي حمودي (نفس لقب أبني ) ...
        وإن شاء الله تكون أستفدت منه ... تحياتي لك ...

        المشاركة الأصلية بواسطة أحمد عربي مشاهدة المشاركة
        لي سؤال صغير
        لم svn وليس git مثلا ؟
        هلا اخوي احمد ... السبب إنني في العمل نستعمل svn ولهذا كتبت هذا المستند ... بالإضافة الى ذلك حسب ما فهمت من الأخ مؤيد بإن git لازال فيه مشاكل مع أنظمة ويندوز (أقصد العميل الذي يتعامل مع مستودعات git) بينما subversion لا يوجد فيه مشاكل بتاتاً ونستعمل برنامج Toritoise في العمل على أنظمة ويندوز ... أرجوا ان اكون وضحت لك السبب وإن شاء الله تستفيد من الموضوع

        تحياتي لكم جميعاً ...
        إِنَّمَـا الأُمَـمُ الأَخْـلاقُ مَا بَقِيَـتْ ... فَـإِنْ هُمُ ذَهَبَـتْ أَخْـلاقُهُمْ ذَهَبُـوا

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

        [ مواقع مفيدة: أروع موقع القرآن الكريم |مدونتي |Twitter |نظام طارق ]

        تعليق

        يعمل...
        X