
به اشتراک بگذارید
در دنیای مدرن توسعه وب، زمان طلاست و امنیت، الماس؛ جابهجایی دستی فایلها با ابزارهایی مثل FTP دیگر نه تنها خستهکننده است، بلکه ریسکهای امنیتی بزرگی را به همراه دارد. حتماً برای شما هم پیش آمده که هنگام آپلود فایلها با FTP، اینترنت قطع شده یا فایلی به اشتباه بازنویسی شده باشد. مدیریت سرور مجازی با گیت راهکاری است که این کابوسها را پایان میدهد. با استفاده از این متد، شما به جای انتقال تکتک فایلها، کل پروژه را با یک دستور ساده به سرور منتقل میکنید.
در واقع، ما درباره یک تغییر پارادایم صحبت میکنیم؛ جایی که سرور شما نه فقط یک فضای ذخیرهسازی، بلکه بخشی هوشمند از چرخه توسعه شماست.
💡 مزایای مدیریت سرور با Git در یک نگاه:
| ویژگی | روش سنتی (FTP) | روش مدرن (Git) |
|---|---|---|
| سرعت انتقال | کند (ارسال تکتک فایلها) | بسیار سریع (فقط تغییرات) |
| امنیت | پایین (پورتهای ناامن) | بسیار بالا (پروتکل SSH) |
| قابلیت بازگشت | غیرممکن یا سخت | آنی با یک دستور (Rollback) |
| اتوماسیون | ندارد | کامل با Git Hooks |
- ✅ CTA: برای تجربه بهترین کیفیت، سرویسهای سرور مجازی وبداده زیرساختی ایدهآل برای این متد هستند.
حتماً زمانی که این مقاله را باز کردهاید، به دنبال راهی هستید که از شر آپلودهای طولانی و استرسزای فایلها خلاص شوید. اگر به دنبال یک آموزش گامبهگام و عملی برای استقرار خودکار سایت روی سرور هستید، این مقاله دقیقاً برای شماست. ما از صفر مطلق شروع میکنیم و تا پیادهسازی پیشرفتهترین هوکهای گیت پیش میرویم؛ پس همراه ما باشید… 😉👇
آنچه در این مقاله میخوانید:

مدیریت حرفه ای سرور با گیت چیست؟
در تعریف ساده، مدیریت حرفهای سرور با گیت یعنی استفاده از سیستم کنترل نسخه Git برای کنترل، انتقال و اجرای کدهای برنامهنویسی روی هاست یا سرور مجازی. در این روش، سرور شما دارای یک مخزن (Repository) است که با مخزن روی سیستم شخصی شما همگامسازی میشود. برخلاف مخازن معمولی که در GitHub میبینید، در سرور ما از نوع خاصی به نام “Bare” استفاده میکنیم که فقط حاوی تاریخچه تغییرات است و فایلهای اجرایی در جای دیگری قرار میگیرند.
این ساختار به شما اجازه میدهد تا یک خط لوله (Pipeline) ساده برای کد خود بسازید. تشبیه کاربردی آن مثل یک سیستم لولهکشی مستقیم از میز کار شما تا موتورخانه ساختمان (سرور) است؛ هر تغییری در شیر ورودی، بلافاصله در کل سیستم اعمال میشود.
نمودار جریان داده در مدیریت با گیت:
سیستم توسعهدهنده (Local PC)
⬇️ [git push live]
مخزن واسط در سرور (Bare Repo)
⬇️ [Git Hooks: Post-Receive]
پوشه نهایی سایت (Public_html)
⬇️ [Automation Scripts]
اجرای دستورات (npm install / restart nginx)
🔸 نکته فنی: طبق آمارهای سال 2025، بیش از 85٪ شرکتهای تکنولوژی محور از روشهای مبتنی بر Git برای استقرار استفاده میکنند تا پایداری سرویس خود را تضمین کنند.
چرا به مدیریت سرور مجازی با گیت نیاز داریم؟
چرا باید وقت خود را صرف یادگیری این روش کنید؟ پاسخ در سه کلمه خلاصه میشود: امنیت، سرعت و دقت. وقتی از جایگزین امن FTP یعنی گیت استفاده میکنید، عملاً احتمال هک شدن از طریق پورتهای ناامن انتقال فایل را به صفر میرسانید.
- یکپارچهسازی مداوم: هر بار که کدی را Push میکنید، سرور متوجه میشود و میتواند دستورات تکمیلی را اجرا کند.
- صرفهجویی در پهنای باند: گیت فقط بخشهای تغییر یافته فایلها را منتقل میکند؛ نه کل فایل را!
- مدیریت ورژن کد روی هاستینگ: شما همیشه میدانید چه کسی، در چه زمانی و چه تغییری روی سرور اعمال کرده است.
- امنیت با SSH: تمام انتقالات تحت پروتکل رمزنگاری شده SSH انجام میشود.
پیشنیازهای استقرار خودکار سایت روی سرور
قبل از شروع جادوگری با کدهای گیت، باید مطمئن شویم که ابزارهای لازم را در اختیار داریم. برای یک مدیریت حرفه ای سرور با گیت، موارد زیر الزامی است:
- یک سرور مجازی با سیستمعامل لینوکس (ترجیحاً Ubuntu یا CentOS): که میتوانید از وبداده تهیه کنید.
- نصب بودن Git روی سرور و سیستم محلی: (با دستور
apt install git). - دسترسی SSH به سرور: برای امنیت بیشتر و حذف پسورد.
- تنظیم کلید SSH برای گیت در سرور: این کار باعث میشود بدون نیاز به وارد کردن رمز عبور در هر بار Push، عملیات انجام شود.
سرور های مجازی وبداده
روی دکمه زیر کلیک کنید

