ค้นหาเว็บไซต์

คำแนะนำขั้นสูงสุดในการตั้งค่า Apache Subversion SVN และ TortoiseSVN สำหรับการควบคุมเวอร์ชัน


หากงานของคุณต้องการการจัดการเอกสาร เว็บเพจ และไฟล์ประเภทอื่นๆ ที่ได้รับการอัปเดตเป็นประจำ คุณอาจต้องการใช้กลไกการควบคุมเวอร์ชัน หากคุณยังไม่ได้ดำเนินการดังกล่าว

เหนือสิ่งอื่นใด สิ่งนี้ช่วยให้คุณ (และกลุ่มของผู้ที่อาจทำงานร่วมกันได้เช่นกัน) ติดตามการเปลี่ยนแปลงที่ทำกับไฟล์ที่กำหนด และช่วยให้คุณสามารถย้อนกลับไปเป็นเวอร์ชันก่อนหน้าได้หากพบปัญหาหรือเมื่อการอัปเดตไม่ได้ให้ผลลัพธ์ที่คาดหวัง .

ในระบบนิเวศของซอฟต์แวร์เสรี ระบบควบคุมเวอร์ชันที่ใช้กันอย่างแพร่หลายที่สุดเรียกว่า Apache Subversion (หรือเรียกสั้น ๆ ว่า SVN) ด้วยความช่วยเหลือของ mod_dav_svn (โมดูลของ Apache สำหรับการโค่นล้ม) คุณสามารถเข้าถึงพื้นที่เก็บข้อมูลโค่นล้มโดยใช้ HTTP และเว็บเซิร์ฟเวอร์

อย่างที่บอกไปแล้ว เรามาพับแขนเสื้อของเราและติดตั้งเครื่องมือเหล่านี้บน RHEL/CentOS 7, Fedora 22-24, Debian 8/7 และ เซิร์ฟเวอร์ Ubuntu 16.04-15.04 สำหรับการทดสอบ เราจะใช้เซิร์ฟเวอร์ CentOS 7 ที่มี IP 192.168.0.100

ในฝั่งไคลเอ็นต์ (เครื่อง Windows 7) เราจะติดตั้งและใช้ TortoiseSVN (ซึ่งใช้ Apache Subversion) เป็นอินเทอร์เฟซสำหรับ SVN

สภาพแวดล้อมการทดสอบของเรา


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

ขั้นตอนที่ 1 – การติดตั้งและกำหนดค่า SVN บน Linux

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


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

ระหว่างการติดตั้งบน CentOS 7 ไฟล์การกำหนดค่า Apache สำหรับ SVN จะถูกสร้างขึ้นเป็น /etc/httpd/conf.modules.d/10-subversion.conf เปิดไฟล์และเพิ่มบล็อกการกำหนดค่าต่อไปนี้:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

หมายเหตุ: บน Debian/Ubuntu คุณต้องเพิ่มบรรทัดด้านล่างใน /etc/apache2/mods-enabled/dav_svn.conf ไฟล์


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

บน Debian/Ubuntu คุณต้องเปิดใช้งานโมดูล dav_svn Apache:


a2enmod dav_svn

