1首先,安装:
. 执行命令:yum install subversion
2安装完成后,检测是否安装成功,以及版本号:
.执行命令:svn --version
我的个人会出现如下提示,表明安装成功,版本是1.6.11:
3.现在开始搭建svn仓库:
执行下面两个命令:
(1)mkdir -p /opt/svn/repos
(2) svnadmin create /opt/svn/repos
执行成功后,在 /opt/svn/repos文件夹下即可看到repos下有生成了多个文件,如下图
4.现在开始进入conf文件夹下开始配置:
authz文件是对用户权限的控制,passwd是设置用户名和密码,svnserve.conf是针对svn的配置
4.1先设置passwd,新建用户名和密码:
4.2再设置authz权限,给刚创建的gan用户添加完全的读写权限。如图:
5.最后设定svnserve.conf配置
anon
-
access
=
none # 使非授权用户无法访问
auth
-
access
=
write # 使授权用户有写权限
password
-
db
=
password
authz
-
db
=
authz # 访问控制文件
realm
=
/
opt
/
svn
/
repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
6.文件配置到此基本上就OK了,现在开始启动我们的svn服务器:
执行命令:svnserve -d -r /opt/svn/repos
查看服务是否起来:
执行命令:
netstat -tunlp | grep svn
7.现在window安装svn客户端TortoiseSVN,输入远程链接:svn://服务器iP地址/repos,再输入用户名和密码:gan 123456即可链接
二:部署项目到SVN上,实现本地更新同步到服务器项目:配置项目仓库的钩子配置
可以把钩子看成是WEB项目于SVN项目仓库之间的一个关联,通过向SVN项目仓库提交脚本代码,利用钩子shell脚本可以自动向web项目中将脚本文件更新过去
开始之前,首先我已经在win客户端的tortoiseSVN先建立好项目文件目录www了,如下图
1.进入SVN项目仓库钩子所在的目录,shell命令:cd /opt/svn/repos/hooks/,
然后复制备份post-commit文件:cp post-commit.tmpl post-commit
OK,假设我的项目文件我是假设放在/home (建议放在nginx的web目录下)
为了能够让SVN仓库同步将项目更新过来,那么首先需要从仓库checkout出项目到home目录下面,
分别执行shell命令:
cd /home
svn co svn://localhost/www --username gan --password 123456
此时在home目录下你将会看到你checkout出来的项目了,接下来要开始写触发脚本,实现在win本地上传更新你的项目文件的同时,同步更新仓库内的文件。
在/opt/svn/repos/hooks目录下打开post-commit文件,
屏蔽里面所有的未屏蔽代码,在文件最后写入:
cd /home/www
/usr/bin/svn cleanup
/usr/bin/svn up /home/www --username "gan" --password "123456"
OK,最后保存退出,然后在你的window本地的tortoiseSVN客户端上传一个文件到www目录下,即可发现服务器的/home/www目录也会出现该文件。
(
若出现:post-commit错误代码255,应该是脚本权限不对,赋予777权限即可)
到此整个部署就结束了
如果没有反应,会有两个地方可能出错:
1)配置文件与路径写得不对,可以直接通过手工方式去执行post-commit看看有没有报错。
2)权限不对。即/home权限是否足以满足脚本的读写。
最后,剩下的就是在自己的开发IDE安装好SVN插件,然后获取出项目,即可同步保存了,此时,服务器上的也可同步了。
我假设大家已经安装好SVN插件了,现在我以zendstudio 这个PHP的IDE为例,首先假设我要将我的项目放在我仓库下wwwroot目录下面,如图:
然后在你的IDE下,选择一个项目,右键单击选择Team->share project就会弹出选择分享的类型,我本地也装了git,所以会有git选项,选择SVN,并点击下一步,
第一次使用,就选择创建新的资源库位置,下一步;
OK,到了这里,因为我们要把项目放到wwwroot目录下面,所以URL写好
svn://你的服务器IP/wwwroot(这是你所要放得目录)
最后一直往下点击下一步即可,假设我上传的项目名称是weixin.,,接下来要做的就是将他同步更新到服务器仓库的同时,能够同步更新到我的web目录下,实现我在IDE操作,同时更新我的web目录,随时查看到效果
1.先用shell命令检出我的weixin项目到我的web目录(/home/wwwroot)下:
cd /home/wwwroot/
svn co svn://localhost/wwwroot/weixin --username gan --password 123456
检出成功之后,在你的IDE添加你的新文件,然后提交,即可看到你的web目录下也同时更新了
现附上有可能会出现的问题(网络来源)
一问一答:
问:安装好svn服务后在windows下用svn客户端连接不上svn服务器?
答:一般是centos中SVN的3690端口没有打开,使用下面方法
- [root@vm-moodle ~]#iptables -I INPUT -p tcp --dport 3690 -j ACCEPT #开放3690端口
- [root@vm-moodle ~]#/etc/rc.d/init.d/iptables save #保存配置,非常重要
- [root@vm-moodle ~]#/etc/init.d/iptables status # 查看是否已经成功:
问:配置基于svnserve的subversion服务器后,在客户端访问subversion版本库时出现这个错误:svnserve.conf:12: Option expected;为什么会出现这个错误呢?
答:因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件。看下面的配置文件。
- [general]
- ### These options control access to the repository for unauthenticated
- ### and authenticated users. Valid values are "write", "read",
- ### and "none". The sample settings below are the defaults.
- anon-access = read
- auth-access = write
在上面的配置文件中,anon-access是顶行的,没问题,而auth-access就存在前置空格,会导致这个错误。
要避免出现这个错误,应该在去掉这些行前的#时,也要顺手去掉前面的空格.
问:如何输入TortoiseSVN的用户名、密码?
答:很多时候,为了方便,我们在使用Tortoise时,会勾选密码输入框那里的保存验证信息。但是当我们想换一个用户登录时,却可能发现不知道怎么换用户进行登录。Tortoise的用户名密码等认证信息都是缓存在客户端文件系统的这个目录:
C:/Documents and Settings/Administrator/Application Data/Subversion/auth
删除auth下面的所有文件夹,重新连接远程服务器进行检出,对话框就会出现!