SVN - การตั้งค่าสภาพแวดล้อม

การติดตั้ง SVN

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

[jerry@CentOS ~]$ svn --version

หากไม่ได้ติดตั้งไคลเอนต์ Subversion คำสั่งจะรายงานข้อผิดพลาดมิฉะนั้นจะแสดงเวอร์ชันของซอฟต์แวร์ที่ติดตั้ง

[jerry@CentOS ~]$ svn --version
-bash: svn: command not found

หากคุณใช้ GNU / Linux ที่ใช้ RPM ให้ใช้ไฟล์ yumคำสั่งสำหรับการติดตั้ง หลังจากติดตั้งสำเร็จให้เรียกใช้ไฟล์svn --version คำสั่ง

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install subversion

[jerry@CentOS ~]$ svn --version
svn, version 1.6.11 (r934486)
compiled Jun 23 2012, 00:44:03

และถ้าคุณใช้ GNU / Linux ที่ใช้ Debian ให้ใช้ apt คำสั่งสำหรับการติดตั้ง

[jerry@Ubuntu]$ sudo apt-get update
[sudo] password for jerry:

[jerry@Ubuntu]$ sudo apt-get install subversion

[jerry@Ubuntu]$ svn --version
svn, version 1.7.5 (r1336830)
compiled Jun 21 2013, 22:11:49

การตั้งค่า Apache

เราได้เห็นวิธีการติดตั้ง Subversion client บน GNU / Linux ให้เราดูวิธีสร้างที่เก็บใหม่และอนุญาตให้เข้าถึงผู้ใช้

บนเซิร์ฟเวอร์เราต้องติดตั้ง Apache httpd โมดูลและ svnadmin เครื่องมือ.

[jerry@CentOS ~]$ su -
Password: 
[root@CentOS ~]# yum install mod_dav_svn subversion

mod_dav_svn แพ็คเกจอนุญาตให้เข้าถึงที่เก็บโดยใช้ HTTP ผ่านเซิร์ฟเวอร์ Apache httpd และ subversion แพคเกจติดตั้งเครื่องมือ svnadmin

การโค่นล้มอ่านการกำหนดค่าจาก /etc/httpd/conf.d/subversion.confไฟล์. หลังจากเพิ่มการกำหนดค่าแล้วsubversion.conf ไฟล์มีลักษณะดังนี้:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/svn-users
   Require valid-user
</Location>

ให้เราสร้างผู้ใช้ Subversion และให้สิทธิ์เข้าถึงที่เก็บ คำสั่งhtpasswdใช้เพื่อสร้างและอัพเดตไฟล์ข้อความธรรมดาซึ่งใช้ในการจัดเก็บชื่อผู้ใช้และรหัสผ่านสำหรับการพิสูจน์ตัวตนพื้นฐานของผู้ใช้ HTTP ตัวเลือก '-c' สร้างรหัสผ่านไฟล์ถ้ารหัสผ่านไฟล์ที่มีอยู่แล้วก็ถูกเขียนทับ นั่นคือเหตุผลที่ใช้ตัวเลือก '-c' ในครั้งแรกเท่านั้น ตัวเลือก '-m' เปิดใช้งานการเข้ารหัส MD5 สำหรับรหัสผ่าน

การตั้งค่าผู้ใช้

ให้เราสร้างผู้ใช้ tom.

[root@CentOS ~]# htpasswd -cm /etc/svn-users tom
New password: 
Re-type new password: 
Adding password for user tom

ให้เราสร้างผู้ใช้ jerry

[root@CentOS ~]# htpasswd -m /etc/svn-users jerry
New password: 
Re-type new password: 
Adding password for user jerry
[root@CentOS ~]#

สร้างไดเร็กทอรีหลักของการโค่นล้มเพื่อจัดเก็บงานทั้งหมด (ดู/etc/httpd/conf.d/subversion.conf )

