linux下 svn搭建,以及apache+svn搭建

    技术2022-06-12  39

    应领导的要求,开发一个源码托管平台,当然还是lamp架构,对于源码的管理,我选择了SVN服务。刚开始我将apache与svn分别安装,但如此便不利于我对svn仓库的管理,如创建仓库、添加用户等,更重要的是svn面向整个互联网,需要走http协议,这不符合网站的要求,推到重来,配置apache+svn。

    1、svn独立配置

         使用软件:subversion-1.6.5.tar.gz 下载地址:http://subversion.tigris.org/downloads/subversion-1.6.5.tar.gz

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

         编译: tar -xzf subversion-1.6.5.tar.gz

                   tar -xzf subversion-deps-1.6.5.tar.gz

         subversion-deps包有四个目录zlib apr apr-util neon这四个目录都是依赖包,编译subversion所必须的代码

                  #cd  subversion-1.6.5

                  #./configure --prefix=/usr/local/svn --without-berkeley-db --with-zlib=/usr

                  #make

                  #make install

         测试:#/usr/local/svn/bin/svnserve –version

                  如果显示如下,安装成功:               svnserve, version 1.6.5 (r21228)

         配置:建立版本库目录,可建多个:               #./mkdir -p /svndata/               建立版本库:

                  #cd /usr/local/svn/bin               #./svnadmin create /svndata/test

                  修改版本库配置文件:               #vi /svndata/test/conf/svnserve.conf

                   [general]                anon-access = none                auth-access = write                password-db = /svndata/test/conf/pwd.conf                authz-db = /svndata/test/conf/authz.conf                realm = repos

                  配置允许访问的用户:               #vi /svndata/test/conf/pwd.conf

                   注意:对用户配置文件的修改立即生效,不必重启svn。                文件格式如下:                [users]                <用户1> = <密码1>                <用户2> = <密码2>                其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:                [users]               xinjie = 123456

                  文件中定义用户组和版本库目录权限。               注意:               * 权限配置文件中出现的用户名必须已在用户配置文件中定义。               * 对权限配置文件的修改立即生效,不必重启svn。              用户组格式:               [groups]              <用户组名> = <用户1>,<用户2>              其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。              版本库目录格式:              [<版本库>:/项目/目录]              @<用户组名> = <权限>             <用户名> = <权限>              其中,方框号内部分可以有多种写法:              /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/svndata。这样,/就是表示对全部版本库设置权限。             test1:/,表示对版本库1设置权限             test2:/abc, ,表示对版本库2中的abc项目设置权限             test2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限             权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。             示例:             [groups]             admin = alan              [/]             @admin = rw             [test1:/abc/aaa]              king = rw             [test2:/pass]

                  *=r               king = rw

                启动:svnserve -d –listen-port 9999 -r /svndata

                         -d表示以daemon方式(后台运行)运行                      –listen-port 9999表示使用9999端口,可以换成你需要的端口。

                         -r /svndata指定根目录是/svndata

    2、apache+svn安装

             使用软件:httpd-2.2.6.tar.gz

                            subversion-1.4.5.tar.gz

             先安装apache这个没什么好说的。有一点千万要注意,在编辑的时候,一定要加入--enable-dav --enable-so,要不会出现apache不能调用modlues的错误。

            我的configure如下:

            ./configure --prefix=/usr/local/apache --with-mpm=worker --disable-userdir --enable-ssl --enable-headers --enable-deflate --enable-expires --enable-dav --enable-so --disable-status --disable-autoindex --disable-asis --enable-nonportable-atomics=yes

            下面安装Subversion # tar xvzf subversion-1.4.5.tar.gz # cd subversion-1.4.5 # ./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode # make # make install //创建库文件所在的目录 (要svnroot用户进行下面的操作) # mkdir /home/svnroot/repository //进入subversion的bin目录 # cd /usr/local/subversion/bin //创建"test"仓库 # ./svnadmin create /home/svnroot/repository/test //进入到数据仓库"test"目录 # cd /home/svnroot/repository/test //看看是不是多了些文件,如果是则说明Subversion安装成功了 # ls –l //不让其他人有该目录的权限 # chmod 700 /home/svnroot/repository //**注意,直接这么chmod会导致svn客户端无法访问,需要修改apache配置文 件httpd.conf文件: User daemon //将daemon改为svnroot,让apache进程以svnroot的身份运行 Group daemon //把上述内容改成: User svnroot Group svnroot //修改svn仓库的所有者 # chown -R svnroot: svnroot /home/svnroot/repository //修改该目录权限只能svnroot拥有 # chmod 700 /home/svnroot/repository 5. 修改Apache配置文件 # cd /usr/local/apadche2/bin # ./apachect1 stop //停止Apache进程 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 DAV svn SVNParentPath /home/svnroot/repository/ //svn父目录 AuthzSVNAccessFile /home/svnroot/repository/authz.conf //权限配置文件 AuthType Basic //连接类型设置 AuthName "clo.com.cn" //连接框提示 AuthUserFile /home/svnroot/repository/authfile //用户配置文件 Require valid-user //采用何种认证 //其中authfile是通过"htpasswd [–c] /home/svnroot/repository/authfile username password"来创建的 , username指的是用户svnroot,密码也是他的。 //"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库

    注意:如果想所有人都有svn的访问权限。httpd.conf需要做如下修改

    AuthzSVNAccessFile /home/apache2.2.6/htdocs/svndata/authz.conf     <LimitExcept GET PROPFIND OPTIONS REPORT>         Require valid-user     </LimitExcept>

    //启动apache服务 # /usr/local/apache2/bin/apachectl start //打开浏览器访问 http://localhost/svn/test/ ,如果有东西显示就说明成功。 6. 权限管理(即authz.conf的配置) 1)增加用户 # htpasswd [-c] /home/svnroot/repository/authfile user1 //第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加,此时是要用root的权限来添加的,添加完后在 authfile中看到用户和加密的密码。 # htpasswd /home/svnroot/repository/authfile 用户名(加入新的用户) //如:"htpasswd /home/svnroot/repository/authfile user2" 2)权限分配(可以根据自己的情况来处理,也可看网上的) # vi /home/svnroot/repository/authz.conf [groups] //这个表示群组设置 Tester = test,svnroot,nbj,user1,user2 //这个表示某群组里的成员 #anonymous = guest [test:/] //这表示,仓库test的根目录下的访问权限 @Tester = rw //test仓库Tseter组中用户具有读和写权限 * = r //test仓库中所有用户具有读的权限 [document:/] //这表示,仓库document的根目录下的访问权限 @Tester = rw //test仓库Tseter组中用户具有读和写权限 #@anonymous = r * = r //test仓库中所有用户具有读的权限 //注意:在编辑authz.conf文件时,所有行都必须要顶头写,不能有缩行出现,否则会报错:"Access denied: 'user1' "。

     

     


    最新回复(0)