ldap+apache+svn

来源:互联网 发布:dapaolu域名更换 编辑:程序博客网 时间:2024/06/05 06:41

ldap+apache+svn

准备工作:apr-1.2.11.tar.gz、apr-util-1.2.10.tar.gz、httpd-2.2.10.tar.gz、zlib-1.2.8.tar.gz、subversion-1.4.6.tar.gz、subversion-deps-1.4.6.tar.gz
这些都是我们需要的,注意: SVN依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr,apr-util,改而使用apache 2.2里提供的。(这里指定为开始安装的apr目录)

这里有apache旗下所有产品的各个版本的文件,我们可以去这里找我们所需的部分文件

http的安装

依赖的安装

  1. 将apr-1.2.11.tar.gz解压,进入解压目录,然后
    ./configure --prefix=/usr/local/apr //--prefix的意思是指定安装位置    make&&make install 
  1. 将apr-util-1.2.10.tar.gz解压,进入解压目录,然后
        ./configure --with-apr=/usr/local/apr --with-ldap //--with-apr的意思是configure的过程中apr是用指定的apr --with-ldap指的编译过程中添加ldap模块    make&&make install 

http的安装

将httpd-2.2.10.tar.gz解压,然后

    ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config —enable-mods-shared="most dav" —disable-status —enable-authnz-ldap —enable-ldapmake&&make install 

注意:

/usr/local/apache/bin/apachectl start的时候会出现
        httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName,

这里我们修改apache/conf/httpd.conf文件中ServerName这一行,输入ServerName (主机ip)然后我们restart一下apachectl服务就可以了

svn的安装

依赖的安装

将zlib-1.2.8.tar.gz解压,然后

./configure&&make&&make install

svn的安装

  1. 解压subversion-1.4.6.tar.gz和subversion-deps-1.4.6.tar.gz文件,注意:这两个解压缩后会合并为一个文件夹,
./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-openssl --with-zlib --enable-maintainer-mode  ```           (出现warning:BDB啥的不管,不影响我们的使用),然后

make&&make install

2. 1. 在上一步./configure出现错误

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

解决办法:yum -y install expat expat-devel就可以了
2. 在上一步make出现错误

/app/software/subversion-1.4.3/neon/src/.libs/libneon.a:could not read symbols: Bad value collect2: ld returned 1 exit status
“`
解决办法:我们要在subversion的目录下./neon/src下的Makefile文件里修改CFLAGS这一项,增加-fPIC,例如CFLAGS = -fPIC -g -O2,然后make clean一下,再次make就没有错了


到此,我们编译完成了,接下来是配置

  1. 在apache目录下./conf/httpd.conf文件中添加以下内容:

        <Location /svn>      DAV svn      SVNParentPath /data/svn  // 配置版本库根目录路径    SVNListParentPath on  //可以访问多个版本库    order allow,deny  //先匹配禁止的用户    allow from all   //没有禁止的就全部允许访问    Options Indexes   //设定在目录下面没有index.html 的时候显示目录    AuthzLDAPAuthoritative On  //打开权限继承    AuthType Basic  // 访问的类型,基本验证,如用户名/密码      AuthName "Subversion repository"   //在输入用户和密码框中显示的内容    AuthBasicProvider ldap     //采用ldap认证    AuthLDAPURL "ldap://example.com:3268/dc=example,dc=com?sAMAccountName?sub?(objectCategory=person)"   //url值,dc代表域名,一二级域名,  //一个基本的ldap目录库匹配时,需要提供ldap目录库地址(10.255.1.231(域名也可以,只要能解析):3268),基准DN(根),个人的CN(objectCategory匹配登录用户的cn=person,其中sAMAccountName表示的是CN的其中一个属性,代表登录名)  //匹配LDAP目录库记录时,要求要提供以下信息:LDAP目录库地址,基准DN,个人的CN,登录密码    AuthLDAPBindDN "$username" // 输入的是域的账户,全称(包括域名)alan@example.com,用来连接域    AuthLDAPBindPassword $password  //相对应的密码abc@123    Require valid-user  //允许经过验证的所有用户都可以访问</Location>
  2. 然后我们建立版本库等操作

    mkdir -p /data/svn/repos // 建立svn版本库目录
    /usr/local/svn/bin/svnadmin create /data/svn/repos // 建立svn版本库
    mkdir /usr/local/svn/conf // 新建存储访问控制文件的目录

配置通过http访问svn

  1. 创建用户名

    /usr/local/apache/bin/htpasswd -c /usr/local/svn/conf/passwd.conf admin // 第一次创建加-c,后面就不用了,admin指的是登录用户名
    /usr/local/apache/bin/htpasswd /usr/local/svn/conf/passwd.conf svnusername // 这个是后期追加的用户名,不用-c了
  2. 建立权限文件

    touch /usr/local/svn/conf/authz.conf // 建立控制权限文件,文件内容如下:
    [groups]
    admin=admin // admin用户属于admin组
    [/] // 根目录设置
    @admin = rw // 赋予admin组rw权限
    [repos:/aaa/bbb]
    svnusername = rw // 指定svnusername用户可以读写/aaa/bbb目录的文件,但是aaa目录就没有读写权限了


配置通过svn客户端访问svn


  1. 在/data/svn/repos/conf目录下,打开authz文件,添加我们需要设置的组用户和相应的权限(可参照上面的配置)
  2. 打开passwd文件,在相应的组下面添加用户的密码(这里用的是明文)
  3. 打开svnserver.conf文件,

    anon-access = none // 这里我们要注意的是anon-access要更改为none,意为不允许匿名访问
    auth-access = write // 经过验证的用户有读写权限
    password-db = passwd //使用密码文件验证密码
    authz-db = authz //目录权限文件
    real = My First Repository //认证域,相同认证域下使用相同的用户名和密码文件
  4. 启动apache

    /usr/local/apache/bin/apachectl start
    //如果觉得这个路径太长了,我们可以把这个路径export到profile文件中,这样以后就只需要apachectl start就可以了

通过netstat -an验证80端口是否打开
通过http://ip访问,会要求输入用户名和密码,如果不能访问,看看防火墙是否关闭,关闭防火墙就可以访问,当然,我们可以通过配置防火墙规则也是一样的

  • 启动svn

    /usr/local/svn/bin/svnserve -d -r /data/svn


  • 0 0