CentOS 下 Apache + Subversion 实现版本控制


        首先要说明一点的是Apache并不是必须安装的,如果你只用在CentOS下本地实现版本控制的话,否则你至少要选择一种服务器与SNV配合使用才能实现远程版本控制,比较推崇使用Apache,好处实在太多了,比如多种身份验证,可配置使用SSI加密等高级功能,当然,Apache也存在一些缺点,比如http本身是无状态连接的,结果是导致连接速度相对要慢一点,不过本人在实际使用过程中感觉,只要你不是发烧极别的灰骨,基本可以忽略,呵呵.

       CentOS官方有资料专门介绍如何配置SVN的,不过官方都是用yum方式安装的,确实YUM有时候确实好用,不过对于初学者还是推荐自编译安装,在这一过程中出现的问题自已试着解决,其实是一件非常有效的学习方法,也是非常有趣的一件事.

        CentOS官方资料: http://wiki.centos.org/HowTos/Subversion?highlight=(subversion)

安装步骤:

1.安装Apache
2.安装subversion
3.创建版本库

Apache安装(原转载的文章感觉这一块讲的不是很好,就加上了这一块.先看看了解linux下Apache的编译过程,不操作!):

1、下载:CentOS Apache
[root@localhost src]# chmod +x httpd-2.2.19.tar.gz
[root@localhost src]# tar -zxvf httpd-2.2.19.tar.gz

2)CentOS Apache设置编译器的编译参数
[root@localhost src]# cd httpd-2.2.19
[root@localhost httpd-2.2.19]# ./configure --prefix=/usr/local/apache2 --enable-dav --enable-so --enable-maintainer-mode

3)CentOS Apache编译和安装:
[root@localhost httpd-2.2.19]# make; make install
#如果没有错误的话,那么Apache就已经安装在/usr/local/apache2目录中了

4、CentOS Apache启动服务:
[root@localhost httpd-2.2.19]# /usr/local/apache2/bin/apachectl start

5、CentOS Apache确定启动状:
[root@localhost apache2]# netstat -utl
tcp 0 0 *:http *:* LISTEN
#看到上面这行就表示你的Apache已经启动。
#用浏览器访问,看到It works!,说明apache已经安装成功了,恭喜您!

+++++++++++++++++++++++++++++++++++++++++

正文开始,嘿嘿

一、准备好安装包:

①apr-1.4.5.tar.gz   下载地址:http://apr.apache.org/

②apr-util-1.3.12.tar.gz

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

④subversion-deps-1.6.3.tar.gz

⑤httpd-2.2.19.tar.gz 下载地址:http://httpd.apache.org/

注意:apache的版本与subversion版本的兼容问题,官网都有介绍的

二、开始安装:把以上安装包上传至/usr/local/src目录,cd /usr/local/src 进入该目录

1、安装apr

      tar zxvf apr-1.4.5.tar.gz #解压包

      cd apr-1.4.5

      ./configure --prefix=/usr/local/apr

      make

      make install

2、安装apr-util

      tar zxvf apr-util-1.3.12.tar.gz

      cd apr-util-1.3.12

      ./configure --with-apr=/usr/local/apr

      make

      make install

3、安装 apache

      tar zxvf httpd-2.2.19.tar.gz

      cd httpd-2.2.19

      ./configure --prefix=/usr/local/apache2 --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config #--prefix表示把apache安装在指定目录

      make

      make install

4、安装subversion

      tar zxvf subversion-1.6.17.tar.gz

      tar zxvf subversion-deps-1.6.3.tar.gz

      cd subversion-1.6.3

      ./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr

      make

      make install

      至此,安装基本完毕,再配置下就可以使用了

      注意:因为这些安装包需要gcc编译,所以要确保linux上装有gcc程序,否则是没办法进行安装的,在以上编译过程中可能会出现 configure: error: Subversion requires SQLite,可以http://www.sqlite.org/ 可以下载到最新的Sqlite版本如:sqlite-amalgamation-3.6.13.tar.gz,解压Sqlite3.6.13
      tar zxvf sqlite-amalgamation-3.6.13.tar.gz
      进入文件夹sqlite-amalgamation找到sqlite3.c将其复制到
    subversion-1.6.17/sqlite-amalgamation/sqlite3.c
      有可能在编译时缺少zlib编译不过,需要先编译zlib,编译方法同上。


