CentOS7 源碼安裝svn1.9.5及httpd配置(ldap驗(yàn)證/ad域驗(yàn)證)

環(huán)境:CentOS-7-x86_64-1611 + subversion-1.9.5

一、源碼安裝:

1、安裝ldap:

wget ftp://gd.tuwien.ac.at/infosys/network/OpenLDAP/openldap-release/openldap-2.4.44.tgz
tar -zxv -f openldap-2.4.44.tgz
cd openldap-2.4.44/
./configure --prefix=/usr/local/ldap --disable-slapd
#--disable-slapd  ===  不需要ldap服務(wù)器 只需要lib include
make
make install

2、安裝APR:

wget http://apache.fayea.com//apr/apr-1.5.2.tar.bz2
tar -jxv -f apr-1.5.2.tar.bz2
cd apr-1.5.2/
./configure --prefix=/usr/local/apr
make
make install

3、安裝APR-util:

wget http://apache.fayea.com//apr/apr-util-1.5.4.tar.bz2
tar -jxv -f apr-util-1.5.4.tar.bz2
cd apr-util-1.5.4/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config --with-ldap=ldap --with-ldap-include=/usr/local/ldap/include --with-ldap-lib=/usr/local/ldap/lib
#apr-util需要帶上ldap功能
make
make install

4、安裝pcre:

wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.bz2
tar -jxv -f pcre-8.40.tar.bz2
cd pcre-8.40/
./configure --prefix=/usr/local/pcre
make
make install

5、安裝apache:

wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.25.tar.bz2
tar -jxv -f httpd-2.4.25.tar.bz2 
cd  httpd-2.4.25/
./configure --prefix=/usr/local/httpd \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr-util/bin/apu-1-config \
--with-pcre=/usr/local/pcre/bin/pcre-config \
--enable-module=mod_auth_basic \
--enable-module=mod_authnz_ldap \
--enable-module=mod_dav \
--enable-module=mod_dav_fs \
--enable-module=mod_dav_lock \
--enable-module=mod_authn_file \
--enable-module=mod_authz_user \
--enable-ldap \
--enable-authnz-ldap \
--enable-module=mod_ldap
make
make install

開(kāi)啟防火墻80 端口:

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload

將httpd加入服務(wù):

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

6、安裝sqlite:

wget http://www.sqlite.org/2017/sqlite-autoconf-3160200.tar.gz
tar -zxv -f sqlite-autoconf-3160200.tar.gz
cd sqlite-autoconf-3160200/
./configure --prefix=/usr/local/sqlite
make
make install

7、安裝zlib:

wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxv -f zlib-1.2.11.tar.gz 
cd zlib-1.2.11/
./configure --prefix=/usr/local/zlib
make
make install

8、安裝serf:

8.1、安裝scons ==> serf:

安裝 serf 需要用 scons 安裝:

wget http://prdownloads.sourceforge.net/scons/scons-2.5.1-1.noarch.rpm
rpm -ivh scons-2.5.1-1.noarch.rpm

8.2、安裝 openssl-devel ==> serf:

如果在serf安裝時(shí) 如果報(bào)錯(cuò):
compilation terminated.
scons: *** [buckets/ssl_buckets.o] Error 1
scons: building terminated because of errors.

yum install openssl-devel

8.3、安裝 serf:

舊版本svn 是用 neon (--with-neon=/usr/local/neon) 而新版本(1.8開(kāi)始)是使用serf來(lái)支持http訪問(wèn)

wget https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2
tar -jxv -f serf-1.3.9.tar.bz2
cd serf-1.3.9/
scons PREFIX=/usr/local/serf APR=/usr/local/apr/bin/apr-1-config APU=/usr/local/apr-util/bin/apu-1-config
scons install

9、安裝svn:

wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.9.5.tar.bz2
tar -jxv -f subversion-1.9.5.tar.bz2
cd subversion-1.9.5/
./configure --prefix=/usr/local/subversion \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr-util/bin/apu-1-config \
--with-apxs=/usr/local/httpd/bin/apxs \
--with-sqlite=/usr/local/sqlite \
--with-zlib=/usr/local/zlib \
--with-serf=/usr/local/serf
make
make install

10、如果使用./svn命令出現(xiàn)錯(cuò)誤:

svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or directory
解決:把serf安裝后的 libserf-1.so.1.3.0 復(fù)制到svn的安裝目錄下的lib目錄(直接復(fù)制libserf-1.so 會(huì)出現(xiàn) 鏈接已斷的錯(cuò)誤屬性 沒(méi)有用)

/usr/local/subversion/bin/svn --version
cp /usr/local/serf/lib/libserf-1.so.1.3.0 /usr/local/subversion/lib/libserf-1.so.1

11、將svn目錄下的幾個(gè)模塊復(fù)制到apache下,支持ladp功能:

cp /usr/local/subversion/libexec/mod_authz_svn.so /usr/local/httpd/modules/mod_authz_svn.so
cp /usr/local/subversion/libexec/mod_dav_svn.so /usr/local/httpd/modules/mod_dav_svn.so


二:httpd.conf配置:

1、匿名登錄:

#開(kāi)啟模塊
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so

#url訪問(wèn)路徑,可以不等于 實(shí)際的根目錄 (指定的路徑不要和www的沖突 不然可能會(huì)是301報(bào)錯(cuò))
<Location /svn>  
    DAV svn
    #倉(cāng)庫(kù)的根目錄(增加/刪除倉(cāng)庫(kù)的時(shí)候 不需要重啟apache服務(wù))
    SVNParentPath /svn  
</Location>

2、賬號(hào)密碼驗(yàn)證(明文):

Basic -- htpasswd 基本認(rèn)證
Digest -- htdigest 基本認(rèn)證的改進(jìn)

創(chuàng)建密碼文件:

-c 創(chuàng)建文件(第一次需要,后面幾個(gè)用戶就不需要了)
-m md5

/usr/local/httpd/bin/htpasswd -c -m /etc/svn-auth.htpasswd username1
/usr/local/httpd/bin/htpasswd -m /etc/svn-auth.htpasswd username2

/usr/local/httpd/bin/htdigest -c /etc/svn-auth.htdigest "AuthName" username1
/usr/local/httpd/bin/htdigest /etc/svn-auth.htdigest "AuthName" username2
#開(kāi)啟模塊#下面三個(gè)順序是必須的
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_user_module moduels/mod_authz_user.so

<Location /svn>
    DAV svn
    SVNParentPath /svn
    
    #這一行必須要!
    Require valid-user
    AuthType Basic
    AuthName "SVN-basic" 
    
    #AuthType Digest
    #AuthName "SVN-digest" 
    
    AuthBasicProvider file
    
    #賬號(hào)密碼文件
    AuthUserFile /svn/svn-auth.htpasswd  
    #權(quán)限文件
    AuthzSVNAccessFile /svn/svntest.conf
</Location>

3、ldap登陸:

#開(kāi)啟模塊#下面三個(gè)順序是必須的
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_user_module moduels/mod_authz_user.so

<Location /svn>
    DAV svn
    SVNParentPath /svnt

    Require valid-user
    AuthType Basic
    AuthName "SVN-ldap" 
    AuthBasicProvider ldap
#   AuthzLDAPAuthoritative 屬性在2.4版本中已經(jīng)取消: http://httpd.apache.org/docs/2.4/upgrading.html#run-time
#   AuthzLDAPAuthoritative off
    AuthLDAPURL "ldap://192.168.1.1/ou=People,dc=abc,dc=net"
    AuthLDAPBindDN "cn=admin,dc=abc,dc=net"
    AuthLDAPBindPassword "abcd"
#   AuthzSVNAccessFile /svnt/svntest.conf
</Location>

4、AD域登陸:

#開(kāi)啟模塊#下面三個(gè)順序是必須的
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_user_module moduels/mod_authz_user.so

<Location /svn>
    DAV svn
    SVNParentPath /svnt

    Require valid-user
    AuthType Basic
    AuthName "SVN-ad" 
    AuthBasicProvider ldap

    AuthLDAPURL "ldap://192.168.1.2/dc=abc,dc=com?samaccountName?sub?(objectClass=*)"

    AuthLDAPBindDN "administrator"
    AuthLDAPBindPassword "abcd"

#   AuthzSVNAccessFile /svnt/az.conf
</Location>


三:az.conf 權(quán)限控制:

#設(shè)置組
[groups]
group1=username1

[/]
#組
@group1=rw
#用戶
username2=rw

#這里就是svn下的目錄名
[repos_name:/]  
@group1=rw
username2=rw
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容