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

相关文章
|
9月前
|
Linux 网络安全 数据安全/隐私保护
centos开启samba服务
通过以上步骤,您已成功在CentOS系统上安装、配置并启动了Samba服务,并且可以通过Windows或Linux客户端访问共享目录。Samba为跨平台文件共享提供了强大的支持,配置灵活且易于管理。无论是简单的家庭网络共享还是企业级文件服务器,Samba都能胜任。通过合理的配置和访问控制,您可以确保文件共享的安全性和便利性。
701 74
|
8月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
663 25
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
807 1
|
10月前
|
监控 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
350 20
|
11月前
|
缓存 Linux 数据库
CentOS 8中 更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal
通过以上步骤,您可以有效地解决 CentOS 8 中“为仓库 ‘appstream’ 下载元数据失败 : Cannot prepare internal”问题。关键在于检查网络连接、更新和切换仓库配置、清理缓存、重建 RPM 数据库以及在必要时临时禁用有问题的仓库。通过这些方法,可以确保系统能够正常进行软件包的更新和下载操作。
2928 20
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
1021 2
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
2219 1
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
762 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
Linux
CentOS 7.x时间同步服务chrony配置详解
文章详细介绍了在CentOS 7.x系统中如何安装和配置chrony服务,以及它与ntpd服务的对比,强调了chrony在时间同步方面的高效性和准确性。
1248 2
CentOS 7.x时间同步服务chrony配置详解
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
213 1