В качестве десктопа у меня iMac с Leopard'ом. По умолчанию в комплекте с Леопардом идет апач и PHP с расширением для работы с MySQL. А разрабатываю я приложения, которые подключаются к базам данных MySQL, MsSQL и Oracle. Поэтому "родного" PHP мне не хватает. Помимо этого, мне необходим proxy_http_module для Апачи, которого тоже нет из коробки.Плюс ко всему вышел PHP 5.3, которых хочется поставить.
Что же делать?
Есть несколько вариантов решения данной задачи: использование Fink, MacPorts, src.
Я выбрал такой вариант:
- Компиляция Apache из исходников.
- Компиляция PHP из исходников.
- Установка FreeTDS из портов.
- Установка Oracle Instantclient из портов.
- Установка прочих необходимых библиотек (в случае необходимости) из портов. Я например поставил так же freetype, jpeg, libpng, libmcrypt, curl, gettext
Алгоритм установки будет такой:
- Установка MacPorts.
- Уставнока FreeTDS из портов.
- Установка Oracle Instantclient из портов.
- Установка MySQL 5 из портов.
- Установка прочих необходимых библиотек (в случае необходимости) из портов.
- Конфигурирование и компиляция Apache из исходников.
- Установка Apache.
- Конфигурирование и компиляция PHP из исходников.
- Установка PHP.
- Настройка Apache/PHP/FreeTDS.
Итакс, приступим.
1. Установка MacPorts.
Качаем dmg-образ последних портов с www.macports.org. Запускаем установщик. Вероятнее всего установщик зависнет примерно на 70%. Ничего страшного, стоит подождать минут 10-15 в надежде, что он все-таки выполнится, да и возможно в следующих релизах этот баг починят.
Порты ставятся в /opt/local. Для работы с портами используется команда port. Кстати для тех, кому не очень близка командная строка, есть GUI-приложение для работы с портами - Porticus.
Первым делом после установки, проапдейтим сами порты:
>sudo port selfupdate
2. Установка FreeTDS.
FreeTDS нам нужна для подключения к Microsoft SQL Server'ам. Ставим FreeTDS следующей командой:
>sudo /opt/local/bin/port -v install freetds
3. Установка Oracle Instantclient.
Oracle Instantclient нам нужен для подключения к Oracle серверам.
Ставится аналогично freetds:
>sudo /opt/local/bin/port -v install oracle-instantclient
Единственное замечание тут, что автоматом дистры не скачаются и надо будет ручками их скачать с сайта Oracle. Впрочем при выполнении данной команды об этом будет сказано и будут даны ссылки, откуда качать. Скачав дистрибутивы с сайта Oracle, их надо будет положить в /opt/local/var/macports/distfiles/oracle-instantclient/. После этого снова запустить установку.
4. Установка MySQL 5.
Нам нужна клиентская часть (библиотеки и заголовки), чтобы подключаться к MySQL-серверам.
Ставим так же из портов:
>sudo /opt/local/bin/port -v install mysql5
5. Установка прочих необходимых библиотек.
Если вы хотите собрать PHP с поддержкой каких-либо дополнительных библиотек, вам может потребоваться установить эти библиотеки.
В моем случае я дополнительно поставил: freetype, jpeg, libpng, libmcrypt, curl, gettext, libiconv.
Вся установка аналогична:
>sudo /opt/local/bin/port -v install freetype
>sudo /opt/local/bin/port -v install libmcrypt
>sudo /opt/local/bin/port -v install libpng
>sudo /opt/local/bin/port -v install curl
>sudo /opt/local/bin/port -v install gettext
>sudo /opt/local/bin/port -v install libiconv
6, 7. Конфигурирование, компиляция и установка Apache.
Качаем исходники Апачи с www.apache.org. Я устанавливал ту же ветку, что и стоит в системе, 2.2.х. На данный момент это 2.2.11. Распаковываем и запускаем конфигурацию:
>./configure --enable-layout=Darwin --enable-mods-shared=all --enable-proxy --enable-speling
Здесь указываем какие дополнительные модули мы хотим собрать.
После этого компилим и устанавливаем:
>make
>sudo make install
Apache ставится на место того, который был в системе.
8, 9. Конфигурирование, компиляция и установка PHP.
Ну что ж, осталось самое главное - собрать и установить PHP. Вроде бы все должно быть просто, но есть некоторые тонкости. Одна из них это то, что например mysql ставит библиотеки в /opt/local/lib/mysql5/ и заголовочные файлы в /opt/local/include/mysql5/ вместо /opt/local/lib/mysql/ и /opt/local/include/mysql/ соответстенно. Но ничего страшного. Поправим это, сделав соответствующие линки:
>sudo ln -s /opt/local/lib/mysql5 /opt/local/lib/mysql
>sudo ln -s /opt/local/include/mysql5 /opt/local/include/mysql
Качаем исходники PHP c www.php.net.
После этого можно запустить конфигурирование PHP:
>./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --mandir=/usr/share/man --with-openssl=shared --with-zlib --with-bz2 --with-curl --enable-ftp --with-gd --with-gettext=/opt/local --enable-mbstring --with-mcrypt=/opt/local --with-mssql=/opt/local --with-mysql=/opt/local --with-oci8=instantclient,/opt/local/lib/oracle --with-png-dir=/opt/local --with-jpeg-dir=/opt/local --with-freetype-dir=/opt/local --with-iconv=/opt/local --with-apxs2=/usr/sbin/apxs --with-config-file-path=/private/etc/ --enable-mod-charset
Здесь следует обратить внимание на следующие моменты:
--with-oci8=instantclient,/opt/local/lib/oracle
--with-apxs2=/usr/sbin/apxs
и то что расширения ссылаются на /opt/local.
После конфигурации запускаем компиляцию и установку:
>sudo make install
10. Настройка Apache/PHP/FreeTDS.
Если все прошло успешно, нам остается только настроить все компоненты.
- Убеждаемся что в httpd.conf подгружены соответствующие модули. В моем случае это php5_module, proxy_module, proxy_ftp_module, proxy_http_module
- Настраиваем freetds.conf
- Настраиваем php.ini