Cài đặt SVN
Subversion là một công cụ quản lý phiên bản mã nguồn mở. Nó có sẵn và miễn phí trên mạng. Nó đi kèm theo các bản mặc định với các bản phân phối của GNU/Linux, vì thế nó có thể đã được cài đặt trên máy của bạn. Để kiểm tra có hay không nó đã được cài đặt trên máy, bạn sử dụng lệnh sau:
[jerry@CentOS ~]$ svn --version
Nếu bản Subversion client chưa được cài đặt, thì khi đó lệnh sẽ báo lỗi, ngoài ra nó sẽ hiển thị phiên bản của phần mềm cài đặt.
[jerry@CentOS ~]$ svn --version
-bash: svn: command not found
Nếu bạn đang sử dụng RPM- trên nền tảng GNU/Linux, thì khi đó bạn sử dụng lệnh yum để cài đặt. Sau khi cài đặt thành công, chạy lệnh 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
Nếu bạn đang sử dụng Debian- trên nền tảng GNU/Linux, bạn sử dụng lệnh apt để cài đặt.
[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
Cài đặt Apache
Chúng ta đã thấy cách để cài đặt Subversion client trên GNU/Linux. Bây giờ hãy xem cách để tạo một repository mới và cho phép người sử dụng truy cập.
Trên server chúng ta phải cài đặt môđun Apache httpd và công cụ svnadmin.
[jerry@CentOS ~]$ su -
Password:
[root@CentOS ~]# yum install mod_dav_svn subversion
Gói mod_dav_svn cho phép truy cập tới repository bằng cách sử dụng HTTP, thông qua máy chủ Apache http và gói subversion cài đặt công cụ svnadmin.
Subversion đọc cấu hình từ tệp /etc/httpd/conf.d/subversion.conf. Sau khi thêm cấu hình, tệp subversion.conf trông giống như sau:
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>
Bây giờ chúng ta tạo các subversion client và cho phép chúng truy cập vào repository. Lệnh htpasswd được sử dụng để tạo và cập nhật file thuần văn bản mà được sử dụng để giữ tên sử dụng (username)và mật khẩu (password) cho sự xác nhận cơ bản của người dùng HTTP. Tùy chọn '-c' tạo file mật khẩu (password), nếu mật khẩu (password) đã tồn tại, nó viết đè lên. Đó là tại sao chỉ sử dụng tùy chọn '-c' vào lần đầu tiên. Tùy chọn '-m' cho phép mật mã hóa MD5 cho các mật khẩu (password).
Cài đặt tài khoản sử dụng trong SVN
Bây giờ chúng ta tạo một tài khoản sử dụng tom.
[root@CentOS ~]# htpasswd -cm /etc/svn-users tom
New password:
Re-type new password:
Adding password for user tom
Bây giờ tạo ra tài khoản jerry
[root@CentOS ~]# htpasswd -m /etc/svn-users jerry
New password:
Re-type new password:
Adding password for user jerry
[root@CentOS ~]#
Tạo thư mục gốc subversion để giữ tất cả phần công việc (theo dõi ở /etc/httpd/conf.d/subversion.conf).
[root@CentOS ~]# mkdir /var/www/svn
[root@CentOS ~]# cd /var/www../svn/
Cài đặt repository trong SVN
Tạo repository cho dự án đặt tên là project_repo. Lệnh svnadmin sẽ tạo một repository mới và một vài thư mục khác bên trong đó để giữ siêu dữ liệu.
[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
Bây giờ chúng ta thay đổi người sử dụng và sở hữu nhóm của repository.
[root@CentOS svn]# chown -R apache.apache project_repo/
Kiểm tra có hay không SELinux được cho phép hoặc không bằng cách sử dụng công cụ trạng thái 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
Đối với server của chúng ta, SELinux được cho phép, vì thế chúng ta phải thay đổi bối cảnh an toàn SELinux.
[root@CentOS svn]# chcon -R -t httpd_sys_content_t /var/www../svn/project_repo/
Để cho phép các commit qua HTTP, chạy lệnh sau:
[root@CentOS svn]# chcon -R -t httpd_sys_rw_content_t /var/www../svn/project_repo/
Restart máy chủ Apache và chúng ta đã làm xong việc định cấu hình cho server 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]#
Chúng ta đã định cấu hình cho server Apache thành công, bây giờ chúng ta sẽ định cấu hình cho repository. Để repository cung cấp quyền truy cập tới các người sử dụng xác thực nào đó và để sử dụng file ủy quyền mặc định, bạn gắn các dòng sau vào tệp project_repo/conf/svnserve.conf.
anon-access = none
authz-db = authz
Theo quy ước, mỗi dự án subversion có các thư mục thân (trunk), thẻ (tag) và các nhánh (branches) trực tiếp dưới thư mục gốc của dự án.
Thân trunk là thư mục tại đó tất cả sự tiến triển chính diễn ra và thường được kiểm tra bởi các nhà lập trình làm việc trên dự án đó.
Thư mục thẻ tags được sử dụng để giữ các ảnh chụp nhanh (snapshot) được đặt tên của dự án. Khi tạo một công bố sản phẩm, team sẽ ghi thẻ code mà thực hiện trong công bố.
Thư mục nhánh branches được sử dụng khi bạn muốn phân tuyến phát triển.
Bây giờ chúng ta hãy cùng tạo ra cấu trúc thư mục trunk, tags, và branches dưới repository của dự án.
[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
Bây giờ nhập các thư mục từ /tmp/svn-template tới repository.
[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]#
Nó đã được thực hiện. Chúng ta đã thành công tạo ra kho chứa và cho phép Tom và Jerry truy cập vào. Bắt đầu từ bây giờ, họ có thể thực hiện tất cả các hoạt động được hỗ trợ tới repository.