راه اندازی Gitea روی سرور اختصاصی

سلام. این اولین پست من توی ویرگول هستش و داستان از این قرار بود.با توجه به تحریم جدید گیتلب و بلاک شدن بعضی اکانتای ایرانی ما مجبور شدیم و همچنین با اینکه هممون داشتیم از هم دور میشدیم و مجبور بودیم کار رو به صورت دورکاری انجام بدیم و نمیتونستیم ریسک اینو که پروژه ها رو روی گیتلب نگه داریم، بکنیم. من بک اند کار تیم هستم ولی خب علاقه به کارهای DevOps باعث شده بود قبلا روی یه سرور اختصاصی سرویس Gitea رو ران کنم و دوس داشتم :))))خب Gitea یه سرویس مدیریت مخازن شبیه به گیتهاب و گیتلب هستش (رابط کاربریش بیشتر شبیه به گیتهاب هست) و چرا خوبه؟چون گیت تی به منابع زیادی نیاز نداره و شما روی سرور با رم ۱ گیگابایت و ۱ سی پی یو هم میتونید اونو ران کنید. گیتلب برای اجرا حداقل به ۴ گیگ رم نیاز داره (برای کارای شرکتی خیلی خوبه ولی برای یه تیم چهار پنج نفره با درآمد فعلا پایین خب منطقی نیست)تصمیم گرفتم نصب گیت تی رو بیام و به عنوان اولین پستم بنویسم. چون واقعا منابع خوب فارسی وجود نداشتن.خب یکم بیشتر از گیت تی بگم براتونگیت تی یه نرم افزار اوپن سورس و کراس پلتفرم هستش که با زبان Go نوشته شده و شما میتونید خیلی راحت اون رو روی سرور خودتون نصب کنید.تقریبا تمامی امکانات گیت هاب رو حداقل میدونم داره مثل تعریف ایشو ها و غیره. همچنین میتونید هم ریپوی پرایوت و هم پابلیک ایجاد کنید.رابط کاربری اون خیلی به گیتهاب شبیه هستش و قطعا با اون احساس غریبی نمیکنید :)))))مهم ترین امکانش برای من حداقل این بود که با نرم افزار هایی مثل Drone و Jenkins میشه CiCd رو روی اون فعال کرد و از امکانات دیپلوی و این مناسبات :) هم استفاده کرد.میتونید به راحتی تمامی بخش های اون مثل لوگو، تب ها، تم و بقیه موارد اون رو شخصی سازی کنید (خدا قسمت کنه توی قسمت دوم براتون از کاستومایز سازیش میگم :)))قسمت جالب ماجرا هم اینه که زبان فارسی هم داره (من متاسفانه هنوز استفاده نکردم ولی خب توی ترجمه هاش دیدم که هستش که اینم توی قسمت دوم بررسی میکنم)سناریو رو براتون بگمماجرا از این قراره که ما در واقع دوتا سرور داریم یکی برای سرور گیت تی و یکی برای سرور اصلی که پروژه هامون قراره روی اون دیپلوی بشن.سرور گیت تی رو به عنوان repo در نظر میگیریم و توی قسمت بعد دیپلوی رو توضیح میدم (به امید خدا :))توی مرحله اول باید بریم سراغ نصب روی سرور repo چیزایی که روی سرور نیاز داریمیه سری موارد باید روی سرور نصب باشن که پایین لیست میکنم.وب سرور (ترجیحا nginx)سرویس دیتابیس (من Mysql استفاده میکنم ولی خب postgres و بقیه چیزا که توی سایت خودش هست رو هم میتونید استفاده کنید)قطعا گیت :)))موارد بیشتری نیاز نیست البته شاید بعدا نیاز بشه که بهتون میگم.شروع کار و نصب گیت تینصب گیت تی روش های زیادی داره و ما چون اوبونتو سرور داریم و روی داکیومنت های خودش نوشته که باید از روش باینری و با فایل make نصب کنیم. نصبش راحته و عملا کار خاصی نداره.از طریق دستورات زیر اول فایل گیت تی رو دانلود میکنیم و بعد به اون مجوز اجرا شدن رو میدیم.wget -O gitea https://dl.gitea.io/gitea/1.12.5/gitea-1.12.5-linux-amd64 chmod +x giteaبعد از دانلود باید یک کلید بسازیم و اون رو تایید کنیم. از طریق دوتا دستور زیرgpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2gpg --verify gitea-1.12.5-linux-amd64.asc gitea-1.12.5-linux-amd64بعد از تایید کلید باید یک کاربر برای اجرای گیت تی بسازیم. با دستورات زیر میتونید کاربر مورد نظر رو بسازیدadduser \ --system \ --shell /bin/bash \ --gecos 'Git Version Control' \ --group \ --disabled-password \ --home /home/git \ gitدقت کنید حتما با سودو دستور بالا رو اجرا کنید.بعد از ساخت کاربر باید یک سری پوشه رو برای فایل های کانفیگ گیت تی بسازیم. اول کد زیر بعدش یکی یکی توضیح میدمساخت مسیر های گیت تیخط اول سه پوشه برای کانفیگ های سفارشی، دیتا و لاگ های گیت تی هستش و دو خط بعدی هم مربوط به دسترسی ها به این پوشه هاخط چهارم هم برای کانفیگ اصلی گیت تی هستش و دو خط بعدیش برای دسترسی های مربوط به اون پوشهخب تا اینجا تقریبا ما مراحل اولیه نصب گیت تی رو انجام دادیم. حالا باید اول فایل باینری که دانلود کردیم رو کپی کنیم به مسیر زیر و بعدش سرویس راه اندازی گیت تی رو توی سرور بسازیم.cp gitea /usr/local/bin/giteaخب میرسیم به مرحله راه اندازی سرویس گیت تیراه های مختلفی وجود داره ولی چیزی که توی داکیومنت خود گیت تی هم پیشنهاد شده استفاده از سرویس لینوکس هستش که میتونیم مدیریت بهتری هم روش داشته باشیم.با دستور زیر یه فایل به عنوان سرویس روی سرور خودتون میسازید.sudo nano /etc/systemd/system/gitea.serviceو بعدش میتونید طبق فایل gitea.service موارد مورد نیاز خودتون رو توی سرویسی که ساختید اضافه کنید.حالا با دستور زیر باید اول سرویسی که ساختید رو فعال کنید و بعد اون رو اجرا کنید.sudo systemctl enable gitea.service sudo systemctl start gitea.serviceخب خب خباگه همه مراحل رو درست اجرا کرده باشید و سرویس شما در حال اجرا باشد باید روی پورت 3000 سرور به گیت تی دسترسی داشته باشید.مراحل نصب نهاییروی Register کلیک کنید تا صفحه نصب گیت تی رو با رابط کاربری ببینید :)))خب اینجا باید یه دیتابیس و یوزر بسازید که توی این صفحه وارد کنید همچنین نوع دیتابیس هم باید وارد کنید.برای نصب mysql میتونید از اینجا ببینید.مشخصات گیت تی خودتون رو وارد کنید و در زیر میتونید یه حساب ادمین هم بسازید که پیشنهاد میکنم بسازید.بعد از نصب سرور گیت تی شما کامل در اختیارتون هست.(روی پورت 3000)چند نکتهاگر میخواید که روی یه ساب دامنه یا حتی دامنه گیت تی شما کار کنه توی قسمت SSH Server Domain حتما دامنه خودتون رو وارد کنید و همچنین قسمت Git Base URL هم دامنه رو با http یا https وارد کنید. (این موارد به کانفیگ وب سرور شما بستگی داره که در ادامه توضیحاتی بهتون میدم)کانفیگ Nginxبرای اینکه نیاز به پورت روی سرور نباشه و دامنه یا ساب دامنه شما ریدایرکت بشه روی پورت 3000 که پورت گیت تی هست باید یک سری کارها انجام بدید.در مرحله اول باید یه فایل کانفیگ دامنه روی nginx بسازید.sudo nano /etc/nginx/sites-available/gitea.example.irبعد از ساخت کد زیر رو توی فایل بنویسید.server { listen 80 default_server; listen [::]:80 default_server; root /var/www/gitea.example.ir/html; index index.html index.htm index.nginx-debian.html; server_name gitea.example.ir www.gitea.example.ir; location / { # try_files $uri $uri/ =404; proxy_pass http://127.0.0.1:3000/; } }بعد باید فایلی که ساختید رو به پوشه sites-enabled لینک کنید از طریق دستور زیرsudo ln -s /etc/nginx/sites-available/gitea.example.ir /etc/nginx/sites-enabled/خب بعد از اینکار حتما nginx خودتون رو ریستارت کنید.sudo systemctl restart nginxحالا وقتی دامنه یا ساب دامنه خودتون رو وارد کنید سرور گیت تی شما اجرا میشه (البته در صورتی که دامنه شما بیاد روی ip سرور)تمااااااام و سرور گیت تی شما نصب شد :)))))امیدوارم براتون کاربردی بوده باشه، نظراتتون رو مطرح کنید در صورت توان کمکتون میکنم.اگه نوشتارم بد بود ببخشید دیگ اولین مطلبم هست و ممنون میشم نظرات خودتون رو مطرح کنید.تا قسمت بعدی خدانگهدار :)))))))