ubuntu 下搭建svn服务器,以及自动更新到web服务器。

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在网上找了很多的教程,但是试了很多个。写的都是略微粗糙,也有很多问题。整了三天终于是搞定了。我在这整理下,发上来给大家看看。希望有相同需求的道友少走些弯路。大家有什么问题可以在下面留言。</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
操作系统:elementary os(Ubuntu下的一个分支)
当前环境:已装好lamp(web服务器目录为/var/www/),已经装好了svn服务器(启动脚本在/usr/bin/svn)


创建代码仓库     

svnadmin create /home/svn/project  --fs-type fsfs

然后在project目录下会生成三个文件夹,在conf目录下有authz,passwd,svnserve三个文件。
authz
--------记录各用户对仓库中各个项目的访问权限(一个仓库有可能有多个项目).
在[groups]下面添加:
用户组名=用户1,用户2......
[project:/]   //仓库的根目录
@用户组名=rw  //表示权限
*=

例:

test=chrisdowson,test
    [project:/]
    @test=rw
      *=     (<span style="color:#ff0000;">注意等号两边不要留空格例如:test = chrisdowson,test</span>)

passwd-------存储了用户的用户名和密码
用户名=密码
.....

例:

test=123456
chrisdowson=123456   (<span style="color:#ff0000;">注意等号两边不要留空格例如:test = 123456</span>)

svnserve-----存储了用户试图登陆时验证权限和密码的路径(通常的路径就是指向上两个文件的),找到下面的每个选项去掉之前的#

anon-access=none
auth-access=write
password-db=passwd文件的绝对路径
authz-db=authz文件的绝对路径(每行最前面不能留空格)


例:

anon-access=none
auth-access=write
password-db=/home/svn/project/conf/passwd
authz-db=/home/svn/project/conf/authz



再启动服务器svnserve -d -r /home/svn   (注意哦这里的路径还没到仓库的地址哦。没有project)这里一直想不通,猜想是有可能会有多个仓库吧,所以每次启动都要启动所有仓库。如果提示  svnserve: 不能绑定服务器套接字: 地址已在使用  则用killall svnserve命令来杀死之前的svnserve进程然后再次运行上面的命令即可。

然后使用svn co svn://服务器的ip地址/project做一下测试,如果可以取出来说明搭建成功了。



现在要实现svn自动更新web服务器。


现在web服务器目录下checkout当前版本。然后在svn项目的hooks文件夹中的post-commit文件中添加脚本:用vi命令编辑一个新的post-commit(看清楚没有后缀名)千万不要用hooks文件夹里自带的post-commit文件。在文件中添加如下内容:
#!/bin/sh
WEB=/var/www/test   //web服务器下的项目不能有空格。
export LANG=en_US.UTF-8
svn update $WEB --username chrisdowson --password 123456  //就相当于windows下的客户端update<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">操作撒(如果不能判断自己写的shell脚本是否有错,可以现在hooks目录下运行./post-commit试一下)</span>

然后给这个文件赋给执行的权限chmod +x post-commit。

好了到这里算是大功告成了,大家可以在win下用小乌龟测测上传文件到服务器上,再看看web服务器下有没有什么变化。


ps:由于本人上手linux才一个多礼拜。对权限和一些命令理解的不深刻。大婶们轻拍呀,大家有什么问题或者建议都可以给我留言。我也是求知若渴呀!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。