Subversion (SVN) là một phần mềm mã nguồn mở dùng để quản lý và kiểm tra các phiên bản mã nguồn khác nhau trong quá trình phát triển phần mềm. Trong bài viết này tôi sẽ hướng dẫn và trình bày các bước cài đặt SVN Server trên nền hệ điều hành CentOS

Bài hướng dẫn này bao gồm các phần sau:

  • Cài đặt subversion và cách tạo một repository mới
  • Thiết lập WebDAV để có thể sử dụng SVN qua giao thức HTTP

Bạn nên biết tới các khái niệm của SVN trước khi cài đặt. Có thể tham khảo ở link sau:

http://svnbook.red-bean.com/en/1.5/svn.basic.html

** Chú ý, các thao tác sau đây yêu cầu quyền root. Do vậy, các bạn cần thực thi các lệnh dưới 1 tài khoản có quyền root.

1. Cài đặt Subversion

Trên Centos, cài đặt subversion rất đơn giản, bạn chỉ cần sử dụng lệnh yum:

yum install subversion

2. Tạo một repository mới

Giả sử bạn đã có thư mục /services/subversion, và muốn tạo repository mới ở đây, tên là new_project. Các lệnh để thiết lập như sau:

mkdir -p /services/subversion/repositories/new_project
svnadmin create --fs-type fsfs /services/subversion/repositories/new_project

3. Cài đặt và cấu hình mod_dav_svn của Apache

WebDAV (RFC 2518) là một tập hợp các chuẩn mở rộng của giao thức HTTP, để cho phép nhiều người dùng có thể hợp tác sửa đổi và quản lý từ xa các file trên một webserver. Được viết dựa trên tập chuẩn WebDAV, module dav_svn của Apache cho phép chúng ta truy cập repository SVN của mình thông qua máy chủ web Apache.

3.1. Cài đặt mod_dav_svn:

yum install mod_dav_svn

3.2. Cấu hình subversion

Nội dung cấu hình subversion như sau, trong file:  /etc/httpd/conf.d/subversion.conf 
** Có thể sử dụng chương trình  vi  để chỉnh sửa nội dung file cấu hình

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
< Location /repos >
    DAV svn
    SVNParentPath /services/subversion/repositories
    AuthzSVNAccessFile /services/subversion/auth/acl
    SVNListParentPath on
    SVNPathAuthz off
    AuthType Basic
    AuthName "SVN Center"
    AuthUserFile /services/subversion/auth/account
    Require valid-user
</Location >

** Các tham số

  • Location: quy định URL SVN của bạn (VD: http://example.com/repos/new_project).
  • SVNParentPath: khai báo đường dẫn tới thư mục chứa các repository.
  • AuthUserFile: khai báo đường dẫn tới file chứa các tài khoản người dùng SVN.
  • AuthzSVNAccessFile: đường dẫn đầy đủ của file cấu hình ACL, có chức năng phân quyền cho người dùng.

3.3. Tạo thư mục auth:

 mkdir /services/subversion/auth

3.4. Tạo file tài khoản:

 touch /services/subversion/auth/account

3.5. Tạo file access control list:

 touch services/subversion/auth/acl

3.6. Restart Apache:

 service httpd restart

4. Thiết lập quyền cho Apache

Để có thể sử dụng repository new_project ta đã tạo ở bước 2, cần thiết lập permission cho phép Apache sử dụng thư mục repository (giả sử Apache đang được chạy bởi user apache):

chown -R apache:apache /services/subversion/repositories/new_project
chmod -R g+w /services/subversion/repositories/new_project
chmod g+s /services/subversion/repositories/new_project/db

5. Tạo một tài khoản SVN người dùng

Sử dụng lệnh lệnh sau đây, để tạo 1 user mới  svn_user  (hệ thống sẽ yêu cầu bạn khai báo mật khẩu cho tài khoản này sau khi enter):

htpasswd -m /services/subversion/auth/account svn_user

6. Cấp quyền truy cập

Để cấp quyền truy cập (đọc/ghi) cho tài khoản  svn_user  bằng cách khai báo repository và tài khoản vào file acl như sau:

[new_project:/]
svn_user = rw

Như vậy, tài khoản svn_user sẽ có quyền đọc và ghi đối với repository new_project. Bạn có thể check out repository của mình thông qua URL  http://example.com/repos/new_project  với tài khoản trên.
Nếu bạn muốn tạo thêm một repository mới, hãy thực hiện lại các bước 2, 4, 5, 6.

Để tìm hiểu thêm về cách cài đặt và cấu hình Subversion, bạn hãy đọc chương 5 của ebook:

http://svnbook.red-bean.com/en/1.5/svn-book.html

About The Author