ก่อนที่จะทำการติดตั้ง SVN เราจำเป็นต้องติดตั้ง apache2 ก่อน โดยขั้นตอนการติดตั้งสามารถดูได้ที่ วิธีลง apache, mysql และ phpmyadmin บน ubuntu
เริ่มต้นให้เปิดเทอร์มินอลขึ้นมาแล้วติดตั้งโปรแกรมที่จำเป็นตามคำสั่งด้านล่าง
สร้าง subversion directory (ที่ๆเราจะเอาไว้เก็บงานต่างๆ) ในตัวอย่างนี้จะเก็บไว้ที่ /home/svn
ทดลองสร้าง repository ในที่นี้เราจะให้ชื่อว่า repos1 และ repos2
เนื่องจากเราต้องการให้ user สามารถเข้าถึง SVN ผ่าน Apache ได้ ดังนั้น user ของ SVN กับ Apache จึงต้องเป็น user เดียวกัน ซึ่งโดยปกติ user ของ Apache โดย default คือ www-data (ทุกครั้งที่มีการสร้าง repository ใหม่ต้องทำการเปลี่ยน owner ทุกครั้ง)
ขั้นตอนถัดไปเราจะมาทำการคอนฟิก Apache กัน เริ่มด้วยการ enable module ที่จำเป็น
สร้างไฟล์บ่งบอก user ที่สามารถเข้าใช้งาน SVN ได้ (ตัวอย่างนี้จะเก็บไว้ในไฟล์ที่ /etc/svn-auth/svn-user) โดยในกรณีที่เราสร้าง user คนแรกให้เราใช้ option เป็น -c -m แต่สำหรับ user คนถัดไปให้เราใช้ -m อย่างเดียว เช่น (อย่าลืมใส่ sudo)
ขั้นตอนถัดไปเราจะแบ่งกลุ่มของ user ออกเป็นกลุ่มย่อย ซึ่งแต่ล่ะกลุ่มสามารถเข้าถึง repository ที่ต่างกัน โดยในที่นี้เราจะสร้างไฟล์นี้ไว้ที่ /etc/svn-auth/svn-access-control (ใช้ tool ใดสร้างก็ได้) และสมมติว่าภายใน /home/svn มี directory ย่อยอยู่สอง directory คือ repos1 กับ respos2 เราอาจกำหนดสิทธิ์ในการเข้าถึงของ user ได้เป็นแบบนี้
โดยจากตัวอย่างนี้เราให้สิทธิ์การเข้าถึงในทุกระดับแก่ user กลุ่มที่เป็น admin และอนุญาติให้เฉพาะ user3 เขียนและอ่านข้อมูลที่อยู่ใน repos1 ส่วนใน repos2 อนุญาติให้ user3 อ่านได้อย่างเดียว
เปิดไฟล์ /etc/apache2/mods-enabled/dav_svn.conf ขึ้นมา ที่บรรทัดล่างสุดให้เพิ่มโค้ดที่อยู่ด้านล่างเข้าไป
สุดท้ายให้ทำการ restart apache ก็เป็นอันเรียบร้อย
เริ่มต้นให้เปิดเทอร์มินอลขึ้นมาแล้วติดตั้งโปรแกรมที่จำเป็นตามคำสั่งด้านล่าง
sudo apt-get install subversion subversion-tools libapache2-svn
สร้าง subversion directory (ที่ๆเราจะเอาไว้เก็บงานต่างๆ) ในตัวอย่างนี้จะเก็บไว้ที่ /home/svn
sudo mkdir /home/svn
ทดลองสร้าง repository ในที่นี้เราจะให้ชื่อว่า repos1 และ repos2
sudo svnadmin create /home/svn/repos1 sudo svnadmin create /home/svn/repos2
เนื่องจากเราต้องการให้ user สามารถเข้าถึง SVN ผ่าน Apache ได้ ดังนั้น user ของ SVN กับ Apache จึงต้องเป็น user เดียวกัน ซึ่งโดยปกติ user ของ Apache โดย default คือ www-data (ทุกครั้งที่มีการสร้าง repository ใหม่ต้องทำการเปลี่ยน owner ทุกครั้ง)
sudo chown -R www-data:www-data /home/svn
ขั้นตอนถัดไปเราจะมาทำการคอนฟิก Apache กัน เริ่มด้วยการ enable module ที่จำเป็น
cd /etc/apache2
สร้างไฟล์บ่งบอก user ที่สามารถเข้าใช้งาน SVN ได้ (ตัวอย่างนี้จะเก็บไว้ในไฟล์ที่ /etc/svn-auth/svn-user) โดยในกรณีที่เราสร้าง user คนแรกให้เราใช้ option เป็น -c -m แต่สำหรับ user คนถัดไปให้เราใช้ -m อย่างเดียว เช่น (อย่าลืมใส่ sudo)
sudo htpasswd -c -m /etc/svn-auth/svn-user user1 sudo htpasswd -m /etc/svn-auth/svn-user user2 sudo htpasswd -m /etc/svn-auth/svn-user user3 sudo htpasswd -m /etc/svn-auth/svn-user user4
ขั้นตอนถัดไปเราจะแบ่งกลุ่มของ user ออกเป็นกลุ่มย่อย ซึ่งแต่ล่ะกลุ่มสามารถเข้าถึง repository ที่ต่างกัน โดยในที่นี้เราจะสร้างไฟล์นี้ไว้ที่ /etc/svn-auth/svn-access-control (ใช้ tool ใดสร้างก็ได้) และสมมติว่าภายใน /home/svn มี directory ย่อยอยู่สอง directory คือ repos1 กับ respos2 เราอาจกำหนดสิทธิ์ในการเข้าถึงของ user ได้เป็นแบบนี้
[groups] admin = user1,user2 [/] @admin = rw [repos1:/] user3 = rw [repos2:/] user3 = r user4 = rw
โดยจากตัวอย่างนี้เราให้สิทธิ์การเข้าถึงในทุกระดับแก่ user กลุ่มที่เป็น admin และอนุญาติให้เฉพาะ user3 เขียนและอ่านข้อมูลที่อยู่ใน repos1 ส่วนใน repos2 อนุญาติให้ user3 อ่านได้อย่างเดียว
เปิดไฟล์ /etc/apache2/mods-enabled/dav_svn.conf ขึ้นมา ที่บรรทัดล่างสุดให้เพิ่มโค้ดที่อยู่ด้านล่างเข้าไป
Include mods-available/authz_svn.load <Location /svn> DAV svn SVNParentPath /home/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/svn-auth/svn-user AuthzSVNAccessFile /etc/svn-auth/svn-access-control Require valid-user </Location>
สุดท้ายให้ทำการ restart apache ก็เป็นอันเรียบร้อย
sudo /etc/init.d/apache2 restart
No comments:
Post a Comment