linux安装svn服务端不使用apache
一、安装
1.查看是否安装cvs
rpm -qa | grep subversion
2.安装
yum install subversion
3.测试是否安装成功
/usr/bin/svnserve --version
如果提示/usr/bin/svnserve: error while loading shared libraries: libaprutil-1.so.0: cannot open shared object file: No such file or directory
出现这个错误的原因就是svnserver在编译时是加了apache支持的,现在无法找到apr-util库,一般情况下我们将apache的lib目录加入到系统的lib路径中就可以了(查到方法 find / -name libaprutil-1.so.0)
然后我们打开/etc/ld.so.conf文件,并加入上面两个目录下的lib路径到文件中,如下:
# vi /etc/ld.so.conf
/www/wdlinux/httpd-2.2.22/lib/
在文件的最后加入上面的指定路径即可,然后更新下:
ldconfig -v
如提示以下内容,说明已安装成功
--------------------------------------
svnserve,版本1.6.11 (r934486)
编译于Apr 11 2013,17:28:04
版权所有(C) 2000-2009 CollabNet。
Subversion 是开放源代码软件,请参阅http://subversion.tigris.org/ 站点。
此产品包含由CollabNet(http://www.Collab.Net/) 开发的软件。
下列版本库后端(FS) 模块可用:
* fs_base : 模块只能操作BDB版本库。
* fs_fs : 模块与文本文件(FSFS)版本库一起工作。
Cyrus SASL 认证可用。
--------------------------------------------------------------
二、配置
1、新建一个版本仓库(使用svnadmin create 创建目录仓库路径)
svnadmin create /www/svndata/project
如果出现:
svnadmin: Repository creation failed
svnadmin: Could not create top-level directory
svnadmin: Can't create directory '/www/svndata/project': No such file or directory
先新建svndata文件夹,再在svndata文件夹下面新建项目文件夹
然后再执行 svnadmin create /www/svndata/project
2、修改svn版本库的配置文件
vi /www/svndata/project/conf/svnserve.conf
按以下格式内容修改,其中realm的值为项目名称,本例中即为project。
[general]
anon-access = none
auth-access = write
password-db = /opt/svndata/project/conf/passwd
authz-db = /opt/svndata/project/conf/authz
realm = repos
注意:对用户配置文件的修改立即生效,不必重启svn。
3、添加用户
vi /web_data/svndata/project/conf/passwd
要添加SVN用户非常简单,只需在/web_data/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。
为了测试,我添加了如下内容:
[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw
4、修改用户访问策略
vi /web_data/svndata/project/conf/authz
记录用户的访问策略,以下是参考:
[groups]
project_p = pm
project_s = server_group
project_c = client_group
project_t = test_group
[project:/]
@project_p = rw
* =
[project:/server]
@project_p = rw
@project_s = rw
* =
[project:/client]
@project_p = rw
@project_c = rw
* =
[project:/doc]
@project_p = rw
@project_s = rw
@project_c = rw
@project_t = rw
* =
以上信息表示,只有pm有根目录的读写权,server_group能访问server目录,client_group能访问client目录,所有人都可以访问doc目录。
当然,以上是比较复杂的权限控制,如果只是测试,可以简单些。建立一个用户组,把所有的用户都放到一个用户组,如下:
[groups]
admin = pm,server_group,client_group,test_group
[/]
@admin = rw
三、启动svn
先转到SVN的安装目录,比如,你安装在/home/svn 下面。
然后转到bin目录下,在这里可以看见一个叫svnserve的文件,我们需要用这个来启动SVN服务。
试一下svnserve --help,看看这个命令的帮组,其中有-d和-r,分别表示后台运行和数据仓库目录。
数据仓库目录表示你保存数据的地方,如你将工程的信息保存在/home/svndata下面,这个svndata就是你的数据仓库目录。
弄清楚了这些就可以来启动了:
输入命令:
svnserve -d -r /home/svndata
后面那个要跟你自己的数据仓库目录。
这样我们就启动了SVN了,SVN默认监听的是3690。
有时候我们需要更改一下监听的端口,这时就需要设定一下监听端口了,按照如下命令来进行:
svnserve --listen-port 9999 -d -r /opt/svndata
这样我们就把监听端口改成了9999了,当然你也可以可以把9999改成你自己想监听的端口~
四、测试svn服务器
进入网站根目录
cd /www/web/repos/public_html
svn co svn://127.0.0.1:3690/project /www/web/repos/public_html --username pm --password pm_pw
会出现以下认证的提示
保存未加密的密码(yes/no)?
输入“yes” 回车,因为版本仓库还没有添加任何文件,所以取出版本为0,如下:
取出版本0。
五、把svn的bin目录加入到环境变量之中
六、配置post-commit,实现自动同步svn版本库文件到web目录
为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,进入hooks目录,
cd /web_data/svndata/project/hooks
ls
可以看到有一个post-commit.tmpl文件,这是一个模板文件,复制一份放在此目录下,命名为post-commit
svn: 提交失败(细节见下):
svn: 无法使用外部编辑器取得日志信息;请尝试设定 $SVN_EDITOR 环境变数,或是使用 --message (-m) 或 --file (-F) 选项
svn: 没有一个 SVN_EDITOR,VISUAL 或 EDITOR 环境变数被设定,执行时期的设定中也没有 'editor-cmd' 选项
解决方法: 设置vim为你的SVM_EDITOR
命令:
export
SVN_EDITOR=vim
如果希望该环境变量能永久生效,把以下这行添加到你的个人文档目录下的.bash_profile文件中即可。文件路径~/.bash_profile
export
SVN_EDITOR=vim