راه اندازی سرور گیت خصوصی
استفاده از سرور گیت خصوصی
برای راه اندازی یک پروژه میتوان از یک سیستم کنترل سورس استفاده کرد اما برخی کاربران علاقهای به میزبانی پروژه بر روی سرویسهایی مثل گیتهاب ندارند. در این شرایط میتوان به سراغ راهاندازی یک سرور گیت خصوصی رفت.
ویدیو پییشنهادی : آموزش Git
در این رابطه میتوان به راحتی بر روی یک VPS اقدام به راهاندازی سرور گیت خصوصی نمود و کد مورد نظر را در آن ذخیره کرد. بهاین ترتیب میتوانید از کد ذخیره شده به عنوان یک ریپازیتوری مستر استفاده کرده و آن را با همکارانتان نیز به اشتراک بگذارید.
چرا باید از سرور گیت شخصی استفاده کرد؟
ارائهدهندگان میزبانی گیت مثل GitHub ،GitLab و Bitbucket نسخه رایگان مختلفی را ارائه نموده اند، به همین خاطر برخی از کاربران راهاندازی یک سرور git شخصی را کار چندان مناسبی نمیدانند، اما علیرغم این دیدگاه، در برخی موارد این عمل نتیجه مطلوبتری به همراه خواهد داشت.
لازم است بدانید که ایجاد یک سورس شخصی به شما کمک می کند تا امنیت بالاتری را تجربه کنید و قطعاً این روند از ذخیره کردن کد روی کلودهای دیگر کاربران بهتر خواهد بود. بی شک ارائهدهندگانی مثل گیتلب نیز تا حد زیادی امنیت پروژه شما را تامین می کنند اما با تهیه یک سورس شخصی تمام بخش های پروژه به طور انحصاری در اختیار شما خواهد بود و در این شرایط قطعاً امنیت بیشتری برایتان فراهم خواهد شد.
مقاله پییشنهادی : منظور از گیت Git چیست
یکی دیگر از دلایل استفاده از سرور گیت شخصی این است که هنگام کار با سرویس های دیگر محدودیتهای ناخوشایندی برایتان تعیین میشود. برای نمونه می توان به محدودیت در رابطه با حجم فایل ها اشاره کرد. آپلود فایلهایی که حجم بیش از ۱۰۰ مگابایت دارند در گیتهاب امکانپذیر نبوده و همین موضوع باعث ایجاد مشکل در برخی از پروژههایی میشود که با فایلهای باینری بزرگ سروکار دارند.
این درحالی است که هنگام استفاده از سرور git شخصی، با پرداخت هزینه بیشتر میتوان فضای ذخیره سازی بزرگتری را در اختیار گرفت و به همین ترتیب محدودیت ها از بین خواهند رفت.
گیت ریموت صرفاً ریپازیتوری یک فرد دیگر است
بهتر است بدانید که میزبانی یک سرور چندان سخت و پیچیده نیست. در واقع Git برای مدیریت هر چه بهتر دستورالعملها از یک مدل کنترل منبع توزیع یافته استفاده می نماید.
برای برقراری ارتباط با همکارانتان شما از یک ریپازیتوری استفاده نمیکنید بلکه به ریموتی وصل میشوید که ممکن است روی سرویس اکسترنال مرکزی قرار گرفته باشد و یا روی یک سرور پیادهسازی شده باشد.
بدین ترتیب با ارسال یا دریافت کدها تغییرات لازم روی کپی مستر رسمی ریموت انجام شده و همکارانتان نیز میتوانند با واکشی کدها از ریموت، کامیتهای شما را دانلود کنند.
در روند اجرای این عملیات اغلب افراد استفاده از مدل سرور کلاینت را ترجیح میدهند چراکه برای اجرای گیت به شکل یک سرویس نامتمرکز باید ۲ نفر در تیم حضور داشته و هر یک به طور جداگانه اقدام به pull کردن بهروزرسانیها از دیگری نمایند.
به همین خاطر است که شاید پیاده سازی چنین تنظیماتی در عمل چندان کاربردی نباشد. البته اگر هر دو طرف همواره آنلاین بوده و دارای آیپی استاتیک باشند، میتوان از نظر فنی گیت را به صورت نامتمرکز اجرا کرد.
مقاله پییشنهادی : گیت هاب چیست؟
راه اندازی سرور گیت
با توجه به اطلاعات درج شده در این مقاله قطعاً متوجه شده اید که سرور گیت یک ریپازیتوری ساده است که روی اینترنت قرار داده شده و در واقع به عنوان یک کپی مستر پیکربندی شده است. پس میتوان نتیجه گرفت که راهاندازی آن چندان سخت و پیچیده نیست.
برای راهاندازی یک سرور git ابتدا باید به ایجاد یک کاربر جدید بپردازید. از آنجایی که در این عمل برای احراز هویت از SSH استفاده میشود، باید برای مدیریت ریپو از یک کاربر سرویس استفاده نمود. چراکه در روند احراز هویت گیت، ترافیک بین سرورها و کلاینتها رمزنگاری میشوند؛
ایجاد کاربر جدید:
sudo useradd git
پس از ایجاد یک کاربر جدید باید به کاربر گیت سوئیچ کنید؛
سوئیچ به کاربر گیت:
su git
سرویس هایی مثل گیت هاب و گیت لب از قابلیت مدیریت دسترسی به شکلی ساده و آسان برخوردار هستند اما در گیت خط فرمان نمیتوان به راحتی دسترسی کاربران مختلف را مدیریت کرد.
مقاله پییشنهادی : نحوه نصب Git روی اوبونتو
در واقع در گیت خط فرمان یا باید برای همه افراد به طور یکسان اجازه دسترسی به کاربر سرویس را صادر کنید یا باید برای افراد مختلف کاربران متفاوتی را تعریف کنید که در هر دو صورت نتیجه مطلوبی برایتان حاصل نخواهد شد.
چرا که کامیتها با توجه به ایمیل و نام کاربری تعریف شده در تنظیمات گیت نمایش داده خواهند شد. پس لازم است کلیدهای SSH را به فایل authorized_keys کاربر گیت اضافه نمایید؛
اضافه کردن کلیدهای SSH:
nano ~/.ssh/authorized_keys
با ایجاد دستور git init در دایرکتوری home کاربر، میتوان اقدام به ایجاد یک ریپازیتوری واقعی نمود.
ایجاد ریپازیتوری:
git init --bare repository.git
با کلون کردن یک ریپازیتوری، همه فایلهای مورد استفاده توسط گیت ذخیرهسازی میشوند تا گیت بتواند به مدیریت نسخههای مختلف در پوشه مخفی git. بپردازد.
به این ترتیب هر چیزی که به عنوان Head تعیین شده به صورت یک نسخه قابل استفاده توسط گیت ارائه میشود. با وجود چنین شرایطی طبیعی است که پوشه ریپو حجم ۲برابر پیدا کند.
ضرورت وجود گزینه bare در دستور فوق به این خاطر است که ریپازیتوری به صورت یک سرور مستر پیکربندی میشود و همچنین فضای کمتری نیز اشغال میشود. ریپازیتوریbare یک ریپازیتوری بدون نسخههای قابل استفاده از فایلهایی است که در حال حاضرcheck-out شدهاند. (معمولا برای نامگذاری ربپازیتوریهای bare از پسوند git. استفاده میشود)
حال نوبت آن است که در سمت ماشین لوکال به اضافه کردن یک ریموت جدید بپردازید یا ریپو را کلون کنید؛
افزودن ریموت جدید:
git remote add origin
git@example.com:repository.git
ادرس سایت با @ شروع میشود، چراکه باید به عنوان کاربر گیت به SSH اتصال پیدا کند.
repository.git نیز در واقع یک شناسه نیست بلکه نام مسیری است که نسبت به دایرکتوری home مرتبط با کاربرِ گیت، تعریف شده است. پس در این دستور، استفاده از نام مسیر به طور کامل ضرورت دارد.
مقاله پییشنهادی : نصب گیت در انواع سیستم عامل های مختلف
در نهایت پس از برقراری ارتباط با ریپوی لوکال، باید برای pull و push دسترسی کاملی داشته باشید.
لازم به ذکر است که سرور گیت از پیش تعریف شده، دارای سیستم صدور مجوز درونی نبوده لذا همه افراد به کاربر گیت دسترسی داشته و میتوانند روی ریپازیتوری مستر کنترل داشته باشند.