Linux下搭建SVN服务器及自动更新项目文件到web发布目录(wwwroot)的方法

简介:

1、在SVN服务器端准备工作

说明:

服务器操作系统:centos7.3

SVN安装路径:/usr/bin/svn

SVN项目版本库路径:/home/svn/repo        --repo为版本库名称

SVN登录账号:admin

SVN登录密码:123456

Web站点根目录:/home/wwwroot/

实现目的:

当svn项目中有任何修改更新时,系统会自动实时从svn中检出文件并同步到Web站点根目录

2、安装SVN服务器

我在这里直接采用yum安装方式(当然也可以自己去官方下载安装)。

[root@server ~]# yum install subversion -y 

[root@server ~]# rpm -qa | grep sub      #查看安装文件

subversion-libs-1.7.14-10.el7.x86_64

subversion-1.7.14-10.el7.x86_64

[root@server ~]# svnserve --version      #检验已经安装的SVN版本信息

svnserve,版本 1.7.14 (r1542130)

   编译于 Nov 20 2015,19:25:09


版权所有 (C) 2013 Apache 软件基金会。

此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。

Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。


下列版本库后端(FS) 模块可用: 


* fs_base : 模块只能操作BDB版本库。

* fs_fs : 模块与文本文件(FSFS)版本库一起工作。


Cyrus SASL 认证可用。

3、创建SVN 版本库

[root@server ~]# mkdir /home/svn/repo

[root@server ~]# svnadmin create /home/svn/repo          --repo为版本库名称

4、配置svnserve

上述版本库/home/svn/repo建立后,在文件夹下会生成conf文件夹,进入/home/svn/repo/conf下面会有下面3个文件authz  、passwd 、 svnserve.conf。

[root@server ~]# cd /home/svn/repo/

[root@server repo]# pwd

/home/svn/repo

[root@server repo]# ls

conf  db  format  hooks  locks  README.txt

[root@server repo]# cd conf/

[root@server conf]# ls

authz  passwd  svnserve.conf

4.1、svnserve.conf 文件, 该文件配置项分为以下5项:

       anon-access: 控制非鉴权用户访问版本库的权限。

       auth-access:  控制鉴权用户访问版本库的权限。

       password-db: 指定用户名口令文件名。

       authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。

       realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件,配置如下:

  • anon-access = none

  • auth-access = write

  • password-db = passwd

  • authz-db = authz

  • realm = /home/svn/repo

4.2、passwd修改为:

  • [users]  

  • admin = 123456    //这里的username和password自己设置  

4.3、authz最后加上以下两行(这两行解决了 SVN客户端解决authorization failed问题)

  • [/]

  • * = rw

#################样例#################

[root@singledb conf]# cat authz

[groups]                                     #定义组

admin = admin                            #创建一个admin组,将用户加入到组

dev=tian,lier,erllo      

[/]                                             #根目录权限设置(就是“svn”这个文件夹)

aaa = rw                                    #aaa对svn下的所有版本库有读写权限            

[repo:/]                                     #repo:/,表示对repo版本库下的所有资源设置权限

@admin = rw                              #admin组的用户对repo版本库有读写权限

@dev = rw

#####################################

5、启动svnserve

[root@server conf]# svnserve -d -r /home/svn/repo/ 

                                                                  -d表示后台运行

                                                                  -r 指定根目录是/home/svn/repo/

[root@server conf]# ps -ef | grep svn

root     28950     1  0 19:12 ?        00:00:00 svnserve -d -r /opt/svn/repo/

root     28952 28246  0 19:12 pts/0    00:00:00 grep --color=auto svn

6、停止svnserve

[root@server conf]# ps -aux |grep svn

[root@server conf]# kill -9  进程号         #进程杀掉

7、客户端使用

客户端用svn或者windows下的TortoiseSVN客户端。

1)从服务端checkout版本库(在当前目录下)

svn checkout svn://服务器的ip地址/

例:检出svn库中的内容

[root@server ~]# cd /home/

[root@server home]# svn checkout svn://127.0.0.1/repo

在/home目录下便生成了一个 repo 目录。里面的内容是 版本库中的内容。

执行 ll -a 可以看见 .svn 这边是svn的记录

新增几个文件 touch test.txt

svn add * (一定要在 repo目录下哦,因为要有 .svn呀)           #为版本库中添加内容

svn commit -m 'add file'                                                #为版本库中提交内容,一定要对当前版本写注释

删除版本库中的文件

svn delete svn://127.0.0.1/pro/er.txt -m 'del'


注:可以使用带用户名和密码的访问:

svn co --username hello --password 123svn://192.168.233.203/repo


************************************************************************

SVN版本库更新

svn up /svn/repo

上传文件到服务器

[root@server repo]# touch /svn/repo/test.php        #所有的动作必须在repo版本库中完成

[root@server repo]# svn add /svn/repo/test.php           #上传test.php文件到svn服务器

删除服务器上的文件

[root@server repo]# svn rm /svn/repo/test.php--force

查看版本库内容

[root@server repo]# svn list /svn/repo/

