最近在研究jenkins,因在研究阶段,所有不敢用公司的svn,所以只好自己动手操作了,对于打包工具来说,我是小白中的小白,现在小白就给你讲解一下亲身经过的svn安装过程。
创建Centos6.5虚拟机并连外网,并配置yum网络源
SVN
一、安装svn
yum install subversion
二、基本的SVN服务器配置
1.新建一个目录用于存储SVN所有文件 mkdir /home/svn
2.新建一个版本仓库 svnadmin create /home/svn/project
新建第二个版本仓库 svnadmin create /home/svn/project1
在每个版本仓库里生成四个目录,conf,db,hooks与locks,其中conf里面的文件含义:
authz文件是权限控制文件
passwd是账号密码文件
svnserve.conf 是SVN服务配置文件
db,hooks,locks后期补充说明
3.在某仓库目录里将conf目录拷贝至/home/svn目录,应该是方便后期每个用户都可以访问不同的仓库。
每个仓库下的conf目录里只保留svnserve.conf,authz与passwd删除。
3.添加用户
要添加SVN用户非常简单,只需在/home/svn/conf/passowrd文件中[users]下用户名及密码
username=password 格式的内容即可,我添加了
4.修改用户访问策略 /home/svn/conf/authz
[project:/]
rln=rw
sjz=rw
5.修改/home/svn/conf/svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:
[general]
anon-access = none
auth-access = write #授权用户可写
password-db = /home/svn/conf/passwd #(这个可以是绝对地址 也可以是相对文件地址,原因是 可以多个代码仓库共享同一个密码设定)
authz-db = /home/svn/conf/authz
注:[general]里的内容行开头不能有空格,否则报错,我就吃亏这儿了
6.修改/home/svn/仓库/conf/svnserve.conf文件,以project为例.
svnserve.conf内容如下:
[general]
anon-access = none
auth-access = write #授权用户可写
password-db = /home/svn/conf/passwd #(这个可以是绝对地址 也可以是相对文件地址,原因是 可以多个代码仓库共享同一个密码设定)
authz-db = /home/svn/conf/authz
第6步不知道是否保留,反正我配置了
7.启动服务/停止服务
svnserve -d -r /home/svn #启动服务
ps -ef|grep svnserve #查找svnserve进程号使用kill -9 杀掉,即可停止服务
8.测试svn服务
现在就配置好了,那咱们提交一个文件测试一下吧
提交也不是哪个位置都可以,需要进入之前创建的临时目录/home/svn/project/conf/project/server,在此目录随便创建一个文件,执行svn add 与svn commit即可,最后会提示提交后的版本为n(n代表版本号)
若想使用http访问,则需要进行以下配置
三,配置SVN服务器的HTTP支持
1,转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。.将/home/svn/conf/passwd备份,在命令行中执行以下
vim passwd #清空文件
htpasswd -c passwd rln #会让输入访用户的密码
htpasswd passwd szj #第二次以后不必添加-c,同样输入密码
现在目录下会多一个passwd文件,则必须在该文件顶部添加[users]。
注:添加完用户后,都要添加[users],若下次新增用户了,则需要删除顶部的[users],再htpasswd 文件名 用户名格式添加用户,然后再添加[users]。
2,修改httpd.conf,添加关于SVN服务器的内容,在此步之前需要安装 mod_dav_svn,否则在启动httpd服务时报DAV错误,yum install mod_dav_svn.
mod_dav_svn,它是Subversion与Apache之间的接口(通过它,Apache就可以访问版本库,可以让客户端也使用HTTP的扩展协议 WebDAV/DeltaV进行访问)
编辑/etc/httpd/conf.d/subversion.conf,在最后添加如下信息:
<Location /project>
DAV svn
SVNPath /home/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /home/svn/conf/webpasswd
AuthzSVNAccessFile /home/svn/conf/authz
Satisfy all
Require valid-user
</Location>
在/etc/httd/conf/httpd.conf文件中更改
Listen 9999 #默认是80
ServerNmae localhost:9999
3,启动HTTPD服务器
# service httpd restart
Stopping httpd: [FAILED]
Starting httpd: [ OK ]
四、此过程遇到的问题及解决方案
1、通过svn从从客户端提交代码时出现
svn: Can't open file '/home/svn/project/db/txn-current-lock': Permission denied
最直接的办法是给它权限即用 sudo chmod 777 /home/svn/project 即可解决问题
2、svnserve -d -r /home/svn在启动hhtpd时出现:svnserve: 不能绑定服务器套接字: 地址已在使用
说明该进程正在使用可以用命令 ps -aux 查看进程
用命令kill -9 +进程标识号来强行终止进程即可解决
3.启动服务时报以下错误
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.152.128 for ServerName
请更改
# vi httpd.conf
#ServerName www.example.com:80
ServerName localhost:80 #端口号需要设置你更改的值,默认是80
4.浏览器用户登录后,报无权限
在/etc/http/conf/httpd.conf 文件中 Section 2: 'Main' server configuration部分中的 Alias部分添加以下
Alias /svn/ "/home/svn/" #必须有最后的/
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
重启服务即可
5.TortoiseSVN 使用http访问时报“zd URL 'http://IP:端口号/访问目录'检测到循环重定向”,目前正在解决中
6.权限介绍记录
五、用浏览器访问http://192.168.X.X/project测试