腾讯云使用笔记二: 安装svn服务器及web同步
官方文档参考:https://cloud.tencent.com/dev...
A01:安装subversion
sudo apt-get install subversion
A02:创建仓库
很多目录可以放subversion文件仓库,最常见的是/usr/local/svn和/home/svn
sudo mkdir -p /home/svn/youshengyouse sudo svnadmin create /home/svn/youshengyouse //说明:先创建目录(-p多级创建),再在该目录下新建版本库
A03:启动svn网络服务
svnserve -d -r /home/svn // svnserve不要写成svnserver // -d表示以守护方式启动 // -r表示仓库的根目录,这样svn://ip地址/youshengyouse/就表示对应的仓库路径为/home/svn/youshengyouse
A04:配置仓库
先备份配置文件
ubuntu@VM-0-8-ubuntu:/home/svn/fangshuixiushan/conf$ sudo cp svnserve.conf svnserve.conf.bak20180907
/home/svn/youshengyouse/conf/svnserve.conf文件的内容如下
anon-access = read auth-access = write password-db = passwd authz-db = authz
/home/svn/youshengyouse/conf/passwd文件的内容如下
先备份buntu@VM-0-8-ubuntu:/home/svn/fangshuixiushan/conf$ sudo cp passwd passwd.bak20180907
[users] aaaa=aaaamima bbbb=bbbbmima
/home/svn/youshengyouse/conf/authz(先备份)
[groups] develop = aaaa,bbbb manger = aaaa [/] @develop=rw *=r
修改后要重启
svnserve -d -r /home/svn //如果报错svnserve: E000098: Can't bind server socket: Address already in use 查下svn当前占的端口 root@VM-0-14-ubuntu:~# ps -aux | grep svn root 16960 0.0 0.1 72492 940 ? Ss 14:29 0:00 svnserve -d -r /home/svn root 19765 0.0 0.0 13232 880 pts/5 S+ 15:20 0:00 grep --color=auto svn //kill进程 kill -9 16960 //再启动 svnserve -d -r /home/svn
A05:编辑腾讯云安全组
添加规则0.0.0.0/0 TCP:3690 允许 -
否则会拒绝svn访问
A06:安装客户端
下载地址:https://osdn.net/projects/tor...
A07:测试
仓库路径为 svn://ip地址/youshengyouse/检出(checkout)成功,新建一文件上传,也成功,ok,万里长征,完成60%
常见问题
提交如果报错
Can't connect to host '134.175.42.125': 由于目标计算机积极拒绝,无法连接。
原因1:svn服务未启动
line 1: Section header expected
原因:一般是本个配置文件格工或哪里多了空格之类的
can't open file db/txn-current-lock:permission denied
原因:权限不够
$ sudo chmod -R 777 /home/svn/youshengyouse
post-commit hook failed (exit code 255) with no output.
原因: post-commit 脚本文件的权限不对,post-commit 脚本必须有 +x 权限。
sudo chmod 777 /home/svn/youshengyouse/hooks/post-commit
============如何让svn代码与web网站同步=========
只在svn提交就可以,不要再向网站提交代码B01:新建钩子文件 post-commit
#!/bin/bash # 基本变量 export LANG=en_US.UTF-8 dateTime=`date +%F` dateTimeMinute=`date +%H%M%S` binSvn=/usr/bin/svn # 你svn命令的绝对路径,如果不知道,请用find / -name svn查找 dirHtmlApp=/var/www/youshengyouse/ # 检出的web站点根目录 logFileName=/tmp/youshengyouse_svnhooks_${dateTime}.log # svn配置 # [1] REPOS-PATH 仓库路径 # [2] REV 刚执行修订版本号 # [3] TXN-NAME (the name of the transaction that has become REV) REPOS="$1" REV="$2" # 检出或者更新subversion,钩子的核心功能 echo "-- $dateTimeMinute" >> $logFileName # 先要将svn仓库中的内容检出到网站对应的目录中,如何判断有没有检出过呢,就是看是否有文件夹.svn # 如是检出过,就直接更新就行 if [ ! -d $dirHtmlApp/.svn ]; then # 检出SVN echo "$binSvn co file://$REPOS/ $dirHtmlApp" >> $logFileName # 使用命令co检出 $binSvn co file://$REPOS/ $dirHtmlApp if [ $? -eq 0 ]; then echo "checkout ok" >> $logFileName else echo "checkout error" >> $logFileName fi else # 更新svn echo " $binSvn up $REV $dirHtmlApp " >> $logFileName # 使用up命令更新 $binSvn up $REV $dirHtmlApp >> $logFileName if [ $? -eq 0 ]; then echo " update sucess " >> $logFileName else echo " update fial " >> $logFileName fi fi echo "--" >> $logFileName
B02:上传
建议先用测试下,检出,上传,删除后,确认无误后再进行批量操作
相关推荐
pub_svnserve.conf的 pub_authz.conf的配置文件有非法字符的原因引起,需要查找pub_authz.conf提的非法内容比如多余的空格删除或直接将pub_authz.conf