Linux安装配置SVN

之前的开发一直用svn做版本控制,上个月买了阿里云ecs,有了一个自己的小服务器,网上找了教程安装和配置了SVN,在此回顾记录一下操作流程,以便日后查阅复习


背景:我的服务器linux版本是 Centos 6.5,安装了wdcp面板


一. 安装SVN

因为是安装了wdcp面板,在他们官网找了一篇安装svn教程,所以以下操作大都是基于该教程

教程地址: 点击打开链接

1 检查是否已经安装了subversion

# rpm -qa | grep subversion
如果安装了subversion 会显示相关的版本信息 subversion-1.6.11-15.el6_7.x86_64

如果版本过低,可以考虑卸载subversion

# yum remove subversion
2 安装subversion

# yum install subversion
3 验证是否安装成功

# svnserve --version
svnserve, version 1.6.11 (r934486)
   compiled Aug 17 2015, 08:37:43

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

以上信息显示 svn已经安装成功!


二. 配置

1 创建目录  

# mkdir -p /www/svndata/pt

	注意,这里的目录(项目名称)路径可以更改,格式如下:
	mkdir -p 目录路径(如:mkdir -p /www/svn/project)

新建一个版本仓库(使用svnadmin create 目录仓库路径与上面新建的目录要一致)

svnadmin create /www/svndata/pt


3 检查版本库是否创建成功

查看参考目录的内容 

# ll /www/svndata/pt
drwxr-xr-x 2 root root 4096 Jan  1 14:35 conf
drwxr-sr-x 6 root root 4096 Jan 28 09:55 db
-r--r--r-- 1 root root    2 Dec 28 13:49 format
drwxr-xr-x 2 root root 4096 Jan  1 17:55 hooks
drwxr-xr-x 2 root root 4096 Dec 28 13:49 locks
-rw-r--r-- 1 root root  229 Dec 28 13:49 README.txt

以上目录存在说明已经创建成功!

4 配置用户

4.1打开仓库目录 

# cd /www/svndata/pt

4.2 打开配置目录 

# cd conf

4.3 编辑 passwd文件 

# vim passwd

[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw
配置格式:username = password

5 权限配置

编辑 authz文件

 # vim authz

5.1 用户分组

[groups]
project_p = pm
project_s = server_group
project_c = client_group
project_t = test_group
格式:groupName = userName1,userName2

[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
6 服务svnserve.conf配置

打开编辑 

# vim svnserve.conf 

anon-access=none #未授权用户无读写权限 
auth-access=write #授权用户有写权限
password-db=passwd#密码数据库的路径 
authz-db=authz#访问控制文件 
realm=/www/svndata/pt#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字  


realm 值为我们版本库的路径 以上配置项前面不要留空格

7 配置防火墙端口

#  vi /etc/sysconfig/iptables

添加以下内容: 

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

保存后重启防火墙 
# service iptables restart

8 启动SVN

svnserve -d -r /www/svndata


9 查看SVN进程

#ps -ef|grep svn|grep -v grep

root      1742     1  0 Jan01 ?        00:00:00 svnserve -d -r /www/svndata/


10 检测SVN端口

#netstat -ln |grep 3690

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN 


11 SVN 停止和重启操作

# killall svnserve    //停止 
# svnserve -d -r /www/svndata  // 启动

12 我用了wdcp创建了一个pt站点 网站根目录 /www/web/pt/public_html

checkout一份到根目录

svn co svn://127.0.0.1/pt /www/web/pt/public_html --username pm --password pm_pw


pm 用户名

pm_pw 用户密码

-----------------------------------------------------------------------
注意!  你的密码,对于认证域:


   <svn://127.0.0.1:3690> pt


只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。


你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?

输入“yes” 回车,因为版本仓库还没有添加任何文件,所以取出版本为0,如下:
取出版本 0。

13 配置SVN的钩子 实现SVN版本库与网站根目录实现同步

为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,进入hooks目录,

# cd /www/svndata/pt/hooks
# ls

可以看到有一个post-commit.tmpl文件,这是一个模板文件,复制一份放在此目录下,命名为post-commit,并将其用户组设为www,并设置为可执行:
# cp post-commit.tmpl post-commit
# chown www:www post-commit
# chmod +x post-commit

这样就有了访问www目录的权限。
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件.
文件内容参考以下:
# vi post-commit

#!/bin/sh
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/www/web/pt/public_html
LOG_PATH=/tmp/svn_update.log
#/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
echo "\n\n\n##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH
chown -R www:www $WEB_PATH


说明:
1、#!/bin/sh 说明是执行shell命令 /*设定环境变量,如果没有设定可能会出现update报错*/
2、export LANG=zh_CN.UTF-8 是为了解决 svn  post commit 中文乱码。
如果你是GBK编码可能会提示:Error output could not be translated from the native locale to UTF-8
这是客户端和服务器编码的问题,默认是utf-8,可尝试设置export LANG=zh_CN.GBK或者export LANG=en_US.UTF-8
#执行更新操作
3、 svn  update –username 你版本库的用户名 –password 用户名的密码  svn ://你的IP地址:端口 /www/web/pt/public_html
4、chown -R www:www $WEB_PATH 更改文件夹属主为适合Web Server的
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件。

14 客户端连接

地址: svn://服务器ip/pt

用户:pm

用户密码:pm_pw

猜你喜欢

转载自blog.csdn.net/hbh112233abc/article/details/50598425