ubuntu下搭建svn,并用钩子同步到web目录

前言

最近在搭建服务器,用到了版本控制,在搭建过程当中也遇到了好多问题,简单写一写web

步骤

一、安装SVN数据库

$ sudo apt-get install subversion

二、建立项目目录vim

$ sudo mkdir svn //建立一个文件夹,用来存放一个或多个项目
$ cd ./svn       //进入这个目录
$ sudo mkdir project//建立一个新的项目目录
$ sudo svnadmin create ./svn/project //建立svn文件仓库(这一步是让这个新的文件夹变成svn的版本库)

三、权限设置bash

$ cd ./svn/project/conf //进入设置目录(包含有authz  hooks-env.tmpl  passwd  svnserve.conf)

$ vim passwd //添加用户设置密码

[users]
root = 123456
user1 = 123456
user2 = 123456

$ vim authz //编辑用户权限

[groups]
admin = user1,user2,root
[/]
@admin=rw
*=r

$ vim  svnserve.conf //控制访问权限

[general]
anon-access = none      #匿名用户(anonymous users)的访问权限
auth-access = write     #受权用户(authenticated users)的访问权限
password-db = passwd    #密码数据库文件的位置,这里指向同级目录下的passwd文件
authz-db = authz        #用户受权规则文件的位置,这里指向同级目录下的authz文件

四、启动svn服务器

启动svn 
   $ svnserve -d -r ./svn  //这里的/svn 的目录就是你第一步建立用来存放项目的那个目录
   
   关闭svn 
   在配置过程当中若是须要关闭svn则kill
   $ ps aux | grep svn 
   root     21618  0.0  0.0  69596   616 ?        Ss   19:07   0:00 svnserve -d -r /svn
   root     21927  0.0  0.2  11748  2156 pts/0    S+   19:10   0:00 grep --color=auto svn
   
   $ kill 21618

五、配置钩子(若是不须要配置到web目录,在上一步完成后既能够检出使用)svn

$ cd ./svn/project/hooks  //在这里svn提供了好的钩子模板,你能够根据本身的状况选择模板,通常都是选择post-commit.tmpl(提交后更新)

$ vim  post-commit //新建文件

#!/bin/bash
EPOS="$1"
REV="$2"
TXN_NAME="$3"
export LANG=en_US.UTF-8
/usr/bin/svn  update  --username root --password 123456 /var/www/项目目录  > /tmp/www.log || exit 1
exit 0

if [ $? == 0 ]

then

        echo "ok" >> /tmp/wwww.out

fi

六、设置模板执行权限post

$ chmod 755 post-commit

七、先在www目录里检出阿里云

$ /usr/bin/svn checkout svn://你的服务器地址/你的版本仓库

注:若是是新买阿里云的服务器记得打开端口访问限制

clipboard.png

八、本地检出完成!spa

clipboard.png

如今便可提交并同步到web目录了版本控制