กำหนดค่าเซิร์ฟเวอร์ Git ด้วย HTTP บน Ubuntu

Configure Git Server With Http Ubuntu



หากคุณต้องการตั้งค่าเซิร์ฟเวอร์ Git HTTP เพื่อทำงานกับที่เก็บ Git แบบส่วนตัว บทความนี้เหมาะสำหรับคุณ ในบทความนี้ ฉันจะแสดงวิธีกำหนดค่าเซิร์ฟเวอร์ Git Smart HTTP บน Ubuntu ด้วยเซิร์ฟเวอร์ Apache HTTP มาเริ่มกันเลยดีกว่า

แพ็คเกจ Git และ Apache มีอยู่ในที่เก็บแพ็คเกจอย่างเป็นทางการของ Ubuntu ดังนั้น คุณสามารถติดตั้งได้อย่างง่ายดายด้วยตัวจัดการแพ็คเกจ APT







ขั้นแรก อัพเดตแคชที่เก็บแพ็คเกจ APT ด้วยคำสั่งต่อไปนี้:



$sudoapt update



ควรอัปเดตแคชที่เก็บแพ็กเกจ APT





ตอนนี้ ติดตั้ง Git และ Apache ด้วยคำสั่งต่อไปนี้:



$sudoฉลาดติดตั้ง ไปapache2 apache2-utils

ตอนนี้กด และ แล้วกด เพื่อยืนยันการติดตั้ง

ควรติดตั้ง Git และ Apache

การกำหนดค่าเซิร์ฟเวอร์ Apache HTTP สำหรับ Git:

ตอนนี้ เปิดใช้งาน Apache mod_env , mod_cgi , mod_alias และ mod_rewrite โมดูลด้วยคำสั่งต่อไปนี้:

$sudoa2enmodสิ่งแวดล้อมcgiนามแฝงเขียนใหม่

ควรเปิดใช้งานโมดูล Apache ที่จำเป็น

ตอนนี้สร้างไดเร็กทอรีใหม่ /var/www/git สำหรับเก็บที่เก็บ Git ทั้งหมดด้วยคำสั่งต่อไปนี้:

$sudo mkdir /ที่ไหน/www/ไป

ตอนนี้ สร้างการกำหนดค่าไซต์ Apache ใหม่ /etc/apache2/sites-available/git.conf สำหรับ Git ด้วยคำสั่งต่อไปนี้:

$sudo นาโน /ฯลฯ/apache2/ไซต์-ที่มีอยู่/git.conf

ตอนนี้ พิมพ์บรรทัดต่อไปนี้ในไฟล์กำหนดค่า:

<VirtualHost*:80>
ServerAdmin เว็บมาสเตอร์@localhost

SetEnv GIT_PROJECT_ROOT<แข็งแกร่ง> /ที่ไหน/www/ไปแข็งแกร่ง>
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias/ไป/ /usr/lib/git-core/git-http-แบ็กเอนด์/

นามแฝง/ไป /ที่ไหน/www/ไป

<ไดเรกทอรี/usr/lib/git-core>
ตัวเลือก +ExecCGI-MultiViews+SymLinksIfOwnerMatch
AllowOverride None
ต้องการทั้งหมดที่ได้รับ
ไดเรกทอรี>

DocumentRoot/ที่ไหน/www/html

<ไดเรกทอรี/ที่ไหน/www>
ตัวเลือก ดัชนี FollowSymLinks MultiViews
AllowOverride None
ต้องการทั้งหมดที่ได้รับ
ไดเรกทอรี>


บันทึกข้อผิดพลาด$ {APACHE_LOG_DIR}/บันทึกข้อผิดพลาด
LogLevel เตือน
บันทึกที่กำหนดเอง$ {APACHE_LOG_DIR}/access.log รวมกัน
VirtualHost>

ไฟล์การกำหนดค่าสุดท้ายมีลักษณะดังนี้ ตอนนี้ บันทึกไฟล์การกำหนดค่าโดยกด + NS ติดตามโดย และ และ .

ตอนนี้ ปิดใช้งานการกำหนดค่าไซต์ Apache เริ่มต้นด้วยคำสั่งต่อไปนี้:

$sudoa2dissite 000-default.conf

การกำหนดค่าไซต์เริ่มต้นควรปิดใช้งาน

ตอนนี้ เปิดใช้งานการกำหนดค่าไซต์ Git ด้วยคำสั่งต่อไปนี้:

$sudoa2ensite git.conf

ควรเปิดใช้งานการกำหนดค่าไซต์ Git

ตอนนี้ รีสตาร์ทเซิร์ฟเวอร์ Apache HTTP ด้วยคำสั่งต่อไปนี้:

