การตั้งค่า gitweb / apache2


10

ฉันเพิ่งเริ่มเก็บรหัสที่ฉันเขียนบนเซิร์ฟเวอร์ภายในที่ฉันมีที่บ้าน

ฉันหวังว่าจะเริ่มต้นตัวอย่าง gitweb ที่บ้านเพื่อที่ฉันจะได้เห็นความมุ่งมั่นและติดตามความคืบหน้ากับเพื่อนร่วมทีมคนอื่น ๆ ของฉัน

ฉันลองใช้บทเรียนเซิร์ฟเวอร์ออนไลน์โดยไม่มีโชค ฉันต้องการให้ gitweb เข้าถึงได้โดยexample.com/git

ฉันต้องการรหัสของฉันที่จะเข้ามา /code/git

ฉันอยากจะขอบคุณความช่วยเหลือใด ๆ! โปรดพยายามอย่างชัดเจนที่สุดเพราะฉันไม่รู้ว่าฉันกำลังทำอะไรอยู่ ฉันได้อ่านบทความมากมาย

กรุณาและขอบคุณ

คำตอบ:


6

ส่วน gitweb:

คุณต้องติดตั้ง gitweb ของแพ็คเกจด้วย sudo apt-get install gitweb

จากนั้นคุณต้องแก้ไขไฟล์ apache gitweb config

$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ตัวเอง:

ฉันขอแนะนำให้ใช้ gitosis อย่างจริงจัง ( http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way )

จำไว้ว่าถ้าคุณใช้ gitosisบรรทัด$projectrootใน/etc/gitweb.confนั้นจะต้องเป็น

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

คุณสามารถหาข้อมูลโดยละเอียดเกี่ยวกับวิธีการตั้งค่า gitosis ได้ที่ http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

การอธิบายการตั้งค่า gitosis แบบสมบูรณ์นั้นยาวเกินไปสำหรับคำตอบนี้

หากคุณต้องการความช่วยเหลือเพิ่มเติมเกี่ยวกับ gitosis ฉันแสดงความคิดเห็น

ในการแก้ไขปัญหาการอนุญาตของ apache อาจจำเป็นต้องทำ:

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

อะไรคือความแตกต่างระหว่าง git และ gitosis
myusuf3

gitosis เป็นสคริปต์ในการตั้งค่า git hosting ที่ปลอดภัย (รับรองความถูกต้องของผู้ใช้ด้วย ssh และสิ่งของ) straigt ที่น่ารักของมันไปข้างหน้าด้วยที่เก็บ git พิเศษซึ่งมีการกำหนดค่า ในการกำหนดค่านี้คุณสามารถกำหนดค่าที่เก็บ git อื่น ๆ
aatdark

ที่น่าสนใจสำหรับฉัน คุณสามารถแก้ไขคำตอบเพื่อรวมการตั้งค่า gitosis ได้ไหม?
myusuf3

scie.nti.st/2007/11/14/… นั้นมีรายละเอียดมาก (ฉันใช้เพื่อตัวเอง) หากคุณพบปัญหาในขั้นตอนเดียวเขียนความคิดเห็นของฉัน
aatdark

0

นี่คือสิ่งที่ผมจะติดตั้งgitwebบน Ubuntu 14.04 - ด้วย SSL pwauthและการตรวจสอบของผู้ใช้ระบบที่มี โดยค่าเริ่มต้นgitwebใช้/etc/gitweb.confซึ่งคาดว่าโครงการในgit/var/lib/git

ดังนั้นฉันจึงพยายามใส่gitrepos ของฉันที่นี่ดังนั้นในตัวอย่างนี้เราไม่ต้องเปลี่ยน/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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.