٤، ٢، تثبيت جت على خادوم

سنتناول الآن إعداد خدمة جت لتشغيل هذه الموافيق على خادومك.

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

حتى تعد أي خادوم جت، عليك أولا تصدير مستودع موجود إلى مستودع جديد مجرد. والمستودع المجرد هو مستودع ليس فيه مجلد عمل. هذا في المعتاد عملية سهلة. فلاستنساخ مستودع لإنشاء مستودع جديد مجرد، نفّذ أمر الاستنساخ بالخيار --bare («مجرد»): والعُرف أن أسماء مجلدات المستودعات المجردة تنتهي باللاحقة .git، مثل هذا:

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

سيكون لديك الآن نسخة من بيانات مجلد جت في مجلد my_project.git.

هذا يكافئ تقريبا شيئا مثل هذا:

$ cp -Rf my_project/.git my_project.git

توجد بعض الاختلافات الطفيفة في ملف التهيئة (‪“config”‬)، ولكن لغرضنا اليوم فيكادا يتطابقان. فهذا الأخير يأخذ مستودع جت وحده بغير مجلد عمله وينشئ مجلدًا مخصصًا له وحده.

وضع المستودع المجرد على خادوم

الآن وقد صار لديك نسخة مجردة من مستودعك، فلا تحتاج سوى وضعه على الخادوم وضبط الموافيق (البروتوكولات). لنقُل إنك أعددت خادومًا يسمى git.example.com، ولديك وصول SSH له، وتريد تخزين كل مستودعات جت الخاصة بك في مجلد /srv/git فيه. إذا كان مجلد /srv/git موجودًا على هذا الخادوم، فيمكنك إعداد مستودعك الجديد بنسخ مستودعك المجرد إليه:

$ scp -r my_project.git user@git.example.com:/srv/git

يستطيع الآن المستخدمين الذين لديهم إذن قراءة مجلد /srv/git عبر SSH أن يستنسخوا مستودعك بالأمر:

$ git clone user@git.example.com:/srv/git/my_project.git

وإذا كان لمستخدمٍ إذن تحرير هذا المجلد، ودخل عبر SSH إلى الخادوم، فسيستطيع الدفع إليه متى شاء.

وسيضيف جت إذن التحرير للمجموعة إلى المستودع بطريقة صحيحة إذا استخدمت خيار --shared («مشترك») مع أمر الابتداء git init. لاحظ أن هذا لن يُتلف أي إيداعات أو إشارات أو أي شيء آخر.

$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared

قد رأيت كم هو سهل إنشاء نسخة مجردة من مستودع جت ووضعها على خادوم عندكم وصول SSH إليه. فيمكنكم الآن التعاون في مشروع واحد.

مهمٌ ملاحظة أنك حقا لا تحتاج غير هذا لتشغيل خادوم جت نافع يصل إليه العديدون: تنشئ حسابات SSH، وتضع مستودعًا مجردًا في مكانٍ للجميع إذن قراءته وتحريره. وتمت العملية بنجاح؛ لا شيء آخر مطلوب.

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

الترتيبات الصغيرة

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

الوصول عبر SSH

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

وإذا أردت وضع مستودعاتك على خادوم ليس فيه حساب لكل مطور يحتاج إذن التحرير في فريقك، فعليك إعداد وصول SSH لكلٍ منهم. إذا كنت تريد فعل هذا على خادوم لديك، فسنفترض أن لديك بالفعل خادوم SSH مثبت عليه، وأنه وسيلتك للتواصل مع الخادوم الجهاز.

توجد أكثر من طريقة لإعطاء إذن الوصول لكل واحد في فريقك. الأولى هي إعداد حساب لكل واحد، وهي عملية سهلة لكن قد تكون مرهقة. فربما لا تريد تنفيذ adduser (أو بديله المحتمل useradd) والاضطرار إلى ضبط كلمة مرور مؤقتة لكل مستخدم جديد.

الطريقة الثانية هي إنشاء حساب مستخدم git واحد على الجهاز، وطلب مفتاح SSH العمومي من كل مستخدم تريد إعطاءه إذن التحرير، ثم إضافة هذه المفاتيح إلى ملف ~/.ssh/authorized_keys في حساب git الجديد هذا. وعندئذٍ سيستطيع كل شخص الوصول إلى ذلك الجهاز عبر حساب git. وهذا لا يؤثر على بيانات الإيداعات بأي شكل؛ فحساب مستخدم SSH الذي تتصل عبره لا يؤثر على الإيداعات التي تسجلها.

طريقة أخرى هي أن يستوثق خادوم SSH الخاص بك من خادوم LDAP أو مصدر استيثاق مركزي آخر أعددته. وما دام لكل مستخدم وصول صَدَفي إلى الجهاز، فأي آلية استيثاق SSH تخطر على بالك ستعمل.