安装说明
系统环境:CentOS-7.4 (查看版本 cat /etc/redhat-release)
检查已安装svn版本
#检查是否安装了低版本的SVN
rpm -qa subversion
#卸载旧版本SVN
yum remove subversion
一.准备工作:安装SVN
yum -y install subversion
验证安装
检验已经安装的SVN版本信息
svn --version
二.代码库创建+配置用户和权限
SVN软件安装完成后还需要建立SVN库
mkdir -p /www/svndata
svnadmin create /www/svndata/test
执行上面的命令后,自动建立svndata库,test为我创建的项目的目录名,查看/www/svndata/test 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。
配置代码库
进入上面生成的文件夹conf下,进行配置
cd /www/svndata/test/conf
用户密码passwd配置
cd /www/svndata/test/conf
vim passwd
修改passwd为以下内容:
[users]
test=123456
权限控制authz配置
vim authz
目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:
#设置[/]代表根目录下所有的资源
[/]
test=rw
服务svnserve.conf配置
vim svnserve.conf
追加以下内容:
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm = My First Repository
切记:一定要顶格,不能留空格。否则报错(conf/svnserve.conf:12: Option expected)
如果有多个项目,realm的值要修改一下,以防账号不同导致每次操作svn都要重新认证
启动SVN
svnserve -d -r /www/svndata
查看SVN进程
[root@localhost conf]# ps -ef|grep svn|grep -v grep
root 8547 1 0 Mar10 ? 00:00:00 svnserve -d -r /www/svndata
检测SVN 端口
[root@localhost conf]# netstat -ln |grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
停止重启SVN
[root@localhost password]# killall svnserve //停止
[root@localhost password]# svnserve -d -r /www/svndata // 启动
测试
SVN服务已经启动,使用客户端测试连接。
客户端连接地址:svn://xxx.xxx.xxx.xxx/test
用户名/密码: test/123456
测试创建文件夹等操作。
二.设置钩子自动更新
实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实现,就是创建一个post-commit的配置文件,对其进行简单的配置,简简单单的四步就可以实现Linux下SVN自动更新web目录配置。
第一步:建立你的web程序目录
mkdir /www/wwwroot/test
进入你建立的web程序目录(svn checkout可以简写为co)
svn co file:///www/svndata/项目名
如果不想自动更新,到这一步就可以停止了。使用svn up的命令来更新代码。
第二步:在项目库的 hooks/ 目录下新建 post-commit 文件 【钩子脚本】,可以复制一份post-commit.tmpl 重命名为post-commit.tmpl
cp post-commit.tmpl post-commit
添加脚本内容如下
export LANG=en_US.UTF-8
SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件
WEB=/www/wwwroot/test #要更新的目录
$SVN update $WEB --username test --password 123456
chown -R www:www $WEB
其中SVN=右边改成 svn 命令位置
WEB=右边改成你实际的web目录
第三步:让post-commit有执行的权限
chmod a+x post-commit
第四步:这里就已经完成了,第四步就是测试了。
说明:
export LANG=en_US.UTF-8是为了解决svn post commit 中文乱码,设置本地化编码,因为我的系统为UTF8编码,其实SVN默认就是UTF-8编码,如果编码是GBK的话不设置将会出现错误,而执行不成功,错误标识为
svn: Can't convert string from native encoding to 'GBK'
/usr/bin/svn update --username zn --password 123456 /var/www/html/test 执行更新操作
如果提示:
post-commit hook failed (exit code 255) with no output
赋予post-commit文件可执行权限
如果您的默认编码就是UTF-8的,要上传中文文件,先将文件另存为UTF-8格式在提交
如果提示:
chown: changing ownership of ‘/www/wwwroot/test/.user.ini’: Operation not permitted
chattr -i /www/wwwroot/test/.user.ini
原文借鉴:https://www.cnblogs.com/chenqionghe/p/4527763.html