linux下搭建svn并同步更新至web目录

安装svn

 

使用yum安装

yum install subversion -y

 

安装成功后查看版本库

svnserve  --version

 

生成目录

cd /var

mkdir svn

cd svn

创建版本库

svnadmin create /var/svn/project

cd project

查看目录下的所有文件

ls -a

 README.txt  conf  db  format  hooks  locks

 

cd conf

进入版本配置目录conf,此目录下有authz  passwd  svnserve.conf三个文件

 

 

vi authz  //添加用户组并使用户组具有读写权限

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
用户组名 = 用户名1,用户名2    //添加用户组,并设置用户组下的用户,用户名之间用 , 隔开

[project:/]  //     版本库名:/
@用户组名 = rw    //添加用户组读写权限

 

vi passwd    //配置用户以及密码

 

[users]
# harry = harryssecret
# sally = sallyssecret
用户名1 = 用户名1的密码
用户名2 = 用户名2的密码

vi svnserve.conf          //配置SVN服务综合配置文件svnserve.conf

//找到以下配置项,将前面的#号去掉,然后做相应的配置

anon-access = none//匿名用户访问权限:无

auth-access = write //普通用户访问权限:读、写

password-db = passwd //密码文件

authz-db = authz //权限配置文件

realm = /var/svn/project //版本库所在

 

启动svn

 

svnserve -d -r /var/svn

 

 

如果提示

svnserve: E000098: Can't bind server socket: Address already in use  //此时svn已经启动

重启svn

//查看svn服务详情

ps aux | grep svn //将svn服务强制停止 其中790为svn服务的ID号,-9是kill的参数

kill -9 790

或者使用 ps -ef|grep svn  //查看svn进程

kill 进程号

还有   killall svnserve  //结束svn所有进程

 

测试svn服务

 

mkdir /home/www

cd /home/www

 

svn co svn://服务器ip地址/project /home/www //回车后,此时可能会提示密码验证,先填写服务器用户名和密码,后面是svn用户名和密码

 

如果现实Checked out revision 1.则表示成功

 

我们添加新文件来测试是否提交成功

cd /home/www
touch index.php
svn add index.php   //成功的话会显示  A index.php
svn commit index.php -m "测试提交文件"

假如最后提示:

Adding         index.php
Transmitting file data .
Committed revision 2.

则表示我们svn服务器搭建成功!文件已经能够推送了。

 

本地拉取服务器上的版本库(本地window)

右键检出

 

 按照如图所示地址拉取,点击确定后再输入用户名和密码即可

 

 

最后,本地推送到svn并同步更新至web目录

 

cd /var/svn/project/hooks

vi post-commit

 

//在该文件里添加如下代码,保存

#!/bin/sh #设定环境变量,如果没有设定可能会出现update报错

#设定语言,根据系统语言设置,如果是GBK就设置为 LANG=zh_CN.GBK

export LANG=en_US.utf8

SVN_PATH=/usr/bin/svn //这里不用改

WEB_PATH=/home/www //web目录,如果你的不同,可以改

//这里的用户随便一个就好

$SVN_PATH update $WEB_PATH --username '用户名' --password '密码' --no-auth-cache

 

//修改post-commit权限

chmod 755 post-commit

 

在本地检出时,如果不能连接svn可能是3690端口未开放

firewall-cmd --zone=public --add-port=3690/tcp --permanent

systemctl restart firewalld    //重启firewall防火墙

 

posted @ 2017-05-31 16:42  怨灵骑士  阅读(317)  评论(0编辑  收藏  举报