apache+svn+ladp认证

今日收到上司邮件,下一步公司要做整合,估计以后公司所有环境都需要整改,对我这个菜鸟来说感觉压力好大,因为初次接触linux system。 但我一直都在努力。。。。。come on
下一步我们会更改那些登录命名带有@ecvision.com的,我们目前所做的动作是为了将来用AD登录做准备。
 
所以你搭好一个AD的环境,自己测试一下登录有无问题,
 
AD目前需要做的地方:
1.       PC和现在域一样绑定能登录
2.       绑定SVN能登录
3.       绑定JIRA能登录,设定好JIRA的安全组等等
4.       AD导出用户到你目前AD(为以后迁移域做准备)
5.       还有是一些基本的安全策略的测试,例如:不能安装软件,不能更改电脑名,不能修改网络连接等基本的安全控制.

废话不多说,开始实践

CentOS 6.6 X64 + Subersion1.8.13+apache 2.4.6

#yum upgrade
 
#yum -y install openssl  perl perl* pcre wget  zlib  tree gcc gcc-c++ make libtool pcre-devel lrzsz zlib-devel openssl-devel neon openldap-devel
 
Install the Apr
#tar zvxf apr-1.5.2.tar.gz
#cd apr-1.5.2
#./configure --prefix=/usr/local/apr
#make
#make install
 
Install the Apr-util
#tar zvxf apr-util-1.5.4.tar.gz
#cd apr-util-1.5.4
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
#Make
#make install
#Verify: # /usr/local/apr-util/bin/apu-1-config --version
 
Install the pcre
#tar zvxf pcre-8.35.tar.gz
#cd pcre-8.35
#./configure --prefix=/usr/local/pcre
#make
#make install
 
 
Install the sqlite
#tar zvxf sqlite-autoconf-3080500.tar.gz
#cd sqlite-autoconf-3080500
#./config
#make
#make install
 
install the dap
tar zvxf dap-3.9.tar.gz
cd dap-3.9.tar.gz
./configure

 
install apache
#tar zvxf httpd-2.4.6.tar.gz
#cp -rf ./apr-1.5.2  ./httpd-2.4.6/srclib/apr
#cp -rf ./apr-util-1.5.4  ./httpd-2.4.6/srclib/apr-util
需要aprapr-utils并解压到 ./srclib/ 目录下再进行编译。
#cd httpd-2.4.6
#./configure --prefix=/usr/local/apache --enable-ldap=shared --enable-authnz-ldap=sahred --with-included-apr --with-ldap --with-apr --with-apr-util --enable-dav --enable-dav-fs --enable-dav-lock --enable-rewrite=shared --enable-ssl=shared --enable-deflate=shared --enable-authn-dbm=shared --enable-authn-anon=shared --enable-auth-basic=shared  --with-mpm=prefork --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache      --enable-mods-shared=all
./configure --prefix=/usr/local/apache --enable-ldap --enable-authnz-ldap --with-included-apr --with-ldap --with-apr --with-apr-util --enable-so --enable-dav --enable-rewrite --enable-ssl --enable-deflate=shared --enable-authn-dbm --enable-authn-anon --enable-auth-basic  --with-mpm=prefork --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache

--enable-mods-shared=all :这里参数是添加常用模块,上列编译是编译指定模块,如果把这个参数加上不知行不行,还未测试!!!!!!!! )
#make
#make install
 

install PHP
yum install libjpeg libjpeg-devel  libpng libpng-devel openssl openssl-devel curl curl-devel libxml2 libxml2-devel -y
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts
#make
#make install


install subversion
#tar zvxf subversion-1.8.13.tar.gz
#cd subversion-1.8.10
#

./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util  --with-zlib=/usr/local/zlib --with-sqlite=/usr/local/sqlite


#make
#make install
 
#cd ~
#vim .bash_profile
#PATH=$PATH:$HOME/bin:/usr/local/subversion/bin
#source .bash_profile     #让.bash_profile及时生效


SVN 单独使用 


[root@Test ~]# svnadmin create --pre-1.6-compatible /svn/repos  这里一定要加--pre-1.6-compatible 要不然会报错,但是好像不影响使用
配置版本库下面的/svn/repos/conf/svnserve.conf文件。

灰色部分是改动的
然后配置passwd 以及 authz 文件
vim passwd

vim authz

然后配置防火墙,由于我是测试我直接把防火墙关了

service iptables stop      停止Iptables服务
chkconfig iptables off   禁止开机启动
vim /etc/sysconfig/selinux 
把 SELINUX=enforcing 改为:SELINUX=disabled
然后重启下reboot
启动svn :
svnserve -d -r /svn/repos 

查看端口是否启用:lsof -i tcp:3690

然后客户端测试:

说明配置成功了, 输入账户看下

失败:配置文件没配好,再继续找原因
再次配置svnserve.conf文件,指定权限和账户文件具体路径

还是不行,再继续找原因。查看权限配置文件:authz

结果可以了:




SVN+Apache



#rpm -e --nodeps httpd
#mv /etc/httpd /etc/httd.org
#ln -s /usr/local/apache /etc/httpd

重命名/etc/httpd文件夹,这是安装下来的默认文件,不用它,建立一个httpd一样的软连接到这里
#rmdir /etc/httpd/logs
#mkdir /var/log/httpd

