Thiết lập gitweb / apache2


10

Gần đây tôi đã bắt đầu lưu trữ mã, mà tôi viết trên một máy chủ cục bộ tôi có ở nhà.

Tôi đã hy vọng bắt đầu một ví dụ gitweb ở nhà để tôi có thể thấy các cam kết và theo dõi tiến trình với các đồng đội khác của tôi.

Tôi đã thử hướng dẫn máy chủ trực tuyến không có may mắn. Tôi muốn gitweb được truy cập bởiexample.com/git

Tôi muốn mã của tôi được đặt vào /code/git

Tôi sẽ đánh giá cao sự giúp đỡ nào! Hãy cố gắng rõ ràng nhất có thể, bởi vì tôi rõ ràng không biết tôi đang làm gì. Tôi đã đọc hàng tấn bài viết.

Xin vui lòng và cảm ơn bạn.

Câu trả lời:


6

Phần gitweb:

Bạn phải cài đặt gói gitweb với sudo apt-get install gitweb

Sau đó, bạn phải chỉnh sửa tập tin cấu hình apache gitweb

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

thay đổi dòng Alias /gitweb /usr/share/gitweb thành

Alias /git /usr/share/gitweb

mở /etc/gitweb.conftập tin:

bạn phải thay đổi dòng $projectroot ".."thành $projectroot "/code/git"

và thay đổi bất kỳ dòng khác có chứa /gitwebđể /git ví dụ

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

đến

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

sau đó tải lại máy chủ web apache của bạn với sudo /etc/init.d/apache2 horse-reload

Bản thân phần GIT :

Tôi thực sự khuyên bạn nên sử dụng gitosis ( http://scie.nti.st/2007/11/14/hosting-git-reposeocate-the-easy-and-secure-way )

NHỚ nếu bạn sử dụng gitosis dòng $projectroottrong /etc/gitweb.confcó được

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

Bạn có thể tìm thấy thông tin chi tiết về cách thiết lập gitosis tại http://scie.nti.st/2007/11/14/hosting-git-reposearies-the-easy-and-secure-way

mô tả các thiết lập gitosis đầy đủ là quá dài cho câu trả lời này.

Nếu bạn cần thêm trợ giúp về bệnh gitosis hãy cho tôi một bình luận

Để khắc phục sự cố cấp phép apache, có thể cần phải làm:

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

sự khác biệt giữa git và gitosis.
myusuf3

gitosis là một tập lệnh để thiết lập lưu trữ git an toàn. (xác thực người dùng bằng ssh và các thứ.) chuyển tiếp khá tốt với kho lưu trữ git đặc biệt có chứa cấu hình. Trong cấu hình này, bạn có thể định cấu hình các kho git khác
aatdark

đó là điều thú vị đối với tôi bạn có thể sửa đổi câu trả lời của bạn để bao gồm thiết lập gitosis?
myusuf3

scie.nti.st/2007/11/14/ mài rất chi tiết (tôi đã sử dụng nó cho bản thân mình). Nếu bạn gặp vấn đề ở một bước, hãy viết cho tôi một nhận xét
aatdark

0

Đây là những gì tôi đã làm để thiết lập gitwebtrên Ubuntu 14.04 - với SSL và xác thực người dùng hệ thống với pwauth. Theo mặc định, gitwebsử dụng một /etc/gitweb.conf, dự kiến gitdự án trong /var/lib/git.

Vì vậy, tôi đã cố gắng đặt gitrepos của mình ở đây, vì vậy trong ví dụ này, chúng tôi không phải thay đổi /etc/gitweb.conf- /var/lib/gitngoại hình của tôi như thế này:

$ 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

Vì vậy, bên cạnh repos của bạn, bạn cũng cần phải liên kết /usr/share/gitweb/gitweb.cgitrong thư mục này ...

Sau đó, bạn có thể sử dụng như sau /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>

Và cuối cùng bạn có thể làm:

# 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

Sau này, gitwebnên có sẵn trên https://localhost/gitweb/(ví dụ, https://localhost/gitweb/?p=testrepo.git;a=summary); và bạn sẽ có thể sao chép (trong trường hợp chứng chỉ SSL tự ký) với:

GIT_SSL_NO_VERIFY=1 git clone https://myuser@localhost/git/testrepo.git
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.