Недавно я начал хранить код, который я пишу на локальном сервере у меня дома.
Я надеялся запустить экземпляр gitweb дома, чтобы видеть коммиты и отслеживать прогресс с другими моими товарищами по команде.
Я безуспешно пробовал онлайн-уроки по серверам. Я хотел бы, чтобы gitweb был доступен для example.com/git
. Я хотел бы, чтобы мой код был размещен в /code/git
. Пожалуйста, постарайтесь быть максимально понятным, потому что я явно не знаю, что я делаю. Я прочитал тонны статей.
Пожалуйста и спасибо.
часть gitweb:
Вы должны установить пакет gitweb с помощью sudo apt-get install gitweb
Затем необходимо отредактировать файл конфигурации apache gitweb
[ 110] измените строку 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
Я настоятельно рекомендую использовать гитоз ( 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- простой и безопасный способ
, описывающий установку полного гитоза, слишком длинный это ответ.
Если вам нужна дополнительная помощь по поводу гитоза, напишите мне комментарий
Чтобы исправить проблемы с разрешением apache, может потребоваться:
adduser www-data git
chgrp -R git /home/git/repositories
Вот то, что я сделал для установки gitweb
на Ubuntu 14.04 - с SSL и аутентификацией пользователей системы с pwauth
. По умолчанию, gitweb
использование a /etc/gitweb.conf
, который ожидает git
проекты в /var/lib/git
.
Таким образом, я пытался поместить мой git
repos в здесь, таким образом, в этом примере мы не должны изменяться /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
Так, около Вашего repos Вам было бы нужно к символьной ссылке /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