Git
Chapters ▾ 2nd Edition

4.5 گیت روی سرور - دیمن گیت

دیمن گیت

در مرحله بعد یک دیمن میزبان مخازن را با پروتکل «گیت» راه خواهیم انداخت. این انتخاب رایج برای دسترسی سریع و تصدیق هویت نشده به داده‌های گیتتان است. یادتان باشد که از آنجایی که این یک سرویس تصدیق هویت شده نیست، هر چیزی که بر پایه این پروتکل در شبکه میزبانی شود، عمومی است.

اگر این پروتکل را روی سروری خارج از فایروال خود اجرا می‌کنید، بهتر است فقط برای پروژه‌هایی که به صورت عمومی برای تمام جهان قابل مشاهده است استفاده شود. اگر سروری که با آن سروکار دارید درون فایروالتان است، ممکن است از آن برای پروژه‌های که تعداد کثیری از مردم یا کامپیوترها (یکپارچه‌سازی مداوم یا سرورهای ساخت) به آن دارند دسترسی فقط-خواندن استفاده کنید، زمانی که نخواهید برای هر کدام یک کلید SSH اضافه کنید.

در هر صورت نصب و راه‌اندازی پروتکل گیت نسبتاً آسان است. اصولاً، لازم است این دستور را مانند دیمن‌های دیگر (دیمنیزه) اجرا کنید:

$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/

آپشن --reuseaddr به سرور این امکان را می‌دهد که بدون اینکه لازم باشد تا اتصالات قدیمی تایم-اوت دهند ریسارت شود، مادامی که آپشن --base-path به مردم اجازه می‌دهد تا بدون وارد کردن کامل مسیر ورودی پروژه را کلون کنند و مسیر در آخر به دیمن گیت خواهد گفت در کجا به دنبال مخازن برای خروجی گرفتن بگردد. اگر فایروال دارید، مستلزم خواهید بود که تا راهی بر روی پورت ۹۴۱۸ روی آن باز کنید.

با توجه به سیستم‌عاملی که استفاده می‌کنید، چندین راه برای دیمنیزه کردن این فرآیند دارید.

از آنجایی که systemd یکی از رایج‌ترین اینیت‌سیستم‌ها بین توزیع‌های مدرن لینوکس است،‌ می‌توانید از آن برای این کار استفاده کنید. خیلی ساده، فایلی را با محتویات زیر در /etc/systemd/systemm/git-daemon.service قرار دهید:

[Unit]
Description=Start Git Daemon

[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/

Restart=always
RestartSec=500ms

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon

User=git
Group=git

[Install]
WantedBy=multi-user.target

ممکن است متوجه شده باشید که دیمن گیت اینجا با git،‌ هم به عنوان گروه و کاربر، شروع شده است. آن را با توجه به نیاز خود اصلاح کنید و مطمئن شوید که کاربر نام برده در سیستم وجود دارد. همچنین، چک کنید که باینری گیت در مسیر /usr/bin/git قرار داشته باشد و اگر لازم است مسیرش را تغییر دهید.

در آخر، دستور systemctl enable git-daemon را اجرا خواهید کرد تا این سرویس به صورت خودکار در موقع بوت سیستم نیز اجرا شود، و همچنین می‌توانید این سرویس را، به ترتیب با دستورهای systemctl start git-daemon و systemct stop git-daemon، شروع یا متوقف کنید.

بعد، باید به گیت بگویید که برای کدام مخازن اجازه دسترسی بدون تصدیق هویت وجود داشته باشد. می‌توانید این کار را برای هر مخزن با ساخت یک فایل به نام git-daemon-export-ok انجام دهید.

$ cd /path/to/project.git
$ touch git-daemon-export-ok

حضور آن فایل به گیت می‌گوید که میزبانی این پروژه بدون تصدیق هویت مشکلی ندارد.