แพ็คเกจ 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/bashGIT_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 ขอบคุณที่อ่านบทความนี้