--------------------------------------------------------------------------------------------------------

创建版本库:

终端输入:svnadmin create [路径]
该路径可以是相对路径,例如,当前在home/user/svn/目录下,输入svnadmin create myproject,则该版本库会被创建在home/user/svn/目录下,新建一个文件夹名为myproject,其中便是版本库的文件了。

将文件导入版本库:
终端输入:svn import [源路径] [目标版本库路径] -m [日志信息]
源路径可以是相对路径,导入时会递归导入源路径下的所有文件和文件夹,目标版本库路径需要绝对目录(反正我试验是这样的),例如版本库的目录是:home/user/svn/myproject/。则应该这样写:file:///home/user/svn/myproject/
例如将当前目录导入版本库myproject:
svn import . file:///home/user/svn/myproject -m"导入文件"

从版本库导出:
导入后原文件并未被纳入版本管理,若想获得受版本控制的文件,就需要从版本库导出
终端输入:svn co [版本库路径] 
例如将myproject库中的文件导出到当前目录:svn co file:///home/user/svn/myproject .

*************************************************************************

8、然后配置SVN钩子自动更新项目文件到web目录

钩子 hooks (可以将svn版本库中的内容同步更新到指定目录)

[root@server ~]# cd /home/svn/repo/hooks下

[root@server hooks]# vim post-commit 

 

#!/bin/sh
export LC_CTYPE="zh_CN.UTF-8"
SVN=/usr/bin/svn

WEB_PATH=/home/wwwroot #要强制更新的目录

SVN_USER=admin

SVN_PASS=123456

$SVN update $WEB_PATH --username $SVN_USER --password $SVN_PASS            #执行更新



[root@server hooks]#  chmod a+x post-commit

[root@server hooks]#  cd  /home

[root@server home]# ls

www     repo

[root@server home]# mv  /home/repo  /home/wwwroot                       

                                              #将linux客户端的检出的版本库命名为web的发布目录wwwroot



************************************************************************

文档引自:http://www.cnblogs.com/xuyk/p/6024757.html


一、使用SVN中post-commit实现自动实时从svn中检出文件并同步到Web站点根目录

cd /home/svn/hooks

cp post-commit.tmpl post-commit

vim post-commit #编辑,添加以下代码

REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN_PATH=/usr/bin
WEB_PATH=/home/wwwroot/
SVN_USER=admin
SVN_PASS=admin
LOG_PATH=/tmp/svn.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH    

:wq #保存退出

chown www:www /home/svn/hooks/post-commit #设置脚本所属用户组,www为web服务运行账户和组

chmod +x /home/svn/hooks/post-commit #添加脚本执行权限

说明:

whoami #执行此程序的用户

REPOS="$1" #svn项目绝对路径值

REV="$2" #最新版本号

--no-auth-cache #不保存账户认证信息

二、客户端测试

使用svn客户端添加一个文件之后,进行svn添加并提交操作进入服务器/home/wwwroot目录下可以看到提交到svn的文件已自动更新到web目录下


至此,Linux下SVN服务器自动更新文件到Web目录教程完成。

************************************************************************


取消文件的修改

svn revert 回滚

提交冲突时候解决冲突

svn update

svn resolved 发现文件最新





      本文转自MQ_douer 51CTO博客,原文链接:http://blog.51cto.com/douer/1915001,如需转载请自行联系原作者

相关文章
|
5月前
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
143 0
|
5月前
|
安全 Linux Shell
使用SCP命令在CentOS 7上向目标服务器传输文件
以上步骤是在CentOS 7系统上使用SCP命令进行文件传输的基础,操作简洁,易于理解。务必在执行命令前确认好各项参数,尤其是目录路径和文件名,以避免不必要的传输错误。
526 17
|
5月前
|
自然语言处理 Unix Linux
解决服务器中Jupyter笔记本的文件名字符编码问题
通过上述步骤,可以有效解决Jupyter笔记本的文件名字符编码问题,确保所有文件能在服务器上正常访问并交互,避免因编码问题引起的混淆和数据丢失。在处理任何编码问题时,务必谨慎并确保备份,因为文件名变更是
198 17
|
5月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
1039 0
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SVN服务器搭建教程】
现在,你已经成功在Ubuntu系统上搭建了SVN服务器。其他用户可以通过SVN客户端连接到你的SVN服务器,进行代码版本管理和协作开发。注意,为了安全起见,建议配置SSL加密以保护数据传输。
257 1
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
380 0
|
Apache 项目管理 数据安全/隐私保护
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
295 0
|
6月前
|
Windows
Windows下版本控制器(SVN)-启动服务器端程序
Windows下版本控制器(SVN)-启动服务器端程序
211 4
|
6月前
|
Linux
Linux下版本控制器(SVN) -服务器端环境搭建步骤
Linux下版本控制器(SVN) -服务器端环境搭建步骤
279 0
Linux下版本控制器(SVN) -服务器端环境搭建步骤
|
Linux 数据安全/隐私保护 Windows
centos 7.2 搭建svn服务器
centos 7.2 搭建svn服务器
511 0

热门文章

最新文章