2013年12月5日 admin 发表评论 阅读评论 html
如下是centos环境下,以yum安装apache及其相关软件。svn使用源码包编译,使用官网最新的1.8.5版本。 java
yum -y install httpd httpd-devel openldap openldap-devel mod_authz_ldap openssl openssl-devel zlib zlib-devel apr apr-uti
因为centos6.4上自带的sqlite 3.6.20版本过低,不符合subversion的最低要求,因此须要经过源码包安装web
wget http://www.sqlite.org/2013/sqlite-autoconf-3080100.tar.gz tar zxvf sqlite-autoconf-3080100.tar.gz cd sqlite-autoconf-3080100 ./configure make && make install
一、subversion源码包安装sql
tar zxvf subversion-1.8.5.tar.gz mkdir -p ./subversion-1.8.5/sqlite-amalgamation cp ./sqlite-autoconf-3080100/sqlite3.c ./subversion-1.8.5/sqlite-amalgamation cd subversion-1.8.5 ./configure --prefix=/usr/local/subversion make && make install
二、配置环境变量apache
echo 'PATH=$PATH:/usr/local/subversion/bin' >>/etc/profile echo 'export PATH'>>/etc/profile source /etc/profile
三、建立版本库vim
cd /data1/svnroot svnadmin create --pre-1.6-compatible test
注意:若是这里不写--pre-1.6-compatible,更新svn的时候会报post commit FS processing had error: Couldn’t open rep-cache database centos
一、复制subversion下的mod文件安全
cp /usr/local/subversion/libexec/mod_authz_svn.so /etc/httpd/modules/ cp /usr/local/subversion/libexec/mod_dav_svn.so /etc/httpd/modules/
二、配置subversion.conf文件服务器
vim /etc/httpd/conf.d/subversion.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <VirtualHost *:80> ServerName svn.361way.com LogLevel warn <Directory "/data1/svnroot"> # Order deny,allow # Deny from all # Allow from 115.236.xxx.xxx/29 </Directory> <Location /svn> # Order deny,allow # Deny from all # Allow from 115.236.xxx.xxx/29 # Allow from 119.37.xxx.xxx/24 DAV svn SVNParentPath /data1/svnroot AuthBasicAuthoritative on AuthType Basic AuthName "csvn" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL "ldap://127.0.0.1/ou=Users,domainName=sangame.com,o=domains,dc=sangame,dc=com?uid?sub?(|(&(objectClass=mailuser)(accountStatus=active))(cn=svnadmin))" AuthLDAPBindDN "cn=ldapread,dc=361way,dc=com" AuthLDAPBindPassword "123456" #AuthUserFile /etc/httpd/conf/svn.passwd AuthzSVNAccessFile /etc/httpd/conf/svnauthz.conf # Satisfy Any Require valid-user </Location> </VirtualHost>
若是不使用ldap认证,而使用密码文件认证则配置文件能够改成:网络
<Location /> DAV svn SVNParentPath /data1/svnroot/ #svn 根目录 SVNListParentPath On SVNAutoversioning On SVNReposName "svn" AuthzSVNAccessFile /opt/svn/subversion/conf/authz.conf #目录分组权限 AuthType Basic AuthName "Subversion repository" AuthUserFile /opt/svn/subversion/conf/passwd.conf #密码验证文件 Require valid-user </Location>
三、配置SVN权限认证文件
vim /etc/httpd/conf/svnauthz.conf [groups] admin=robin,svnadmin,ybk [/] @admin = rw [test:/] ybk= rw zzy = rw
注:
一、上面的test对应的是svnadmin下create的目录。
二、@admin对应的是管理员组,能够再建其余组,如:java_team 、oam、market等。robin、svnadmin、ybk、zzy这些都是用户名 。若是要和ldap进行整合的话,确保这些用户在ldap中存在。
三、使用if-svnadmin 这类web程序作svn的用户权限管理时,须要确保svnauthz.conf文件对apache用户可写,否则在if-svnadmin修改时不生效。
四、确保/data1/svnroot目录apache用户可读写或直接属主改过apache,否则在使用TortoiseSVN等程序上传或删除时会提示权限拒绝。
以上配置完成后,就能够启动apache以http://svn.361way.com/svn/test 的方式防问了。
关于openldap的相关配置这里就再也不细说。若是使用到dav方法的调用时,还要安装neon。(neon 是一个 HTTP 和 WebDAV 客户端的C语言开发包,支持 Linux/Unix。提供 HTTP/1.1 和 WebDAV 方法的高级接口以及底层的 HTTP 请求/回应处理,可轻松实现新的方法。)不过因为apache下有mod_dav_svn的模块整合,因此这里就不须要安装了。
一、svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。这里是以apache整合的;独立服务的方式为svnserve -d -r /data1/svnroot方式启动进程,监听端口为3690 。
二、svn存储版本数据也有2种方式:BDB和FSFS。由于BDB方式在服务器中断时,有可能锁住数据,因此仍是FSFS方式更安全一点。默认使用的存储方式也是FSFS方式。
最后,其相关组件及用途以下:
svn 命令行客户端程序。 svnversion 此工具用来显示工做拷贝的状态(用术语来讲,就是当前项目的修订版本)。 svnlook 直接查看Subversion版本库的工具。 svnadmin 创建、调整和修复Subversion版本库的工具。 svndumpfilter 过滤Subversion版本库转储数据流的工具。 mod_dav_svn ApacheHTTP服务器的一个插件,使版本库能够经过网络访问。 svnserve 一个单独运行的服务器程序,能够做为守护进程或由SSH调用。这是另外一种使版本库能够经过网络访问的方式。 svnsync 一个经过网络增量镜像版本库的程序
三、apache和svnserver两种方式的访问方法
http://192.168.1.222/repos,采用了Apache做为服务器的话就能够以这种形式访问,权限由Apache设置。 svn://192.168.1.222/repos,采用了svnserve做为服务器的话那么就能够采用这种形式访问,它是一种基于TCP/IP的访问方式。权限由仓库的配置文件设置。
四、权限配置总结
用户组格式: [groups] 用户组名 = 用户1,用户2 其中,1个用户组能够包含1个或多个用户,用户间以逗号分隔。 版本库目录格式: [版本库:/项目目录] @用户组名 = 权限 用户名 = 权限 其中,方框号内部分能够有多种写法: /,表示根目录及如下。根目录是svnserve启动时指定的,咱们指定为/home/svnroot/repository。这样,/就是表示对所有版本库设置权限。 test:/,表示对版本库test设置权限 权限主体能够是用户组、用户或*,用户组在前面加@,*表示所有用户。权限能够是w、r、wr和空,空表示没有任何权限。