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