一、环境为使用镜像安装的阿里云LAMP服务器,SVN的官网都变成http://subversion.apache.org/了,开始在LNMP下尝试了下后直接放弃了
二、开始搭建
1、首先更新下:yum update.
2、安装SVN:yum install subversion
3、测试查看版本:svnserve --version
4、到这里SVN已经安装完成
下面是创建SVN库
5、任意文件夹下面创建SVN文件夹(注意最好是SVN文件夹,任意文件夹下都可以)mkdir -p /opt/svn
6、创建一个新的版本库,版本库名字随意,例如创建一个名字为test的版本库 svnadmin create /opt/svn/test 如果创建一个名字为repos的版本库svnadmin create /opt/svn/repos
7、执行上面的命令后,自动在仓库下建立多个文件, 分别是conf, db,format,hooks, locks, README.txt。
8、
db目录:就是所有版本控制的数据存放文件。
hooks目录:放置hook脚本文件的目录。
locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端。
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。
进入conf目录(该svn版本库配置文件)cd conf/
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
9开始配置相关文件,进入conf目录,配置svnserve.conf文件
cd /opt/svn/test/conf(我的svn库名称是test)
vim svnserve.conf
10,去掉5行前面的注释,注意顶格,前面不能有空格
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
11 讲anon-access = read#匿名用户可读中的read改为none
12添加账户密码 vim passwd
增加 admin = 123456 保存退出
13添加权限 vim authz(本处只写最简单的,走通之后复杂的再去研究)
增加
[html] view plaincopy
[/]
admin=rw
意思是版本库的根目录admin对其有读写权限
14 启动svn版本库(此处注意路径是否包含版本库名称,如果不包含版本库名称,只是到版本库的路径,则可以添加多个版本库,如果有版本库名称,则只能是一个版本库了,详情参考菜鸟教程)
svnserve -d -r /opt/svn/test
补充:
关闭killall svnserve
重启svnserve -d -r /opt/svn/
到此svn已经安装配置完成,用你的tortoiseSVN 填入如下格式的地址
此处可能会失败报错。原因通常有两种:1是云主机自身iptables规则,2是阿里云的安全规则。
如果判断端口号是否开放:telnet ip空格port 无法连通,首先开放iptables规则3690端口
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
service iptables save 保存规则
iptables -nvL 查看添加的规则
再次telnet测试
补充:查看SVN服务是否开启命令:ps aux|grep svnserve
查看端口号:netstat -lntp
判断端口号是否开放:telnet ip空格port
自动更新到web
到WWW目标目录下 svn co svn://IP地址/test
到网站目录下如wwwroot里面执行
svn co svn://ip地址/虚拟主机文件夹(此处注意文件目录,不然文件夹会错乱)
如果不执行这一步的话会在测试脚本时报如下错误
[root@iZuf6clehlmq6cw75k4xfaZ hooks]# ./post-commit
跳过“/data/wwwroot/ashidd.phpwhy.cn”
冲突概要:
跳过的路径:1
chown: 无法访问"/data/wwwroot/ashidd.phpwhy.cn/*": 没有那个文件或目录
配置自动更新脚本
cd hooks
cp post-commit.tmpl post-commit
vim post-commit
chmod a+x post-commit 更改权限
下面是post-commit脚本
#!/bin/sh #说明是执行shell命令
export LANG=zh_CN.UTF-8
SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件
WEB=/data/wwwroot/default/test #要更新的目录地址q
$SVN update $WEB --username 用户名 --password 密码 --no-auth-cache
chown www:www $WEB/*
./post-commit 运行测试是否有错误
参考文档一、https://help.aliyun.com/knowledge_detail/37789.html
参考文档二、https://help.aliyun.com/document_detail/52864.html
参考文档三:http://www.runoob.com/svn/svn-start-mode.html