看到svn是不是有点狠low的感觉
写这篇的目的1:是记录下安装和配置的方法;2:是记录下自己在配置过程中遇到的问题和如何解决的,防止初学者走弯路;
一、前提
首先一最好有一台自己服务器,我的服务器配置在Ubuntu系统开发环境搭建一:MySQL的安装提到;
二、如果你想把你通过svn提交的代码同步到本机的nginx服务器的根目录,你需要看下Ubuntu系统开发环境搭建二:php+nginx的安装,安装好php开发环境
接着来看下svn的安装:
二、svn的安装
svn的安装很简单使用apt命令
apt-get install subversion
三、svn仓库的创建与配置
1、创建一个名称为svn的文件夹,文件夹里面用来创建数据仓库
备注:这里我在home目录下创建一个svn文件夹
切换到home文件夹,执行以下命令:
mkdir svn
2、创建一个数据仓库(一个目录下可以创建多个仓库)
备注:这里我创建一个名称为huishouzhi的数据仓库
svnadmin create huishouzhi
3、启动和停止svn服务
启动svn服务
svnserve -d -r /home/svn
停止svn服务
killall svnserve
查看svn服务的状态
netstat -an |grep 3690
A1F0D8C2-F9DB-4FBF-BD2D-8E209D52D172.png
说明svn处于启动状态
4、设置svn的访问权限
目录切换到你创建的数据仓库的目录;
这里我切换到huishouzhi目录:
数据仓库目录.png
先来看下文件夹
conf:就是你要配置权限的地方
db:是存储数据的地方
hooks:钩子,这里面的代码在svn提交代码的时候回被触发,在接下来配置代码同步的时候会用到
locks:暂时不用管
目录切换到conf:
1、打开svnserve.conf 文件,取消
9ECD5909-CB3B-4B05-982B-B02F99FE62C9.pnganon-access = none(修改read为none)
auth-access = write
password-db = passwd
authz-db = authz
前面的注释,注意:前面不要留空格
2、打开passwd文件:这个文件主要是存储svn用户信息,注意这里账号密码都是明文存储的。
直接把我的密码黏上,哈,是不是特有奉献精神
passwd文件内容.png
3、打开authz文件:这里可以给你在passwd文件里设置的用户添加权限
还是直接上图吧
authz权限.png
到目前为止你就可以远程连接svn,提交代码都是木有问题的
svn连接成功.png
四、svn代码自动同步带nginx根目录设置
背景:有时候我们在进行php开发的时候需要在本地提交svn代码后,能自动把提交的代码同步到nginx的根目录下(我这里的根目录是var/www),这样在浏览器中就能直接预览了。
原理:把服务器作为一个svn客户端,首先需要把svn仓库的代码导出到nginx的根目录下;在以后每次提交代码的时候,触发hooks下的脚本,自动把提交的代码更新到nginx根目录就可以了。
1、首先在nginx的根目录下执行以下命令:
svn checkout svn://127.0.0.1/huishouzhi
2、目录切换到hooks文件夹下
执行命令:创建一个post-commit文件
vi post-commit
黏贴以下代码
#!/bin/sh
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
LOG_PATH=/home/svn/huishouzhi/conf/svn.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
svn update /var/www/huishouzhi --username admin --password admin.huishouzhi --no-auth-cache >> $LOG_PATH
exit 0
备注:其中admin admin.huishouzhi 可以是你之前设置的任何一个svn的账户
网友评论