Chuyển đến nội dung chính

Tạo SVN Server & import project lên svn


Hướng dẫn tạo svn repository, cấu hình apache & đẩy dự án lên SVN


Đối với một vài dự án nhỏ bạn không được cấp svn, bạn không thể sử dụng những dịch vụ svn cung cấp miễn phí: Google code, bitbucket,... lúc đó điều đầu tiên nảy sinh trong đầu các bạn là cài đặt svn server trên máy mình để tiện sử dụng.

Điều kiện, máy bạn cần cài đặt apache & svn
- Trên Windows: các bạn có thể cài Xampp, wampserver hoặc apache riêng & TortoiseSVN
- Trên Mac OSX: apache & svn đã có mặc định

Ở đây mình hướng dẫn sử dụng trên hệ điều hành MacOSX ( do mình sử dụng máy Mac)

Bước 1. Tạo thư mục SVN. Để có thể add nhiều project vào svn, các bạn nên tạo một thư mục cha ví dụ: svn. Ở đây mình tạo thư mục svn với đường dẫn /Data/svn

Bước 2. Tạo file /Data/svn/.svn-policy-file
[groups]
team1 = longhoanggiang, giangnh

[/]
* =

[symfony2jobeet:/]
@team1 = rw
ngongocquynh = r
* =
 
Dấu * ở đây có nghĩa là tất cả anonymous user (ẩn danh) sẽ chỉ có quyền đọc (read). User longhoanggiang sẽ có quyền đọc & ghi đối với repository symfony2jobeet (cách tạo repository các bạn xem phía dưới)

Bước 3. Tạo file /Data/svn/.svn-auth-file

Gõ lệnh: htpasswd -cs /Data/svn/.svn-auth-file longhoanggiang

Tiếp đó bạn sẽ nhập mật khẩu cho user longhoanggiang
Bước này để tạo user longhoanggiang & đặt mật khẩu cho user longhoanggiang

Để tạo thêm user các bạn gõ lệnh: htpasswd -s /Data/svn/.svn-auth-file nguoidung2

Muốn add thêm người dùng 2 vào repository thì các bạn thêm nguoidung2 = rw vào trong file /Data/svn/.svn-policy-file

Sau khi đã tạo xong 2 file .svn-policy-file & .svn-auth-file, ta cấu hình apache.

Bước 4. Copy 2 file mod_authz_svn.so & mod_dav_svn.so vào thư mục /usr/libexec
Mặc định các module của apache sẽ được lưu trong thư mục /usr/libexec, do đó ta copy 2 file mod_authz_svn.so & mod_dav_svn.so từ thư mục libexec khi cài svn. Trong trường hợp của mình, 2 file trên nằm trong thư mục /usr/local/libexec.

Bước 5. Edit file cấu hình httpd.conf nằm trong đường dẫn /etc/apache2/httpd.conf
  • Bạn chắc chắn đã kích hoạt module mod_dav.so & mod_dav_fs.so
  • Bạn load thêm module mod_authz_svn.so & mod_dav_svn.so. Bạn thêm 2 dòng sau vào dưới đoạn LoadModule:
            LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
     LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so


Bước 6. Thêm cấu hình vào file httpd.conf để apache nhận thư mục /Data/svn
Thêm vào dưới cùng của file httpd.conf đoạn cấu hình sau:
<Location /svn>
  DAV svn
  SVNParentPath /Data/svn
 
  AuthName "SVN Repository"
  AuthType Basic
  AuthUserFile /Data/svn/.svn-auth-file
  Require valid-user
               AuthzSVNAccessFile /Data/svn/.svn-policy-file
</Location>
Bước 7. Tạo repository trong thư mục /Data/svn
Gõ lệnh: svnadmin create /Data/svn/symfony2jobeet
Gán quyền cho user apache: sudo chown -R _www:_www /Data/svn/symfony2jobeet

Bước 8. Copy project của bạn sang một thư mục khác để chuẩn bị import lên svn

Ở đây mình tạo thư mục svn-import/TRUNK để chứa project của mình

cp -R /var/www/symfony2jobeet/* /var/www/svn-import/TRUNK

svn import -m 'Initial import' /var/www/svn-import http://localhost/svn/symfony2jobeet

Tiến hành nhập username & password để import project lên svn server

Bước 9. Checkout project trên svn về

svn co http://localhost/svn/symfony2jobeet /var/www/symfony2jobeet

OK. Bạn đã setup xong svn server & đẩy dự án lên svn

Bài viết của Long Hoàng Giang
Vui lòng giữ nguyên tác giả nếu bạn copy bài viết này

Tham Khảo:

https://wiki.archlinux.org/index.php/Subversion_Setup
http://svn.spears.at


Tags: cai dat svn server, cau hinh svn repository, setup svn repository & apache


























Nhận xét

Bài đăng phổ biến từ blog này

Change Timezone in CentOS | Thay đổi múi giờ trong CentOS

Timezone of VietNam is Asia/Ho_Chi_Minh. To change default timezone in centos, follow this struction.   mv /etc/localtime /etc/localtime.bak ln -s /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime Type date in terminal and you will see time in Viet Nam In Linux, the system time zone is determined by the symbolic link /etc/localtime . This link points to a time zone data file that describes the local time zone. The time zone data files are located at either /usr/lib/zoneinfo or /usr/share/zoneinfo depending on what distribution of Linux you use. For example, on a SuSE system located in New Jersey the /etc/localtime link would point to /usr/share/zoneinfo/US/Eastern . On a Debian system the /etc/localtime link would point to /usr/lib/zoneinfo/US/Eastern . If you fail to find the zoneinfo directory in either the /usr/lib or /usr/share directories, either do a find /usr -print | grep zoneinfo or consult your distribution's do