Linux安装SVN

1.安装SVN

yum install subversion      从镜像下载安装svn服务器端

cd /usr/local/              //进入目录,准备创建svn目录

mkdir svn                   //创建一个svn目录

chmod -R 777 svn            //修改目录权限为777

svnadmin create /usr/local/svn/sunny  //创建一个svn版本仓库sunny(sunny可以随便起名字)

cd sunny/conf               //进入sunny版本仓库下的配置文件目录

 

2. 配置SVN

(1)vi svnserve.conf    //配置版本库信息和用户文件和用户密码文件的路径、版本库路径

# anon-access = read

# auth-access = write

# password-db = passwd

这四行,前面的#号和空格去掉,变成

anon-access = none      //改成none

auth-access = write

password-db = passwd

realm = sunny           //改成自己的版本库

保存

 

(2)vi authz     //文件,创建svn组和组用户的权限

[group]

sunny = gep,wce //创建一个sunny的组,并制定两个用户gep和wce

 

[/]             //制定根目录下的权限

@sunny=rw     //sunny组用户权限为读写

* = r           //其他用户只有读权限

保存退出

 

(3) vi passwd   //创建或修改用户密码

[users]

gep = 123456    //用户名为gep的用户的密码为123456

wce = 123456    //。。。

保存退出

 

3. 将SVN设置自为开机启动

vi /etc/rc.local    打开自启动文件

文件内容如下:

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

 

touch /var/lock/subsys/local

 

##在最后添加一行:

svnserve -d -r /usr/local/svn/sunny

 

4. 配置防火墙

    需要配置防火墙,将SVN的端口(默认端口为3690)开放出来:

(1) 在/etc/sysconfig/iptables里添加

    vi /etc/sysconfig/iptables

    #添加一条配置规则,以开放3690的端口,如下所示:

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 –j ACCEPT

 

(2) 重启iptables

    /etc/init.d/iptables restart

 

(3) 看下状态

    /etc/init.d/iptables status

 

5. 建立自动备份系统

    编写自动备份脚本文件,此脚本将SVN数据用svnadmin dump工具导出到一个文件中,然后上传到远程的FTP服务器上。

    脚本文件backup_svn.sh的内容如下:

echo 'Backup start...'

cd /root/

 

echo 'Config parameters'

REPO_NAME=sunny

 

echo 'Repository Name is: '$REPO_NAME

WEEK_NO=`date +%w`

GS_FILENAME='svn_'$REPO_NAME'_backup_'$WEEK_NO'.sb'

echo $GS_FILENAME

FTP_SCR_FILE=ftp.cmd.src

FTP_FILE=ftp.cmd

 

echo 'Dump All SVN data'

svnadmin dump /usr/local/svn/$REPO_NAME > $GS_FILENAME

 

echo 'Backup to Remote FTP Server'

sed 's/GS_FILENAME/'$GS_FILENAME'/g' ftp.cmd.src > ftp.cmd

### 注意这里不能写ftp -un, 而要指明FTP命令的绝对路径,因为交互式运行环境下和cron运行环境下的ftp程序可能不是一样的。

cat ftp.cmd | /usr/kerberos/bin/ftp -un

 

echo 'Cleanup by removing archive'

rm ftp.cmd

rm $GS_FILENAME

 

echo 'Backup complete'

    FTP命令文件ftp.cmd.src的内容如下:

open 192.168.1.224

user backup bs9p

bin

hash

put GS_FILENAME

ls

bye

    给backup_svn.sh文件赋予权限

        chmod -R 777 backup_svn.sh

    将此脚本在cron中执行。

        crontab -e

* 3 * * * /root/backup_svn.sh

    重新加载cron配置:

        service crond reload

    此时建立备份系统完成。

 

 

6. 关于“svn 认证失败”的问题

    在使用SVN时,如果发现“svn 认证失败”的问题,可能是以下原因造成:

    a. passwd例子两边都是有空格的

       username = password

       这是错误的,没空格,两边都没有

    b. authz例子

       只写

       username = rw不足够

       要写

       [仓库名称:/]

       username = rw

    c. 在eclipse环境下使用SVN客户时,若以前有相同的用户名不同的密码,要先将密码清空。

 

SVN数据库迁移方法一(SVN全库操作,或称SVN全局备份并恢复):

版本库数据的移植:svnadmin dumpsvnadmin load

导出:

$svnadmin dump repos > dumpfile //将指定的版本库导出成文件dumpfile

新建:

$svnadmin create newrepos

导入:

$svnadmin load newrepos < dumpfile

 

http://blog.sina.com.cn/s/blog_5eb1a2670100l24i.html

posted @ 2013-04-24 13:56  IT一族  阅读(199)  评论(0)    收藏  举报