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

SVNupdateWEB_PATH --username SVNUSERpasswordSVN_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"` >> LOGPATHechowhoami,REPOS,REV>>LOG_PATH
SVNPATH/svnupdateWEB_PATH --username SVNUSERpasswordSVN_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,如需转载请自行联系原作者

目录
打赏
0
0
0
0
348
分享
相关文章
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
125 3
|
7月前
|
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
83 3
centos 7.2 搭建svn服务器
centos 7.2 搭建svn服务器
207 0
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
264 1
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
430 0
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
75 0
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
106 0
阿里云经济型e实例云服务器评测:企业官网搭建的性价比之选
阿里云服务器经济型e实例可以用来搭建企业网站吗?云服务器作为搭建企业官网的基础设施,其性能、稳定性、成本等因素直接影响着官网的运营效果。阿里云经济型e实例云服务器作为一款性价比较高的产品,备受用户关注。许多企业在选择云服务器搭建官网时,都会将其纳入考虑范围。本文将详细探讨阿里云经济型e实例云服务器的特点、性能表现、稳定性与可靠性,以及成本考量,最终解答是否适合用它来搭建企业官网。
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
158 10

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等