Поднимаем стек MAMP
С публикацией очередного приложения в AppStore возникли некоторые осложнения. Пока ведется битва с командой iTunes Connect (позже напишу, как это было), параллельно занимаюсь разработкой следующего iOS проекта. Ядро уже спроектировано и есть черновой вариант. В этом проекте я планирую реализовать немного клиент-серверной технологии. Разработку серверной части решил вести на локальном компьютере. Ранее я это делал на своем домашнем серваке, но с недавнего времени отправил его на пенсию (старенький он уже), а новый еще до конца не сконфигурировал. Переехав на Mac OS X Lion, пришлось кой-что переустанавливать вручную, так как Ассистент Миграции не восстанавливает ненативные программы. Пришлось опять долго вспоминать, как поднять стек Mac OS X, Apache, MySQL, PHP — решил использовать классический server-side. Чтоб в следующий раз не мучаться воспоминаниями, накидаю парочку хинтов.
Начнем с Apache. Будем собирать апач из исходников, как тру хакеры)) Качаем unix-sources отсюда. Рекомендуется брать последнюю стабильную версию. Скачали архив, распаковали, в папке, куда распаковались исходники, находим файл config.layout и, открыв в любом ANSI-текстовом редакторе, добавляем в конец следующее:
<Layout Lion> prefix: /usr exec_prefix: ${prefix} bindir: ${exec_prefix}/bin sbindir: ${exec_prefix}/sbin libdir: ${exec_prefix}/lib libexecdir: ${exec_prefix}/libexec+ mandir: ${prefix}/share/man sysconfdir: /etc+ datadir: /Library/Webserver installbuilddir: ${prefix}/share/httpd/build errordir: ${prefix}/share/httpd/error iconsdir: ${prefix}/share/httpd/icons htdocsdir: ${datadir}/Documents manualdir: ${datadir}/share/httpd/manual cgidir: ${datadir}/CGI-Executables includedir: ${prefix}/include+ localstatedir: /var runtimedir: ${localstatedir}/run logfiledir: ${localstatedir}/log+ proxycachedir: ${runtimedir}/proxy </Layout>
Данные определяют схему расположения файлов проекта. Для меня, если честно, всегда было загадкой, есть ли в юникс-системах какая-то общая концепция размещения файлов: исполняемых, конфигурационных, пользовательских. Совершенно определенно можно сказать, что у какой-либо конкретной программы (например, апача), точно есть. Но, если сравнивать mysql и apache, можно заметить, что схемы расплолжения файлов ощутимо различаются.
Далее создаем в папке с исходниками файл conf.args и наполняем его следующим содержимым:
./configure \ --enable-layout=Lion \ --enable-mods-shared=all \ --with-mpm=prefork \ --disable-static \ --disable-unique-id \ --disable-ipv6 \ --enable-dav \ --enable-cache \ --enable-proxy \ --enable-shared \ --enable-logio \ --enable-deflate \ --with-included-apr \ --enable-cgi \ --enable-cgid \ --enable-suexec
Это опции конфигурации. Копируем это все в буфер обмена, запускаем терминал, делаем cd в то место, где находятся исходники апача, и вставляем конфигурационную команду из буфера. Выполняем ее.
Далее выполняем
make
Долго-долго компилируется (у меня где-то полчаса продолжалось). Далее выполняем
sudo make install
Файл конфига находится /etc/apache2/httpd.conf. После этого запускаем апач:
sudo apachectl start
Если httpd.conf не содержит ошибок, апач должен стартовать.
Переходим в mysql. К счастью тут мы избавлены от сборки проекта из исходников. Вместо этого можно скачать так называемый Community Server. Идем сюда, выбираем нужную нам платформу и скачиваем dmg-образ, монтируем, запускаем pkg. Далее все просто. После установки запускаем демона:
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
останавливается соответственно так:
sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
Чтобы не писать такие длинные команды, можно прописать в .bash_profile следующие строчки
alias mysql_start="/Library/StartupItems/MySQLCOM/MySQLCOM start" alias mysql_stop="/Library/StartupItems/MySQLCOM/MySQLCOM stop"
Папка с файлами баз данных находится /usr/local/mysql/data. Если платформа совместимая, то можно импортировать базы просто скопировав их в эту папку. Я не фанат командной строки mysql (за исключением случаев восстановления баз из backup), поэтому пользуюсь графическими тулзами. Не смотря на то, что версия немного старовата (аж для OS X Tiger), на Льве работает стабильно — меня устраивает.
Остался php. Никаких дополнительных действий не понадобится — php идет в комплекте c Mac OS X Lion. Сейчас я наблюдаю версию 5.3.6 у себя.
PS. Наткнулся на такую штуку, как install MAMP with one click. Может в следующий раз попробую.