SVN搭建
服务器端环境
CentOS 6.0 + VMware 8.0.0build-471780
# svnserver --version
1.6.11 (r934486),编译于 Sep 21 2011, 14:59:40
客户端环境
Windows XP Professional版本2002 Service Pack 3 + TortoiseSVN-1.7.7.22907-win32-svn-1.7.5.msi
默认情况下,CentOS是已经安装了svn服务器的,接下去,直接配置svn服务器端即可
SVN配置
参考资料:http://johnshen0708.iteye.com/blog/1275506
http://linuxguest.blog.51cto.com/195664/179617/
创建组和用户,修改用户密码:
#groupadd svn
#useradd svnroot -g svn
#paswd svnroot (新密码:123456)
使用svnroot用户登录
#su - svnroot
创建repository及版本库(例如work)
# mkdir /home/svnroot/repository
# svnadmin create/home/svnroot/repository/work
修改repository目录权限
# chmod 700 /home/svnroot/repository
权限修改前
drwxr-xr-x 3 svnroot svn 4096 7月 3 22:12 repository
修改后
drwx------ 3 svnroot svn 4096 7月 3 22:12 repository
导入数据 参考 http://www.cnblogs.com/xuxm2007/archive/2011/09/17/2179419.html
使用svnroot用户登录
#su - svnroot
# mkdir svntest
# vi ./svntest/test.txt (内容为svntest)
$ svn import ./svntest file:///home/svnroot/repository/work-m "Initial repository test"
关联Apache和SVN
打开apache配置文件 (通过find命令查找文件httpd.conf位置)
# vi /etc/httpd/conf/httpd.conf (vi命令需要root用户操作,否则修改后不能保存)
在httpd.conf中添加SVN关联 (本步骤无需要,在文件/etc/httpd/conf.d/subversion.conf中已有配置)
LoadModule dav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_module modules/mod_authz_svn.so
修改文件/etc/httpd/conf.d/subversion.conf
# vi /etc/httpd/conf.d/subversion.conf (vi命令 需要root用户操作,否则修改后不能保存)
#<Location /repos> 未修改
# DAV svn
# SVNParentPath /var/www/svn
#
# #Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
# AuthType Basic
# AuthName "Authorization Realm"
# AuthUserFile /path/to/passwdfile
# Require valid-user
# </LimitExcept>
#</Location>
<Location /svn> 复制一份修改
DAV svn
SVNParentPath /home/svnroot/repository/
#Limit write permission to list of valid users.
<LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "Welcome to SVN!"
AuthUserFile /home/svnroot/repository/conf/passwd
AuthzSVNAccessFile /home/svnroot/repository/conf/authz
Require valid-user
</LimitExcept>
</Location>
修改文件/etc/httpd/conf/httpd.conf
将下面两行
User apache
Group apache
改为
User svnroot
Group svn
2.5. 启动Apache:
#/usr/local/apache2/bin/apachectl start
2.6. 启动时若端口被占用,则可修改apache端口:
#cd /usr/local/apache2/conf
#vi httpd.conf
Listen 88 //默认值是80,修改成任意一个不被占用的端口
修改配置文件/home/svnroot/repository/work/conf/svnserve.conf
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access= none
#认证用户的权限,可以是read,write,none,默认为write
auth-access= write
#密码数据库的路径,去掉前面的#
password-db= /home/svnroot/repository/conf/passwd
#用户操作权限#
authz-db = /home/svnroot/repository/conf/authz
realm = /home/svnroot/repository/work
新建SVN用户及密码
# htpasswd -c/home/svnroot/repository/conf/passwd john //admin组的用户为john
-c 表示创建文件 authz,以后加用户就不用带参数-c (root用户操作) (密码为123456,下同)
# htpasswd /home/svnroot/repository/conf/passwdjoe //dev1组的用户为joe和kate
# htpasswd /home/svnroot/repository/conf/passwdkate
# htpasswd /home/svnroot/repository/conf/passwdalan //dev2组的用户为alan和geoff
# htpasswd /home/svnroot/repository/conf/passwdgeoff
# htpasswd /home/svnroot/repository/conf/passwdlindar //docs组的用户为lindar和iain
# htpasswd /home/svnroot/repository/conf/passwdiain
编辑文件/home/svnroot/repository/conf/authz
# cp -af /home/svnroot/repository/work/conf/authz/home/svnroot/repository/conf/authz
# vi /home/svnroot/repository/conf/authz
[groups]
admin = john
dev1 = joe, kate
dev2 = alan, geoff
docs = lindar, iain
[work:/]
@admin=rw
*=r
[work:/svntest]
@dev1=rw
@dev2=rw
[work:/doc]
@docs=rw
7.开放服务器端口
SVN默认端口是3690,你需要在防火墙上开放这个端口。
# iptables -A INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT (root 用户操作)
# service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
#
可选]6、修改SELINUX权限
# chcon -R-h -u system_u -t httpd_sys_content_t /home/svnroot/repository
7,启动服务器 http://www.chineselinuxuniversity.net/articles/51283.shtml
# svnserve -d -r /home/svnroot/repository/work (root 用户启动)
检查端口3690是否开启
# lsof -i:3690
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
svnserve 11127 root 3u IPv4 79864 0t0 TCP 192.168.0.4:svn (LISTEN)
#
如果 killallsvnserve ,则lsof -i 3690无信息返回
启动svn
http://linuxguest.blog.51cto.com/195664/179617/
启动命令 #svnserve -d -r /home/svnroot/repository/work --listen-host 192.168.0.4 (192.168.0.4 为centos eth0 IP)
其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接用svn://服务器ip来访问了。如果服务器有多ip的话--listen-host来指定监听的ip地址。
我们可以在svn客户端中通过svn://192.168.1.18来访问svn服务器。
对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时需要写上每个仓库相对于svn根目录的相对路径。
比如,我们有两个代码仓库/home/svnroot/repository/test1 和/home/svnroot/repository/test2,我们用svnserve -d -r /home/svnroot/repository --listen-host 192.168.1.18来启动,那么在客户端访问时可以用svn://192.168.1.18/test1和svn://192.168.1.200 /test2来分别访问两个项目
启动完成以后,我们可以用psaux|grep svnserv来查看是否存在svnserve进程。
你也可以通过svnserve的--listen-port选项来指定一个已经开放的其他端口,不过这样的话客户端使用也必须加上端口,如svn://192.168.1.18:9999/。
测试svn连接
使用IE或SVN工具测试:http://hostname(or ip):88/svn/work
会提示输入用户名密码,输入验证,如果有问题需查apache的log。
http://blog.yipiantian.cn/archives/118
centos 6.0 安装配置SVN详细步骤
作者: 站长日期: 2011年九月19日 发表评论(0) 查看评论
在网上查了一天资料,终于配置成功了。
基本步骤:
1、安装必需的subversion
2、创建版本库
3、配置用户和权限
4、钩子和svn常用命令说明
一、安装subversion
在这里我们使用yum来安装subversion,使用以下命令即可完成。
- [root@localhost ~]# yum -y install subversion
二、创建版本库
- [root@localhost ~]# mkdir -p /home/svn/project01
- [root@localhost ~]# svnadmin create /home/svn/project01
三、版本库管理配置
进行刚才创建的版本库目录下的conf目录,可以看到有三个文件。
- [root@localhost ~]# cd /home/svn/project01/conf
- [root@localhost conf]# ls
- authz passwd svnserve.conf
svnserve.conf 这个是版本库的配置文件
passwd 这个是记录用户帐号密码的文件
authz 这个则是记录组、权限和身份验证的文件
1、配置svnserve.conf文件
这里需要设置以下几处
anon-access = none 指定匿名权限,默认为可读,现设置匿名无权限
auth-access = write 用户有写权限
password-db = passwd 账号密码文件的路径,psswd文件也可复制一份,命名为 passwd.conf 这样可以知道是配置文件,也可以放到其它目录下
authz-db = authz 同上
注意去掉#注释以后配置一定要顶格写,下同。
[root@localhost conf]# vi svnserve.conf
- anon-access = none
- auth-access = write
- password-db = passwd
- authz-db = authz
2、配置passwd
该文件中记录svn用户名密码,以 (帐号 = 密码)或(帐号 : 密码)的形式进行储存。
多用户之前用换行区分。这里配置了一个用户名为test1密码为123456的svn 账户。
[root@localhost conf]# vi passwd
- ### This file is an example password file for svnserve.
- ### Its format is similar to that of svnserve.conf. As shown in the
- ### example below it contains one section labelled [users].
- ### The name and password for each user follow, one account per line.
- [users]
- # harry = harryssecret
- # sally = sallyssecret
- test1 = 123456
3、authz文件的配置
[groups]表用于用户组的配置例如
“developers = test1,test2”这样就将这2个用户方在了developers组织之中。
建立组是为了方便给一组相同权限的用户分配权限。
[/] 指定是svn的根版本库
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
[root@localhost conf]# vi authz
- [groups]
- # harry_and_sally = harry,sally
- # developers = test1, test2
- # [/foo/bar]
- # harry = rw
- # * =
- # [repository:/baz/fuz]
- # @harry_and_sally = rw
- # * = r
- [/]
- test1 = rw
- * =
这样svn版本库就算配置完成了。
运行 svn, (停止SVN服务器命令为:killall svnserve )
[root@localhost ~]# svnserve -d -r/home/svn/
- 我们继续说下其他常用的一些配置
- 1、开机自动运行
- 在/etc/rc.d/rc.local 添加 “/usr/bin/svnserve -d -r svn版本库目录” 即可
- <pre lang="php">[root@localhost ~]# vi /etc/rc.d/rc.local
- #
- # This script will be executed *after* all the other init scripts.
- # You can put your own initialization stuff in here if you don't
- # want to do the full Sys V style init stuff.
- touch /var/lock/subsys/local
- /usr/bin/svnserve -d -r /home/svn/
2、钩子自动更新
说明,在开发时经常需要提交代码,如果使用钩子自动更新的话,只要有人提交后就能自动更新到服务器上,非常方便哦。
首先必须对代码目录checkout
[root@localhost ~]# cd /var/www
- [root@localhost www]# svn checkout svn://192.168.1.100/project01
- Authentication realm: 21d46c22-96a8-465b-9d0b-58a1e04abdfd
- Password for 'root':
- Authentication realm: 21d46c22-96a8-465b-9d0b-58a1e04abdfd
- Username: test1
- Password for 'test1':
- Checked out revision 0.
这样在 /var/www/ 中会生成一个目录 project01,我们可以把这个目录设置成站点来访问。
进入版本库hooks目录
将post-commit.tmpl 模板复制一份 取名post-commit
在末尾加上
svn up /home/svn/project01/ –username test1 –password 123456
并赋予执行权限。
[root@localhost ~]# cd/home/svn/project01/hooks/
- [root@localhost hooks]# ls
- post-commit.tmpl post-revprop-change.tmpl pre-commit.tmpl pre-revprop-change.tmpl start-commit.tmpl
- post-lock.tmpl post-unlock.tmpl pre-lock.tmpl pre-unlock.tmpl
- [root@localhost hooks]# cp post-commit.tmpl post-commit
- [root@localhost hooks]# vim post-commit
- REPOS="$1"
- REV="$2"
- svn up /home/svn/project01/ --username test1 --password 123456
- [root@localhost hooks]# chmod +x post-commit
这样当用户提交文件的第时候,svn将会自动执行更新,使代码同步。