Linux下SVN部署/安全及权限配置,实现web同步更新

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

Linux下SVN部署/安全及权限配置,实现web同步更新

本文包含以下内容:

SVN服务器安装

SVN权限管理

SVN使用SASL加密

SVN上传时同步其它目录

 

需求

在WEB线上版本管理的基础上,能够在代码上传之后,立刻通过WEB访问,查看修改效果;同时,保证数据的安全性;

 

SVN安装

 

SVN服务器有2种运行方式:独立服务器和借助apache运行。

svnserve和apache相比是轻量级的,也比较简单,svnserve包含在subversion里面,所以只要安装了subversion就相当于安装了一个小型的svn服务器。它使用自己的一套协议通信。例如访问apache时使用 http:// 前缀,而svnserve使用 svn:// 前缀.

这里介绍的是通过独立服务器方式运行,优点是简单小巧。如果是支持较大规模的开发,还是推荐使用apache服务器方式;这里使用svnserver安装;

1.首先为SVN单独创建一个用户,这样可以使用操作系统的安全特性;

2.将svnadmin这个用户加入到sudu组;

3.安装:

sudo apt-get install subversion

4.创建测试目录:

mkdir /home/svnadmin/test

5.创建版本库:
svnadmin create /home/svnadmin/test

4. 导入项目

例如现在有个工程,名称为examPro,

位置/alidata/www/examPro , 将这个工程导入到本地仓库中。

svn import /alidata/www/examPro  file:///home/svnadmin/examPro  -m "import examPro"

在上一个例子里,将会拷贝目录examPro到版本库中;

这样这个工程就在纳入服务器的本地仓库管理。

为了使用SVN的同步更新机制,我们需要在svn服务器环境上签出一份最新工程拷贝(为表述方便,这里称为A目录)。
$ svn checkout 
file:///home/svnadmin/examPro
在这个拷贝里,我们一般不做修改,而是用来同步更新;当开发机器上有任何修改,更新到SVN服务器上时,能同步更新到A目录;这样,就能保证A目录下的代码是整个工程的最新代码,而使用A目录搭建的WEB测试环境,就是最新的WEB测试环境;

 

5.启动SVN服务

$ svnserve -d -r /home/svnadmin/examPro 

描述说明:
-d 表示svnserver以“守护”进程模式运行
-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库。

6.停止svn服务:

killall svnserve //停止svnserve服务

 

SVN权限管理

1.SVN版本库目录说明

db:存放具体数据;

hooks:钩子程序存放地,比如我们要实现同步更新的操作,在这里实现;

conf:配置文件存放地

下面具体说说conf目录;

conf目录下有三个文件:

svnserve.conf、authz、以及passwd;

2.SVN服务配置文件:svnserve.conf

查看该文件,首先是匿名用户的权限配置:

anon-access = none

auth-access = write

表示:对于匿名用户,无访问权限;

对于授权用户,有写权限;

 

接下来的一段用于配置使用哪种授权登录方式;

可选的有password-db ,就是用户名和密码都是明文存放在同级目录下的passwd文件中;优点是高效配置简单,缺点是安全性弱,明文总不是那么让人感觉可靠;

另一种是authz-db,这种方式的用户密码使用了sasl加密,安全上有保证;

选择这种方式的设置,将password-db 注释掉:

# password-db = passwd

authz-db = authz

#指定授权所属的域,C++的同志可将其理解为名字空间;

realm = examPro

接下来是[sasl]段,用于标识是否进行SASL加密处理;

use-sasl = true

min-encryption = 128

max-encryption = 256

变量 min-encryption 和 max-encryption 控制服务器所需要的加密强度。

 

3. 详细权限配置文件authz:

这个就是授权数据库,用于配置指定目录对用户的访问权限;

首先是指定一个用户组,按组来分配权限总是方便的,即使目前你的团队一个组只有一个人。在新加入成员的时候,你就能体会到按组分配权限的便利性了;

[groups]

g_fronter=cuicc,gdii

g_vip=coo

g_doc=yhh

[examPro:/]

@g_vip=rw

@g_fronter=r

@g_doc=r

[examPro:/protected/modules]

@g_vip=rw

@g_fronter=

*=

[examPro:/protected]

@g_doc=

对于以上代码的配置的详细说明,可以参考本文的参考文章[1]SVN权限配置,里面介绍的比较详细,这里就不多说,有疑问的请留言或mail;

 

SVN使用SASL加密

1.配置svnserve.conf,注释掉password-db = passwd

并启用sqsl:use-sasl = true

2.新建一个svn.conf文件,一般放在/usr/lib/sasl2或者/etc/sasl2,内容为:

