คำแนะนำขั้นสูงสุดในการตั้งค่า 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
คำชี้แจงสองสามประการ:
คำสั่ง SVNParentPath ระบุไดเร็กทอรีที่ที่เก็บข้อมูลของเราจะถูกสร้างในภายหลัง หากไม่มีไดเร็กทอรีนี้ (ซึ่งมักจะเป็นเช่นนั้น) ให้สร้างด้วย:
mkdir -p /websrv/svn
สิ่งสำคัญคือต้องทราบว่าไดเร็กทอรีนี้จะต้องไม่อยู่ภายในหรือซ้อนทับ DocumentRoot ของโฮสต์เสมือนที่ให้บริการโดย Apache ในปัจจุบัน นี่คือตัวโชว์!
- คำสั่ง AuthUserFile ระบุไฟล์ที่จะจัดเก็บข้อมูลประจำตัวของผู้ใช้ที่ถูกต้อง หากคุณต้องการอนุญาตให้ทุกคนเข้าถึง SVN โดยไม่ต้องตรวจสอบสิทธิ์ ให้ลบสี่บรรทัดสุดท้ายในบล็อกตำแหน่ง หากเป็นเช่นนั้น ให้ข้ามขั้นตอนที่ 2 และไปที่ขั้นตอนที่ 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) สำหรับข้อมูลเพิ่มเติมและกรณีการกำหนดค่า
เช่นเคย อย่าลังเลที่จะแจ้งให้เราทราบหากคุณมีคำถามใดๆ โปรดใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อติดต่อเราได้ตลอดเวลา