| ||||||||||
Ключевые слова: apache, ldap, php, auth, sparc, kerberos, solaris, (найти похожие документы)
From: Egor Kovalchuk <egor@festu.ru.> Newsgroups: email Date: Mon, 19 Jan 2008 17:02:14 +0000 (UTC) Subject: Apache + Kerberos + LDAP + PHP на архитектуре sparc 64 От автора На просторах рунета очень мало русскоязычной документации по настройке и сборке программ, и иногда приходится просмотреть кучу всевозможной инфы, в поисках мало-мальски достойного HOW-TO. Спасибо тем людям которые собирают крохи информации и объединяют их в хорошие, понятные мануалы. Как говорится респект им и уважуха. Вот я решил поделится своим опытом, может то, что собрал, поможет пусть не всем, но многим. Благодарности Выражаю особую благодарность Морозову Алексею и Александре (aka Pandora) за правку, дополнения и багрепорт статьи Введение Все чаще и чаще приходится сталкиваться с тем, что новые приложение требуют решения на 64 битных платформах, но к сожалению, так сложилось, по крайней мере для Solaris, что все пакеты которые выкладываются 32-х разрядные(в частности sunfreeware.com все пакеты 32-х разрядные). Поэтому пришлость долго компилить все зависимости и утилиты вручную. Что имеем - Sun Solaris 10 5/08 - Cервер на SPARC архитектуре Установки компиляции и переменные, которые будут использоваться export CC=gcc export CFLAGS="-des -Duse64bitall" export LDFLAGS="-mcpu=v9 -m64" export LDDLFLAGS="-mcpu=v9 -m64" -тип процессора и опция 64-х разрядной компиляции export BAP=/future_apache_directory - куда будем устанавливать апач export PREFIX=/future_packets_directory - куда будут помещатся скомпилинные зависимости export SOURCE=/source_path - директория где содержаться наши сырцы Установка Apache Для начала мы должны опредилится, что нам требуется от Apache, мне нужно что бы он поддерживал Kerberos, LDAP, балансировку и проксирование. Поэтому зависимости Apache сводятся к следующему списку expat, libiconv, openldap, zlib, openssl, libgcc, gcc, kerberos К сожалению только два пакета, это libgcc и gcc, содержат в себе 64 битные версии библиотек, поэтому компилить их не надо, - хоть немного счастья ZLIB gmake distclean ./configure --prefix=/PREFIX/zlib gmake gmake install EXPAT gmake distclean ./configure \ --prefix=/PREFIX/expat_path \ --enable-shared \ --disable-static gmake gmake install LIBICONV gmake distclean ./configure \ --prefix=/PREFIX/libiconv_path \ --enable-shared \ --disable-static gmake gmake install OPENLDAP gmake distclean ./configure \ --prefix=/PREFIX/ldap_path \ --enable-syslog \ --with-tls-openssl \ --without-cyrus-sasl gmake gmake install KERBEROS Я использовал исходники кербероса от MIT (http://web.mit.edu/Kerberos/dist) gmake distclean ./configure \ --prefix=/PREFIX/krb_path\ --without-krb4 \ --enable-maintainer-made \ --sysconfdir=/etc/krb5 \ --with-krb5 \ --with-ldap gmake gmake install Ну вот мы и подошли к компиляции Апача Для начала нужно скомпилить две утилиты, которые находятся в дистрибутиве Апача cd SOURCE/apache/srclib Утилита arp cd srclib/apr gmake distclean ./configure --prefix=$BAP --enable-threads gmake gmake install Утилита arp-util cd ../apr-util gmake distclean ./configure --prefix=$BAP \ --with-ldap \ --with-ldap-lib=/PREFIX/ldap/lib \ --with-ldap-include=/PREFIX/ldap/include \ --with-iconv=/PREFIX/iconv \ --with-expat=/PREFIX/expat \ --with-apr=$BAP gmake gmake install Теперь конфигурируем и собираем апач cd ../../ gmake distclean ./configure \ --enable-maintainer-mode \ --prefix=$BAP \ --disable-auth-digest \ --without-perl \ --with-z=/PREFIX/zlib \ --with-iconv=/PREFIX/iconv \ --with-expat=/PREFIX/expat \ --with-apr=$BAP \ --with-apr-util=$BAP \ --with-ssl=/PREFIX/ssl \ --enable-ldap \ --enable-proxy \ --enable-proxy-connect \ --enable-proxy-ftp \ --enable-proxy-http \ --enable-proxy-balancer \ --enable-ssl \ --enable-authnz-ldap \ --enable-krb5=/PREFIX/kerberos \ --enable-modules="all" \ --enable-mods-shared="all" gmake gmake install Ура Апач скомпилирован, но нужно сделать еще один шаг, точнее нужно скомпилить модуль апача для работы с керберосом KERBEROS for APACHE (http://modauthkerb.sourceforge.net/install.html) gmake distclean ./configure \ --prefix=/PREFIX/kerberos\ --without-krb4 \ --with-apache=$BAP \ --with-krb5 gmake gmake install Настройка Апач + Kerberos + LDAP в http.conf # KERBEROS KrbMethodK4Passwd off #выключаем авторизацию кербероса 4 KrbAuthoritative On - если не прошла проверка авторизации то запретить доступ(если опция ставится в офф, то управление передается следующему модулю) AuthName "Kerberos Login" AuthType Kerberos Krb5Keytab /usr/local/proxy/conf/http_keytab.keytab - о кейтабах чуть ниже) KrbServiceName "HTTP/FULL_NAME_SERVER@DOMAIN_SERVER_NAME" - имя сервиса в домене KrbAuthRealm DOMAIN_SERVER_NAME KrbMethodNegotiate On -включение прозрачной авторизации KrbDelegateBasic On KrbSaveCredentials On KrbVerifyKDC Off # END KERBEROS # LDAP AuthzLDAPAuthoritative On AuthLDAPURL "ldap://domain_ip_address:389/DC=DOMAIN,DC=RU?userPrincipalName?sub?(objectClass=*)" NONE Если используете модуль NTLM то используйте вместо userPrincipalName sAMAccountName AuthLDAPURL "ldap://domain_ip_address:389/DC=DOMAIN,DC=RU?sAMAccountName?sub?(objectClass=*)" NONE AuthLDAPBindDN "CN=user,OU=Support,OU=Organization Structure,DC=domain,DC=ru" - полное имя юзера для подключения к домену AuthLDAPBindPassword password - пароль оного юзера AuthLDAPGroupAttributeIsDN on AuthLDAPGroupAttribute member #Require valid-user Require ldap-group CN=group,DC=domain,DC=ru - проверка принадлежности к группе # END LDAP Создание кейтабов Все приведенные команды выполняются на контролерре домена(у меня он Windows) кейтаб для хоста ktpass -princ host/FULL_NAME_SERVER@DOMAIN_SERVER_NAME -mapuser host@DOMAIN_NAME \ -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass passwd -out c:\host.keytab кейтаб для сервиса ktpass -princ HTTP/FULL_NAME_SERVER@DOMAIN_NAME -mapuser http@DOMAIN__NAME \ -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass passwd -out c:\http.keytab добавляем сервис setspn.exe -A HTTP/FULL_NAME_SERVER@DOMAIN_NAME http так же требуется создания юзера с минимальными правами для подключения LDAP в krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log krb = SYSLOG:INFO:DAEMON krb = FILE:/usr/local/proxy/logs/krb.log admin_server = FILE:/var/log/kadmind.log [libdefaults] ticket_lifetime = 24000 default_realm = DOMAIN_NAME - обязательно большими буквами dns_lookup_realm = false dns_lookup_kdc = false [realms] DOMAIN.RU = { kdc = first_dc.DOMAIN_NAME kdc = second_dc.DOMAIN_NAME admin_server = first_dc.DOMAIN_NAME default_domain = DOMAIN_NAME } [domain_realm] .domaim.ru = DOMAIN_NAME domain.ru = DOMAIN_NAME [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false } #[kdc] # profile = /var/kerberos/krb5kdc/kdc.conf в ldap.conf # # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. #BASE dc=example, dc=com #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never BASE DC=DOMAIN,DC=RU URI ldap://domain_ip_address REFERRALS off searchmode:OS ldapservers:omain_ip_address binddn:CN=user,CN=Users,DC=DOMAIN,DC=RU bindpwd:password userbasedn:CN=Users,DC=DOMAIN,DC=RU Все на этом на этом авторизация работает, переходим к сборке PHP Установка PHP Если для апача было не много зависимостей, то PHP его в этом дела опережает на порядок, нам снова нужно определится с зависимостями. Мне нужно что бы PHP работал с oracle, графикой(GD), xml и перенаправлял запросы(CURL), поэтому список зависимостей следующий <b>expat, oracle, zlib, libiconv, curl, png, jpeg, freetype, xml2, gd</b> Компиляцию некоторых пакетов описана выше, поэтому описывать их не буду CURL ./configure \ --prefix=/PREFIX/curl \ --with-iconv=/PREFIX/iconv \ --with-zlib=/PREFIX/zlib \ --enable-shared \ --disable-static gmake gmake install FREETYPE2 gmake distclean ./configure \ --prefix=/PREFIX/freetype \ --enable-shared \ --disable-static gmake gmake install PNG gmake distclean ./configure \ --prefix=/PREFIX/png \ --enable-shared \ --disable-static gmake gmake install JPEG gmake distclean ./configure \ --prefix=/PREFIXjpeg \ --enable-shared \ --disable-static gmake gmake install XML ./configure \ --prefix=/PREFIX/xml2 \ --with-iconv=/PREFIX/iconv \ --with-zlib=/PREFIX/zlib \ --enable-shared \ --disable-static gmake gmake install GPG (графика) gmake distclean ./configure \ --prefix=/PREFIX/gp \ --with-free-type=/PREFIX/freetype \ --with-jpeg=/PREFIX/jpeg \ --with-png=/PREFIX/png \ --without-x \ --without-xpm gmake gmake install Теперь можно переходить к сборке PHP ./configure \ --with-apxs2=$BAP/bin/apxs \ --with-config-file-path=$BAP/conf \ --prefix=/PREFIX/php \ --with-zlib=/PREFIX/z \ --with-zlib-dir=/PREFIX/z \ --with-iconv=/PREFIX/iconv \ --disable-dba \(убрать если есть oci8) --with-curl=/PREFIX/curl \ --with-png-dir=/PREFIX/png \ --with-jpeg-dir=/PREFIX/jpeg \ --with-freetype-dir=/PREFIX/freetype \ --with-libxml-dir=/PREFIX/xml2 \ --with-ttf \ --with-oci8=/PREFIX/oracle \ --enable-gd-native-ttf \ --enable-gd-jis-conv \ --with-gd 2>&1 | tee configure.log make && make install Все PHP собран, теперь осталось только скопировать модуль php в директорию апача и подключить. Настройки PHP, виртуальных хостов я рассматривать не буду, об этом и так много статей написано. PS с керберосом бывают проблемы в плане обнаружения библиотек, будьте внимательны и прописывайте LD_LIBRARY_PATH Спасибо за внимание. Надеюсь эта статья поможет страждущим:)
| ||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|