Chapters ▾ 2nd Edition

4.5 گیت روی سرور (Git on the server) - سرویس‌دهنده گیت (Git Daemon)

سرویس‌دهنده گیت (Git Daemon)

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

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

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

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

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

شما می‌توانید این فرآیند را به روش‌های مختلفی به صورت daemon اجرا کنید، بسته به سیستم‌عامل مورد استفاده.

از آنجایی که systemd رایج‌ترین سیستم init در توزیع‌های مدرن لینوکس است، می‌توانید از آن برای این منظور استفاده کنید. کافی است فایلی با محتویات زیر در مسیر /etc/systemd/system/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 اینجا با git به عنوان گروه و کاربر اجرا شده است. این موارد را متناسب با نیاز خود تغییر دهید و مطمئن شوید کاربر مربوطه روی سیستم وجود دارد. همچنین بررسی کنید که فایل اجرایی Git واقعاً در مسیر /usr/bin/git قرار دارد و در صورت لزوم مسیر را تغییر دهید.

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

در سیستم‌های دیگر، ممکن است بخواهید از xinetd، اسکریپتی در سیستم sysvinit یا روش دیگری استفاده کنید — به شرطی که بتوانید آن دستور را به صورت daemon شده اجرا و مدیریت کنید.

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

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

وجود این فایل به Git اعلام می‌کند که ارائه این پروژه بدون نیاز به احراز هویت مجاز است.

scroll-to-top