[root@CentOS ~]# mkdir /var/www/svn
[root@CentOS ~]# cd /var/www/svn/

การตั้งค่าที่เก็บ

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

[root@CentOS svn]# svnadmin create project_repo

[root@CentOS svn]# ls -l project_repo
total 24
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 conf
drwxr-sr-x. 6 root root 4096 Aug  4 22:30 db
-r--r--r--. 1 root root    2 Aug  4 22:30 format
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 hooks
drwxr-xr-x. 2 root root 4096 Aug  4 22:30 locks
-rw-r--r--. 1 root root  229 Aug  4 22:30 README.txt

ให้เราเปลี่ยนผู้ใช้และความเป็นเจ้าของกลุ่มของที่เก็บ

[root@CentOS svn]# chown -R apache.apache project_repo/

ตรวจสอบว่าเปิดใช้งานSELinuxหรือไม่โดยใช้เครื่องมือสถานะ SELinux

[root@CentOS svn]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

สำหรับเซิร์ฟเวอร์ของเรา SELinux ถูกเปิดใช้งานดังนั้นเราจึงต้องเปลี่ยนบริบทการรักษาความปลอดภัย SELinux

[root@CentOS svn]# chcon -R -t httpd_sys_content_t /var/www/svn/project_repo/

ในการอนุญาตให้คอมมิตผ่าน HTTP ให้รันคำสั่งต่อไปนี้

[root@CentOS svn]# chcon -R -t httpd_sys_rw_content_t /var/www/svn/project_repo/

รีสตาร์ทเซิร์ฟเวอร์ Apache และดำเนินการกับการกำหนดค่าเซิร์ฟเวอร์ Apache

[root@CentOS svn]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: apr_sockaddr_info_get() failed for CentOS
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@CentOS svn]# service httpd status
httpd (pid  1372) is running...
[root@CentOS svn]#

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

anon-access = none
authz-db = authz

ตามอัตภาพทุกโครงการโค่นล้มมี trunk, tags, และ branches ไดเร็กทอรีโดยตรงภายใต้ไดเร็กทอรีรากของโปรเจ็กต์

ลำต้นเป็นไดเรกทอรีที่ทุกการพัฒนาหลักที่เกิดขึ้นและมักจะมีการตรวจสอบโดยนักพัฒนาที่จะทำงานในโครงการ

แท็กไดเรกทอรีถูกนำมาใช้ในการจัดเก็บชื่อภาพรวมของโครงการ เมื่อสร้างรุ่นที่ใช้งานจริงทีมจะติดแท็กรหัสที่เข้าสู่รุ่น

สาขาไดเรกทอรีจะใช้เมื่อคุณต้องการที่จะไล่ตามเส้นที่แตกต่างกันของการพัฒนา

ให้เราสร้างโครงสร้างไดเร็กทอรีtrunk แท็กและ branchภายใต้ที่เก็บโปรเจ็กต์

[root@CentOS svn]# mkdir /tmp/svn-template
[root@CentOS svn]# mkdir /tmp/svn-template/trunk
[root@CentOS svn]# mkdir /tmp/svn-template/branches
[root@CentOS svn]# mkdir /tmp/svn-template/tags

ตอนนี้นำเข้าไดเรกทอรีจาก /tmp/svn-template ไปยังที่เก็บ

[root@CentOS svn]# svn import -m 'Create trunk, branches, tags directory structure' /tmp/svn-template/ 
Adding         /tmp/svn-template/trunk
Adding         /tmp/svn-template/branches
Adding         /tmp/svn-template/tags
Committed revision 1.
[root@CentOS svn]#

เสร็จแล้ว! เราได้สร้างที่เก็บเรียบร้อยแล้วและอนุญาตให้เข้าถึงTom และ Jerry. จากนี้พวกเขาสามารถดำเนินการที่สนับสนุนทั้งหมดไปยังที่เก็บได้