Nginx, php, немного DBMS и OS X..

Где-то в мае этого года стукнет 3 года с момента, как я перешел на OS X окончательно. До этого на работе был linux (linux, потому что пробовал работать и на ubuntu, и на debian, и на fedora), а дома хакинтош.

Как, всем разработчикам, известно, сидеть на linux очень удобно с точки зрения простоты настройки окружений. Я полностью согласен, можно с легкостью поднять LAMP за несколько минут с конфигурированием всего и вся.

Но вернемся к OS X. Так получилось, что в тот момент, когда я пересел за macbook, я работал над ecommerce проектом с mongodb. И это скорее положительный момент в создании идеального окружения на рабочей машине, чем отрицательный (хотя нервов стоило очень много).

Итак, если гуглить по слову PHP + OS X, то можно найти кучу постов о том, что в OS X есть встроенный apache2 и php, и что все отлично, доставь mysql, или что тебе надо, и радуйся жизни. Не верьте этому.

Дело в том, что mysql еще можно поставить, а вот что-то другое — танцы с бубном, не иначе. Именно так я и сделал, потратил пару часов на настройку и установку mysql, а вот с mongodb так ничего и не завелось.

Погуглив дальше, я нашел вариант через MAMP, да, это своего рода XAMPP из мира Windows (хотя видел, что на Windows он тоже есть). Лучше юзать pro, но правда он платный, почему-то, видимо надо платить OS X разработчику зарплату, все типа хорошо, все ништяк и круто. Я даже mongodb смог воткнуть в OS X нормально и подключить, все нравилось и все радовало. Пока не понадобилось установить что-то через pecl, доставить imagick или же и вовсе доставить gmp (либа такая, помогает работать с числами, ну вы поняли). Хотя в MAMP есть выбор версии php на сервере и это очень удобно.

В общем беда с MAMP меня настигла спустя пару месяцев и снова было потрачено дофига времени.

Эволюция идёт, я много где читал про brew (аналог macports, хотя macports я даже не пробовал, звучит как будто школьники что-то написали на коленке) и наконец-то решил попробовать этот пакетный менеджер в системе.

Brew очень хорош, это apt-get в мире OS X (хотя на бетах OS X забудьте про brew, мне пришлось откатывать OS X). С помощью него действительно можно развернуть LAMP за несколько минут. Что я в принципе и юзаю по сей день.

Все кто юзают brew знают про мутотень связанную с запуском nginx от root, права и т.д. Хоть в мануалах и пишут, что можно все норм сделать и от обычного пользователя сделать, но я так и не смог таким образом запустить http-сервер. Только sudo nginx. Да и еще после каждого входа, потому что LaunchAgents от root не запускаются. Но красивое решение все-таки имеется, это заюзать LaunchRocket.

По сути, это красивая гуёвина для удобного перезапуска демонов, да и еще добавит в автозапуск необходимые plist. Ставится эта штука также через brew, но это можно найти самим.

Как видно из заголовка в качестве http-сервера я использую nginx. Нравится он мне, как ни крути, хосты настраиваются проще, можно тюнить бесконечно.

Раньше я складывал все свои проекты в /var/www по привычке, позже я стал складывать их в ~/Sites и каждый раз добавлял в sites-enabled новые проекты. Все это разрасталось, становилось неудобно.

Пару месяцев назад пришел к другому хранению конфигов. В nginx.conf у меня подключается projects.conf из папки ~/Projects. А projects.conf на каждой из строк подключает конкретный vhost.conf, в последнем уже идет конфигурирование хоста.

Краткие примеры, чтобы было чуть понятнее:

В итоге получается, что в директории проекта лежат все необходимые файлы:

  • nginx.conf
  • error.log
  • access.log
  • project

Возможно в будущем я таки пересяду на vagrant, даже попрактиковался и заложил основу, но для проекта, в котором был voltdb, который не дался в установке под OS X (трабла с экстеншном). Vagrant нравится, но жутко непривычно, поэтому пока не пересаживаюсь. Хотя инструмент крутой и упрощает работу во многом, например, если один php проект юзает версию 5.5, а другой 5.3 или еще хуже 5.2.

В принципе все. Юзаю я php-fpm, там ничего особенного, установку и первоначальную настройку можно найти на хабре.