pwcheck_method: auxprop

auxprop_plugin: sasldb

sasldb_path: /home/svnadmin/config/sasldb

mech_list: DIGEST-MD5

其中sasldb_path 指定你打算将sasl加密的数据库放置的位置;

注释:pwcheck_method指明检查的方法,这里是“auxprop ”,这个pwcheck_method还对应了如启动一个代理作为认证服务等方式,而现在的意思就是使用本文件说的方式去检查。然后我们指明auxprop_plugin为sasldb,也就是使用一个文件存放用户名密码,也就是/home/svn/svnjiami/sasldb,其它的认证信息存放plugin还有sql和ldapdb。而mech_list指明了认证信息传递机制。

svnserve 已经在运行,你需要重启服务,并确保它读取了更新后的配置参数

killall svnserve //停止svnserve服务

svnserve –d –r /home/svn //启动svnserve服务

3.创建用户和密码

使用saslpasswd2 程序

语法:saslpasswd2 –c –f /home/svn/jiami/sasldb –u [svnserve.conf里面配置的realm名字] [username]

eg:saslpasswd2 -c  -f /home/svnadmin/config/sasldb -u examPro colin

会出现交互界面,提示输入两次密码;

附:

saslpasswd2 -d -f home/svnadmin/config/sasldb -u 用户名//删除用户

sasldblistusers2 -f /home/svnadmin/config/sasldb // 查询用户

PS:如果访问库的时候出现以下提示 "Could not obtain the list of SASL mechanisms",原因是Linux默认没有安装DIGEST-MD5,此时,可用以下命令安装更新:yum install cyrus-sasl-md5 , cyrus-sasl-md5首页: http://asg.web.cmu.edu/sasl/, 安装包下载地址:ftp://ftp.andrew.cmu.edu/pub/cyrus/

配置完成;

 

SVN上传时同步到服务器其它目录

svn/examPro/hooks/目录下:

能看到一堆模版钩子文件,我们需要的是post-commit.tmpl,

copy一份,命名为post-commit。然后修改;

1.设置语言环境:

#这行比较重要,需要根据你的服务器环境选择正确的语言环境,否则,这个update不会工作;

#export LANG=zh_CN.UTF-8

export LANG=en_US.UTF-8

2.设置SVN更新时需要同步更新的目录

svn update /alidata/www/examplePro --username yoursname --password yourpwd

以上这行表明,当svn服务器版本有更新时,则同步更新到/alidata/www/examPro目录下的对应文件;yoursname 和yourpwd是你在sasl中设置的用户名和密码;(这里还是涉及到了明文存放,对此,你可以分配一个用户对svn版本库只有全局的读权限)

3.输出日志,便于跟踪查询

echo `whoami`,$REPOS,$REV >> /home/svnadmin/examPro/hooks/svn_hook.log

每当有更新时,更新日志里就会插入一条语句,表明何时有过更新;(这个也可用来配置环境时调试,用来查询同步是否起效)

我们的配置到这里就全部完成;

现在,SVN就实现了版本管理的功能,同时,同步更新的目录有利于测试人员集成测试;

开发人员需要保证的是,任何时候签入到svn库中的版本是可运行的代码。

 

参考:

[1]:SVN权限配置:http://hi.baidu.com/victorlin23/item/f3f42f276e9c810a42634a94

[2]:SVN使用SASL加密:http://www.cnblogs.com/linn/archive/2011/08/04/2127014.html

 

linux环境下 宝塔部署svn 本地拉取项目 服务器同步代码 一次性搞定 服务器安装svn 连接终端输入命令 yum install subversion 在一个文件夹下面创建一个svn版本库 svnadmin create /home/svnDB/coderyq 启动svn svnserve -d -r /home/svnDB/coderyq 查看svn进程 ps -ef|grep svn 停止svn进程(这里需要找到对应的数字) 每次更新svn配置的代码之后都需要停止进程然后重新启动 kill -9 27048 ... 阅读详情

相关推荐

svn+ldap+sasl认证(svn通过ldap用户进行认证登陆)

svn+ldap+sasl认证(svn通过ldap用户进行认证登陆)

svn服务及web管理部署

目录 1 Linux版本. 1.1 httpd部署 1.2 svn模型及svn部署 1.3 iF.SVNAdmin部署 1.4 iF.SVNAdmin配置仓库示例 1.5 yum命令详解 1.6 防火墙设置 1.7 开机自动启动 在Centos 7下部署svn实现http访问及通过we...

4772

svn 管理工具(web版)

