در بسیاری از پروژهها معمولاً از GitHub یا GitLab به عنوان مخزن مرکزی برای مدیریت کد استفاده میکنیم. اما گاهی به دلایل مختلف مانند محدودیت اینترنت یا تحریمها ممکن است دسترسی به این سرویسها ممکن نباشد.
در چنین شرایطی خوشبختانه Git همچنان به خوبی کار میکند، چون Git اساساً یک سیستم کنترل نسخه توزیعشده است و وابسته به GitHub نیست.
در این مقاله یاد میگیریم چگونه بدون استفاده از GitHub، کدهای خود را مستقیماً از سیستم لوکال به سرور لینوکس منتقل کنیم و بین آنها Push و Pull انجام دهیم.
سناریوی مسئله
فرض کنید:
- پروژه شما روی سیستم لوکال در حال توسعه است
- نسخهای از پروژه روی سرور لینوکس اجرا میشود
- دسترسی به GitHub ندارید
- میخواهید تغییرات را مستقیماً از لوکال روی سرور deploy کنید
ساختار پروژه روی سرور به شکل زیر است:
/var/www/your_website
و سرور از طریق SSH روی پورت 1234در دسترس است.
مرحله اول: ایجاد یک مخزن Git مرکزی روی سرور
بهترین روش برای مدیریت کد بین چند محیط استفاده از Bare Repository است.
ابتدا وارد سرور شوید:
ssh your_user@SERVER_IP -p 1234
سپس یک مخزن git ایجاد کنید:
mkdir -p /var/git/your_website.git
cd /var/git/your_website.git
git init --bare
این مخزن فقط برای push و pull استفاده میشود و فایل اجرایی پروژه در آن قرار نمیگیرد.
مرحله دوم: اتصال پروژه لوکال به سرور
در سیستم لوکال وارد پوشه پروژه شوید و یک remote جدید اضافه کنید:
git remote add server ssh://your_user@SERVER_IP:1234/var/git/your_website.git
برای بررسی ریموتها:
git remote -v
مرحله سوم: ارسال کد از لوکال به سرور
حالا میتوانید کدهای خود را به سرور push کنید:
git push server main
در این مرحله تمام تغییرات از سیستم لوکال به مخزن Git روی سرور ارسال میشود.
مرحله چهارم: Deploy خودکار روی سرور
برای اینکه بعد از هر push پروژه روی سرور بهروزرسانی شود، میتوانیم از Git Hook استفاده کنیم.
روی سرور فایل زیر را ایجاد کنید:
nano /var/git/your_website.git/hooks/post-receive
و این کد را داخل آن قرار دهید:
#!/bin/bash
GIT_WORK_TREE=/var/www/your_website git checkout -f main
سپس آن را اجرایی کنید:
chmod +x /var/git/your_website.git/hooks/post-receive
از این به بعد هر بار که push انجام دهید، پروژه در مسیر /var/www/your_websiteبهصورت خودکار آپدیت میشود.
نتیجه نهایی
حالا workflow شما به شکل زیر خواهد بود:
لوکال -> git push -> سرور -> deploy خودکار
یعنی بدون نیاز به GitHub میتوانید:
- کد را version control کنید
- تغییرات را روی سرور منتشر کنید
- پروژه را مدیریت کنید
مزایای این روش
استفاده از Git مستقیم بین لوکال و سرور چند مزیت مهم دارد:
- عدم وابستگی به سرویسهای خارجی
- مناسب برای محیطهای با اینترنت محدود
- deploy سریعتر
- کنترل کامل روی مخزن کد
جمعبندی
اگر دسترسی به GitHub یا GitLab ندارید، همچنان میتوانید با استفاده از Git و SSH یک workflow کاملاً حرفهای برای deploy پروژهها ایجاد کنید.
با ساخت یک bare repository روی سرور و اتصال آن به پروژه لوکال، بهراحتی میتوانید تغییرات را push کرده و پروژه را بهصورت خودکار روی سرور بهروزرسانی کنید.
این روش یکی از سادهترین و در عین حال قدرتمندترین راهکارها برای مدیریت کد در سرورهای لینوکسی است.
نظرات کاربران (0)
هنوز نظری ثبت نشده است. اولین نفری باشید که نظر میدهید!