Centos7搭建SVN服务(多个仓库)并利用svn 钩子(hooks)自动部署仓库代码到指定web目录...

简介: Centos7搭建SVN服务(多个仓库)并利用svn 钩子(hooks)自动部署仓库代码到指定web目录...

1、下载安装 subversion

yum -y install subversion

测试安装是否成功

svnserve --version

0.png

1.png

2、创建 svn 版本库,初始化相关配置文件

[root@iZ2zegxpw7sisogrymd96zZ server]# mkdir -p    www/server/svnserver/svnrepos/web1

[root@iZ2zegxpw7sisogrymd96zZ server]# mkdir -p    www/server/svnserver/svnrepos/web2

[root@iZ2zegxpw7sisogrymd96zZ server]# svnadmin create   www/server/svnserver/svnrepos/web1

[root@iZ2zegxpw7sisogrymd96zZ server]# svnadmin create   www/server/svnserver/svnrepos/web2

进入web1仓库目录下的conf文件夹,将其中的authz与passwd文件复制到svnrepos目录

[root@iZ2zegxpw7sisogrymd96zZ conf]# cp authz  ../../

[root@iZ2zegxpw7sisogrymd96zZ conf]# cp passwd  ../../


然后修改web1/conf下的svnserve.conf文件,将其中的passwd文件制定与authz文件制定进行修改,其他配置按正常单svn配置。(web2仓库同样设置一遍)


[general]

anon-access = read

auth-access = write

password-db =../../passwd      //根据实际情况写路径,我这里是拿到了www/server/svnserver/svnrepos目录

authz-db =../../authz               //根据实际情况写路径,我这里是拿到了www/server/svnserver/svnrepos目录

realm = My First Repository

[sasl]


解释:

anon-access = none:表示禁止匿名用户访问。

auth-access = write:表示授权用户拥有读写权限。

password-db = passswd:指定用户名口令文件,即 passwd 文件。

authz-db = authz:指定权限配置文件,即 authz 文件。


编辑svn用户配置文件,我这里的是www/server/svnserver/svnrepos/passwd文件


[users]


#用户名=密码

wl=905507

wl1=9055071


编辑svn权限控制配置文件,我这里的是www/server/svnserver/svnrepos/authz文件


[aliases]

[groups]

#用户组名=用户名

admin=wl,wl1

[/]

#表示用户组admin对根目录有读写的权限,r为读,w为写

@admin=rw


到此配置结束,web1仓库和web2仓库公用www/server/svnserver/svnrepos/下面的限控制配置文件(authz)和用户配置文件(passwd )


3.启动svn服务

svnserve -d --listen-port 3389 -r   /www/server/svnserver/svnrepos/


监听3389端口,这里我改过默认端口3690 ,-r指定目录,我的两个仓库web1和web2在 /www/server/svnserver/svnrepos/这个目录下面。


在window上用svn客户端就可以检出了,如下图填写


2.png

2.png

4.实现一个仓库对应一个web站点,通过windos客户端提交代码到仓库以后利用svn的钩子 hooks自动把代码同步到指定的web站点,然后通过域名打开直接访问。


新建web站点,建立成功之后我的web1目录是:/www/wwwroot/web1.php5.wlphp.com


新建web站点,建立成功之后我的web2目录是:/www/wwwroot/web2.php5.wlphp.com


找到每个仓库的钩子配置文件做修改


/www/server/svnserver/svnrepos/web1/hooks


/www/server/svnserver/svnrepos/web1/hooks


把web1/hooks目录下的post-commit.tmpl拷贝下重命名


cp  post-commit.tmpl  post-commit


vim  post-commit


然后修改里面内容如下,里面其他内容保留,最底部可能有一个发送邮件的脚本,可以注释掉他。


WEB=/www/wwwroot/web2.php5.wlphp.com   //定制web目录

cd $WEB && /usr/bin/svn update --username  wl  --password 905507 --no-auth-cache   进入web目录然后执行svn的update ,指定svn用户名密码


给该脚本增加执行权限


chmod +x   post-commit


然后我们到web1的web站点目录首次执行下checkout,后面就不需要了。

svn  checkout   svn://101.200.88.170:3389/web1   ./            // 这里需要注意 最后的 ./ 参数要有否则会出来一个二级目录


首次checkout,需要输入root的密码,然后验证svn的账号密码,保存密码输入yes即可


Authentication realm: <svn://101.200.88.170:3389> My First Repository

Password for 'root':

Authentication realm: <svn://101.200.88.170:3389> My First Repository

Username: wl

Password for 'wl':

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

ATTENTION!  Your password for authentication realm:

  <svn://101.200.88.170:3389> My First Repository

can only be stored to disk unencrypted!  You are advised to configure

your system so that Subversion can store passwords encrypted, if

possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value

of the 'store-plaintext-passwords' option to either 'yes' or 'no' in

'/root/.subversion/servers'.

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

Please type 'yes' or 'no': yes

Checked out revision 0.


然后通过windows客户端首次checkout版本库web1,提交代码测试下我们的成果吧。

web2的操作流程和web1一样。


3.png

3.png

4.png

相关文章
|
6月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
709 116
|
10月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
10月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
12月前
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
618 35
|
数据采集 Web App开发 API
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
本文介绍了如何使用FastAPI和Selenium搭建RESTful接口,访问免版权图片网站Pixabay并采集图片及其描述信息。通过配置代理IP、User-Agent和Cookie,提高爬虫的稳定性和防封禁能力。环境依赖包括FastAPI、Uvicorn和Selenium等库。代码示例展示了完整的实现过程,涵盖代理设置、浏览器模拟及数据提取,并提供了详细的中文注释。适用于需要高效、稳定的Web数据抓取服务的开发者。
831 15
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
515 20
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
980 7
|
Go UED
Go Web服务中如何优雅平滑重启?
在生产环境中,服务升级时如何确保不中断当前请求并应用新代码是一个挑战。本文介绍了如何使用 Go 语言的 `endless` 包实现服务的优雅重启,确保在不停止服务的情况下完成无缝升级。通过示例代码和测试步骤,详细展示了 `endless` 包的工作原理和实际应用。
423 3
|
6月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
554 4
|
10月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
下一篇
开通oss服务