آموزش استقرار خودکار سایت روی سرور
در این بخش همراه تیم وبداده باشید تا به صورت عملی و قدمبهقدم، فرآیند اتصال گیت به سرور لینوکس را طی کنیم. ما فرض میکنیم شما یک پروژه در سیستم خود دارید و میخواهید آن را به سرور منتقل کنید.
- 🔸 برای این هدف در این آموزش از 1 عدد سرور مجازی لینوکس و 1 پروژه نمونه استفاده کردهایم.
مرحله 1: ایجاد مخزن Bare روی سرور
ابتدا وارد سرور شوید و یک پوشه برای مخزن گیت بسازید. مخزن Bare فایلهای پروژه را مستقیماً نشان نمیدهد، بلکه فقط دیتابیس گیت است.
# وارد سرور شوید
ssh root@your_server_ip
# ایجاد پوشه مخزن
mkdir -p /var/repo/site.git
cd /var/repo/site.git
# مقداردهی اولیه به صورت Bare
git init --bare مرحله 2: آموزش کار با Git Hooks و خودکارسازی
اینجاست که جادو اتفاق میافتد. ما از هوک post-receive استفاده میکنیم. این اسکریپت بلافاصله بعد از اینکه شما کد را به سرور Push کردید، اجرا میشود.
فایلی به نام post-receive در پوشه hooks بسازید:
nano /var/repo/site.git/hooks/post-receive کد زیر را در آن قرار دهید:
#!/bin/bash
# مسیر فایلهای اجرایی سایت
TARGET="/var/www/html/my-project"
# مسیر مخزن گیت
GIT_DIR="/var/repo/site.git"
echo "🚀 Starting Deployment..."
# کپی کردن فایلها به پوشه اصلی
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
# رفتن به پوشه پروژه برای اجرای دستورات تکمیلی
cd $TARGET
# مثال برای پروژههای Node.js یا PHP
# npm install
# composer install --no-dev
# systemctl restart nginx
echo "✅ Deployment Successful!" دسترسی اجرا به فایل بدهید:
chmod +x /var/repo/site.git/hooks/post-receive مرحله 3: اتصال سیستم شخصی به سرور
حالا در سیستم خودتان (Local)، آدرس سرور را به عنوان یک “Remote” تعریف کنید:
# در پوشه پروژه خودتان روی کامپیوتر شخصی
git remote add live ssh://root@your_server_ip/var/repo/site.git
# اولین استقرار!
git push live master /var/www/html/my-project) روی سرور وجود دارد و دسترسیهای لازم را به یوزر گیت دادهاید.مدیریت امنیت و پیکربندیهای حساس (.env)
یکی از بزرگترین اشتباهات در مدیریت سرور مجازی با گیت، آپلود کردن فایلهای حساس مثل پسوردهای دیتابیس است. همیشه از فایل .gitignore استفاده کنید.
- فایلهای محیطی: فایل
.envرا هرگز در گیت قرار ندهید. این فایل را یک بار به صورت دستی روی سرور بسازید. - جایگزین امن FTP: با استفاده از SSH Key، دیگر نگران لو رفتن پسورد FTP خود نباشید؛ چون اصلاً پسوردی رد و بدل نمیشود.
| مورد | وضعیت در گیت | روش مدیریت |
|---|---|---|
| کدهای برنامه | Push شود | خودکار با دستور گیت |
| پسوردهای DB | ممنوع | فایل .env دستی روی سرور |
| پوشه node_modules | ممنوع | اجرای npm install در هوک |
نمونه موردی: نجات از فاجعه با Rollback
در سال 2024، یکی از مشتریان ما در وبداده در حین بهروزرسانی سایت فروشگاهی خود، با یک باگ بحرانی در بخش سبد خرید مواجه شد که باعث توقف فروش شد. اگر از FTP استفاده میکردند، بازگرداندن صدها فایل تغییر یافته ساعتها زمان میبرد.
اما به دلیل استفاده از مدیریت حرفه ای سرور با گیت، تیم فنی تنها با اجرای دستورات زیر در کمتر از 30 ثانیه سایت را به نسخه پایدار قبلی برگرداند:
روش اول: Rollback از سیستم محلی (توصیه میشود)
# مشاهده لیست commit ها
git log --oneline
# بازگشت به commit قبلی (یک نسخه قبل)
git reset --hard HEAD~1
# یا بازگشت به commit خاص
git reset --hard <commit-hash>
# ارسال اجباری به سرور
git push -f live master روش دوم: Rollback مستقیم روی سرور
# بازگشت به یک commit قبل
ssh root@your_server_ip "cd /var/repo/site.git && git --work-tree=/var/www/html/my-project checkout -f HEAD~1"
# یا بازگشت به commit خاص
ssh root@your_server_ip "cd /var/repo/site.git && git --work-tree=/var/www/html/my-project checkout -f abc1234" روش سوم: استفاده از Git Revert (بدون تغییر تاریخچه)
# ایجاد commit جدید که تغییرات قبلی را برمیگرداند
git revert HEAD
git push live master ⚠️ نکته مهم: تفاوت reset و revert:
- git reset: تاریخچه را تغییر میدهد (برای تیمهای کوچک مناسب است)
- git revert: درواقع commit جدیدی ایجاد میکند که تغییرات را برمیگرداند (برای تیمهای بزرگ امنتر است)
این یعنی اعتماد به نفس در توسعه؛ شما میدانید که راه بازگشت همیشه باز است.
سرور های مجازی وبداده
روی دکمه زیر کلیک کنید

