Installing Subversion on Fedora8

参考文档: Installing Subversion on Fedora Core

原以为通过参考文档可以搭建起来SVN服务器,没想到还是有些不同。

1、安装subversion、mod_dav_svn,subversion在fedora8中已经安装了,mod_dav_svn是svn的apache模块。
# yum install subversion
# yum install mod_dav_svn


2、创建代码仓库、访问用户、访问许可文件夹
# mkdir /svn
# mkdir /svn/repos
# mkdir /svn/users
# mkdir /svn/permissions


3、更改上述文件夹的访问权限,以便apache可以操作
# chown -R apache.apache /svn


4、利用subversion命令为具体的项目创建代码仓库。如项目为mydemo
# svnadmin create /svn/repos/mydemo


5、为访问subversion创建配置文件,主要用于关闭匿名访问、指定密码文件和访问域等项目。
vi /svn/repos/conf/svnserve.conf

以下代码为svnserve.conf的内容
non-access = none
password-db = pwdfile
realm = chenzugang.name
auth-access = write


6、创建用户、密码对配置文件。文件名为上一步所指定的password-db项。
vi pwdfile

pwdfile的内容格式如下:
[users]
username = password


7、至此,subversion已经配置完毕,可以启动服务了。
# svnserve -d --listen-port=3690

具体的启动参数可以查看文档。停止subversion服务的命令只有杀死进程一条路( 参考文献如是说)如下
killall svnserve


8、如果您没手停止subversion服务,另找一台机器,通过svn命令行以您在pwdfile中建立的用户访问一下您的svn服务,检查是否正常。命令如下
svn co --username=myusername  svn://mydomain/svn/repos/mydemo
其中,mydomian为您svn服务器的IP或域名,如果正常,结果为:
取出版本 0。
之所以为0,是因为都是空的。

9、下面开始配置apache,使得web方式能访问代码库,就是这部分,和参考文档不同,搞的我花了一些时间,而且google之,没有一个管事,后来仔细分析了apache的配置习惯,才猜出来的。
编辑文档subversion.conf。
vi /etc/httpd/conf.d/subversion.conf

这个文档已经存在,因为您安装了mod_dav_svn,他会生成一个默认文档。我机器上默认文档大致如下,之所以是大致,是几经修改,已记不得原始的文档了:


LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn".  Each repository
# must be readable and writable by the 'apache' user.  Note that if
# SELinux is enabled, the repositories must be labelled with a context
# which httpd can write to; this will happen by default for
# directories created in /var/www.  Use "restorecon -R /var/www/svn"
# to label the repositories if upgrading from a previous release.
#

#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
#   # cd /var/www/svn
#   # svnadmin create stuff
#   # chown -R apache.apache stuff
#
#

#<Location /repos>
#  DAV svn
#  SVNParentPath /svn

#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
#      AuthType Basic
#      AuthName "xxxxxx"
#      AuthUserFile /svn/users/svnpass
#      Require valid-user
#   </LimitExcept>
</Location>

因该修改为如下:


LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn".  Each repository
# must be readable and writable by the 'apache' user.  Note that if
# SELinux is enabled, the repositories must be labelled with a context
# which httpd can write to; this will happen by default for
# directories created in /var/www.  Use "restorecon -R /var/www/svn"
# to label the repositories if upgrading from a previous release.
#

#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
#   # cd /var/www/svn
#   # svnadmin create stuff
#   # chown -R apache.apache stuff
#

<Location /svn>
   DAV svn
   SVNListParentPath on
   SVNParentPath /svn/repos
#   SVNPath /svn/repos
#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
      AuthType Basic
      AuthName "chenzugang.name"
      AuthUserFile /svn/users/svnpass
      Require valid-user
#   </LimitExcept>
</Location>



其中一个关键的参数为
AuthUserFile /svn/users/svnpass
这个是web访问认证的用户身份信息文件。需要创建。创建方法如下,使用htpasswd命令。 这个文件中的用户密码是否要与/svn/repos/conf/pwdfile里的用户密码对应,我目前还不清楚,下次再补上
htpasswd -cb /svn/users/svnpass username password


还需要创建一个svn访问读写权限的配置文件。svnauthz.conf
vi /svn/permissions/svnauthz.conf

该文件类容如下:
[/]
username1 = r
username2 = rw

r代表read,w当然就是write啰。

至此,一些于apache相关的配置文件已经完成。
修改SELINUX权限( 注:在SELINUX中,安全性得到了加强。若不进行这样的修改,客户端访问时就会报错“Could not open the requested SVN filesystem.”),修改的命令如下:
# chcon -R -h -u system_u -t httpd_sys_content_t /svn/repos

剩下的就是让apache重新装载一下配置文件。命令如下:
service httpd reload

打开浏览器,输入项目代码库地址
http://localhost/svn/mydemo

反正我的是搞定了。你的搞定了没有?

你可能感兴趣的:(java,apache,SVN,Access,subversion)