SVN简介(来自百度):
SVN全名Subversion,即版本控制系统。SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
拓扑图:
Centos搭建svn服务器!!!
1、服务器安装svn
[root@ svnserver ~]# yum install subversion -y
[root@svnserver ~]# svnversion --version #查看版本
svnserve,version 1.6.11 (r934486)
[root@svnserver ~]# mkdir /var/www/svn/serverrepo –pv
[root@svnserver ~]# svnadmin create/var/www/svn/serverrepo/ #创建svn仓库,产品服务器用
2、配置 上面的操作很简单,几个命令就搞定, 下面的操作也不难。进入上面生成的文件夹serverrepo/conf下,进行配置, 有以下几个文件authz, passwd, svnserve.conf其中authz 是权限控制,可以设置哪些用户可以访问哪些目录, passwd是设置用户和密码的, svnserve是设置svn相关的操作。
2.1先设置passwd
[root@svnserver serverrepo]# cd /var/www/svn/serverrepo/conf/
#如果多个仓库共用一个端口,需要把conf目录整个copy到/var/www/svn目录下;注意每个新仓库内的conf文件都保持相同
[root@svnserver conf]# vim passwd
[users]
# harry = harryssecret
# sally = sallyssecret
deply = deploy
#用户名=密码,这里注意账号密码要顶格写;不然无法识别;
#这样我们就建立了deploy用户,密码deploy ;
2.2 再设置权限authz
[root@svnserver conf]# vim authz #在文件末尾添加deploy用户的权限;
[/]
deploy = rw
#意思是deploy用户对所有的目录有读写权限;
2.3最后设定svnserve.conf
[root@svnserver conf]# vim svnserve.conf
anon-access = none #使非授权用户无法访问
auth-access = write #使授权用户有写权限
password-db = passwd #用户认证信息文件
authz-db = authz #访问控制文件
realm = /var/www/svn/serverrepo #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
#以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
2.4启动svn:
[root@svnserver serverrepo]# svnserve -d -r /var/www/svn/serverrepo/
#如果想要多个项目功用一个端口,可以直接使用svnserve -d -r /var/www/svn命令;并且保证/var/www/svn下面的conf目录下文件内容和每个项目里面的conf内容相同!!!!
启用测试服务器用的SVN:
查看端口:
[root@svnserver conf]# ss -tnl
State Recv-Q Send-Q Local Address:Port
LISTEN 0 7 *:3690 (默认svn端口)
好了,启动成功后,就可以使用了。
使用windows客户端,进行项目上传!!!
可以百度下载一个:TortoiseSVN 客户端工具并安装;
1、在屏幕空白处点击鼠标右键,选择SVNcheckout;
2、填写svn服务器路径,已经checkout下来的文件名,点击OK;
#如果多个项目公用一个端口,checkou地址需要在后面加上项目名称,如:svn://192.168.10.45/xxx
3、输入账号密码,点击OK,有成功提示;
4、进入F盘,并刷新,进入webserver文件夹会看到一个隐藏的svn文件夹;
5、创建需要的项目或文件,并提交到svn服务器;
提交完成以后需要进入web服务器查看!!!
进入web服务器端!!!(testserver也是一样的安装)
[root@svnclient ~]#yum install subversion #安装svn
[root@ svnclient ~]#svn checkout svn://192.168.10.45 /www/phpcode
#如果多个项目公用一个端口,checkou地址需要在后面加上项目名称,如:
svn checkout svn://192.168.10.45/phpcode /www/phpcode
#checkout把svn服务器的代码全部下载到本地/www/phpcode目录,注意:phpcode目录不用创建,如果有这个目录会报错;
#如果使用test服务器checkout,只需要在IP后面加端口即可,
例如:# svncheckout svn://192.168.10.45:3691 /www/phpcode
#第一次连接会要求输入账号密码;
Authentication realm:<svn://192.168.10.45:3690> /var/www/svn/serverrepo
Password for 'root':
Authentication realm:<svn://192.168.10.45:3690> /var/www/svn/serverrepo
Username: deploy
Password for 'deploy':
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<svn://192.168.10.45:3690> /var/www/svn/serverrepo
can only be stored to diskunencrypted! You are advised toconfigure
your system so that Subversion can storepasswords encrypted, if
possible. See the documentation for details.
You can avoid future appearances of thiswarning by setting the value
of the 'store-plaintext-passwords' optionto either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Checked out revision 0.
[root@svnclient www]# cd /www/phpcode/ #进入目录
[root@svnclient phpcode]# svn up /www/phpcode/ #更新svn服务器的内容
A /www/phpcode/webaaa
Updated to revision 1.
[root@svnclient phpcode]# ls #已经可以看到在windows客户端创建的目录了!!!
webaaa
使用脚本执行每分钟同步一次svn服务器的内容;
[root@ svnclient ~]# useradd deploy #创建deploy用户
[root@ svnclient ~]# chown -R deploy.deploy /www/phpcode/ #把phpcode权限给到deploy用户
使用deploy用户创建一个任务计划
[root@svnclient ~]# su - deploy
[deploy@svnclient ~]$ cd /www/
[deploy@svnclient www]$ svn update /www/phpcode/ (需要先执行一次更新,因为这个用户第一次执行也需要输入账号密码;)
[deploy@ svnclient ~]$ crontab -e
*/1 * * * * /usr/bin/svn update/www/phpcode >> /dev/null
#每分钟执行一次svn更新,并把执行结果丢弃