linux 上部署svn,linux上部署svn服务器

1、安装svn

安装:yum install subversion

卸载:yum remove subversion

2、查看svn版本

svnserve --version

可能遇到情况:

svnserve: error while loading shared libraries: libaprutil-1.so.0: cannot open shared object file: No such file or directory

解决方案:

(1) 找到libaprutil-1.so.0文件路径

find / -name libaprutil-1.so.0

结果例:/www/server/apache/lib/libaprutil-1.so.0

(2) 将apr依赖包添加到共享库,查看共享库配置文件

more /etc/ld.so.conf

结果例:include ld.so.conf.d/*.conf

(3) 创建apr共享库配置文件

进入目录:cd /etc/ld.so.conf.d/

新建文件:vi httpd-apr.conf

写入libaprutil-1.so.0文件路径:/www/wdlinux/httpd-2.2.22/lib/

!wq保存

(4)更新共享库配置

ldconfig -v

(5)重复查看svn版本命令(svnserve --version)应该可以了

3、创建版本库

(1) 创建目录: mkdir /var/svn

(2) 创建版本库:

cd /var/svn

svnadmin create /var/svn/svnrepos

此时svnrepos目录下有文件夹conf、db、hooks、locks和文件format、README.txt;

db目录:所有版本控制的数据存放文件。

hooks目录:放置hook脚本文件的目录。

locks目录:用来追踪存取文件库的客户端。

format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。

(3) 修改配置文件

cd conf

authz:是权限控制文件。

passwd:是账号密码文件。

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

设置密码:

a.vi passwd

b.在 [users] 块中添加用户账号和密码,格式:账号=密码,比如mask = 123456(注意等号两端要有一个空格),保存退出。

设置权限

a.vi authz

b.在末尾添加用户(其中,r表示读,w表示写)

[/]

mask=rw

c.保存退出

修改svnserve.conf文件

a.vi svnserve.conf

b.打开以下几个注释并修改部分参数(注意每行不能以空格开始,等号两端要有一个空格)

anon-access = none #设置为 none,可以使日志日期正常显示

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

c.保存退出

(4) 启动SVN版本库

svnserve -d -r /var/svn/svnrepos

查看SVN服务是否开启:ps -ef |grep svn

停止SVN命令: killall svnserve

4、使用svn钩子实时同步线上项目

例:线上项目:/www/wwwroot/test

svn代码库:/var/svn/svnrepos

注:svn服务器刚搭建完成时,svn代码库(/var/svn/svnrepos)下是没有数据的,windows安装了Tortoise SVN后checkout一下代码库(svn://服务器ip地址)

这时候把要上线的项目添加到刚刚checkout出来的文件夹下commit提交

(1) 同步一份svn代码库代码到线上目录

cd /www/wwwroot/test

svn co svn://localhost    #此时/var/svn/svnrepos下的项目会同步到线上目录

(2) 进入/var/svn/svnrepos项目库的 hooks/ 目录下新建 post-commit 文件(post-commit就是钩子,svn每次变更都会执行这个文件)

cd /var/svn/svnrepos/hooks

vim post-commit

在文件中写入:

#!/bin/sh

export LANG=zh_CN.UTF-8

SVN=/usr/bin/svn     #这里配置的是svn安装bin目录下的svn文件

WEB=/www/wwwroot/test     #线上环境目录地址

LOG=/home/admin/svn/svn_update.log  #同步日志

echo `whoami`,$REPOS,$REV >> $LOG

$SVN update $WEB --username mask  --password 123456 --no-auth-cache >> $LOG     #用户名和密码改为自己的svn用户名和密码

#chown -R 766 $WEB

(3) 保存后设置文件权限

chmod a+x post-commit

(4) 测试

测试svn提交后线上的项目是否会同步,如果有出错,百度上搜一下一般都会有解决方案

5、 开机自启动svn

(1)传统方式

a.首先:编写一个启动脚本svn_startup.sh,我放在/root/svn_startup.sh

#!/bin/bash

/usr/bin/svnserve -d -r /var/svn/svnrepos/  #后面的路径是你的svn服务器路径

注:这里的svnserve路径保险起见,最好写绝对路径,因为启动的时候,环境变量也许没加载。(绝对路径查看:which svnserve)

b.修改执行权限

chmod 777 svn_startup.sh

c.加入自行启动

vi /etc/rc.d/rc.local

在末尾添加脚本的路径,如:

/root/svn_startup.sh

d.重启查看进程:ps -ef|grep svnserve

(2)centos 7 系统使用以上方式无效,因为/etc/rc.d/rc.local 是没有执行权限的

a.查看svn配置文件

vi /lib/systemd/system/svnserve.service

文件内容如下:

[Unit]

Description=Subversion protocol daemon

After=syslog.target network.target

[Service]

Type=forking

EnvironmentFile=/etc/sysconfig/svnserve                  #这个就是配置路径

ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS

[Install]

WantedBy=multi-user.target

b.编辑配置文件

vi /etc/sysconfig/svnserve

将 OPTIONS="-r /var/svn" 改为 svn 版本库存放的目录(例:/var/svn/svnrepos),保存退出

c.启动服务:systemctl enable svnserve.service

d.查看服务列表:systemctl list-units --type=service

e.重启查看进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值