วิธีตั้งค่าเซิร์ฟเวอร์ Subversion (SVN) บน GNU / Linux - Ubuntu [ปิด]


95

ฉันมีแล็ปท็อปที่ใช้ Ubuntu ซึ่งฉันต้องการทำหน้าที่เป็นเซิร์ฟเวอร์ Subversion ทั้งสำหรับตัวเองที่จะกระทำในพื้นที่และเพื่อผู้อื่นจากระยะไกล ขั้นตอนที่จำเป็นในการทำงานนี้คืออะไร? โปรดรวมขั้นตอนเพื่อ:

  • รับและกำหนดค่า Apache และโมดูลที่จำเป็น (ฉันรู้ว่ามีวิธีอื่นในการสร้างเซิร์ฟเวอร์ SVN แต่ฉันต้องการเฉพาะ Apache)
  • กำหนดค่าวิธีการเข้าถึงเซิร์ฟเวอร์อย่างปลอดภัย (SSH / HTTPS)
  • กำหนดค่าชุดของผู้ใช้ที่ได้รับอนุญาต (เช่นเดียวกับพวกเขาต้องได้รับอนุญาตให้คอมมิต แต่สามารถเรียกดูได้ฟรี)
  • ตรวจสอบการตั้งค่าด้วยการคอมมิตเริ่มต้น ("สวัสดีชาวโลก")

ขั้นตอนเหล่านี้อาจเกี่ยวข้องกับคำแนะนำการใช้งานบรรทัดคำสั่งหรือ GUI หากทำได้โปรดสังเกตว่าคำแนะนำเฉพาะสำหรับการแจกจ่ายหรือเวอร์ชันใดรุ่นหนึ่งและสามารถใช้เครื่องมือเฉพาะของผู้ใช้แทนได้ที่ไหน (เช่นnanoแทนที่จะเป็นvi )


ฉันสามารถใช้เซิร์ฟเวอร์ Subversion บน Ubuntu และไคลเอนต์บนแพลตฟอร์มใด ๆ ได้หรือไม่ เช่น Tortoise SVN client บน windows?
Raheel Hasan

คำตอบ:


145

ขั้นตอนที่ฉันได้ดำเนินการเพื่อทำให้แล็ปท็อปเป็นเซิร์ฟเวอร์ Subversion เครดิตจะต้องไปAlephZarroสำหรับเส้นทางของเขาที่นี่ ตอนนี้ฉันมีเซิร์ฟเวอร์ SVN ที่ใช้งานได้แล้ว (ซึ่งขณะนี้ได้รับการทดสอบในเครื่องเท่านั้น)

การตั้งค่าเฉพาะ: Kubuntu 8.04 Hardy Heron

ข้อกำหนดในการปฏิบัติตามคู่มือนี้:

  • โปรแกรม apt-get package manager
  • โปรแกรมแก้ไขข้อความ (ฉันใช้ kate)
  • สิทธิ์การเข้าถึง sudo

1: ติดตั้งเซิร์ฟเวอร์ Apache HTTP และโมดูลที่ต้องการ:

sudo apt-get install libapache2-svn apache2

จะมีการติดตั้งแพ็คเกจพิเศษต่อไปนี้:

apache2-mpm-worker apache2-utils apache2.2-common

2: เปิดใช้งาน SSL

sudo a2enmod ssl
sudo kate /etc/apache2/ports.conf

เพิ่มหรือตรวจสอบว่าสิ่งต่อไปนี้อยู่ในไฟล์:

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

3: สร้างใบรับรอง SSL:

sudo apt-get install ssl-cert
sudo mkdir /etc/apache2/ssl
sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

4: สร้างโฮสต์เสมือน

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svnserver
sudo kate /etc/apache2/sites-available/svnserver