websvn管理工具,可以进行svn库管理,svn用户权限权限分配,资源权限分配

centos7搭建SVN_web

一、安装相应的软件 #svn服务器 yum install subversion #apache服务器,让我们的svn 服务器支持http协议访问,而不仅是svn://协议 yum install httpd    #已安装的就直接跳过 #apache操作svn模块 yum install mod_dav_svn 二、相应的配置 1、创建仓库 默认安装的s

Samuel_gan的博客 1620

Linux SVN服务器搭建和使用

SVN配置管理

minCrazy的专栏 1833

linux svn管理员设置权限设置,如何在Linux中设置权限,以便两个用户可以在服务器上更新相同的SVN工作副本?...

我的服务器安装了Subversion和Apache,Apache web目录也是Subversion工作副本.原因是简单的命令svn update / server / staging将最新的源部署到登台服务器.Apache公共Web目录:/ server / staging – (这是SVN工作副本.)我的服务器上有两个用户,’richard’和’austin’.他们都是’开发者’小组的成员....

weixin_42420393的博客 294

LinuxSVN部署Web版本同步

我们都知道,SVN服务器端搭建好之后,要先创建版本库。而版本库中的文件都是以加密的方式存在,并不是提交上来的代码直接存放的。 因此,就有这样一个问题,我们希望我们测试好的代码提交到SVN服务器之后,可以不再经过其他的手动操作,而可以直接看到代码在服务器上的效果,比如web代码可以通过url直接看到。 解决方案的原理是这样,客户端commit到SVN的代码,在服务器端自动的update到web

王艺强的博客 2492

Linux】安装svn并设置钩子同步web目录

安装 (1)卸载之前安装的svn yum remove subversion (2)结束之前的svn进程 killall svnserve (3)yum安装svn yuminstallsubversion (4)我们这里在/home下建立一个名为svn的仓库 (5)进入到conf目录配置信息 cd /home/svn/conf (6)配置passwd ...

咔咔博客 644

linuxsvn版本库与web站点同步更新的方法

1. 确定好svn版本库和web站点目录的地址,并确定两个都存在,我的svn版本库目录为/var/svn/test1,web站点的目录为/www/wwwroot/test1 2.checkout一下svn里的文件至web站点 svn checkout file://版本库地址 web站点地址 3.设置钩子 (1). 进入svn版本库下的,cd /var/svn/test1/hooks 可以看到有以下几个文件 (2). 复制post-commit.tmpl文件,改名为post-commit,并

qq_35531201的博客 269

linux系统下SVN同步文件到WEB目录

SVN在团队开发中使用非常普遍,是一个很方便的版本控制系统。  如果要是能将SVN服务器上的数据自动发布到Web服务器,那将是整个项目开发、测试更加便捷。利用SVN的hook功能就能实现SVN服务器上的数据同步Web服务器。 思路:  找到SVN Server中的仓库(Repositories)文件夹的位置,在相应的项目文件夹中找到hooks文件夹。在该文件夹中添加一个post-co

雨枫的专栏 4379

SVNAdmin2 - 基于webSVN管理系统

基于web的Subversion(SVN)服务器端管理工具,支持http协议、SVN协议、支持SASL(ldap)认证、docker部署

weixin_43474252的博客 1万+

linux环境下 安装svn并且创建svn版本库详细教程

本文详细介绍了在Linux系统中安装、配置和使用Subversion(SVN)的步骤。首先,通过yum命令安装SVN,并验证安装版本。接着,创建版本库并初始化,配置权限与用户,包括设置用户密码和权限组。然后,启动SVN服务并设置开机自启,同时配置防火墙以开放SVN端口。此外,文章还提供了自动化部署的选项,通过配置post-commit钩子脚本实现代码自动同步Web目录。最后,通过本地检出和提交代码测试验证配置的正确性,并提供了解决常见报错的步骤,如检查脚本路径、设置文件权限、修复环境变量与编码、增强错误处

l_xing6的博客 2932

linux安装SVN并设置SVN钩子

linux安装SVN并设置SVN钩子 检查已安装版本 #检查是否安装了低版本的SVN rpm -qa subversion #卸载旧版本SVN yum rovesubversion 一.安装SVN yum -y install subversion 验证安装 检验...

a496479640的博客 306

SVN自动更新

svn 项目下面有 hooks 目录,里面存放的是全部的钩子脚本的模板post-commit.tmpl 为客户端 commit 提交后触发。

IT菜鸟 2128
上一篇: 使用mtrace进行内存泄漏检查
下一篇: c++ windows 获取mac地址
sean_xyz
博客等级 码龄14年 78粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值