На просторах рунета очень мало русскоязычной документации по настройке и
сборке программ, и иногда приходится просмотреть кучу всевозможной инфы,
в поисках мало-мальски достойного 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 сводятся к следующему списку
# 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)
Все на этом на этом авторизация работает, переходим к сборке PHP
Установка PHP
Если для апача было не много зависимостей, то PHP его в этом дела
опережает на порядок, нам снова нужно определится с зависимостями. Мне
нужно что бы PHP работал с oracle, графикой(GD), xml и перенаправлял
запросы(CURL), поэтому список зависимостей следующий
./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
Спасибо за внимание. Надеюсь эта статья поможет страждущим:)