เปลี่ยน (ใน ports.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

และ (ใน svnserver)

<VirtualHost *> to <VirtualHost *:443>

เพิ่มภายใต้ ServerAdmin (เช่นในไฟล์ svnserver):

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

5: เปิดใช้งานไซต์:

sudo a2ensite svnserver
sudo /etc/init.d/apache2 restart

เพื่อเอาชนะคำเตือน:

sudo kate /etc/apache2/apache2.conf

เพิ่ม:

"ServerName $your_server_name"

6: การเพิ่มที่เก็บ (ies): การตั้งค่าต่อไปนี้ถือว่าเราต้องการโฮสต์หลายที่เก็บ เรียกใช้สิ่งนี้เพื่อสร้างที่เก็บแรก:

sudo mkdir /var/svn

REPOS=myFirstRepo
sudo svnadmin create /var/svn/$REPOS
sudo chown -R www-data:www-data /var/svn/$REPOS
sudo chmod -R g+ws /var/svn/$REPOS

6. ก. สำหรับที่เก็บเพิ่มเติม: ทำขั้นตอนที่ 6 อีกครั้ง (เปลี่ยนค่าของ REPOS) โดยข้ามขั้นตอนmkdir /var/svn

7: เพิ่มผู้ใช้ที่พิสูจน์ตัวตน

sudo htpasswd -c -m /etc/apache2/dav_svn.passwd $user_name

8: เปิดใช้งานและกำหนดค่า WebDAV และ SVN:

sudo kate /etc/apache2/mods-available/dav_svn.conf

เพิ่มหรือไม่แสดงความคิดเห็น:

<Location /svn>
DAV svn

# for multiple repositories - see comments in file
SVNParentPath /var/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>

9: รีสตาร์ทเซิร์ฟเวอร์ apache:

sudo /etc/init.d/apache2 restart

10: การตรวจสอบความถูกต้อง:

เปิดเบราว์เซอร์:

http://localhost/svn/$REPOS
https://localhost/svn/$REPOS

ทั้งคู่ต้องใช้ชื่อผู้ใช้และรหัสผ่าน ฉันคิดว่าไม่แสดงความคิดเห็น:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

ใน/etc/apache2/mods-available/dav_svn.confจะอนุญาตให้เรียกดูโดยไม่ระบุชื่อ

เบราว์เซอร์แสดง "Revision 0: /"

กระทำบางสิ่ง:

svn import --username $user_name anyfile.txt https://localhost/svn/$REPOS/anyfile.txt -m “Testing”

ยอมรับใบรับรองและป้อนรหัสผ่าน ตรวจสอบสิ่งที่คุณเพิ่งทำ:

svn co --username $user_name https://localhost/svn/$REPOS

ทำตามขั้นตอนเหล่านี้ (สมมติว่าฉันไม่ได้ทำสำเนา / วางข้อผิดพลาดใด ๆ ) ฉันมีที่เก็บ SVN ที่ใช้งานได้บนแล็ปท็อปของฉัน


คำแนะนำใช้ได้อย่างสมบูรณ์กับ Jaunty เช่นกัน ขอบคุณ!
Michael Moussa

6
ดูเหมือนจะทำงานได้อย่างสมบูรณ์ แต่ฉันได้รับ 403 ห้ามเมื่อพยายามเข้าถึงและไม่มีการแจ้งให้ใส่รหัสผ่าน มีคำแนะนำเกี่ยวกับสิ่งที่ผิดพลาดหรือไม่?
korona

@korona: การเข้าถึงด้วยวิธีใด: เรียกใช้คำสั่ง SVN หรือเรียกดู?
Grundlefleck

1
"NameVirtualHost *" to "NameVirtualHost *:443"อยู่ใน ports.conf ในขณะที่<VirtualHost *> to <VirtualHost *:443>อยู่ในการตั้งค่า svnserver สิ่งนี้ควรกล่าวถึง ฉันค่อนข้างสับสนเพราะฉันค้นหาในการตั้งค่า svnserver สำหรับ NameVirtualHost แล้วไม่พบ
Wandang

1
ใน Debian Stretch ดูเหมือนว่าคุณจะต้องติดตั้งlibapache2-mod-svnแทนlibapache2-svn(เนื่องจากไม่สามารถใช้งานได้อีกต่อไป)
TheStoryCoder

2

หลังจากนั้นฉันต้องดำเนินการ (ภายในบริบทของตัวอย่างที่ยกมาข้างต้น)

$ sudo chmod g + w /var/svn/$REPOS/db/rep-cache.db

$ sudo chown www-data: www-data /var/svn/$REPOS/db/rep-cache.db

มิฉะนั้นฉันยังคงได้รับข้อผิดพลาด 409 เมื่อทำการแก้ไขภายในเครื่อง (แม้ว่าข้อผูกพันจะมีผลทางฝั่งเซิร์ฟเวอร์ แต่ฉันต้องติดตามการอัปเดตภายในเครื่อง)


1

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


1

หากคุณได้รับ 403 ห้ามเมื่อคุณเข้าสู่เว็บเซิร์ฟเวอร์อาจเป็นเพราะคุณใช้ชื่อโฮสต์ที่ไม่ใช่สิ่งที่คุณระบุในไฟล์กำหนดค่าของคุณ (เช่น localhost หรือ 127.0.0.1) ลองกดhttps: // whateveryousetasyourhostnameแทน ...


อีก 403 สาเหตุ: กำหนดเส้นทาง svn เป็น symlink หากพา ธ svn ของคุณเป็น symlink คุณจะต้องอนุญาต symlink ต่อไปนี้
copolii

-2

โปรดเขียนคำสั่งเดียวบนเทอร์มินัล

ในการเปิดเทอร์มินัลโปรดกดCtrl+ Alt+ Tจากนั้นพิมพ์คำสั่งนี้:

$sudo apt-get install subversion

-2

สำหรับ Apache:

sudo apt-get -yq install apache2

สำหรับ SSH:

sudo apt-get -yq install openssh-server

สำหรับการโค่นล้ม:

sudo apt-get -yq install subversion subversion-tools

หากคุณต้องการคุณสามารถรวมสิ่งเหล่านี้เป็นคำสั่งเดียวเช่น:

sudo apt-get -yq install apache2 openssh-server subversion subversion-tools

ที่เหลือช่วยไม่ได้ ...

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