گیت لب یک نرم افزار متن باز است که اصولا برای میزبانی ریپازیتوریهای گیت استفاده میشود و ویژگیهای مرتبط با توسعه اضافی مانند پیگیری مشکلات را نیز دارا میباشد. این نرمافزار برای استفاده در زیرساخت خودتان طراحی شده است و به عنوان یک فضای ذخیره سازی ریپازیتوری داخلی، انعطافپذیری برای تیم توسعه شما را ارائه میدهد، همچنین یک رابط گرافیکی برای تعامل با کاربران یا وسیلهای برای مشارکت کنندگان است تا بتوانند پروژههای خود را در آن قرار دهند. پروژهی گیت لب به شما این قابلیت را میدهد تا یک نسخهی گیت لب را روی سخت افزار خودتان با مکانیزم نصب حداقلی ایجاد کنید. در این راهنما، به شما نحوه نصب گیت لب روی اوبونتو ورژن 20.04 در یک سرور مجازی لینوکس را آموزش میدهیم.
پیش نیازهای نصب گیت لب روی اوبونتو ورژن 20.04
برای نصب گیت لب روی اوبونتو ورژن 20.4 به موارد زیر احتیاج خواهید داشت:
به یک سرور اوبونتو 20.04 با یک یوزر سودو non-root و فایروال پایه. برای راه اندازی این نسخه، راهنمای راه اندازی اولیه سرور اوبونتو 20.04 ما را دنبال کنید.
مشخصات سختافزاری منتشر شده برای GitLab، استفاده از یک سرور با حداقل موارد زیر را توصیه میکند:
- پردازندهی 4 هستهای
- 4 گیگابایت حافظهی RAM
اگرچه ممکن است بتوانید برخی کارها را با استفاده از حافظهی swap برای جایگذاری مقداری فضا برای RAM استفاده کنید. اما اینکار توصیه نمیشود. مثالهای زیر در این راهنما از حداقل منابع استفاده خواهند کرد.
- یک نام دامنه که به سرور شما اشاره کند. در این آموزش، به عنوان مثال از نام mobinhost.com استفاده میشود، اما حتماً آن را با نام دامنه واقعی خود جایگزین کنید.
گام اول: نصب وابستگیها
قبل از نصب گیت لب روی اوبونتو، نصب نرمافزارهایی که در فرآیند نصب و بهروزرسانی گیت لب استفاده میشوند بسیار مهم است. نرمافزارهای مورد نیاز میتوانند از ریپازیتوریهای پکیج پیش فرض اوبونتو نصب شوند.
ابتدا، ایندکس پکیج لوکال را رفرش کنید:
sudo apt update
سپس با تایپ کردن این دستور، وابستگیها را نصب کنید:
sudo apt install ca-certificates curl openssh-server postfix tzdata perl
احتمالاً برخی از این نرمافزارها در حال حاضر در سیستم شما نصب هستند. برای نصب postfix، هنگام پرسیدن درباره نوع نصب، گزینه “Internet Site” را انتخاب کنید. در صفحه بعد، نام دامنه سرور خود را برای این که چگونه سیستم ارسال ایمیل پیکربندی شود را وارد کنید.
حالا که وابستگیها را نصب کردهاید، میتوانید فرایند نصب گیت لب روی سرور اوبونتو خود را تکمیل کنید.
گام دوم: نصب گیت لب روی اوبونتو
با وجود وابستگیها، میتوانید گیتلب را نصب کنید. در این فرآیند، از یک اسکریپت نصب استفاده میشود تا سیستم شما را با ریپازیتوریهای گیت لب پیکربندی کند.
ابتدا به دایرکتوری /tmp بروید:
cd /tmp
سپس اسکریپت نصب را دانلود کنید:
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
میتوانید اسکریپت دانلود شده را بررسی کنید تا از عملکرد آن راضی باشید. همچنین میتوانید یک نسخه میزبانی شده اسکریپت را در دستورالعملهای نصب گیت لب پیدا کنید:
less /tmp/script.deb.sh
وقتی از امنیت اسکریپت مطمئن شدید، نصب کننده را اجرا کنید:
sudo bash /tmp/script.deb.sh
این اسکریپت سرور شما را برای استفاده از ریپازیتوریهای نگهداری شده توسط گیت لب پیکربندی میکند. این کار به شما امکان میدهد تا گیت لب را با استفاده از ابزارهای مدیریت پکیجی مدیریت کنید که برای سایر پکیجهای سیستم خود استفاده میکنید. پس از انجام این مرحله، میتوانید اپلیکیشن فعلی گیت لب را با استفاده از دستور apt نصب کنید.
sudo apt-get install gitlab-ce
این دستور کامپوننتهای لازم را در سیستم شما نصب میکند و ممکن است نصب شدن کامپوننت ها کمی زمان ببرد. لطفاً صبور باشید تا عملیات نصب به پایان برسد.
گام سوم تنظیم قوانین فایروال
قبل از پیکربندی گیت لب، باید اطمینان حاصل کنید که قوانین فایروال شما به اندازه کافی مجاز هستند تا ترافیک وب را بررسی کنند. اگر راهنمای پیشنیازها را دنبال کرده باشید، همین الان هم یک فایروال ufw فعال دارید.
برای مشاهده وضعیت کنونی فایروال فعال خود، دستور زیر را اجرا کنید:
sudo ufw status Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
قوانین کنونی اجازه عبور ترافیک SSH را میدهند، اما دسترسی به سرویسهای دیگر محدود است. از آنجایی که گیتلب یک وب اپلیکیشن است، شما باید دسترسی HTTP را مجاز کنید. همچنین، به دلیل استفاده از قابلیت گیتلب برای درخواست و فعالسازی یک گواهی SSL رایگان از Let’s Encrypt، همچنین دسترسی HTTPS را نیز مجاز کنید.
این پروتکل برای مپ کردن پورت برای HTTP و HTTPS در فایل /etc/services وجود دارد، بنابراین میتوانید با استفاده از نام آن اجازه تبادل ترافیک دهید. اگر قبلاً ترافیک OpenSSH را فعال نکردهاید، باید به این ترافیک نیز مجوز دهید:
sudo ufw allow http sudo ufw allow https sudo ufw allow OpenSSH
برای بررسی وضعیت فایروال ufw و تأیید اینکه دسترسی به سرویسهای مورد نیاز را مجاز کردهاید، میتوانید از دستور زیر استفاده کنید:
sudo ufw status Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
این خروجی نشان میدهد که رابط وب گیت لب بعد از پیکربندی اپلیکیشن قابل دسترسی است.
گام چهارم: ویرایش فایل پیکربندی گیت لب
قبل از استفاده از اپلیکیشن، فایل پیکربندی را آپدیت کنید و دستور بازپیکربندی اجرا کنید. ابتدا، فایل پیکربندی گیت لب را با استفاده از ادیتوری که در حال حاضر از آن استفاده می کنید باز کنید، در این مثال از ادیتور نانو استفاده شده است:
sudo nano /etc/gitlab/gitlab.rb
دنبال خط پیکربندی external_url بگردید و آن را آپدیت کنید تا با دامنه خود همخوانی داشته باشد و مطمئن شوید که بجای http از https استفاده شود تا کاربران به طور خودکار به سایتی که توسط گواهی Let’s Encrypt محافظت میشود هدایت شوند:
/etc/gitlab/gitlab.rb ... ## GitLab URL ##! URL on which GitLab will be reachable. ##! For more details on configuring external_url see: ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab ##! ##! Note: During installation/upgrades, the value of the environment variable ##! EXTERNAL_URL will be used to populate/replace this value. ##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP ##! address from AWS. For more details, see: ##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html external_url 'https://your_domain' ...
در قدم بعدی، تنظیمات letsencrypt[‘contact_emails’] را پیدا کنید. اگر از ادیتور نانو استفاده می کنید، برای فعال کردن پنجره جستجو، میتوانید کلیدهای CTRL+W را فشار دهید. دستور letsencrypt[‘contact_emails’] داخل پنجره ی باز شده تایپ کنید، سپس اینتر را بزنید.
این تنظیمات یک لیست از آدرسهای ایمیل است که پروژه Let’s Encrypt میتواند با استفاده از آنها در صورت بروز مشکلاتی با دامنهی شما تماس بگیرد. توصیه میشود این تنظیم را غیرفعال کرده و ایمیلهای خود را در آن بنویسید تا در صورت بروز هر گونه مشکلی مطلع شوید:
/etc/gitlab/gitlab.rb letsencrypt['contact_emails'] = ['[email protected]']
بعد از انجام تغییرات، فایل را ذخیره و ببندید. اگر از ادیتور نانو استفاده میکنید میتوانید این کار را با فشردن دکمه های CTRL + X سپس Y سپس ENTER انجام دهید.
برای بازپیکربندی گیت لب، دستور زیر را اجرا کنید:
sudo gitlab-ctl reconfigure
این دستور، گیت لب را با استفاده از اطلاعات موجود درباره سرور شما مقدار دهی اولیه میکند. این یک فرآیند کاملاً خودکار است، بنابراین شما نیازی به پاسخ دادن به هیچ سؤالی ندارید. همچنین در این فرآیند یک گواهی Let’s Encrypt برای دامنه شما پیکربندی میشود.
گام پنجم انجام پیکربندی اولیه از طریق رابط وب
پس از نصب گیت لب روی اوبونتو با اجرای آن، میتوانید پیکربندی اولیه برنامه را از طریق رابط وب انجام دهید.
ورود برای اولین بار
نام دامنه ی سرور گیت لب خودتان را در مرورگر وارد کنید.
https://your_domain
وقتی برای اولین بار آدرس دامنه را وارد میکنید، یک صفحهی ورود به استقبال شما میآید.
برای بار اول با یوزرنیم root وارد شوید
گیت لب یک رمز عبور اولیه امن برای شما تولید میکند. این رمز عبور در یک پوشه ذخیره میشود که به عنوان یک یوزر مدیریتی سودو قابل دسترسی است
sudo nano /etc/gitlab/initial_root_password /etc/gitlab/initial_root_password # WARNING: This value is valid only in the following conditions # 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the firs$ # 2. Password hasn't been changed manually, either via UI or via command line. # # If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password. Password: YOUR_PASSWORD # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
به صفحهی ورود برگردید، و مقادیر زیر را وارد کنید:
- یوزرنیم: root
- پسورد: [رمز عبور موجود در /etc/gitlab/initial_root_password]
این مقادیر را در فیلدها وارد کرده و روی دکمه ورود کلیک کنید. شما به برنامه وارد شده و به صفحهای هدایت خواهید شد که شما را دعوت میکند تا شروع به اضافه کردن پروژهها کنید.
اکنون میتوانید نسخهای که از گیت لب نصب کردهاید را بهینه کنید.
آپدیت پسورد شما
یکی از اولین کارهایی که بعد از نصب گیت لب روی اوبونتو و ورود به سیستم باید انجام دهید، تغییر رمز عبورتان است. برای انجام این تغییر، بر روی آیکون در گوشه بالا و راست نوار ناوبری کلیک کرده و گزینه “ویرایش پروفایل” را انتخاب کنید.
سپس به صفحه تنظیمات کاربری وارد خواهید شد. در نوار ناوبری سمت چپ، گزینه Password را انتخاب کنید تا رمز عبور تولید شده توسط گیتلب را به یک رمز عبور امن تغییر دهید، سپس هنگام پایان بروزرسانیهای خود، روی دکمه Save Password کلیک کنید.
شما به صفحه ورود با اطلاعیهای که رمز عبور شما تغییر کرده است منتقل خواهید شد. رمز عبور جدید خود را وارد کنید تا به نسخهی نصب شده گیت لب خود وارد شوید.
سازگاری تنظیمات پروفایل شما
گیت لب به طور پیشفرض تنظیمات مناسبی را انتخاب میکند، اما هنگامی که شروع به استفاده از نرم افزار میکنید، معمولا این تنظیمات مناسب نیستند.
برای انجام تغییرات لازم در تنظیمات پروفایل خود، بر روی آیکون کاربر در گوشه بالا و راست ناوبری کلیک کنید و سپس Edit Profile را انتخاب کنید.
شما میتوانید نام و آدرس ایمیل را از “Administrator” و “[email protected]” به چیزی مطابقتر با خواستهی خود تغییر دهید. نامی که انتخاب میکنید به یوزرهای دیگر نمایش داده میشود، در حالی که آدرس ایمیل برای تشخیص پیش فرض آواتار، اعلانها، عملیات گیت از طریق رابط کاربری و موارد دیگر استفاده میشود.
پس از انجام تغییرات مورد نظر خود، بر روی دکمه Update Profile Settings در پایین صفحه کلیک کنید. سپس درخواستی برای وارد کردن رمز عبور خود برای تایید تغییرات دریافت خواهید کرد.
به آدرس ایمیلی که وارد کردهاید، یک ایمیل تاییدیه ارسال خواهد شد. دستورالعملهای موجود در ایمیل را دنبال کنید تا حساب کاربری خود را تایید کنید و از آن برای استفاده از GitLab شروع کنید.
تغییر نام حساب کاربریتان
در گام بعدی، در نوار ناوبری سمت چپ روی Account کلیک کنید.
در اینجا، شما میتوانید احراز هویت دو عاملی را فعال کنید و نام کاربری خود را تغییر دهید. به صورت پیش فرض، نام اولین حساب کاربری مدیریتی root است. اما به دلایل امنیتی، بهتر است این نام را به نام دیگری تغییر دهید. شما هنوز دسترسی مدیریتی خواهید داشت؛ تنها چیزی که تغییر خواهد کرد، نام کاربری است. root را با نام کاربری مورد نظر خود جایگزین کنید.
برای اعمال تغییرات، بر روی دکمه Update Username کلیک کنید. سپس باید تغییرات را تایید کنید.
در دفعات بعدی که وارد گیت لب میشوید، به یاد داشته باشید که از نام کاربری جدید خود استفاده کنید.
افزودن یک SSH Key به حسابتان
میتوانید با SSH Keys با گیت در پروژههای گیت لبتان تعامل داشته باشید. برای این کار، باید کلید عمومی SSH خود را به حساب گیت لب خود اضافه کنید.
در نوار پیمایش سمت چپ، بر روی “SSH Keys” انتخاب کنید.
شما میتوانید کلید عمومی SSH خود را اینجا وارد کنید.
اگر قبلاً یک جفت کلید SSH در لوکال کامپیوتر خود ایجاد کردهاید، میتوانید کلید عمومی را با استفاده از دستور زیر مشاهده کنید:
cat ~/.ssh/id_rsa.pub Output ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
این متن را کپی کنید و در تکست باکس Key درون نمونهی گیتلبتان وارد کنید.
اگر پیامی متفاوت دریافت کردید، این بدان معنی است که هنوز جفت کلید SSH را در رایانه خود پیکربندی نکردهاید:
Output cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
اگر این اتفاق افتاد، میتوانید یک جفت کلید SSH ایجاد کنید با وارد کردن دستور زیر:
Ssh-keygen
پیشفرض را بپذیرید و به صورت اختیاری یک رمز عبور برای امن کردن کلید محلی وارد کنید
Output Generating public/private rsa key pair. Enter file in which to save the key (/home/sammy/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sammy/.ssh/id_rsa. Your public key has been saved in /home/sammy/.ssh/id_rsa.pub. The key fingerprint is: SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 [email protected] The key's randomart image is: +---[RSA 2048]----+ | ..%o==B| | *.E =.| | . ++= B | | ooo.o . | | . S .o . .| | . + .. . o| | + .o.o ..| | o .++o . | | oo=+ | +----[SHA256]-----+ حالا میتوانید کلید عمومی خود را به صورت مشابه مثال قبل و با وارد کردن این دستور مشاهده کنید cat ~/.ssh/id_rsa.pub Output ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
این بلوک متن را در تکست باکس Key درون نسخهی گیتلبتان وارد کنید. عنوانی توصیفی برای کلید SSH خود انتخاب کنید و بر روی دکمه “Add key” کلیک کنید.
حالا شما قادر هستید از دستگاه محلی خود به مدیریت پروژههای گیت لب و ریپازیتوریهای خودتان بپردازید بدون اینکه نیاز به ارائه مجوزهای حساب کاربری GitLab خود داشته باشید.
گام ششم محدود کردن یا غیرفعال کردن ثبتنامهای عمومی
با تنظیمات اولیه شما، هر کسی میتواند صفحه لندینگ نسخهی گیت لب شما را ببیند، یک حساب کاربری بسازد. این ممکن است زمانی مورد نیاز باشد که شما قصد دارید یک پروژه عمومی را میزبانی کنید. با این حال، بسیاری اوقات تنظیمات محدود کنندهتری مد نظر است.
برای شروع، با کلیک بر روی منوی همبرگری در نوار ناوبری بالا و انتخاب گزینه Admin از منوی Drop Down، به محدودهی مدیریتی بروید.
از نوار پیمایش سمت چپ، گزینه Settings را انتخاب کنید.
شما به تنظیمات سراسری برای نسخهی گیت لب خودتان هدایت میشوید. در اینجا، میتوانید تنظیمات متعددی را تغییر دهید که بر روی امکان ثبتنام کاربران جدید و سطح دسترسی آنها تأثیر میگذارد.
غیر فعال کردن ثبت نامها
اگر میخواهید ثبتنام کاربران را کاملاً غیرفعال کنید، به بخش Sign-up Restrictions بروید و برای مشاهده گزینهها، روی Expand کلیک کنید.
گزینه Sign-up enabled را انتخاب نکنید.
بعد از انجام تغییرات، روی دکمه Save changes کلیک کنید.
بخش ثبتنام اکنون از صفحه لندینگ گیت لب حذف شده است.
محدودیت در ایجاد پروژه
بطور پیشفرض، کاربران جدید میتوانند تا ۱۰ پروژه ایجاد کنند. اگر میخواهید به کاربران جدید امکان مشاهده و مشارکت در پروژهها را بدهید، اما میخواهید دسترسی آنها به ایجاد پروژههای جدید محدود شود، میتوانید این کار را در بخش Account and Limit Settings انجام دهید.
در داخل، میتوانید محدودیت پیشفرض پروژهها را به ۰ تغییر دهید تا به طور کامل امکان ایجاد پروژه برای کاربران جدید غیرفعال شود.
شما می توانید محدودیتهای پروژه را از طریق تنظیمات Account and limit به صفر برسانید.
کاربران جدید هنوز میتوانند قادر به افزودن پروژهها به صورت دستی باشند و دسترسی به پروژههای پابلیک و داخلی ایجاد شده توسط سایر کاربران دارند.
بعد از آپدیت، به یاد داشته باشید که روی دکمه Save changes کلیک کنید.
کاربران جدید حالا قادر به ایجاد اکانت خواهند بود، اما قادر به ایجاد پروژه نخواهند بود.
تمدید گواهی نامههای Let’s Encrypt
به صورت پیش فرض، گیت لب یک تسک زمانبندی شده برای تمدید گواهی نامههای Let’s Encrypt پیکربندی کرده که هر چهار روز بعد از نیمه شب دقیقا در زمان مشخص شده و برای دامنه مشخص شده در external_url اجرا میشود. این تنظیمات را میتوانید با ویرایش فایل /etc/gitlab/gitlab.rb تغییر دهید.
برای مثال اگر میخواهید هر ۷ روز در ساعت ۱۲:۳۰ تمدید کنید، باید برای اینکار کانفیگش کنید. ابتدا، فایل زیر را باز کنید:
sudo nano /etc/gitlab/gitlab.rb
سپس، خطوط زیر را در این فایل مشخص کنید، # را حذف کنید و آن را با خطوط زیر آپدیت کنید:
... ################################################################################ # Let's Encrypt integration ################################################################################ # letsencrypt['enable'] = nil letsencrypt['contact_emails'] = ['sammy@digitalocean'] # This should be an array of email addresses to add as contacts # letsencrypt['group'] = 'root' # letsencrypt['key_size'] = 2048 # letsencrypt['owner'] = 'root' # letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www' # See http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal for more on these settings letsencrypt['auto_renew'] = true letsencrypt['auto_renew_hour'] = "12" letsencrypt['auto_renew_minute'] = "30" letsencrypt['auto_renew_day_of_month'] = "*/7" ...
همچنین میتوانید تمدید خودکار را با تغییر letsencrypt[‘auto_renew’] به false غیرفعال کنید.
... letsencrypt['auto_renew'] = false ...
در صورت فعال بودن تمدید خودکار، نیازی به نگرانی درباره وقفههای سرویس نخواهید داشت.
نتیجه گیری
یک نسخهی گیت لب میزبانی شده بر روی سرورتان دارید که کار میکند. میتوانید پروژههای جدید خود را در آن ایمپورت یا ایجاد کرده و سطح دسترسی مناسبی برای اعضای یک تیم پیکربندی کنید. گیت لب به طور منظرم فیچرهایی اضافه میکند و آنها را برای پلتفرمش آپدیت میکند، بنابراین صفحه خانه پروژه را بررسی کنید تا مطمئن شوید که گیت لب شما نسبت به بهبودها و اطلاعیههای آن آپدیت است.