三、在apache中配置SVN

      vi /usr/local/apache2/conf/httpd.conf

     ① 如果你看到如下两句,说明安装是成功的

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

      如果没有以上两句,请查看 /usr/local/apache2/modules/下有没有mod_dav_svn.so,mod_authz_svn.so有则在#LoadModule foo_module modules/mod_foo.so下加入以上两句。

      如果有下面一句就用#注释掉

      #LoadModule foo_module modules/mod_foo.so


     ② 定义apache访问svn配置:
     
              DAV svn
      #      SVNPath /data/svn/repos
              SVNParentPath /data/svn
              AuthzSVNAccessFile /usr/local/svn/conf/authz.conf
              AuthType Basic
              AuthName "Subversion repository"
              AuthUserFile /usr/local/svn/conf/passwd.conf
              Require valid-user
     


    SVNPath 是SVN版本库的路径(这里注释了)。
    SVNParentPath 是SVN版本库的根目录路径。
    AuthzSVNAccessFile SVN用户的权限文件,配置用户的权限就在这个文件,为这方便管理把authz.conf文件放在SVN的conf目录下
    AuthType 访问的类型
    AuthName
    AuthUserFile SVN用户的密码保存文件,为这方便管理同authz.conf文件放在SVN的conf目录下



四、配置svn

      ①建立svn版本库目录

      mkdir -p /data/svn/repos #可以多建版本库目录

      ②建立svn版本库

      svnadmin create /data/svn/repos

      mkdir -p /data/svn/repos #可以多建版本库

      ③建立本地访问控制文件,第一次创建加 -c 参数,就是第一次没有passwd.conf文件, "-c"参数不是创建passwd.conf文件

      mkdir /usr/local/svn/conf

      /usr/local/apache2/bin/htpasswd -c /usr/local/svn/conf/passwd.conf admin

      然后输入密码即可,默认是MD5加密的

      /usr/local/apache2/bin/htpasswd /usr/local/svn/conf/passwd.conf svnusername #追加用户

      ④建立本地项目控制文件

      touch /usr/local/svn/conf/authz.conf


      本例authz.conf内容为:

      [groups]
      #=,
      admin=admin

      #[:projectName/directory]
      #@=
      #=

      [/]
      @admin = rw      #指定用户组成员可以读写根目录所有应用

      [repos:/abc/aaa]
      svnusername= rw      #指定用户svnusername可以读写:/abc/aaa目录的文件

至此,整个安装过程完成了!

五、测试连接

     ① 启动apache

      /usr/local/apache2/bin/apachectl start

     ② 打开浏览器,输入http://127.0.0.1/svn/repos #本例服务器ip是192.168.1.107

      使用刚才创建的权限用户名与密码登录即可访问

      注意:在你上传文件的时候可能会有如下权限不足的提示

      Permission denied
      svn: Commit failed (details follow):
      svn: Can't create directory '/data/svn/repos/db/transactions/0-1.txn': Permission denied

      这是因为apache在线程用户没有权限访问svn的仓库,两者分别属于不同的用户者

      本例apache属于daemon拥有者,而svn仓库属于svn拥有者

      解决方法:

      chown -R daemon /data/svn/repos

      chmod -R 755 /data/svn/repos



       重启下apache:

       /usr/local/apache2/bin/apachectl stop

       /usr/local/apache2/bin/apachectl start

    3. “Could not open the requested SVN filesystem” errorcode=2

        如果出现这个错误你就得看一下Apache的httpd.conf文件里面相关版本库路径是不是正确,请确保使用的是绝对路径.

你可能感兴趣的:(Linux)