คำชี้แจงสองสามประการ:

  1. คำสั่ง SVNParentPath ระบุไดเร็กทอรีที่ที่เก็บข้อมูลของเราจะถูกสร้างในภายหลัง หากไม่มีไดเร็กทอรีนี้ (ซึ่งมักจะเป็นเช่นนั้น) ให้สร้างด้วย:

    
    mkdir -p /websrv/svn
    

    สิ่งสำคัญคือต้องทราบว่าไดเร็กทอรีนี้จะต้องไม่อยู่ภายในหรือซ้อนทับ DocumentRoot ของโฮสต์เสมือนที่ให้บริการโดย Apache ในปัจจุบัน นี่คือตัวโชว์!

  2. คำสั่ง AuthUserFile ระบุไฟล์ที่จะจัดเก็บข้อมูลประจำตัวของผู้ใช้ที่ถูกต้อง หากคุณต้องการอนุญาตให้ทุกคนเข้าถึง SVN โดยไม่ต้องตรวจสอบสิทธิ์ ให้ลบสี่บรรทัดสุดท้ายในบล็อกตำแหน่ง หากเป็นเช่นนั้น ให้ข้ามขั้นตอนที่ 2 และไปที่ขั้นตอนที่ 3 โดยตรง
  3. แม้ว่าคุณอาจถูกล่อลวงให้รีสตาร์ท Apache เพื่อใช้การเปลี่ยนแปลงล่าสุดเหล่านี้ แต่อย่าเพิ่งดำเนินการดังกล่าว เนื่องจากเรายังคงจำเป็นต้องสร้างไฟล์การตรวจสอบสิทธิ์กับผู้ใช้ที่ถูกต้องสำหรับ SVN และที่เก็บข้อมูลเอง

ขั้นตอนที่ 2 – เพิ่มผู้ใช้ที่ได้รับอนุญาตให้เข้าถึง SVN

ตอนนี้เราจะใช้ htpasswd เพื่อสร้างรหัสผ่านสำหรับบัญชีที่จะได้รับอนุญาตให้เข้าถึง SVN สำหรับผู้ใช้รายแรกเท่านั้น เราจะต้องมีตัวเลือก -c

บัญชีที่อนุญาตและรหัสผ่านที่เข้ารหัส bcrypt (-B) จะถูกจัดเก็บไว้ใน /etc/httpd/subversion-auth ในคู่คีย์-ค่า โปรดทราบว่าตามมาตรฐานปัจจุบัน การเข้ารหัส MD5 หรือ SHA เริ่มต้นที่ใช้โดย htpasswd ถือว่าไม่ปลอดภัย


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

อย่าลืมตั้งค่าความเป็นเจ้าของและการอนุญาตสิทธิ์ในไฟล์การรับรองความถูกต้อง:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

ขั้นตอนที่ 3 – เพิ่มความปลอดภัยและสร้างที่เก็บ SVN

เนื่องจากคุณจะเข้าถึง SVN ผ่านทางเว็บอินเทอร์เฟซ คุณจะต้องอนุญาตการรับส่งข้อมูล HTTP (และ HTTPS ทางเลือก) ผ่านไฟร์วอลล์ของคุณ


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

เมื่อรีโหลดการกำหนดค่าไฟร์วอลล์ด้วย --reload การตั้งค่าถาวรจะมีผลทันที

สร้างที่เก็บ SVN เริ่มต้นชื่อ tecmint:


svnadmin create /websrv/svn/tecmint

เปลี่ยนเจ้าของและเจ้าของกลุ่มเป็น apache ซ้ำ:


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

สุดท้ายนี้ คุณจะต้องเปลี่ยนบริบทความปลอดภัยของ /websrv/svn/tecmint (โปรดทราบว่าคุณจะต้องทำซ้ำขั้นตอนนี้หากคุณตัดสินใจสร้างที่เก็บข้อมูลอื่นในภายหลัง):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

หมายเหตุ: สองคำสั่งสุดท้ายอาจไม่สามารถใช้ได้หากคุณกำลังติดตั้ง SVN บน VPS โดยปิดการใช้งาน SELinux

แนะนำให้อ่าน: เรียนรู้วิธีปิดการใช้งาน SELinux ชั่วคราวหรือถาวรใน Linux

รีสตาร์ท Apache และตรวจสอบว่าพื้นที่เก็บข้อมูลพร้อมใช้งาน


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

จากนั้นเปิดเว็บเบราว์เซอร์และชี้ไปที่ http://192.168.0.100/svn/tecmint หลังจากป้อนข้อมูลรับรองสำหรับผู้ใช้ที่ถูกต้องที่เราสร้างใน ขั้นตอนที่ 1 ผลลัพธ์ควรคล้ายกับ:

