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

相关文章
|
12月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
1136 116
|
XML JSON 数据安全/隐私保护
Web服务
【10月更文挑战第18天】Web服务
548 9
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
778 35
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
数据采集 Web App开发 API
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
本文介绍了如何使用FastAPI和Selenium搭建RESTful接口,访问免版权图片网站Pixabay并采集图片及其描述信息。通过配置代理IP、User-Agent和Cookie,提高爬虫的稳定性和防封禁能力。环境依赖包括FastAPI、Uvicorn和Selenium等库。代码示例展示了完整的实现过程,涵盖代理设置、浏览器模拟及数据提取,并提供了详细的中文注释。适用于需要高效、稳定的Web数据抓取服务的开发者。
1164 15
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
|
XML JSON 安全
Web服务是通过标准化的通信协议和数据格式
【10月更文挑战第18天】Web服务是通过标准化的通信协议和数据格式
605 69
|
监控 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
677 20
|
缓存 Linux 数据库
CentOS 8中 更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal
通过以上步骤,您可以有效地解决 CentOS 8 中“为仓库 ‘appstream’ 下载元数据失败 : Cannot prepare internal”问题。关键在于检查网络连接、更新和切换仓库配置、清理缓存、重建 RPM 数据库以及在必要时临时禁用有问题的仓库。通过这些方法,可以确保系统能够正常进行软件包的更新和下载操作。
4352 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-优雅草卓伊凡解决方案
1287 7