إعداد خادم 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 عادةً ما يكون كافيًا لمعظم حالات الاستخدام.