linux安装svn服务端

linux安装svn服务端

使用yum安装svn

  1. 安装
1
yum install subversion -y

​ -y :自动应答为‘yes’ ,省的老询问,让你输入‘yes or no’。

  1. 安装完成后,输入命令:
1
svn --version

打印出版本号,说明安装成功。好,第一步已迈出,go on!

建立svn项目仓库

  1. 开始创建仓库

    首先说明下,最好先创建一个存放svn仓库的文件夹,然后一个项目建一个仓库。那么按照这个思路开始:

    • 先创建一个svn仓库根的文件夹

      1
      mkdir /data/svnCangKu

      注:mkdir命令是创建文件夹命令,后面是要创建的路径与文件夹名称,我这里创建了/data/下的名为“svnCangku”文件夹。为了方便理解,我就用比较low的拼音命名了,你们可以命名的高大上一点。

    • 创建仓库

      比如你现在有一个项目taobao,一个项目jingdong。那么要为两个项目创建各自的svn仓库。

      项目taobao仓库创建:

      1
      svnadmin create /data/svnCangKu/taobao

      项目jingdong仓库创建:

      1
      svnadmin create /data/svnCangKu/jingdong

      两个仓库创建完毕,开始配置。

  1. 配置

    taobao为例:

    • 进入到taobao的配置

      1
      2
      cd /data/svnCangKu/taobao/conf/
      ls

      执行ls命令后发现,里面有三个文件:‘authz’,‘passwd’,‘svnserve.conf’

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

      修改下面列出的项,将前面的“#”和空格都删掉。#号是注释的意思,不删空格会报错。

      1
      2
      3
      4
      5
      anon-access = none       //默认是只读read,改为none让游客不能看
      auth-access = write //认证后有写入权限 只删#和空格
      password-db = passwd //帐号密码配置文件 只删#和空格
      authz-db = authz //权限配置文件 只删#和空格
      realm = /data/svnCangKu/taobao //改成自己的项目仓库
      1. 配置authz(svn组和组用户的权限)

        在此文件最下面一行加上

        1
        2
        [/] //指定仓库根目录下的权限
        chaixuhong = rw //用户"chaixuhong" 权限为可读可写
      2. 配置passwd(用户密码)

        在此文件最下面一行加上

        1
        yonghu=123456  //用户"yonghu"  密码为123456

    至此:svn配置结束,是不是感觉有点简单,但是的确配置完了。。。

    配置jingdong与上述一样,我介绍的这种是多仓库模式,就是说一个项目一个仓库,每建一个项目,都需要配置一个仓库,这种方式的好处是项目查看自己的版本很清楚,不会被其他项目搞乱。也可以就建立一个仓库,然后在这个仓库分项目,也就是分文件夹。没什么特别的,只是使用方式不同。

启动服务

1
svnserve -d -r /data/svnCangKu

-d 表示svnserve 将会作为一个服务程序运行在后台

-r表示把/data/svnCangKu/目录作为根目录

查看是否启动成功

1
ps -ef | grep svnserve

如果输出一条信息,说明启动失败,如果输出两条,则启动成功!

关闭服务

1
killall svnserve

检出svn中项目

上述安装、配置、启动都完成后,我们测试下项目检出。

随便找个路径下,建个文件夹

1
2
mkdir /data/test
cd /data/test

进入test文件夹后,执行检出

1
svn checkout svn://127.0.0.1/taobao  ./

如果提示检出成功,版本号为0。那么就可以在自己的电脑上连接svn做操作了。用自己电脑上的svn客户端进行检出,提交,更新等。

注:如果在服务器可以检出,在自己电脑不可以,可能原因是svn端口未开放,请在iptables文件里添加3690端口开放,或者直接关闭防火墙(不建议)。如果使用的是阿里的服务器,还需在安全组里添加出方向的规则。

其他配置

提交代码后同步更新服务器代码

我的需求,我用hexo搭建的博客,部署到了自己的服务器,当我修改博客提交代码的时候,我希望服务器上的博客也自动更新。

实现:

  1. 进入到svn仓库里,如上面的taobao
1
cd /data/svnCangKu/taobao
  1. 进入hooks文件夹
1
cd hooks/
  1. 复制一个post-commit文件
1
cp post-commit.tmpl post-commit
  1. 编辑这个文件
1
vim post-commit
  1. 添加以下内容
1
2
3
4
5
6
7
8
REPOS="$1"
REV="$2"

BASEPATH=/www/hexo/blog //这里是你博客项目在服务器检出的文件夹
WEBPATH="$BASEPATH/"
export LANG=zh_CN.UTF-8
#svn revert $WEBPATH --username yonghu --password 123456 --no-auth-cache #强制更新
svn update $WEBPATH --username yonghu --password 123456 --no-auth-cache
  1. 增加post-commit脚本执行权限
1
chmod +x post-commit
  1. 重启svn服务
1
2
killall svnserve
svnserve -d -r /data/svnCangKu

完毕!可以在本地提交一个新文件,然后到服务器上hexo目录查看是否有更新