$sudosystemctl รีสตาร์ท apache2

ในการบูตสแตรปที่เก็บ Git ใหม่ที่สามารถเข้าถึงได้ผ่านเซิร์ฟเวอร์ Apache HTTP คุณจะต้องเรียกใช้คำสั่งสองสามคำสั่ง คุณคงไม่อยากทำสิ่งเดิมซ้ำแล้วซ้ำเล่าเพื่อสร้างที่เก็บ Git ใหม่ ดังนั้นฉันจึงตัดสินใจเขียนเชลล์สคริปต์เพื่อจุดประสงค์นั้น

ขั้นแรก สร้างเชลล์สคริปต์ใหม่ /usr/local/bin/git-create-repo.sh ด้วยคำสั่งดังนี้

$sudo นาโน /usr/ท้องถิ่น/เป็น/git-create-repo.sh

ตอนนี้ พิมพ์รหัสบรรทัดต่อไปนี้ในเชลล์สคริปต์

#!/bin/bash

GIT_DIR='/var/www/git'
REPO_NAME=$ 1

mkdir -NS '${GIT_DIR}/${REPO_NAME}.ไป'
ซีดี '${GIT_DIR}/${REPO_NAME}.ไป'

git init --แค่ &> /dev/โมฆะ
สัมผัสgit-daemon-export-ตกลง
cpตะขอ/post-update.sample hooks/หลังการอัพเดท
git confighttp.receivepackจริง
git update-server-info
chown -Rfwww-data: www-data'${GIT_DIR}/${REPO_NAME}.ไป'
โยนออก 'ที่เก็บ Git'${REPO_NAME}' สร้างขึ้นใน${GIT_DIR}/${REPO_NAME}.ไป'

เมื่อคุณพิมพ์ในบรรทัดเหล่านี้ เชลล์สคริปต์ควรมีลักษณะดังนี้ ตอนนี้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .

ตอนนี้ เพิ่มการอนุญาตดำเนินการให้กับเชลล์สคริปต์ด้วยคำสั่งต่อไปนี้:

$sudo chmod+ x/usr/ท้องถิ่น/เป็น/git-create-repo.sh

ตอนนี้ สร้างที่เก็บ Git ใหม่ ทดสอบ ในรูทโปรเจ็กต์ Git /var/www/git ใช้ git-create-repo.sh เชลล์สคริปต์ดังนี้:

$sudogit-create-repo.shทดสอบ

ที่เก็บ Git ทดสอบ ควรจะถูกสร้างขึ้น

ในการเข้าถึงที่เก็บ Git คุณต้องมีที่อยู่ IP ของเซิร์ฟเวอร์ Git HTTP

$ipถึง

อย่างที่คุณเห็น ที่อยู่ IP ในกรณีของฉันคือ 192.168.21.208 . มันจะแตกต่างกันสำหรับคุณ แทนที่ด้วยของคุณตั้งแต่บัดนี้เป็นต้นไป

ตอนนี้คุณสามารถโคลน ทดสอบ ที่เก็บ Git ดังนี้:

$git โคลนhttp://192.168.21.208/ไป/test.go

ที่เก็บ Git ทดสอบ ควรโคลน

ตอนนี้ มาเพิ่มการคอมมิตใหม่ให้กับ ทดสอบ ที่เก็บ Git

$ซีดีทดสอบ/
$โยนออก 'สวัสดีชาวโลก' >สวัสดี
$git add.
$git คอมมิท -NS 'สัญญาเริ่มต้น'

ตอนนี้ อัปโหลดการเปลี่ยนแปลงไปที่ ทดสอบ ที่เก็บ Git บนเซิร์ฟเวอร์ดังนี้:

$git pushต้นทาง

อย่างที่คุณเห็น การเปลี่ยนแปลงได้รับการอัปโหลดได้ดี

การกำหนดค่าการตรวจสอบผู้ใช้:

ในส่วนนี้ ฉันจะแสดงวิธีกำหนดค่าการตรวจสอบสิทธิ์ผู้ใช้บนที่เก็บ Git ในเซิร์ฟเวอร์

ก่อนอื่นให้แก้ไข git.conf ไฟล์การกำหนดค่าไซต์ดังนี้:

$sudo นาโน /ฯลฯ/apache2/ไซต์-ที่มีอยู่/git.conf

ตอนนี้ เพิ่มส่วนต่อไปนี้ในไฟล์การกำหนดค่า

<LocationMatch/ไป/.*.ไป>
AuthType Basic
AuthName'การตรวจสอบ Git'
AuthUserFile/ฯลฯ/apache2/git.passwd
ต้องการ valid-user
LocationMatch>

