您的位置:首页 > 运维架构 > Linux

Linux安装配置SVN

2016-01-28 10:52 656 查看
之前的开发一直用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)


2 新建一个版本仓库(使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: