sufjan 2011-07-05
第一个版本(测试是可以用的):
1、安装subversion服务器和apache2服务器
sudoapt-getinstallsubversionsubversion-tools
sudoapt-getinstallapache2
sudoapt-getinstalllibapache2-svn
2、配置subversion服务器
1>添加用户组
sudoaddgroupsubversion
2>把www-data用户添加进subversion组
sudousermod-Gsubversion-awww-data
3>在home下面建立svn目录,用来存放不同的svn仓库
sudomkdir/home/svn
4>新建一个目录/home/svn/java-projects
sudomkdir/home/svn/java-projects
5>为这个目录授权,把subversion组的用户添加进去
sudochown-Rwww-data:subversion/home/svn/java-projects
6>创建一个新的svn仓库
sudosvnadmincreate/home/svn/java-projects
7>赋予该svn仓库可读写权限
sudochmod-Rg+rws/home/svn/java-projects
8>在指定的位置增加用户帐号与密码的文件
sudohtpasswd-c/etc/subversion/passwdthinksoar
上面语句是创建一个新的passwd文件,里面默认添加一个thinksoar帐号,回车后,会2次要求输入密码
当需要新增一个svn用户时,千万记得,要去除-c这个选项,否则会创建一个新的passwd覆盖原有的文件
并且会把thinksoar这个帐号给去除
正确的语句是:sudohtpasswd/etc/subversion/passwddaihaixiang
修改用户密码:
sudohtpasswd/etc/subversion/passwddaihaixiang
删除用户:(要用大写的D)
sudohtpasswd-D/etc/subversion/passwddaihaixiang
9>配置svn仓库java-projects的配置文件
sudopico/nano/home/svn/java-projects/conf/svnserve.conf
这里面把下面几行前面的#注释去除
#[general]
#password-db=passwd
#authz-db=authz
3、配置apache2
sudopico/etc/apache2/mods-available/dav_svn.conf
在最下面,增加以下配置
<Location/svn/java-projects>
DAVsvn
SVNPath/home/svn/java-projects
AuthTypeBasic
AuthName"thinksoarsubversionrepository"
AuthUserFile/etc/subversion/passwd
AuthzSVNAccessFile/home/svn/java-projects/conf/authz
Requirevalid-user
</Location>
解释:thinksoarsubversionrepository这里的文字是出现在弹出的对话框上面的文字,可任意设置
4、最后一步,配置svn仓库里面的授权文件和密码文件
1>授权文件配置
sudopico/home/svn/java-projects/conf/authz
先配置groups组,把刚才在第二步,第八小节那里增加的用户分配到不同的组,比如:
把thinksoar分配到admin组,组名可以任意自己取,把daihaixiang用户分配到test组,
然后在svn仓库java-projects的[/]根目录那里,配置相应的读写权限,r表示只读,w表示只写,rw表示可读写
最后那句是表示其他用户只读,因为可能在passwd文件里面还有其他的用户。(注意行开始不要有多余空格)
[aliases]
[groups]
admin=thinksoar
test=daihaixiang
[/]
@admin=rw
@test=rw
*=r
去除注释后,把上面的文字贴进去。
2>密码文件配置
sudopico/home/svn/java-projects/conf/passwd
[users]
daihaixiang=daihaixiang
thinksoar=thinksoar
在java-projects仓库里面,有多少用户使用,就在这里添加多少个用户。密码可以是明文的
至此,就可以通过http进行访问svn了
http://192.168.203.129/svn/java-projects/
提示输入帐号密码,用绿毛龟软件也可以进行提交和检出了。
当然,你也可以通过svn协议、https等协议进行访问,需要做一些配置
下面继续讲如何配置svn协议和https协议进行访问:
svn协议配置:
启动daemon服务:在$下敲 sudo svnserve -d --foreground -r /home/,想办法弄成服务器启动直接启动这样,就可以svn co svn://192.168.203.129/svn/java-projects/ 这样访问了
第二个版本,看起来更详细,也收下了:
第一步:安装apache2 libapache2-svn subversion
sudoapt-getinstallapache2
sudoapt-getinstallsubversion
sudoapt-getinstalllibapache2-svn
安装完后按照提示
Run'/etc/init.d/apache2restart'toactivatenewconfiguration!
重启apache2
第二步:创建SVN库和项目
sudomkdir/home/svn//创建SVN库
sudosvnadmincreate/home/svn/project//创建项目
第三步:创建组并添加成员
sudoaddgroupsubversion//创建一个叫subversion的组为拥有仓库所在的目录
系统提示:正在添加组"subversion"(GID1001)...
完成。
sudousermod-Gsubversion-awww-data//将自己和“www-data”(Apache用户)加入组成员中
查看:more/etc/group|grepsubversion
系统提示:subversion:x:1001:www-data
第三步:修改项目权限
sudochown-Rroot:subversion/home/svn/project
sudochmod-Rg+rws/home/svn/project//赋予组成员对所有新加入文件仓库的文件拥有相应的权限
查看txn-current-lock文件的权限和用户以及组信息
ls-l/home/svn/myproject/db/txn-current-lock
系统提示:-rw-rwSr--1rootsubversion02011-01-2517:47/home/svn/project/db/txn-current-lock
第四步:通过命令访问库
sudosvncofile://lodalhost/home/svn/project//第一种方法,知道主机名时用
sudosvncofile:///home/svn/project//第二种方法,当不确定主机命时用,这用的是file:///,三个斜杠
系统提示:取出版本0。
己可以取出版本,说明SVN服务器己正常运行,下面试从webdav访问
第五步:配置apache2
修改/etc/apache2/mods-available/dav_svn.conf
sudovim/etc/apache2/mods-available/dav_svn.conf
加入以下代码:
================================
<Location/svn/project>
DAVsvn
SVNPath/home/svn/myproject
AuthTypeBasic
AuthName"projectsubversionrepository"
AuthUserFile/etc/subversion/passwd
<LimitExceptGETPROPFINDOPTIONSREPORT>
Requirevalid-user
</LimitExcept>
</Location>
如果需要用户每次登录时都进行用户密码验证,就将<LimitExceptGETPROPFINDOPTIONSREPORT>与</LimitExcept>两行注释掉
加入代码后重启apache2
=================================
第六步:建立/etc/subversion/passwd文件,这个文件里包含了用户授权的详细信息
添加用户
sudohtpasswd-c/etc/subversion/passwd[user_name]//第一次添加用户使用参数“-c”以后再添加就不用了
访问文件仓库
svn co http://hostname/svn/project project --username [username]OK!这次通过web页面访问到版本库了,下面试一下导入版本库
导入版本库
把/var/www/下的内容导入版本号中:
sudosvnimport-m"第一次导入"/var/wwwhttp://192.168.0.5/svn/project
========================================
系统提示:
认证领域:<http://192.168.0.5:80>myprojectsubversionrepository
“root”的密码:
认证领域:<http://192.168.0.5:80>myprojectsubversionrepository
用户名:test
“test”的密码:
增加/var/www/index.html
-----------------------------------------------------------------------
注意!你的密码,对于认证域:
<http://192.168.0.5:80>myprojectsubversionrepository
只能明文保存在磁盘上!如果可能的话,请考虑配置你的系统,让Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/home/icedot/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?
请输入 'yes' 或 'no': yes提交后的版本为 1。
==========================================
最后在windows下通过TortoiseSVN及web页面访问,成功。
==========================================
试验过程中曾经出现过的错误
检出版本库报错:
sudosvncohttp://192.168.0.5/home/svn/project
svn:方法OPTIONS失败于“http://192.168.0.5/home/svn/myproject”:200OK(http://192.168.0.5)
这个报错在网上查了很久,没什么可借鉴的资料,模糊的觉的可能是说用户名和权限不对,以待后面确认
sudosvncofile://localhost/home/svn/project
svn:无法为URL打开ra_local会话
svn:无法打开版本库“file://localhost/home/svn/projcet”
这个报错应该和上一个报错是一样的,用户的权限的问题性大一点,以待试过后再确认
pub_svnserve.conf的 pub_authz.conf的配置文件有非法字符的原因引起,需要查找pub_authz.conf提的非法内容比如多余的空格删除或直接将pub_authz.conf