ที่นี่, /etc/apache2/git.passwd เป็นไฟล์ฐานข้อมูลผู้ใช้

ไฟล์กำหนดค่าสุดท้ายควรมีลักษณะดังนี้ ตอนนี้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .

ตอนนี้สร้างไฟล์ฐานข้อมูลผู้ใช้ใหม่ /etc/apache2/git.passwd และเพิ่มผู้ใช้ใหม่ (สมมติว่า โชวอน ) ไปยังไฟล์ฐานข้อมูลดังนี้:

$sudohtpasswd-ค /ฯลฯ/apache2/git.passwd โชวอน

ตอนนี้พิมพ์รหัสผ่านใหม่สำหรับผู้ใช้ใหม่และกด .

พิมพ์รหัสผ่านเดิมอีกครั้งแล้วกด .

ควรเพิ่มคู่รหัสผ่านผู้ใช้ลงในฐานข้อมูล

ตอนนี้ รีสตาร์ทเซิร์ฟเวอร์ Apache HTTP ด้วยคำสั่งต่อไปนี้:

$sudosystemctl รีสตาร์ท apache2

ตอนนี้ถ้าคุณพยายามโคลน ทดสอบ ที่เก็บอีกครั้ง คุณจะถูกขอให้ตรวจสอบสิทธิ์ดังที่คุณเห็นในภาพหน้าจอด้านล่าง

เมื่อคุณตรวจสอบสิทธิ์โดยใช้ชื่อผู้ใช้และรหัสผ่าน คุณจะสามารถเข้าถึงที่เก็บ Git ได้

แม้ว่าคุณจะพยายามผลักหรือดึงจากที่เก็บ Git คุณจะถูกถามถึงชื่อผู้ใช้และรหัสผ่านด้วย

เมื่อคุณตรวจสอบสิทธิ์แล้ว การกด/ดึงจะทำงาน

คุณยังสามารถตั้งค่าฐานข้อมูลผู้ใช้ที่แตกต่างกันสำหรับที่เก็บ Git ที่แตกต่างกัน นี่อาจเป็นประโยชน์สำหรับโครงการที่มีผู้คนจำนวนมากทำงานร่วมกันในที่เก็บ Git เดียวกัน

ในการตั้งค่าการพิสูจน์ตัวตนที่เก็บ Git ก่อนอื่นให้แก้ไข git.conf ไฟล์การกำหนดค่าไซต์ดังนี้:

$sudo นาโน /ฯลฯ/apache2/ไซต์-ที่มีอยู่/git.conf

ตอนนี้ เพิ่มบรรทัดต่อไปนี้ในไฟล์กำหนดค่า

<ที่ตั้ง/ไป/test.go>
AuthType Basic
AuthName'การตรวจสอบ Git'
AuthUserFile/ฯลฯ/apache2/git.test.passwd
ต้องการ valid-user
ที่ตั้ง>

<ที่ตั้ง/ไป/test2.git>
AuthType Basic
AuthName'การตรวจสอบ Git'
AuthUserFile/ฯลฯ/apache2/git.test2.passwd
ต้องการ valid-user
ที่ตั้ง>

สำหรับแต่ละที่เก็บ Git ทดสอบ และ ทดสอบ2 , ถึง ส่วนที่กำหนดไว้ ไฟล์ฐานข้อมูลผู้ใช้อื่นถูกใช้สำหรับที่เก็บ Git แต่ละที่เก็บ

ไฟล์กำหนดค่าสุดท้ายควรมีลักษณะดังนี้ ตอนนี้ บันทึกไฟล์การกำหนดค่าโดยกด + NS ติดตามโดย และ และ .

ตอนนี้คุณสามารถสร้างฐานข้อมูลผู้ใช้ที่จำเป็นได้ดังนี้:

$sudohtpasswd-ค /ฯลฯ/apache2/git.test.passwd ชื่อผู้ใช้
$sudohtpasswd-ค /ฯลฯ/apache2/git.test2.passwd ชื่อผู้ใช้

เมื่อเสร็จแล้วให้รีสตาร์ทเซิร์ฟเวอร์ Apache HTTP ด้วยคำสั่งต่อไปนี้:

$sudosystemctl รีสตาร์ท apache2

ตอนนี้ที่เก็บ Git แต่ละแห่งควรมีกลุ่มผู้ใช้ที่สามารถเข้าถึงได้

นั่นคือวิธีที่คุณกำหนดค่า Git Server ด้วย Apache HTTP Server บน Ubuntu ขอบคุณที่อ่านบทความนี้