then
echo "Apache startup: cannot start"
exit
fi
case "$1" in
'start')
su - $APACHE_OWNER -c "$APACHE_HOME/bin/apachectl start"
;;
'stop')
su - $APACHE_OWNER -c "$APACHE_HOME/bin/apachectl stop"
;;
'restart')
su - $APACHE_OWNER -c "$APACHE_HOME/bin/apachectl restart"
;;
esac
保存退出。
# chmod 770 apache
# chkconfig --add apache // chkconfig有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。chkconfig没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务
# ntsysv // ntsysv来配置运行级别用ntsysv关了某些服务以后重启默认的是X启动,在图象化界面中选种apache自动启动。
测试Apache
# service apache start
# service apache stop
# service apache restart
如果不使用apache服务进行html方式的浏览,我们可选择只安装subversion。svnserve是Subversion自带的一个小型的服务器,它使用独立的协议与客户端,并同样可以进行权限配置的操作。
1.1.1 操作步骤
第一步、 安装编译:(最好创建一个配置管理的用户,所有操作都使用该用户,避免一些不必要的麻烦。)
# chmod a+x subversion-1.4.3.tar.gz //添加可执行权限
# tar zxvf subversion-1.4.3.tar.gz //解压缩安装包
# cd subversion-1.4.3 //进入安装目录
# ./configure --prefix=/usr/local/subversion //--prefix=/usr/local/subversion是所需要安装到的目录位置。用户可以根据自身环境的设置修改。
# make install //编译后进行安装
#svnadmin --version //检验subversion是否安装成功,查看subversion的版本
第二步、 配置管理库:
# mkdir /svndata //创建SVN根目录svndata
# svnadmin create --fs-type fsfs /svndata/test //在SVN根目录下创建一个名叫test的仓库,--fs-type为指定仓库的文件格式为fsfs
# vi /svndata/test/conf/svnserve.conf
svnserve设置对全局提供简单的访问控制。
去掉一下两行的注释
anon-access = read //表示匿名用户的权限
auth-access = write //表示认证用户的权限设置
password-db = passwd //指向保存用户帐号密码的文件的位置,可以使用相对路径
# vi /svndata/test/conf/passwd //添加用户名密码
添加用户fox
fox = fox //等号前面是用户名,等号后面是密码
启动subversion
# svnserve –d //启动subversion
守护进程启动一个服务。服务器启动后,客户端即可以通过绝对路径访问。
第三步、 测试svn
用IE打开svn://10.130.33.119/svndata/test,自动打开版本库浏览器,如图所示:
http://www.subversion.org.cn/index.php?option=com_content&task=view&id=92&Itemid=100
安装简便,网站有flash教学,可以成功安装部署windows环境的svn服务器。权限配置的部分也将省略。
2 权限管理
SVN可以使用多重认证源来控制访问,可以使用SSL认证方式,windows域认证方式,和paawd文件方式,为了达到权限控制的目的,又不增加权限控制的复杂性,以用户使用方便为前提,下面将介绍passwd文件权限管理配置方式。对应两种在linux上不同的部署方式有以下两种配置权限的方式。
首先确保Apache已经加载mod_authz_svn模块。保证httpd.conf文件中有以下几行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
2.1.1 单版本库
//修改svn仓库的所有者
# chown -R apache:apache /svndata/test
//修改该目录权限只能apache拥有
# chmod –R 700 /svndata/test
<Location /usboss>
DAV svn
SVNPath /svndata/test
AuthType Basic
AuthName "Fox's SVN"
AuthUserFile /svndata/passwd
AuthzSVNAccessFile /svndata/accesspolicy
Require valid-user
</Location>
使用htpasswd –m /svndata/passwd user //创建一些用户
修改accesspolicy(权限访问策略文件)
……
重启apache。
2.1.2 多版本库
在配置文件httpd.conf中可以用多个Location标签,也可以使用SVNParentPath代替SVNPath,例如在/svndata/t下有多个版本库repos1,repos2等等,用如下方式指定:
<Location /svn/> //不能缺少红色标志
DAV svn
SVNParentPath /svndata/
</Location>
"SVNParentPath /svndatat"表示/svndata下的每个子目录都是一个版本库。可以通过http://服务器IP/svn/repos1,http://服务器IP/svn/repos2来访问。
使用SVNParentPath代替SVNPath来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。如果要对具体每个版本库配置,用如下的语法:
[groups]
project1_committers = paulex richard
project2_committers = jimmy michel spark
[repos1:/]
* = r
@ project1_committer = rw
[repos2:/]
* = r
@ project2_committer = rw
这样项目1的committer组只能对repos1版本库下的文件具有写权限而不能修改版本库repos2,同样项目2的commiter也不能修改repos1版本库的文件。
2.2.1 单版本库
配置文件的位置:/svndata/test/conf/下有三个配置文件:
Authz | 目录访问权限控制文件 |
passwd | 管理用户帐号 |
svnserve.conf | 代码库基础配置文件 |
在服务器端,编辑代码库的test/conf/svnserve.conf文件,如下:
[general]
password-db = passwd //用户名密码放在passwd文件里
anon-access = none //不允许匿名访问
auth-access = write //只允许认证用户写操作
authz-db = authz //项目目录访问权限的相关配置放在authz文件里
在服务器端,编辑代码库test/conf/passwd文件,如下:
[users]
fox = fox
liwei = liwei
liaole =liaole
linwz = linwz
lidp = lidp
wangym =wangym
fuwb = fuwb
wangys = wangys
mengwy = mengwy
在服务器端,编辑代码库test/conf/authz文件。该文件的配置段,可以分为两类,[group]是一类,里面放置着所有用户分组信息。其余以[test:/]开头的是另外一类,每一段就是对应着项目的一个目录,其目录相关权限,就在此段内设置。使用中文权限文件的时候注意格式转换。
[groups]
svnadmin = fox,huwei
manager = liwei,linwz,lidp,wangym
java = lidp,fuwb,daiyun
vc = linwz,wangys,niucheng,weiss
test = wangym,mengwy
[/]
@svnadmin = rw
* = r
[/01管理区]
@manager = rw
* = r
[/02开发区/java]
@manager = rw
@java = rw
* = r
[/02开发区/vc]
@manager = rw
@vc = rw
* = r
[/03测试区]
@manager = rw
@test = rw
* = r
[/04发布区]
@manager = rw
wangym = rw
* = r
[/05共享区]
* = rw
2.2.2 多版本库
限制指定库的指定目录
应该在authz文件中指定具体的库,
[groups]
admin=user1
dev=user2
[test:/]
@admin=rw
@doc=r
如果此时你还用[/],则表示所有库的根目录。
设置多个版本库使用同一个密码控制文件
在每个版本库的svnserve.conf文件中,填写该文件的绝对路径名就可以了。
2.3.1