预期目的:php
一、仓库放在 /var/svn/ 目录下,而且仓库名为 projectweb
二、建立用户组lsgogroup,该组下添加两个成员lsgoweb一、lsgoweb2,密码直接用用户名,两用户能够checkout代码和提交代码apache
三、利用SVN的钩子实现当仓库的代码更新的时候自动同步至咱们的web目录,在这里,个人web目录在 /home/www/ 下vim
1、搭建svn环境并建立仓库:服务器
一、安装Subversion:socket
yum install -y subversionsvn
二、检测是否安装成功(查看svn版本号)post
svnserve --version测试
三、建立版本库orm
//先建目录
mkdir /var/svn
cd /var/svn
//建立版本库
svnadmin create /var/svn/project
cd project
//会看到自动生成的版本库文件
conf db format hooks locks README.txt
至此,svn环境搭建成功。
2、建立用户组及用户:
一、 进入版本库中的配置目录conf,此目录有三个文件: svn服务综合配置文件(svnserve.conf)、 用户名口令文件(passwd)、权限配置文件(authz)。
二、修改权限配置文件:vim authz
三、配置用户名命令文件:vim passwd
四、配置SVN服务综合配置文件svnserve.conf
//找到如下配置项,将前面的#号去掉,而后作相应的配置
anon-access = none //匿名用户访问权限:无
auth-access = write //普通用户访问权限:读、写
password-db = passwd //密码文件
authz-db = authz //权限配置文件
realm = /var/svn/project //版本库所在1
注意:全部以上的配置项都须要顶格,即前面不能预留空格,不然报错
五、启动svn服务:
svnserve -d -r /var/svn
若是提示:
svnserve: E000098: Can't bind server socket: Address already in use
证实如今svn已经被启动了,因为咱们修改了配置文件,所以要重启svn服务
//查看svn服务详情
ps aux | grep svn
//将svn服务强制中止 其中790为svn服务的ID号,-9是kill的参数
kill -9 790
或者用
killall svnserve
再运行 svnserve -d -r /var/svn,进行启动服务
六、测试服务器:
//咱们在web目录测试(/home/www)
cd /home/www
svn co svn://localhost/project
若是提示:Checked out revision 1. 表示checkout成功
咱们添加新文件来测试是否提交成功
cd /home/www
touch index.php
svn add index.php //成功的话会显示 A index.php
svn commit index.php -m "测试提交文件"
假如最后提示:
Adding index.php
Transmitting file data .
Committed revision 2.
则表示咱们svn服务器搭建成功!文件已经可以推送了。
七、本地拉取、推送
在本地首先要安装SVN吧,具体百度。。。
填写信息:
点击ok,提示输入用户名和密码
就填刚才咱们建立的lsgoweb1或lsgoweb2,和对应的密码便可。
3、实现svn更新自动同步到web目录:
一、在web目录中checkout版本库
这一步算是比较关键的一步了,当时我搭建的时候试了无数次,就是缺乏了这一步。把刚才checkout的版本库删掉,咱们来一次比较正式的checkout:
svn co svn://localhost/project /home/www --username lsgoweb1(SVN帐号) --lsgoweb1(SVN密码)
进入/var/svn/project/hooks下,创建post-commit文件:
cd /var/svn/project/hooks
vim post-commit
//在该文件里添加以下代码,保存
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn //这里不用改
WEB_PATH=/home/www //web目录,若是你的不一样,能够改
//这里的用户随便一个就好
$SVN_PATH update $WEB_PATH --username 'lsgoweb1' --password 'lsgoweb1' --no-auth-cache
保存退出。
修改post-commit用户为www目录用户
chown apache:apache post-commit //个人 /home/www 的用户组和全部者都是apache
给post-commit 执行权限:
chmod 755 post-commit
麻蛋,终于写完了。。。。