Linux下SVN服务器配置(转载及自己实践的经验)
2014-02-10 12:59
211 查看
由于实验室要做项目,于是要在服务器上配置svn,通过不断地根据网上的配置说明以及自己实践,决定重新总结一下配置svn的过程。
一、配置SVN
这个基本上是照瓢画葫芦,http://www.ha97.com/4467.html。
必须软件包
#yum install subversion mysql-serverhttpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv
vim-enhanced
1. 新建一个目录用于存储SVN所有文件
# mkdir /home/svn
2. 新建一个版本仓库
# svnadmin create /home/svn/project
3. 初始化版本仓库中的目录
# mkdir project project/server project/client project/test (建立临时目录)
# svn import project/ file:///home/svn/project -message “初始化SVN目录”
# rm -rf project (删除临时建立的目录)
4. 添加用户
要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。
[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw
5. 修改用户访问策略
/home/svn/project/conf/authz记录用户的访问策略,以下是参考:
[groups]
project_p = pm
project_s = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1
[project:/]
@project_p = rw
* =
[project:/server]
@project_p = rw
@project_s = rw
* =
[project:/client]
@project_p = rw
@project_c = rw
* =
[project:/doc]
@project_p = rw
@project_s = r
@project_c = r
@project_t = r
* =
说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。
6. 修改svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:
[general]
anon-access = none
auth-access = write
password-db = /home/svn/project/conf/passwd
authz-db = /home/svn/project/conf/authz
7. 启动服务器
# svnserve -d -r /home/svn
注意:如果修改了svn配置,需要重启svn服务,步骤如下:
# ps -aux|grep svnserve
# kill -9 ID号
# svnserve -d -r /home/svn
*这里需要说明的是,有时候会出现一些诡异的问题,可以killall svnserve或者netstat -ntlp直接去看占用3690端口的线程,kill掉即可
8. 测试服务器
#svn co svn://ip/project
# cd project/server
# vim main.c
# svn add main.c
# svn commit main.c -m "test"
*依然需要说明一点,这只是在服务器上的测试,要真正在其他主机上能够check out, commit,还要去防火墙设置,当然可以直接关闭防火墙,即service iptables stop。更好的做法是去防火墙配置文件中,
vi /etc/sysconfig/iptables
在
-A INPUT -j REJECT --reject-withicmp-host-prohibited
-A FORWARD -j REJECT --reject-withicmp-host-prohibited
之前输入(因为这两句的意义为在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。)
-A INPUT -m state --state NEW -m tcp -p tcp--dport 3690 -j ACCEPT
然后重启防火墙
service iptables restart
具体防火墙说明见http://wiki.centos.org/HowTos/Network/IPTables
二、配置SVN服务器的HTTP支持
1. 转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。使用原文中的Perl脚本完成这个工作.
脚本内容如下:
# cd /home/svn/project/conf/
# vim PtoWP.pl
#!/usr/bin/perl
# write by huabo, 2009-11-20
use warnings;
use strict;
#open the svn passwd file
open (FILE, "passwd") or die("Cannot open the passwd file!!!n");
#clear the apache passwd file
open (OUT_FILE, ">webpasswd")or die ("Cannot open the webpasswd file!!!n");
close (OUT_FILE);
#begin
foreach (<FILE>) {
if($_ =~ m/^[^#].*=/) {
$_ =~ s/=//;
`htpasswd -b webpasswd $_`;
}
}
# chmod +x PtoWP.pl
# ./PtoWP.pl
Adding password for user pm
Adding password for user server_group
Adding password for user client_group
Adding password for user test_group
现在目录下会多一个webpasswd文件。
2. 修改httpd.conf,添加关于SVN服务器的内容
编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:
<Location /project>
DAV svn
SVNPath /home/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /home/svn/project/conf/webpasswd
AuthzSVNAccessFile /home/svn/project/conf/authz
Satisfy all
Require valid-user
</Location>
3. 修改svn目录的属主为apache帐号:chown -R apache.apache/home/svn/project/
4. 重启Web服务器:
# /etc/init.d/httpd restart
Stopping httpd: [FAILED]
Starting httpd: [ OK ]
5. 用浏览器访问http://ip/project/server/测试
*如果服务器没有设置过httpd需要去防火墙里设置80端口,具体和之前一样。
其他的目前还用不到。按原文做如果有问题应该还是服务器的某些配置有问题。个人笔记本上用win7 TortoiseSVN可以顺利连接并check out。
一、配置SVN
这个基本上是照瓢画葫芦,http://www.ha97.com/4467.html。
必须软件包
#yum install subversion mysql-serverhttpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv
vim-enhanced
1. 新建一个目录用于存储SVN所有文件
# mkdir /home/svn
2. 新建一个版本仓库
# svnadmin create /home/svn/project
3. 初始化版本仓库中的目录
# mkdir project project/server project/client project/test (建立临时目录)
# svn import project/ file:///home/svn/project -message “初始化SVN目录”
# rm -rf project (删除临时建立的目录)
4. 添加用户
要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。
[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw
5. 修改用户访问策略
/home/svn/project/conf/authz记录用户的访问策略,以下是参考:
[groups]
project_p = pm
project_s = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1
[project:/]
@project_p = rw
* =
[project:/server]
@project_p = rw
@project_s = rw
* =
[project:/client]
@project_p = rw
@project_c = rw
* =
[project:/doc]
@project_p = rw
@project_s = r
@project_c = r
@project_t = r
* =
说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。
6. 修改svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:
[general]
anon-access = none
auth-access = write
password-db = /home/svn/project/conf/passwd
authz-db = /home/svn/project/conf/authz
7. 启动服务器
# svnserve -d -r /home/svn
注意:如果修改了svn配置,需要重启svn服务,步骤如下:
# ps -aux|grep svnserve
# kill -9 ID号
# svnserve -d -r /home/svn
*这里需要说明的是,有时候会出现一些诡异的问题,可以killall svnserve或者netstat -ntlp直接去看占用3690端口的线程,kill掉即可
8. 测试服务器
#svn co svn://ip/project
# cd project/server
# vim main.c
# svn add main.c
# svn commit main.c -m "test"
*依然需要说明一点,这只是在服务器上的测试,要真正在其他主机上能够check out, commit,还要去防火墙设置,当然可以直接关闭防火墙,即service iptables stop。更好的做法是去防火墙配置文件中,
vi /etc/sysconfig/iptables
在
-A INPUT -j REJECT --reject-withicmp-host-prohibited
-A FORWARD -j REJECT --reject-withicmp-host-prohibited
之前输入(因为这两句的意义为在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。)
-A INPUT -m state --state NEW -m tcp -p tcp--dport 3690 -j ACCEPT
然后重启防火墙
service iptables restart
具体防火墙说明见http://wiki.centos.org/HowTos/Network/IPTables
二、配置SVN服务器的HTTP支持
1. 转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。使用原文中的Perl脚本完成这个工作.
脚本内容如下:
# cd /home/svn/project/conf/
# vim PtoWP.pl
#!/usr/bin/perl
# write by huabo, 2009-11-20
use warnings;
use strict;
#open the svn passwd file
open (FILE, "passwd") or die("Cannot open the passwd file!!!n");
#clear the apache passwd file
open (OUT_FILE, ">webpasswd")or die ("Cannot open the webpasswd file!!!n");
close (OUT_FILE);
#begin
foreach (<FILE>) {
if($_ =~ m/^[^#].*=/) {
$_ =~ s/=//;
`htpasswd -b webpasswd $_`;
}
}
# chmod +x PtoWP.pl
# ./PtoWP.pl
Adding password for user pm
Adding password for user server_group
Adding password for user client_group
Adding password for user test_group
现在目录下会多一个webpasswd文件。
2. 修改httpd.conf,添加关于SVN服务器的内容
编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:
<Location /project>
DAV svn
SVNPath /home/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /home/svn/project/conf/webpasswd
AuthzSVNAccessFile /home/svn/project/conf/authz
Satisfy all
Require valid-user
</Location>
3. 修改svn目录的属主为apache帐号:chown -R apache.apache/home/svn/project/
4. 重启Web服务器:
# /etc/init.d/httpd restart
Stopping httpd: [FAILED]
Starting httpd: [ OK ]
5. 用浏览器访问http://ip/project/server/测试
*如果服务器没有设置过httpd需要去防火墙里设置80端口,具体和之前一样。
其他的目前还用不到。按原文做如果有问题应该还是服务器的某些配置有问题。个人笔记本上用win7 TortoiseSVN可以顺利连接并check out。
相关文章推荐
- linux命令行常用svn命令(转载,又加了自己的要注意点)
- Linux环境SVN命令行使用经验总结
- Linux配置与软件安装(个人实践经验) - (1)
- [转载]构建 arm-linux 仿真运行环境 (skyeye + arm-linux + NFS)(自己附加了注解)
- Windows 2003上安装配置SVN服务器及客户端 结合别人的文章以及自己实践整理
- [转载]vc6转2008的一些实践经验
- linux [转载]linux 命令行svn使用
- linux编程实践经验sshpass、md5sum、ssh
- 应用上传至APPStore,证书临时文件,以及svn一些实践经验
- [转载]linux下svn常用指令
- linux内核探索:定制自己的initrd.img-转载并修改
- linux编译安装apache 自己一步步的经验
- Linux系统管理员成长经验:十大工作心得[转载]
- 转载:LINUX上快速使用SVN
- Linux下的SVN服务器搭建转载自Melon岛主
- Hadoop2.7.0 以及相关linux知识(自己总结经验)
- LFS打造自己的linux系统(转载)
- 详解Linux命令行下常用svn命令(转载)
- linux内核编译(自己实践过的)
- 【转载】Linux下SVN 检出windows SVN服务器上的项目出错:SSL handshake failed