企业应用单svn与apache+svn配置整理
2012-01-16 11:35
309 查看
说明: 系统环境:CentOS 5.4 x86_64
一、所需软件
http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz
http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz
http://labs.renren.com/apache-mirror//httpd/httpd-2.2.21.tar.gz
二、单svn
安装明细:安装位置 SVN_DIR=/opt/svn (可自定义)
1、获取svn安装包:
编译svn以root用户登录:
(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)
在/etc/profile最后加入 SVN Path 以方便操作:
测试是否安装成功:
如果显示如下,svn安装成功:
2. svn配置建立svn版本库目录可建多个:
新建文件夹:
建立svn版本库:
修改svn版本库配置文件版本库:
内容修改为:
注意:对用户配置文件的修改立即生效,不必重启svn。
passwd.conf [users]是必须的,文件格式如下:
[users]
下面列出要访问svn的用户,每个用户一行,示例:
[users]
username = password
配置svn用户访问权限:
注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
= ,
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/opt/svndata,[/]就是表示对全部版本库设置权限。
[/] 表示对版本库repos设置权限
[/abc] 表示对版本库repos中的abc项目设置权限
[/abc/aaa] 表示对版本库repos中的abc项目的aaa目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。
权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = test1
[/]
@admin = rw
[/abc/aaa]
test2 = rw
[/pass]
test3 =
svn配置完毕。
3. 启动svn建立启动svn的用户
根据提示为用户svn设置密码
允许用户svn访问版本库:
启动svn
其中:
su - svn表示以用户svn的身份启动svn
-d表示以daemon方式(后台运行)运行
--listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限,不加此参数的默认端口是3690
-r /opt/svndata指定根目录是/opt/svndata
检查:
如果显示如下,即为启动成功
svn 30041 4703 0 Oct18 ? 00:00:00 svnserve -d -r /opt/svndata
三、apache+svn
1、下载安装APACHE2,安装文件能到官方网站
安装APR和APR-UTIL
2、安装subversion
编译完成后会自动在 apache2/conf/httpd.conf 添加
安装后操作版本库建立及启动同纯svn(账号建立有区别,一会详细介绍)
3、Apache设置
#vi /local/svnroot/apache2/conf/httpd.conf #编辑Apache服务器的配置文件
下述参数根据自己的安装情况进行相应修改:
ServerRoot "/local/svnroot/apache2"
Listen 80 #可修改为其他的端口,则访问时也要在URL里加上对应的端口号
User svn
Group svn
#前面把svn安装目录的所有文件改为属于svn,这里这样设置,那么Apache运行时就会切换到使用该Linux里的账号svn与组svn
#ErrorLog "logs/error_log"
ErrorLog "|/local/svnroot/apache2/bin/rotatelogs /local/svnroot/apache2/logs/error_log.%Y%m%d.log 86400 480"
#修改Errorlog记录的方式为按天记录,避免一个log文件过大
# CustomLog "logs/access_log" common
CustomLog "|/local/svnroot/apache2/bin/rotatelogs /local/svnroot/apache2/logs/access_log.%Y%m%d.log 86400 480" common
#修改accesslog记录的方式为按天记录,避免一个log文件过大
在尾部插入下列代码
<Location /repos> #到时访问的路径就是http://hostip/repos
DAV svn #使用dav传输
SVNPath /opt/svndata/repos #repos库在Linux系统中的真实物理路径
AuthzSVNAccessFile /opt/svndata/repos/conf/authz #配置各个用户访问权限的文件
AuthType Basic
AuthName "Apache SVN repository." #客户端访问该库时显示的登陆提示信息
AuthUserFile /opt/svndata/repos/conf/passwd #记录各个用户名与其密码的文件
#Satisfy Any #允许匿名访问,若不允许,可注释掉此行
Require valid-user #要求用户名与密码验证
</Location>
建立账号密码
/usr/local/apache2/bin/htpasswd -bm /opt/svndata/repos/conf/passwd test test
用户名:test 密:test
#-c参数表明创建文件passwd,若此文件已存在,则不要-c参数
#-m表示用MD5加密协议
#-b表示直接在 test后加密码
四、补充
a)通用版本库同步
1、你已经配置好了subversion版本库,可以通过http://*.*.*.*/repos/进行版本的提交和更新,并已导入了初始的一个版本
2、你要通过某种手段建立一个web目录,假设通过http://*.*.*.*/web可以访问
3、然后将http://*.*.*.*/repos/ checkout到web目录,此时你应该可以通过http://*.*.*.*/web看到初始版本的网站具体运行效果
4、拷贝版本库repos中hooks下的post-commit.tmpl为post-commit,并修改post-commit中的
复制代码其中SVN=右边改成你实际的svn程序位置
WEB=右边改成你实际的web目录
5、为post-commit添加执行权限
这样,每当你的版本库新提交一个版本时,svn将会自动更新一份到web目录,你就可以通过访问这个web查看到网站的最新运行效果
b)强制svn 提交代码者 添加注释信息
1、打开你建立的项目,里面有个hooks目录,更改 pre-commit.tmpl 为pre-commit
编辑pre-commit 文件内容,找到下面内容,用#注释掉。
2、在上一步修改处下面增加一下内容。
3、设置pre-commit文件权限可执行。
一、所需软件
http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz
http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz
http://labs.renren.com/apache-mirror//httpd/httpd-2.2.21.tar.gz
二、单svn
安装明细:安装位置 SVN_DIR=/opt/svn (可自定义)
1、获取svn安装包:
wget “http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz” wget “http://subversion.tigris.org/dow ... n-deps-1.6.6.tar.gz”
编译svn以root用户登录:
tar xfvz subversion-1.6.6.tar.gz tar xfvz subversion-deps-1.6.6.tar.gz cd subversion-1.6.6 ./configure –prefix=/opt/svn –without-berkeley-db
(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)
make && make install
在/etc/profile最后加入 SVN Path 以方便操作:
vi /etc/profile PATH=$PATH:/opt/svn/bin export PATH
测试是否安装成功:
svnserve –-version 或 /opt/svn/bin/svnserve –version
如果显示如下,svn安装成功:
svnserve, version 1.6.6 (r40053) compiled Dec 2 2009, 22:37:15 Copyright (C) 2000-2009 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ <script language="JavaScript" src="http://book.book560.com/ads/ads728x15.js" type="text/javascript"></script> This product includes software developed by CollabNet (http://www.Collab.Net/). The following repository back-end (FS) modules are available: * fs_fs : Module for working with a plain file (FSFS) repository. Cyrus SASL authentication is available.
2. svn配置建立svn版本库目录可建多个:
新建文件夹:
mkdir -p /opt/svndata/repos
建立svn版本库:
svnadmin create /opt/svndata/repos
修改svn版本库配置文件版本库:
vi /opt/svndata/repos/conf/svnserve.conf
内容修改为:
[general] anon-access = none auth-access = write
注意:对用户配置文件的修改立即生效,不必重启svn。
passwd.conf [users]是必须的,文件格式如下:
[users]
下面列出要访问svn的用户,每个用户一行,示例:
[users]
username = password
配置svn用户访问权限:
vi /opt/svndata/repos/conf/authz.conf
注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
= ,
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/opt/svndata,[/]就是表示对全部版本库设置权限。
[/] 表示对版本库repos设置权限
[/abc] 表示对版本库repos中的abc项目设置权限
[/abc/aaa] 表示对版本库repos中的abc项目的aaa目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。
权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = test1
[/]
@admin = rw
[/abc/aaa]
test2 = rw
[/pass]
test3 =
svn配置完毕。
3. 启动svn建立启动svn的用户
useradd svn passwd svn
根据提示为用户svn设置密码
允许用户svn访问版本库:
chown -R svn:svn /opt/svndata
启动svn
su - svn -c "svnserve -d --listen-port 9999 -r /opt/svndata"
其中:
su - svn表示以用户svn的身份启动svn
-d表示以daemon方式(后台运行)运行
--listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限,不加此参数的默认端口是3690
-r /opt/svndata指定根目录是/opt/svndata
检查:
ps -ef|grep svnserve
如果显示如下,即为启动成功
svn 30041 4703 0 Oct18 ? 00:00:00 svnserve -d -r /opt/svndata
三、apache+svn
1、下载安装APACHE2,安装文件能到官方网站
wget http://labs.renren.com/apache-mirror//httpd/httpd-2.2.21.tar.gz tar xvzf httd-2.2.21.tar.gz cd httpd-2.2.21
安装APR和APR-UTIL
cd srclib/apr
./buildconf
./configure --prefix=/usr/local/apr
make && make installcd ../apr-util
./buildconf
./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr
make && make installcd ../..
./configure --enable-dav --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --enable-so --enable-rewrite
make && make install
2、安装subversion
tar zvxf subversion-1.6.12.tar.gz
tar zvxf subversion-deps-1.6.12.tar.gz
cd ./subversion-1.6.12
./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-apxs=/usr/local/apache2/bin/apxs
make && make install
编译完成后会自动在 apache2/conf/httpd.conf 添加
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
安装后操作版本库建立及启动同纯svn(账号建立有区别,一会详细介绍)
3、Apache设置
#vi /local/svnroot/apache2/conf/httpd.conf #编辑Apache服务器的配置文件
下述参数根据自己的安装情况进行相应修改:
ServerRoot "/local/svnroot/apache2"
Listen 80 #可修改为其他的端口,则访问时也要在URL里加上对应的端口号
User svn
Group svn
#前面把svn安装目录的所有文件改为属于svn,这里这样设置,那么Apache运行时就会切换到使用该Linux里的账号svn与组svn
#ErrorLog "logs/error_log"
ErrorLog "|/local/svnroot/apache2/bin/rotatelogs /local/svnroot/apache2/logs/error_log.%Y%m%d.log 86400 480"
#修改Errorlog记录的方式为按天记录,避免一个log文件过大
# CustomLog "logs/access_log" common
CustomLog "|/local/svnroot/apache2/bin/rotatelogs /local/svnroot/apache2/logs/access_log.%Y%m%d.log 86400 480" common
#修改accesslog记录的方式为按天记录,避免一个log文件过大
在尾部插入下列代码
<Location /repos> #到时访问的路径就是http://hostip/repos
DAV svn #使用dav传输
SVNPath /opt/svndata/repos #repos库在Linux系统中的真实物理路径
AuthzSVNAccessFile /opt/svndata/repos/conf/authz #配置各个用户访问权限的文件
AuthType Basic
AuthName "Apache SVN repository." #客户端访问该库时显示的登陆提示信息
AuthUserFile /opt/svndata/repos/conf/passwd #记录各个用户名与其密码的文件
#Satisfy Any #允许匿名访问,若不允许,可注释掉此行
Require valid-user #要求用户名与密码验证
</Location>
建立账号密码
/usr/local/apache2/bin/htpasswd -bm /opt/svndata/repos/conf/passwd test test
用户名:test 密:test
#-c参数表明创建文件passwd,若此文件已存在,则不要-c参数
#-m表示用MD5加密协议
#-b表示直接在 test后加密码
四、补充
a)通用版本库同步
1、你已经配置好了subversion版本库,可以通过http://*.*.*.*/repos/进行版本的提交和更新,并已导入了初始的一个版本
2、你要通过某种手段建立一个web目录,假设通过http://*.*.*.*/web可以访问
3、然后将http://*.*.*.*/repos/ checkout到web目录,此时你应该可以通过http://*.*.*.*/web看到初始版本的网站具体运行效果
4、拷贝版本库repos中hooks下的post-commit.tmpl为post-commit,并修改post-commit中的
REPOS="$1" REV="$2" commit-email.pl "$REPOS" "$REV" commit-watchers@example.org log-commit.py --repository "$REPOS" --revision "$REV" SVN=/opt、svn/bin/svn WEB=/www/web SVN update WEB
复制代码其中SVN=右边改成你实际的svn程序位置
WEB=右边改成你实际的web目录
5、为post-commit添加执行权限
这样,每当你的版本库新提交一个版本时,svn将会自动更新一份到web目录,你就可以通过访问这个web查看到网站的最新运行效果
b)强制svn 提交代码者 添加注释信息
1、打开你建立的项目,里面有个hooks目录,更改 pre-commit.tmpl 为pre-commit
编辑pre-commit 文件内容,找到下面内容,用#注释掉。
$SVNLOOK log -t "$TXN" "$REPOS" | \ grep "[a-zA-Z0-9]" > /dev/null || exit 1 commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
2、在上一步修改处下面增加一下内容。
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c` if [ "$LOGMSG" -lt 5 ]; then echo -e "\nLog message cann't be empty! you must input more than 5 chars as comment!." 1>&2 exit 1 fi
3、设置pre-commit文件权限可执行。
chomd +x pre-commit
相关文章推荐
- 企业应用纯svn与apache+svn配置整理
- 企业应用纯svn与apache+svn配置整理
- linux+svn+apache+ssl+ftp配置安全易于管理的svn服务器
- Apache配置多站点(整理 转载)
- Windows基于Apache的svn服务器配置
- 在redhat 上面编译安装配置svn的apache网页支持
- svn搭建HTTP访问方式--- 配置apache配置文件
- Centos 6.5上Apache + PAM + SVN服务安装配置(使用本地系统用户认证)
- Apache配置整理
- httpd(apache)配置参数(待整理补全)v0.9
- CentOS 6.5 Apache+SVN配置
- Linux 下 Trac SVN apache SSL 配置安装以及整合
- svn在apache下的配置
- apache php 多站点配置 重新整理
- apache下virtualhost与location合用配置转发SVN控制访问
- svn+apache+ssl安装配置,通过SSL访问
- linux svn+apache 配置客户自助修改密码
- Linux下apache+svn的安装与配置
- Centos apache + mysql + usvn 配置svn 服务器
- [精华] [原创]Linux+Apache+Mysql+PHP典型配置 (整理篇)