إعداد خادم غيت خاص على لينكس

إعداد خادم غيت خاص على لينكس ubuntu almalinux debian redhat

إعداد خادم Git خاص على لينكس يمكن أن يعزز بشكل كبير أمان وإدارة أنظمة التحكم في الإصدار الخاصة بك. سيقوم هذا الدليل الشامل بشرح العملية على أنظمة CentOS/AlmaLinux/RedHat و Ubuntu/Debian، لضمان قدرتك على التحكم في قاعدة الكود الخاصة بك في بيئة آمنة.

مقدمة

في مشهد التطوير اليوم، يعد التحكم في الإصدار أمرًا أساسيًا. Git، نظام التحكم في الإصدار الموزع، هو واحد من أكثر الأدوات شعبية المستخدمة من قبل المطورين في جميع أنحاء العالم. على الرغم من أن منصات مثل GitHub و GitLab و Bitbucket تقدم خدمات قوية، إلا أن هناك حالات يكون فيها إعداد خادم Git خاص أكثر ملاءمة. قد يكون ذلك بسبب مخاوف الأمان أو الحاجة إلى مزيد من التحكم في المستودعات الخاصة بك أو السياسات التنظيمية.

إعداد خادم Git خاص على لينكس هو خطوة استراتيجية للشركات والأفراد الذين يحتاجون إلى حماية قاعدة الكود الخاصة بهم. سيقوم هذا المقال بإرشادك خلال عملية الإعداد لتوزيعتين من توزيعات لينكس الأكثر استخدامًا: CentOS/AlmaLinux/RedHat و Ubuntu/Debian.

فوائد خادم Git الخاص

يقدم خادم Git الخاص عدة مزايا:

  • الأمان: التحكم المحسن في من لديه الوصول إلى مستودعاتك.
  • التخصيص: القدرة على تكوين الخادم لتلبية الاحتياجات الخاصة.
  • التكلفة الفعالة: تجنب رسوم الاشتراك المرتبطة بخدمات استضافة Git الخارجية.
  • الأداء: التحكم المحلي يمكن أن يؤدي إلى أداء أفضل وأوقات وصول أسرع.

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

قبل أن نبدأ، تأكد من توفر العناصر التالية:

  • خادم لينكس بعنوان IP ثابت.
  • وصول SSH إلى الخادم.
  • معرفة أساسية بعمليات سطر الأوامر في لينكس.
  • وصول root أو sudo.

تثبيت Git

CentOS/AlmaLinux/RedHat

أولاً، قم بتحديث النظام الخاص بك:

$ sudo yum update -y

قم بتثبيت Git:

$ sudo yum install git -y

تحقق من التثبيت:

$ git --version

Ubuntu/Debian

قم بتحديث النظام الخاص بك:

$ sudo apt update -y
$ sudo apt upgrade -y

قم بتثبيت Git:

$ sudo apt install git -y

تحقق من التثبيت:

$ git --version

إعداد SSH

SSH (Secure Shell) هو أساسي للوصول الآمن إلى خادم Git الخاص بك. إليك كيفية إعداده.

توليد مفاتيح SSH

على جهازك المحلي، قم بتوليد مفاتيح SSH:

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"

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

نسخ مفتاح SSH إلى الخادم

انسخ مفتاحك العام إلى الخادم باستخدام ssh-copy-id:

$ ssh-copy-id username@server_ip

بدلاً من ذلك، انسخ المفتاح يدويًا:

$ ssh username@server_ip
$ mkdir -p ~/.ssh
$ cat ~/path_to_your_public_key.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

تكوين خادم SSH

عدل ملف تكوين SSH:

$ sudo nano /etc/ssh/sshd_config

تأكد من تكوين الإعدادات التالية:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

أعد تشغيل خدمة SSH:

$ sudo systemctl restart sshd

إنشاء مستخدم Git

أنشئ مستخدم مخصص لعمليات Git. هذا يعزز الأمان عن طريق تقليل نطاق الإجراءات التي يمكن لهذا المستخدم تنفيذها.

CentOS/AlmaLinux/RedHat

$ sudo adduser git
$ sudo passwd git

Ubuntu/Debian

$ sudo adduser git
$ sudo passwd git

إعداد مستودع Git

أنشئ دليلًا لتخزين مستودعاتك:

$ sudo mkdir -p /home/git/repositories
$ sudo chown -R git:git /home/git/repositories

انتقل إلى المستخدم Git:

$ sudo su - git

ابدأ مستودع جديد:

$ cd /home/git/repositories
$ mkdir project.git
$ cd project.git
$ git init --bare

تكوين دايمون Git والوصول إلى SSH

الوصول إلى SSH

لاستنساخ المستودع عبر SSH، استخدم الأمر التالي:

$ git clone git@server_ip:/home/git/repositories/project.git

تكوين دايمون Git (اختياري)

إذا كنت تفضل استخدام دايمون Git المدمج لإعداد خادم أكثر خفة، اتبع هذه الخطوات.

CentOS/AlmaLinux/RedHat

قم بتثبيت xinetd:

$ sudo yum install xinetd -y

أنشئ تكوين خدمة Git:

$ sudo nano /etc/xinetd.d/git

أضف المحتوى التالي:

service git
{
    disable = no
    type = UNLISTED
    port = 9418
    socket_type = stream
    wait = no
    user = git
    server = /usr/bin/git
    server_args = daemon --inetd --base-path=/home/git/repositories
    log_on_failure += USERID
}

أعد تشغيل xinetd:

$ sudo systemctl restart xinetd

Ubuntu/Debian

قم بتثبيت xinetd:

$ sudo apt install xinetd -y

أنشئ تكوين خدمة Git:

$ sudo nano /etc/xinetd.d/git

أضف المحتوى التالي:

service git
{
    disable = no
    type = UNLISTED
    port = 9418
    socket_type = stream
    wait = no
    user = git
    server = /usr/bin/git
    server_args = daemon --inetd --base-path=/home/git/repositories
    log_on_failure += USERID
}

أعد تشغيل xinetd:

$ sudo systemctl restart xinetd

إعداد GitWeb (اختياري)

GitWeb هو واجهة ويب لتصفح مستودعات Git. يمكن أن يكون مفيدًا لتصور مستودعاتك وجعلها أكثر وصولاً.

CentOS/AlmaLinux/RedHat

قم بتثبيت الحزم المطلوبة:

$ sudo yum install gitweb httpd -y

قم بتكوين GitWeb:

$ sudo nano /etc/gitweb.conf

قم بتعيين projectroot إلى دليل مستودعاتك:

$projectroot = "/home/git/repositories";

قم بتكوين Apache:

$ sudo nano /etc/httpd/conf.d/gitweb.conf

أضف التكوين التالي:

Alias /gitweb /usr/share/gitweb
<Directory /usr/share/gitweb>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
    DirectoryIndex gitweb.cgi
</Directory>

ابدأ وفعّل Apache:

$ sudo systemctl start httpd
$ sudo systemctl enable httpd

Ubuntu/Debian

قم بتثبيت الحزم المطلوبة:

$ sudo apt install gitweb apache2 -y

قم بتكوين GitWeb:

$ sudo nano /etc/gitweb.conf

قم بتعيين projectroot إلى دليل مستودعاتك:

$projectroot = "/home/git/repositories";

قم بتكوين Apache:

$ sudo nano /etc/apache2/conf-available/gitweb.conf

أضف التكوين التالي:

Alias /gitweb /usr/share/gitweb
<Directory /usr/share/gitweb>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
    DirectoryIndex gitweb.cgi
</Directory>

فعّل موقع GitWeb وأعد تشغيل Apache:

$ sudo a2enconf gitweb
$ sudo systemctl restart apache2

إدارة المستودعات

**إنشاء مستود

عات إضافية**

لإنشاء مستودعات إضافية، كرر ببساطة خطوات إعداد المستودع تحت المستخدم Git:

$ sudo su - git
$ cd /home/git/repositories
$ mkdir new_project.git
$ cd new_project.git
$ git init --bare

إعداد أذونات المستودعات

قم بإدارة الوصول إلى مستودعاتك عن طريق تكوين مفاتيح SSH وتعديل ملف authorized_keys للمستخدم Git.

$ sudo nano /home/git/.ssh/authorized_keys

أضف المفاتيح العامة للمستخدمين الذين يحتاجون إلى الوصول إلى مستودعاتك.

