Ubuntu server10.10下安装配置SVN
第一个版本(测试是可以用的):
?
1、安装subversion服务器和apache2服务器
sudo apt-get install subversion subversion-tools
sudo apt-get install apache2
sudo apt-get install libapache2-svn
2、配置subversion服务器
1> 添加用户组
sudo addgroup subversion
2> 把www-data用户添加进subversion组
sudo usermod -G subversion -a www-data
3> 在home下面建立svn目录,用来存放不同的svn仓库
sudo mkdir /home/svn
4> 新建一个目录 /home/svn/java-projects
sudo mkdir /home/svn/java-projects
5> 为这个目录授权,把subversion组的用户添加进去
sudo chown -R www-data:subversion /home/svn/java-projects
6> 创建一个新的svn仓库
sudo svnadmin create /home/svn/java-projects
7> 赋予该svn仓库可读写权限
sudo chmod -R g+rws /home/svn/java-projects
8> 在指定的位置增加用户帐号与密码的文件
sudo htpasswd -c /etc/subversion/passwd thinksoar
上面语句是创建一个新的passwd文件,里面默认添加一个thinksoar帐号,回车后,会2次要求输入密码
当需要新增一个svn用户时,千万记得,要去除-c这个选项,否则会创建一个新的passwd覆盖原有的文件
并且会把thinksoar这个帐号给去除
正确的语句是:sudo htpasswd /etc/subversion/passwd daihaixiang
修改用户密码:
sudo htpasswd /etc/subversion/passwd daihaixiang
删除用户:(要用大写的D)
sudo htpasswd -D /etc/subversion/passwd daihaixiang
9> 配置svn仓库java-projects的配置文件
sudo pico/nano /home/svn/java-projects/conf/svnserve.conf
这里面把下面几行前面的#注释去除
#[general]
#password-db = passwd
#authz-db = authz
3、配置apache2
sudo pico /etc/apache2/mods-available/dav_svn.conf
在最下面,增加以下配置
<Location /svn/java-projects>
??? DAV svn
??? SVNPath /home/svn/java-projects
??? AuthType Basic
??? AuthName "thinksoar subversion repository"
??? AuthUserFile /etc/subversion/passwd
??? AuthzSVNAccessFile /home/svn/java-projects/conf/authz
??? Require valid-user
</Location>
解释:thinksoar subversion repository 这里的文字是出现在弹出的对话框上面的文字,可任意设置
4、最后一步,配置svn仓库里面的授权文件和密码文件
1> 授权文件配置
sudo pico /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> 密码文件配置
sudo pico /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
sudo apt-get install apache2
sudo apt-get install subversion
sudo apt-get install libapache2-svn
安装完后按照提示
Run '/etc/init.d/apache2 restart' to activate new configuration!
重启apache2
第二步:创建SVN库和项目
sudo mkdir /home/svn??????? //创建SVN库
sudo svnadmin create /home/svn/project????? //创建项目
第三步:创建组并添加成员
sudo addgroup subversion???? //创建一个叫subversion的组为拥有仓库所在的目录
系统提示:正在添加组"subversion" (GID 1001)...
?????????????????? 完成。
sudo? usermod -G subversion -a www-data?? //将自己和“www-data”(Apache 用户)加入组成员中
查看:more /etc/group | grep subversion
系统提示:subversion:x:1001:www-data
第三步:修改项目权限
sudo chown -R root:subversion /home/svn/project
sudo chmod -R g+rws /home/svn/project?? //赋予组成员对所有新加入文件仓库的文件拥有相应的权限
查看txn-current-lock文件的权限和用户以及组信息
?ls -l /home/svn/myproject/db/txn-current-lock
系统提示:-rw-rwSr-- 1 root subversion 0 2011-01-25 17:47? /home/svn/project/db/txn-current-lock
第四步:通过命令访问库
sudo svn co file://lodalhost/home/svn/project?? //第一种方法,知道主机名时用
sudo svn co file:///home/svn/project??? //第二种方法,当不确定主机命时用,这用的是file:///,三个斜杠
系统提示:取出版本 0。
己可以取出版本,说明SVN服务器己正常运行,下面试从webdav访问
第五步:配置apache2
修改 /etc/apache2/mods-available/dav_svn.conf
sudo vim /etc/apache2/mods-available/dav_svn.conf
加入以下代码:
================================
<Location /svn/project>
DAV svn
SVNPath /home/svn/myproject
AuthType Basic
AuthName "project subversion repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
如果需要用户每次登录时都进行用户密码验证,就将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉
加入代码后重启apache2
=================================
第六步:建立/etc/subversion/passwd文件,这个文件里包含了用户授权的详细信息
添加用户
sudo htpasswd -c /etc/subversion/passwd [user_name]??????????????? //第一次添加用户使用参数“-c”以后再添加就不用了
访问文件仓库
?svn co http://hostname/svn/project project --username [username]
OK!这次通过web页面访问到版本库了,下面试一下导入版本库
导入版本库
把/var/www/下的内容导入版本号中:
sudo svn? import -m "第一次导入"? /var/www http://192.168.0.5/svn/project
========================================
系统提示:
认证领域: <http://192.168.0.5:80> myproject subversion repository
“root”的密码:
认证领域: <http://192.168.0.5:80> myproject subversion repository
用户名: test
“test”的密码:
增加?????????? /var/www/index.html
-----------------------------------
注意!? 你的密码,对于认证域:
?? <http://192.168.0.5:80> myproject subversion repository
只能明文保存在磁盘上!? 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/home/icedot/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------
保存未加密的密码(yes/no)?
请输入 'yes' 或 'no': yes
提交后的版本为 1。
==========================================
最后在windows下通过TortoiseSVN及web页面访问,成功。
==========================================
试验过程中曾经出现过的错误
检出版本库报错:
sudo svn co http://192.168.0.5/home/svn/project
svn: 方法 OPTIONS 失败于 “http://192.168.0.5/home/svn/myproject”: 200 OK (http://192.168.0.5)
这个报错在网上查了很久,没什么可借鉴的资料,模糊的觉的可能是说用户名和权限不对,以待后面确认
sudo svn co file://localhost/home/svn/project
svn: 无法为URL打开ra_local会话
svn: 无法打开版本库“file://localhost/home/svn/projcet”
这个报错应该和上一个报错是一样的,用户的权限的问题性大一点,以待试过后再确认