Chapters ▾ 2nd Edition

4.7 گیت روی سرور (Git on the server) - گیت‌وب (GitWeb)

گیت‌وب (GitWeb)

حال که به پروژه‌تان دسترسی پایه‌ای خواندن/نوشتن و فقط خواندنی دارید، ممکن است بخواهید یک نمایشگر ساده مبتنی بر وب راه‌اندازی کنید. گیت همراه با یک اسکریپت CGI به نام GitWeb عرضه می‌شود که گاهی برای این منظور استفاده می‌شود.

The GitWeb web-based user interface
نمودار 49. The GitWeb web-based user interface

اگر می‌خواهید ببینید GitWeb برای پروژه‌تان چگونه خواهد بود، گیت دستوری دارد که می‌تواند یک نمونه موقت راه‌اندازی کند، البته به شرطی که وب‌سرور سبکی مانند lighttpd یا webrick روی سیستم‌تان نصب باشد. در سیستم‌های لینوکس، معمولاً lighttpd نصب است، پس ممکن است با تایپ کردن git instaweb در پوشه پروژه‌تان بتوانید آن را اجرا کنید. اگر از macOS استفاده می‌کنید، نسخه Leopard به صورت پیش‌فرض Ruby دارد، پس احتمالاً webrick بهترین گزینه برای شماست. برای راه‌اندازی instaweb با یک وب‌سرور غیر از lighttpd می‌توانید از گزینه --httpd استفاده کنید.

$ git instaweb --httpd=webrick
[2009-02-21 10:02:21] INFO  WEBrick 1.3.1
[2009-02-21 10:02:21] INFO  ruby 1.8.6 (2008-03-03) [universal-darwin9.0]

این دستور یک سرور HTTPD روی پورت ۱۲۳۴ راه‌اندازی می‌کند و به طور خودکار یک مرورگر وب را باز می‌کند که صفحه مربوطه را نمایش می‌دهد. کار ساده‌ای است. وقتی کارتان تمام شد و می‌خواهید سرور را خاموش کنید، می‌توانید همان دستور را با گزینه --stop اجرا کنید.

$ git instaweb --httpd=webrick --stop

اگر می‌خواهید رابط وب را دائماً روی یک سرور برای تیم‌تان یا پروژه متن‌باز میزبانی‌شده راه‌اندازی کنید، باید اسکریپت CGI را طوری تنظیم کنید که توسط وب‌سرور معمولی شما سرو شود. برخی توزیع‌های لینوکس بسته‌ای به نام gitweb دارند که ممکن است بتوانید با apt یا dnf آن را نصب کنید، پس بهتر است ابتدا این روش را امتحان کنید. ما به سرعت نصب دستی GitWeb را مرور می‌کنیم. ابتدا باید کد منبع گیت را دریافت کنید که GitWeb همراه آن است و سپس اسکریپت CGI سفارشی را بسازید:

$ git clone https://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/srv/git" prefix=/usr gitweb
    SUBDIR gitweb
    SUBDIR ../
make[2]: `GIT-VERSION-FILE' is up to date.
    GEN gitweb.cgi
    GEN static/gitweb.js
$ sudo cp -Rf gitweb /var/www/

توجه کنید که باید به دستور بگویید مخازن گیت شما کجا قرار دارند، با استفاده از متغیر GITWEB_PROJECTROOT. حالا باید به آپاچی بگویید که از CGI برای این اسکریپت استفاده کند، برای این کار می‌توانید یک VirtualHost اضافه کنید:

<VirtualHost *:80>
    ServerName gitserver
    DocumentRoot /var/www/gitweb
    <Directory /var/www/gitweb>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
</VirtualHost>

دوباره تأکید می‌کنیم که GitWeb را می‌توان با هر وب‌سرور دارای قابلیت CGI یا Perl سرو کرد؛ اگر ترجیح می‌دهید از چیز دیگری استفاده کنید، راه‌اندازی آن دشوار نخواهد بود. در این مرحله باید بتوانید با مراجعه به آدرس http://gitserver/ مخازن خود را به صورت آنلاین مشاهده کنید.

scroll-to-top