Налаштування gitweb / apache2


10

Нещодавно я почав зберігати код, який пишу на локальному сервері, який я маю вдома.

Я сподівався запустити примірник gitweb вдома, щоб я міг бачити коміти і відстежувати прогрес з іншими своїми товаришами по команді.

Я спробував підручники сервера в Інтернеті, не пощастивши. Я хотів би отримати доступ до gitwebexample.com/git

Я хотів би розмістити свій код /code/git

Буду вдячний за будь-яку допомогу! Будь ласка, намагайтеся бути чіткими, оскільки це явно не знаю, що я роблю. Я прочитав тонни статей.

Будь ласка і дякую.

Відповіді:


6

Частина gitweb:

Вам потрібно встановити пакет gitweb sudo apt-get install gitweb

Тоді вам доведеться відредагувати конфігураційний файл apache gitweb

$EDITOR /etc/apache2/conf.d/gitweb

змінити рядок Alias /gitweb /usr/share/gitweb на

Alias /git /usr/share/gitweb

відкрити /etc/gitweb.confфайл:

ви повинні змінити лінію $projectroot ".."на $projectroot "/code/git"

і змінити будь-яку іншу рядок , що містить , /gitwebщоб /git , наприклад ,

$stylesheet = "/gitweb/gitweb.css";

до

$stylesheet = "/git/gitweb.css";

потім перезавантажте веб-сервер apache sudo /etc/init.d/apache2 horse-reload

Сама частина GIT :

Я настійно рекомендую використовувати гітоз ( http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way )

ПАМ'ЯТАЙТЕ , якщо використовувати Gitosis лінії $projectrootв /etc/gitweb.confповинно бути

$projectroot = "/home/git/repositories/";

Ви можете знайти докладну інформацію про те, як налаштувати гітоз на веб-сайті http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

опис повної настройки гітозу занадто довго для цієї відповіді.

Якщо вам потрібна додаткова допомога щодо гітозу, напишіть мені коментар

Щоб виправити проблеми з дозволом apache, можливо, потрібно буде зробити:

adduser www-data git
chgrp -R git /home/git/repositories

яка різниця між git та gitosis.
myusuf3

gitosis - це сценарій налаштування безпечного хостингу для git. (автентифікуйте користувачів за допомогою ssh та інших матеріалів.) Її симпатичний напрямок вперед зі спеціальним сховищем git, яке містить конфігурацію. У цій конфігурації ви можете налаштувати інші сховища git
aatdark

це мені цікаво. Ви можете змінити свою відповідь, щоб вона включала налаштування гітозу?
myusuf3

scie.nti.st/2007/11/14/… дуже докладно (я використовував це для себе). Якщо у вас є проблема на одному кроці, напишіть мені коментар
aatdark

0

Ось що я зробив для установки gitwebна Ubuntu 14.04 - з SSL та автентифікацією користувачів системи з pwauth. За замовчуванням gitwebвикористовується a /etc/gitweb.conf, який очікує gitпроектів у /var/lib/git.

Тому я спробував помістити свої gitрепости сюди, тому в цьому прикладі нам не потрібно змінюватись /etc/gitweb.conf- моє /var/lib/gitвиглядає так:

$ ls -la /var/lib/git/
total 12
drwxrwxrwx  3 root          root          4096 Apr  9 16:01 .
drwxr-xr-x 75 root          root          4096 Apr  7 17:31 ..
lrwxrwxrwx  1 myuser        myuser        28 Apr  9 16:01 gitweb.cgi -> /usr/share/gitweb/gitweb.cgi
drwxrwsr-x  7 myuser        www-data      4096 Apr 10 17:50 testrepo.git

Тож окрім репостів, вам потрібно буде також посилатись /usr/share/gitweb/gitweb.cgiна цей каталог ...

Потім ви можете використовувати наступне як /etc/apache2/sites-available/gitw-ssl.conf:

<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
    ServerAdmin webmaster@localhost
    ServerName localhost
    HeaderName HEADER
    DocumentRoot /var/www/html

    LogLevel info
    ErrorLog ${APACHE_LOG_DIR}/error-gw.log
    CustomLog ${APACHE_LOG_DIR}/access-gw.log combined

    SSLEngine on
    SSLCertificateFile  /etc/apache2/ssl/my.crt
    SSLCertificateKeyFile /etc/apache2/ssl/my.key
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
      SSLOptions +StdEnvVars
    </Directory>

    <IfModule mod_authnz_external.c>
      # old style:
      AddExternalAuth pwauth /usr/sbin/pwauth
      SetExternalAuthMethod pwauth pipe
      # new style:
      #DefineExternalAuth pwauth pipe /usr/sbin/pwauth
    </IfModule>

    # as more specific, /gitweb/static should go first
    Alias /gitweb/static /usr/share/gitweb/static
    Alias /gitweb /var/lib/git
    # gitweb.cgi alias is no dice - symlink is needed:
    Alias gitweb.cgi /usr/share/gitweb/gitweb.cgi
    <Directory /var/lib/git>
      Options +FollowSymlinks +ExecCGI
      SSLRequireSSL
      AuthType basic
      AuthName "Private git repository"
      AuthBasicProvider external
      AuthExternal pwauth
      Require valid-user
      AddHandler cgi-script .cgi
      DirectoryIndex gitweb.cgi
    </Directory>

    ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
    <Directory "/usr/lib/git-core/">
      SetEnv GIT_PROJECT_ROOT /var/lib/git
      SetEnv GIT_HTTP_EXPORT_ALL
      Options +ExecCGI
      SSLRequireSSL
      AuthType basic
      AuthName "Private git repository"
      AuthBasicProvider external
      AuthExternal pwauth
      Require valid-user
    </Directory>

  </VirtualHost>
</IfModule>

І нарешті ви можете зробити:

# not sure if also `fcgid auth_digest` are needed:
sudo a2enmod ssl cgi alias env rewrite
sudo a2ensite gitw-ssl.conf
# if not `reload`, use `restart`:
sudo service apache2 reload

Після цього він gitwebповинен бути доступний https://localhost/gitweb/(наприклад, https://localhost/gitweb/?p=testrepo.git;a=summary); і ви повинні мати можливість клонуватись (у разі самостійно підписаного сертифіката SSL) за допомогою:

GIT_SSL_NO_VERIFY=1 git clone https://myuser@localhost/git/testrepo.git
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.