ณ จุดนี้ เรายังไม่ได้เพิ่มโค้ดใดๆ ลงในพื้นที่เก็บข้อมูลของเรา แต่เราจะทำอย่างนั้นในอีกสักครู่

ขั้นตอนที่ 4 – ติดตั้ง TortoiseSVN ในไคลเอนต์ Windows 7

ดังที่เราได้กล่าวไว้ในบทนำ TortoiseSVN เป็นอินเทอร์เฟซที่ใช้งานง่ายสำหรับ Apache Subversion เป็นซอฟต์แวร์เสรีที่ได้รับอนุญาตภายใต้ GPL และสามารถดาวน์โหลดได้จาก https://tortoisesvn.net/downloads.html

เลือกสถาปัตยกรรม (32 หรือ 64 บิต) ที่สอดคล้องกับเครื่องของคุณ และติดตั้งโปรแกรมก่อนดำเนินการต่อ

ขั้นตอนที่ 5 – ตั้งค่าพื้นที่เก็บข้อมูล SVN บนเครื่องไคลเอนต์

ในขั้นตอนนี้ เราจะใช้โฟลเดอร์ชื่อ webapp ภายใน Documents โฟลเดอร์นี้ประกอบด้วยไฟล์ HTML และสองโฟลเดอร์ชื่อสคริปต์และสไตล์พร้อมด้วยไฟล์ Javascript และ CSS (script.js และ styles.css ตามลำดับ) ที่เราต้องการ เพิ่มการควบคุมเวอร์ชัน

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

ใน URL ของที่เก็บ ให้พิมพ์ http://192.168.0.100/svn/tecmint และตรวจสอบให้แน่ใจว่าไดเร็กทอรีการชำระเงินในเครื่องยังคงเหมือนเดิม จากนั้นคลิก ตกลง:

ป้อนชื่อผู้ใช้และรหัสผ่าน (โปรดดู ขั้นตอนที่ 2) และคลิก ตกลง:

คุณจะถูกถามว่าคุณต้องการชำระเงินในไดเร็กทอรีที่ไม่ว่างเปล่าหรือไม่ ยืนยันเพื่อดำเนินการชำระเงินต่อ เมื่อเสร็จแล้ว เครื่องหมายถูกสีเขียวจะปรากฏถัดจากชื่อโฟลเดอร์:

ขั้นตอนที่ 6 – ยอมรับการเปลี่ยนแปลงและปรับใช้ไฟล์ไปยังที่เก็บ SVN ระยะไกล

คลิกขวาที่ webapp อีกครั้งและเลือก Commit ในครั้งนี้ จากนั้น ให้เขียนความคิดเห็นเชิงอธิบายเพื่อระบุการคอมมิตนี้ในภายหลัง และตรวจสอบไฟล์และโฟลเดอร์ที่คุณต้องการปรับใช้กับพื้นที่เก็บข้อมูล สุดท้าย คลิก ตกลง:

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

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

ขอแสดงความยินดี! คุณตั้งค่าเซิร์ฟเวอร์ SVN สำเร็จแล้ว และยืนยัน/อัปเดตโปรเจ็กต์แบบง่ายภายใต้การควบคุมเวอร์ชัน

สรุป

ในบทความนี้ เราได้อธิบายวิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์พื้นที่เก็บข้อมูล Apache Subversion บนเซิร์ฟเวอร์ CentOS 7 และวิธีการยอมรับการเปลี่ยนแปลงไปยังพื้นที่เก็บข้อมูลนั้นโดยใช้ TortoiseSVN< /แข็งแกร่ง>.

โปรดทราบว่า SVN และ TortoiseSVN ยังมีอะไรอีกมากมายเกินกว่าที่เราจะอธิบายได้เพียงพอที่นี่ (โดยเฉพาะวิธีการกลับไปยังการแก้ไขครั้งก่อน) ดังนั้นคุณอาจต้องการอ้างอิงถึงเจ้าหน้าที่ เอกสาร (SVN และ TortoiseSVN) สำหรับข้อมูลเพิ่มเติมและกรณีการกำหนดค่า

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