В качестве десктопа у меня 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
11. Ссылки на ресурсы, впрочем думаю что они и так очевидны, но на всякий случай.
www.php.net
www.apache.org
www.macports.org
www.freetds.org
Porticus
Кажется все.
Ни в коем случае не претендую, что это полноценный мануал по настройке, но возможно кому-то он будет полезен.
Комментарии и замечания приветствуются.