چرا سرویسهای وبداده برای مدیریت با گیت عالی هستند؟
سرویسهای سرور مجازی وبداده با هدف ارائه بالاترین کارایی برای توسعهدهندگان طراحی شدهاند. ما زیرساختی را فراهم کردهایم که در آن:
- ✅ پورتهای پرسرعت 10Gbps: انتقال کدهای سنگین در چند ثانیه انجام میشود.
- ✅ دسترسی کامل root: برای نصب و پیکربندی هر نوع هوک و ابزار اتوماسیون.
- ✅ پایداری 99.9%: تا چرخه CI/CD شما هرگز متوقف نشود.
- ✅ پشتیبانی تخصصی: اگر در تنظیم کلید SSH یا هوکها به مشکل خوردید، تیم ما کنار شماست.
نتیجهگیری: آینده مدیریت سرور با Git
استفاده از مدیریت سرور مجازی با گیت نه تنها یک انتخاب فنی، بلکه یک ضرورت برای هر توسعهدهندهای است که به حرفهای بودن خود اهمیت میدهد. با حذف FTP و جایگزینی آن با استقرار خودکار سایت روی سرور، شما امنیت را به معنای واقعی کلمه لمس خواهید کرد و زمان بیشتری برای تمرکز روی نوشتن کدهای باکیفیت خواهید داشت.
ما در این مقاله آموختیم که چطور با استفاده از آموزش کار با Git Hooks، یک سیستم دیپلوی خودکار بسازیم که ریسکهای انسانی را به حداقل برساند. به یاد داشته باشید که در سالهای 2025 و 2026، اتوماسیون حرف اول را در دنیای وب میزند.
نکات کلیدی برای به خاطر سپردن:
- ✅ همیشه از Bare Repository برای سرور استفاده کنید
- ✅ Git Hooks قدرتمندترین ابزار برای اتوماسیون هستند
- ✅ SSH Keys امنیت را 10 برابر میکنند
- ✅ برای Rollback از
git resetیاgit revertاستفاده کنید - ✅ فایلهای حساس را هرگز در Git قرار ندهید
- ✅ از
.gitignoreبرای فایلهای غیرضروری استفاده کنید
امیدوارم این مقاله از بلاگ وبداده برای شما مفید بوده باشد. اگر هنوز در شروع مسیر هستید یا سوالی درباره تنظیمات اختصاصی سرور خود دارید، حتماً در بخش نظرات با ما در ارتباط باشید؛ تیم فنی ما مشتاقانه پاسخگوی شماست. 🚀
📋 چکلیست راهاندازی Git Deployment
- نصب Git روی سرور و سیستم محلی
- ایجاد SSH Key و افزودن به سرور
- ایجاد Bare Repository روی سرور
- ایجاد پوشه مقصد برای فایلهای سایت
- نوشتن اسکریپت post-receive hook
- تنظیم دسترسی اجرایی برای hook
- افزودن remote به پروژه محلی
- اولین Push و تست عملکرد
- تنظیم .gitignore برای فایلهای حساس
- تست Rollback و اطمینان از عملکرد
پرسشهای متداول کاربران از مدیریت سرور با Git
1- آیا مدیریت سرور مجازی با گیت برای هاستهای اشتراکی هم ممکن است؟
اکثر هاستهای اشتراکی اجازه دسترسی به SSH و Git Hooks را نمیدهند. برای این کار حتماً به یک سرور مجازی (VPS) نیاز دارید تا کنترل کامل روی اسکریپتها داشته باشید.
2- اگر در هنگام Push تداخلی (Conflict) پیش بیاید چه کنیم؟
در مخازن Bare معمولاً تداخلی پیش نمیآید چون شما مستقیماً روی سرور کد نمیزنید. اگر تداخلی باشد، گیت در سیستم شخصی شما اجازه Push نمیدهد تا ابتدا آن را حل کنید.
3- آیا میتوانم چندین شاخه (Branch) را مدیریت کنم؟
بله! شما میتوانید برای هر شاخه (مثل develop و master) یک پوشه مجزا در سرور و یک هوک متفاوت تعریف کنید تا محیط تست و عملیات از هم جدا باشند.
4- برای پروژههای بزرگ، سرعت گیت کم نمیشود؟
خیر؛ برعکس FTP، گیت فوقالعاده هوشمند است. در سال 2026 گیت همچنان سریعترین ابزار برای مدیریت تفاوت فایلها در پروژههای حجیم شناخته میشود.
5- چگونه چندین سرور را به صورت همزمان مدیریت کنم؟
میتوانید چندین remote تعریف کنید:
git remote add production ssh://user@prod-server/var/repo/site.git
git remote add staging ssh://user@stage-server/var/repo/site.git
# استقرار روی production
git push production master
# استقرار روی staging
git push staging develop 



