记录一次Linux SVN的搭建过程

一、SVN搭建

服务器: Linux (Red Hat 4.8.5-11)

1、使用WandiscoSVN升级最新版本Subversion

ps: 原本使用的是svn-1.8的,但是在下载的时候抛出了异常“Requires: libsas2.so.2()(64bit)”,未能找到解决方案,所以最终搭建1.7版本的

2、安装SVN

[root@localhost ~]# yum install subversion

3、创建svn版本库目录

[root@localhost ~]# mkdir -p /var/svn/svnrepos

4、创建版本库

[root@localhost ~]# svnadmin create /var/svn/svnrepos

执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件

5、进入conf目录(该svn版本库配置文件)

authz:文件是权限控制文件

passwd:是帐号密码文件

svnserve.conf:SVN服务配置文件

6、设置帐号密码

[root@localhost ~]# vi passwd

在[users]块中添加用户和密码,格式:帐号=密码,如dan=dan

7、设置权限

[root@localhost ~]# vi authz

在末尾添加如下代码:

[svnrepos:/]

jaren01 = rw

jaren02 = r

* =

ps: jaren01有读写权限,jaren02仅有读的权限,* =标识其他用户没有任何权限

8、修改svnserve.conf文件

[root@localhost ~]# vi svnserve.conf

打开下面的几个注释:

anon-access = read #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

ps: anon-access = read需要改成anon-access = none,因为read用TortoiseSVN看到日志信息

9、启动svn版本库

[root@localhost ~]# svnserve -d -r /var/svn

10、服务器上测试是否成功

[root@localhost ~]# svn co svn://192.168.2.51/svnrepos

输出:Checked out revision 0.

并且会在当前目录下生成svnrepos文件夹

11、确认服务器端口是否开放,默认是3690

以下是Red Hat的端口设置:

[root@localhost ~]# service iptables status
Redirecting to /bin/systemctl status  iptables.service
Unit iptables.service could not be found.

安装 iptables-services:
[root@localhost ~]# yum install iptables-services

启动iptables:
[root@localhost ~]# service iptables start

编辑配置文件,将3690端口添加到22端口下:
[root@localhost ~]# vi /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690-j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

重启:
service iptables restart

查看开放端口:
[root@localhost ~]# /sbin/iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:3690
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

远端就能通过telnet 测试访问了:
telnet 192.168.2.51 3690

12、之后便可以通过TortoiseSVN连接上SVN了

二、Apache 服务器实现网页访问

1、安装httpd服务

[root@localhost ~]# yum install httpd

检查httpd是否安装成功:

2、安装mod_dav_svn

[root@localhost ~]# yum install mod_dav_svn

安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。

3、创建svn仓库

[root@localhost ~]# mkdir /var/www/svn
[root@localhost ~]# svnadmin create /var/www/svn/svnrepos

4、配置权限

[root@localhost ~]# chown -R apache:apache /var/www/svn/svnrepos/

创建用户文件passwd:

#创建用户文件
[root@localhost ~]# touch /var/www/svn/passwd

#创建用户admin该用户为网页登陆用户,与svn的用户区分,123456为密码,默认MD5加密
[root@localhost ~]# htpasswd -b /var/www/svn/passwd admin 123456  

创建权限文件authz(与SVN的一致即可):

5、配置httpd

[root@localhost ~]# touch /etc/httpd/conf.d/subversion.conf

[root@localhost ~]# vi /etc/httpd/conf.d/subversion.conf

#加入该语句
<Location /svn>
    DAV svn
    SVNParentPath /var/www/svn

    AuthType Basic
    AuthName "Authorization SVN"
    AuthzSVNAccessFile /var/www/svn/authz
    AuthUserFile /var/www/svn/passwd
    Require valid-user
</Location>

6、启动httpd服务

[root@localhost ~]# systemctl start httpd.service #启动
[root@localhost ~]# systemctl restart httpd.service #重启
[root@localhost ~]# systemctl stop httpd.service #停止
[root@localhost ~]# svnserve -d -r /var/www/svn/ #别忘了SVN启动起来

7、遇到的问题

利用http://xxx进行SVN的同步,报一下错误
Can't open file '/var/www/svn/wizbank/db/txn-current-lock': Permission denied
是因为我的环境防火墙拦截,暂时解决方法是关闭防火墙了
setenforce 0

8、演示

9、iptables防火墙命令

# 查看防火墙状态

service iptables status  

# 停止防火墙

service iptables stop  

# 启动防火墙

service iptables start  

# 重启防火墙

service iptables restart  

# 永久关闭防火墙

chkconfig iptables off  

# 永久关闭后重启

chkconfig iptables on  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值