如何在linux下配置apache+svn

 网络上关于这种的手册和说明很多很多,我这个也是根据网上的说明加上自己的实践整理出来的,适合初学者。同时,各位自己使用的时候,请注意各自的版本和环境。

要求:能够允许通过http协议访问版本库,并能统一管理各个仓库的用户和权限。

环境:

RedHat 5.4

jdk 1.6

软件:

subversion-1.6.17.tar.gz

下载地址:http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz

subversion-deps-1.6.17.tar.gz

下载地址:http://subversion.tigris.org/downloads/subversion-deps-1.6.17.tar.gz

httpd-2.2.19.tar.gz

下载地址:http://httpd.apache.org/download.cgi 

sqlite-3.6.17 

安装步骤:

注意:安装之前,最好检查一下操作系统中是否有expat的包,主要是用来解析xml用得,如果有,要确认一下是否是2.x的包,如果是1.x的包,最好去下载一个2.x的包进行安装后,再进行下面的安装。

将这四个软件上传到linux服务器的/tmp目录下新建的svn目录。

使用root用户登录系统,在/tmp/svn目录下,将三个包解开:

tar zxvf subversion-1.6.17.tar.gz

tar zxvf subversion-deps-1.6.17.tar.gz

tar zxvf httpd-2.2.19.tar.gz

得到两个文件夹:httpd-2.2.19和subversion-1.6.17 

在安装之前,要先确保jdk已经安装完成,我这里使用的是jdk1.6:jdk-6u2-linux-i586-rpm.bin,安装在/usr/java目录中。

设置环境变量,编辑/etc/profile文件,在其中增加:

  
  
  
  
  1. export JAVA_HOME=/usr/java/jdk1.6.0_02 

使用root用户执行httpd和svn的安装工作。

因为都是源码包安装,所以要先进行编译和安装,首先进入httpd-2.2.19目录,执行

 

  
  
  
  
  1. # ./configure --prefix=/usr/local/apache2 --enable-so --enable-dav --enable-dav-fs --enable-maintainer-mode 
  2. # make 
  3. # make install 

 

注意:执行make和make install前,一定要查看前一步的执行结果是否存在error之类的错误,如果存在,先找到原因,然后再重新执行前一步操作,都成功后,再进行一步操作。

执行完了之后,/usr/local/apache2下面的目录结果如下:

  
  
  
  
  1. bin    cgi-bin  error   icons    lib   man     modules 
  2. build  conf     htdocs  include  logs  manual 

为了便于管理,所以,需要将apache2交给apache用户管理,所以,先创建apache组和apache用户。

创建完成后,将/usr/local/apache2目录下所有文件的属组改为apache

执行:

  
  
  
  
  1. # chown -R apache:apache apache2 

为了便于apache组用户的访问,建议,将这些目录属性改为755.

因为安装svn需要用到sqlite3库,所以,先到sqlit3目录下编译出sqlite3.c文件。在sqlite-3.6.17目录下执行:

  
  
  
  
  1. # ./configure 
  2. # make  
  3. # make install 

编译成功,会生成一个sqlite3.c文件,将该文件拷贝到

/tmp/svn/subversion-1.6.17/sqlite-amalgamation目录下即可。

在subversion-1.6.17目录下执行:

  
  
  
  
  1. # ./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apache2/bin/apr-1-config --with-apr-util=/usr/local/apache2/bin/apu-1-config 
  2. # make 
  3. # make install 

注意:编译的时候,可能会提示

  
  
  
  
  1. configure: error: no XML parser was found: expat or libxml 2.x required 

此时,需要安装libxml2-2.6.32,具体版本可以任意,但是必须是2.0以上的。先将libxml2-2.6.32编译安装,然后重新执行./configure --....命令

编译的时候,如果提示/usr/bin/m4之类的错误,可能是redhat 系统自带的 autoconf 版本低,需要执行

  
  
  
  
  1. aclocal  
  2. autoconf  
  3. automake --add-missing  
  4. autoconf 

然后再次至此那个libxml的编译安装即可。

执行成功后,在/usr/local/svn目录下其结构如下:

  
  
  
  
  1. bin  include  lib  man  share 

编辑apache的配置文件httpd.conf中的一些内容,如果安装正常的话,在该文件中村中如下的内容:

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

如果没有这两条,则手工添加。

继续:添加如下代码到httpd.conf文件中

  
  
  
  
  1. <Location /svn/> 
  2. DAV svn  //定义需要管理的服务
  3. SVNListParentPath On  //允许查看父目录列表
  4. SVNParentPath /home/svn  //指定父目录
  5. Satisfy Any 
  6. AuthType Basic 
  7. AuthName "SVN REPOS" 
  8. AuthUserFile /usr/local/svn/svn_passwdfile  //定义用户密码文件
  9. AuthzSVNAccessFile /usr/local/svn/svn_accessfile  //定义用户访问权限文件
  10. Require valid-user  //需要验证用户,设置后不允许匿名访问
  11. </Location> 

修改apahce管理的用户名和组:

  
  
  
  
  1. User svn 
  2. Group apache 

保存httpdb.conf文件并退出。

添加用户和密码及权限分配,修改之前定义的文件

#/usr/local/apache2/bin//htpasswd -c svn_passwdfile test

添加一个test用户到文件中,同时需要在提示下输入密码。

注意,第一次需要用到-c参数,之后,使用时,只需要加-m参数即可。

为了便于管理,我们创建一个svn用户,将所有仓库都建立在这个用户下,执行

  
  
  
  
  1. # useradd -g apache -d /home/svn svn 

设置svn目录的权限为775.

使用svn用户登录,执行

  
  
  
  
  1. $svnadmin create test 

创建一个test的仓库。

添加test用户的访问权限,使用root用户,编辑svn_accessfile文件。

类似于原来svn目录下,authz的格式。

[/]表示仓库的根目录,这里可以指的是父目录。

[test:/]表示的是test仓库的根目录。

test = rw  表示test用户对该仓库有读写的权限。

设置好了之后,启动apache。

#/usr/local/apache2/bin/httpd -k start

在浏览器中,使用http://ip地址/svn/访问

问题的处理:

不管是浏览器还是svn工具访问仓库,提示svn: Could not open the requested SVN filesystem的信息,可能存在这几个方面的原因,大家可以参考一下。

一个是你创建版本库的工具比svn服务器的版本高;

一个是你本机上得卡巴斯基的问题,可以尝试关闭后连接;

一个是你存放仓库的主目录对apache用户组没有可执行的权限,可以尝试对仓库的主目录执行chmod g+x 命令。

你可能感兴趣的:(apache,linux,SVN,版本管理,休闲)