نسخ احتياطي لخادم Git الخاص بك

النسخ الاحتياطية المنتظمة ضرورية لتجنب فقدان البيانات. استخدم وظائف cron لأتمتة النسخ الاحتياطي.

إنشاء نصوص النسخ الاحتياطي

قم بإنشاء نص لنسخ مستودعاتك احتياطيًا:

$ sudo nano /usr/local/bin/git_backup.sh

أضف المحتوى التالي:

#!/bin/bash
tar -czvf /backup/git_repositories_$(date +%F).tar.gz /home/git/repositories

اجعل النص قابلاً للتنفيذ:

$ sudo chmod +x /usr/local/bin/git_backup.sh

إعداد وظائف Cron

عدل crontab:

$ sudo crontab -e

أضف السطر التالي لجدولة النسخ الاحتياطية اليومية في الساعة 2 صباحًا:

0 2 * * * /usr/local/bin/git_backup.sh

المراقبة والصيانة

مراقبة استخدام القرص

راقب استخدام القرص للتأكد من أن الخادم الخاص بك لا ينفد من المساحة.

$ df -h

إدارة السجلات

تحقق من السجلات وأدرها بانتظام للحفاظ على أداء الخادم.

$ sudo nano /var/log/git.log

تأمين خادم Git الخاص بك

تكوين الجدار الناري

قم بتكوين الجدار الناري للسماح فقط بحركة المرور الضرورية.

CentOS/AlmaLinux/RedHat

$ sudo firewall-cmd --add-service=ssh --permanent
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-port=9418/tcp --permanent
$ sudo firewall-cmd --reload

Ubuntu/Debian

$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow 9418/tcp
$ sudo ufw enable

التحديثات المنتظمة

حافظ على تحديث نظامك وتثبيت Git الخاص بك لحمايتك من الثغرات الأمنية.

$ sudo yum update -y   # لأنظمة CentOS/AlmaLinux/RedHat
$ sudo apt update -y && sudo apt upgrade -y   # لأنظمة Ubuntu/Debian

خلاصة

إعداد خادم Git خاص على لينكس باستخدام CentOS/AlmaLinux/RedHat أو Ubuntu/Debian هو مهمة مجزية تقدم العديد من الفوائد من حيث الأمان والتحكم والتخصيص. باتباع هذا الدليل الشامل، يمكنك إنشاء نظام تحكم في الإصدار قوي يلبي احتياجاتك.

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

استفد من قوة خادم Git الخاص وتول التحكم في مشاريع التطوير الخاصة بك بثقة.

الأسئلة الشائعة

ما هي فوائد إعداد خادم Git خاص؟

إعداد خادم Git خاص يوفر أمانًا محسنًا، خيارات تخصيص، تكلفة فعالة، وأداء محسّن من خلال توطين التحكم والوصول.

كيف يمكنني تأمين خادم Git الخاص بي؟

قم بتأمين خادم Git الخاص بك من خلال تكوين الوصول SSH، إعداد الجدار الناري، تحديث النظام بانتظام، وإدارة أذونات المستخدمين والسجلات.

هل يمكنني استخدام GitWeb لتصفح المستودعات؟

نعم، GitWeb يوفر واجهة ويب لتصفح مستودعات Git، مما يجعلها أكثر وصولًا وأسهل في الإدارة.

كيف يمكنني نسخ مستودعات Git احتياطيًا؟

قم بنسخ مستودعات Git احتياطيًا باستخدام النصوص ووظائف cron لأتمتة عملية النسخ الاحتياطي، مما يضمن حصولك على نسخ منتظمة ومحدثة من مستودعاتك.

ما هو دور المستخدم Git؟

المستخدم Git هو مستخدم مخصص تم إنشاؤه لإدارة عمليات Git، مما يعزز الأمان عن طريق تقليل نطاق الإجراءات التي يمكن لهذا المستخدم تنفيذها على الخادم.

هل من الضروري تثبيت دايمون Git؟

تثبيت دايمون Git هو اختياري. يوفر إعداد خادم خفيف للوصول إلى المستودعات، لكن الوصول عبر SSH عادةً ما يكون كافيًا لمعظم حالات الاستخدام.

LEAVE A COMMENT