#ln -s /var/log/httpd /etc/httpd/logs
这里是将apache默认日志文件删除,在/var/log/目录下建立一个httpd日志文件。然后建立一个软连接到原本httpd目录下。
这里只是个人习惯问题,可改可不改。
然后启动httpd
重启却报错了.折腾了好几个小时也没有解决, 直到下班回家在家里重新做,结果又是这个问题. 我发现安装完httpd后 /etc/rc.d/init.d/httpd 有一个启动脚本文件.可是httpd安装目录下的启动脚本文件却不是这个. 而是:/usr/local/apache/bin/apachectl 这个文件. 于是我删除了init.d下面的httpd.然后建立apache/bin/apachectl软连接到 /init.d/httpd目录下. 
然后vim httpd

#rm /etc/rc.d/init.d/httpd

这里的提示不用理会,稍后改下配置文件就不会再提示了。

Edit  /etc/httpd/conf/httpd.conf

修改配置文件
启用mod_dav.so 模块

cp /usr/local/subversion/libexec/mod_* /usr/local/apache/modules/

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

这里用户和组改成apche , 因为往后如果要用到其他模块需要apche用户,所以早点改了.
然后重启httpd那个提示的原因就是这里:  我们把这里改成本地IP地址, 加不加端口都可以

然后重启httpd

[root@Test ~]# svnadmin create --pre-1.6-compatible /svn/repo/svntest  
然后在/svn/目录下建立一个conf目录,然后建立两个文件

然后建立用户

vim authz

给SVN库配置Apache权限
chown -R apche:apche /svn/repo/svntest
chmod -R 777 /svn/repo/svntest



然后编辑 httpd.conf 添加一下SVN配置
<Location /svn>
DAV svn
SVNParentPath /usr/svn
AuthType Basic
AuthName "Subversion repository"
#密码存储文件
AuthUserFile /usr/svn/auth.conf
Require valid-user
#用户访问目录的权限文件
AuthzSVNAccessFile /usr/svn/access.conf
</Location>

service httpd restart

测试客户端

这里已连接上,测试权限配置文件是否OK?输入帐号密码看看。。。。。。。
同样OK , 说明对了。

备注一下:如果SVN采用httpd的访问访问的话, SVN本身配置文件就没用了,等于作废了。 所以只要配置httpd.conf文件即可。
接下来是测试 SVN+APACHE+AD验证 也就是apche的LDAP模块功能。如果httpd是rmp安装, 我发现没有这个模块。就算是编译如果没有
编译这个模块,也不会有。 所以编译的时候注意。


SVN+APACHE+AD验证      (LDAP)


首先我的环境是:AD: Windows server 2008 172.17.16.74   域名:szardc1.arsz.com
              SVN: CentOS 6.6 X64      172.17.16.73   

要先让SVN能通过域名访问AD  就要先配置一下DNS, 因为域名是通过internet访问的, 但如果是在内网的话,可以通过DNS解析访问
vim /etc/resolv.conf
添加以下内容
nameserver 202.96.134.133
nameserver 172.17.16.74
domain szardc1.arsz.com

然后测试是OK的。通了


vim httdp.conf
启动这些模快
配置LDAP脚本


配置ldap模块验证:
<Location /svn/>
         DAV svn
         #SVN版本库路径
         SVNParentPath /svn/repo
         SVNListParentPath On
         #权限控制文件路径
         AuthzSVNAccessFile /svn/conf/authz
         #AuthzLDAPAuthoritative off
         AuthType Basic
         AuthName "subversionserver"
         #认证方式
         AuthBasicProvider ldap
         #绑定域用户  CN:userID   ou :域组  DC :域名  下个三个DC:指的域名是:szardc1.arsz.com 
         AuthLDAPBindDN "CN=svn1,OU=ecvision,DC=szardc1,DC=arsz,DC=com"
         #用户密码AuthLDAPBindPassword "mrtanqun"
         #连接域
         
         AuthLDAPURL "ldap://172.17.16.74:389/DC=szardc1,DC=arsz,DC=com?sAMAccountName?sub?(objectClass=*)"
         #要求全部都要验证
         Require valid-user
</Location>



#service httpd restart 重启Httpd

如果要采用 LDAP 验证的话,  上面HTTPD验证就不需要了, 注释掉那些配置




接下来测试客户端:

OK。上面文件a是我用SVN2用户创建的。  我现在登录是SVN3。

差不多就是这样了.

其他的还得去摸索, 环境终于搭好了. 想骂人了. NND.. 哈哈




注意细节:

启用http.conf中的 mod_dav.so 模块

cp /usr/local/subversion/libexec/mod_* /usr/local/apache/modules/

配置ldap模块验证:
<Location /svn/>
         DAV svn
         #SVN版本库路径
         SVNParentPath /svn/repo
         SVNListParentPath On
         #权限控制文件路径
         AuthzSVNAccessFile /svn/conf/authz  
         #AuthzLDAPAuthoritative off
         AuthType Basic
         AuthName "subversionserver"
         #认证方式
         AuthBasicProvider ldap
         #绑定域用户  CN:userID   ou :域组  DC :域名  下个三个DC:指的域名是:szardc1.arsz.com 
         AuthLDAPBindDN "CN=svn1,OU=ecvision,DC=szardc1,DC=arsz,DC=com"
         #用户密码
         AuthLDAPBindPassword "mrtanqun"
         #连接域
         AuthLDAPURL "ldap://172.17.16.74:389/DC=szardc1,DC=arsz,DC=com?sAMAccountName?sub?(objectClass=*)"
         #要求全部都要验证
         Require valid-user
</Location>

authz权限配置文件
[groups]
admin = sammytan,nitchellli

[test:/]
* = rw
@admin = rw





原文地址:https://www.cnblogs.com/gyming/p/5781153.html