Личный опыт Web разработки в Mac OS X

Привет Хабр!

По мотивам вот этой статьи

Как веб-разработчик, выбравший Mac OS X в качестве основного рабочего инструмента, я столкнулся с проблемой настройки необходимого окружения. По многолетней привычке работы с серверами на Linux, руки сами потянулись в консоль дабы все поставить, но остановились — постойте, постойте, но зачем мне превращать эту операционку в очередной Linux сервер? Мне этого шаманства с консолью на серверах хватает, спасибо. Будем использовать встроенные компоненты, насколько это возможно.

Web сервер


Apache предустановлен в Mac OS и для локальной разработки его более чем хватает.
Маленькая хитрость – если не нужен виртуальный хост, то очень помогает вот такой трюк:
/etc/apache2/extra/httpd-userdir.conf

<Directory "/Users/*/Sites/">
  Options Indexes Order allow,deny 
  Allow from all 
</Directory>

Осталось кинуть проект в ~/Sites/%имя_проекта% и открыть в браузере localhost/~%user_name%/%имя_проекта%
На крайний случай, если нужна полная копия production окружения всегда можно установить Vagrant.

PHP


PHP предустановлен в Mac OS. Если его версия устраивает, то просто включаем загрузку модуля php5_module:
/etc/apache2/httpd.conf

LoadModule php5_module libexec/apache2/libphp5.so

Если не устраивает, то можно установить PHP по мануалу отсюда php-osx.liip.ch. Эта версия не заменит системную, сама найдет Apache и вообще установится в /usr/local/php5. Установка предельно проста – одна строка в консоли (пример для PHP 5.5):
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5

MySQL


Установить MySQL можно несколькими способами, например, через Homebrew. Но компилировать из исходников MySQL только потому что это позволяет пакетный менеджер? Мне кажется что проще взять DMG архив с официального сайта и установить. После установки в Системных настройках появится вкладка MySQL:


FTP/SFTP


Кроме работы над основным проектом приходится отвлекаться и исправлять/доделывать что-то у клиентов. Обычно это чужой хостинг с доступом по FTP. Значит нужен FTP клиент. Выбор пал на Cyberduck:


Почему Cyberduck? Потому что хранит пароли в Keychain, переведен на русский, бесплатен и поддерживает FTP, SFTP, WebDAV, Amazon S3, Google Cloud Storage и Rackspace Cloud Files.

MySQL клиент


Долго выбирал рать между MySQL Workbench и Sequel Pro. В силу легкости победил Sequel Pro.


Почему локальное приложение а не phpmyadmin или mysql в консоли хостинга? Потому что все курируемые базы в одном месте и не надо при задаче «посмотри что там в базе у клиента » открывать консоль, SSH и вспоминать пароли. Да, это удаленное подключение и MySQL на хостинге смотрит наружу. Но доступ по IP или SSH туннель спасают отца русской демократии.
Возможностей у программы достаточно много, лучше почитать на официальном сайте.

Sublime Text


Без него никуда. Маленькая хитрость в настройках:
{
  "open_files_in_new_window": false,
}

По-умолчанию выставлено в TRUE и из-за этого Cyberduck открывает новые файлы в новом окне, а не в новой вкладке существующего окна.

Кроме этого, бывает что нужно быстро запустить небольшой кусок PHP кода, а делать это в IDE не удобно. Можно выполнить PHP код из Sublime Text, добавив новую Build System (Tools –> Build System -> New):
{
 "cmd": ["php" , "$file"] 
}

Теперь жмем CMD + B и результат работы кода появится в консоли Sublime Text.

Dash




Это удобный сборник документации, вот его особенности:
  • Автообновление документации с официальных сайтов
  • Оффлайн доступ
  • Шпаргалки (Cheat Sheets)
  • Создание своих сниппетов
  • Интеграция в PhpStorm и Sublime Text


Конечно, можно еще начать петь дифирамбы тач-жестам и полноэкранному режиму приложений, но это выходит за рамки статьи.
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 27

    +8
    Больше похоже на личный опыт настройки среды для Web-разработки.
      +1
      Причем у каждого свой подход. И не вижу тут ничего свойственного только Mac OS X. Аналогичную среду можно собрать и на винде.
      0
      Вместо Sequel Pro с большим удовольствием использую PhpStorm DB Navigator
        +1
        для очень многих пакетов (в том числе и MySQL) Homebrew не качает из исходников, а устанавливает готовый скомпилированный бинарник («bottle»)
        так что это получается так же быстро как и установить с DMG с оффсайта, но со всеми плюсами единообразного управления менеджером пакетов
          0
          Вы правы, я этого не заметил. Признаю свою ошибку.
          +1
          ИМХО для PHP-разработчика под Маком вполне достаточно:
          • MAMP PRO
          • Coda (включает в себя редактор + терминал + фтп-клиент + mysql-админку)
          • Dash
          • iTerm 2 (по желанию)
            +1
            $134 при наличии бесплатных аналогов?

            Про то, что саблайм платный, знаю. Но он и в ограниченном режиме не особо надоедает. С бесплатными текстовыми редакторами на OS X вообще беда.
              +2
              С бесплатными текстовыми редакторами на OS X вообще беда.

              А как же macvim? )
                0
                Продолжаю корить себя за это, но так до сих пор Vim и не освоил.
                0
                С бесплатными текстовыми редакторами на OS X вообще беда.


                Textmate 2?
                  0
                  Нет. Привычную и удобную работу даже с банальной табуляцией из испробованных «из коробки» поддерживает только саблайм и, отчасти, Fraise.

                  Я, конечно, найду время потыкать еще этот textmate, думаю, популярен он неспроста. Но когда требовался инструмент, который будет работать здесь, сейчас и сразу, он не подошел. Например, блочная табуляция, которой я привык пользоваться по табу, здесь работает по альт-табу. Но это меня не так расстраивает, как, например, то, что по этому самому альт-табу приложение стабильно крэшится (альфа такая альфа).
              0
              А не проще виртмашину с линуксом поднять, и там завести окружение, приближенное к продакшн-серверу?
                +1
                Я об этом говорил, когда упомянул Vagrant.
                  +1
                  Вот только вы его «крайним случаем» обозвали, а между тем, его использование дает такую массу преимуществ, что танцы вокруг попыток собрать из Mac OS что-то похожее на веб-сервер становятся просто бессмысленными.
                    0
                    собрать из Mac OS что-то похожее на веб-сервер

                    Если имеется ввиду «собрать похожее на production окружение» — тут я с Вами полностью согласен, Vagrant с этим справится лучше.
                    Но я имел ввиду локальную разработку, где нет нужды копировать production окружение. В варианте «PHP разработка на Macbook Air» нативные Apache и PHP дают выигрыш хотя-бы в проценте использования заряда аккумулятора.
                    Основная идея такова — зачем ставить сторонний веб-сервер, если встроенный покрывает все потребности.
                    Нисколько не умаляю крутость Nginx — у самого на всех он серверах стоит.
                      0
                      Тут еще поинт в том, что вы к апачу тянете еще PHP, MySQL и кучу либ.
                      Ну и плюс к этому, виртмашину вы можете потом просто скопировать на другую машину, и продолжать работать там с минимальными телодвижениями. Ну или просто держать её на быстрой флэшке и подключать по мере необходимости.
                        0
                        Хм. PHP уже встроен в Mac OS. MySQL ставить так и так. Если под кучей либ Вы предполагаете GD, Imagemagick и mcrypt, то опять-же, их все-равно устанавливать хоть в Mac OS через Homebrew, хоть в виртуалке через пакетный менеджер.
                        Я не знаю куда может потребоваться перенос виртуалки, если поделитесь — буду рад. По поводу флешки — да, интересный кейс, как-то сам держал Open Server на ней и даже запустил локальный проект на информационном моноблоке в Технопарке, знаете, такие которые висят на выходе из лифта на каждом этаже. В тот день просто приезжала высокая комиссия и мы таким образом немного попиарились.
                          0
                          > Я не знаю куда может потребоваться перенос виртуалки, если поделитесь — буду рад.

                          Вот мой личный кейс — я несколько раз менял ноуты и системы на них. Каждый раз ставить и настраивать все это барахло мне было лень, и я просто перетаскивал виртмашину.
                            0
                            Ну вот так например предлагается ставить модуль php xml-rpc на мак:
                            stackoverflow.com/questions/2031564/php-xmlrpc-extension-and-mamp

                            (у меня так и не сработало, кстати). Ну извращение же, а? А модуль нужный, с него к wordpress-овскому XMLRPC обращаться можно, ну то есть не какая-то безумная экзотика.

                            Не, серьезно — или вам хватает самого примитивного и базового, тогда ради бога, есть MAMP и если его достаточно, то прекрасно. Если ж нет — тогда уж сразу через Vagrant. А мучиться с тем, что изначально не решает MAMP, смысла не вижу — сегодня это один модуль, завтра другой, послезавтра вдруг nginx понадобился, потом на время ради одного проекта Postgres, Redis, memcached… Не вижу смысла загрязнять рабочее окружение макоси этим софтом, лучше его все же отдельно держать в виртуалке.
                              0
                              Согласен, лучше выбирать решение в зависимости от потребностей.
                            0
                            Вот так это выглядело, прошу прощения за качество:
                            https://www.dropbox.com/s/3nt714vfqcr7bfn/IMG_20121017_160145.jpg
                    +1
                    Юзаю XAMPP + Sublime Text 2 + FileZilla.
                      0
                      Для виртуальных доменов можно править /etc/hosts
                      sudo vi /etc/hosts
                      sudo apachectl restart
                        0
                        Или из Системных настроек, если установить вот эту вещь:
                        image
                        +1
                        Из бесплатных редакторов для тех, кому IDE слишком громоздка для мини-задач, расскажу про Komodo Edit. После настройки под себя очень нравится.
                        ФТП-клиент — Transmit. Очень неплох для работы в связке с Komodo с хостами по ФТП, стоит копейки.
                          0
                          Мне приходится работать как с PHP, так и с Ruby (on Rails). Поэтому пришлось устанавливать еще и pow. Кстати, с ним вместе идет легкий DNS-сервер. Удобно. Я просто создаю новую папку под названием site.php для PHP-проектов (или site.dev для Ruby-проектов) и у меня начинает работать site.php, без правки hosts.

                          Может кому-то будет полезно:

                          crashcube:~$ cat /etc/apache2/users/crashcube.conf 
                          NameVirtualHost *:80
                          
                          <Directory "/Users/crashcube/Sites/">
                              Options Indexes FollowSymLinks -MultiViews
                              AllowOverride All
                              Order allow,deny
                              Allow from all
                          </Directory>
                          
                          <VirtualHost *:80>
                              VirtualDocumentRoot /Users/crashcube/Sites/%0/www
                          </VirtualHost>
                          
                          <VirtualHost *:80>
                              ServerName pow
                              ServerAlias *.dev
                              ServerAlias *.xip.io
                          
                              ProxyPass / http://localhost:20559/
                              ProxyPassReverse / http://localhost:20559/
                              ProxyPreserveHost On
                          </VirtualHost>
                          
                          crashcube:~$ cat ~/.powconfig 
                          export POW_HOST_ROOT="$HOME/Sites"
                          export POW_DST_PORT=88
                          export POW_DOMAINS="dev,php"
                          crashcube:~$ 
                          


                          На самом деле, хотел написать, что сейчас я полностью перешел на Vagrant и вам советую. Это как минимум удобнее тем, что в памяти постоянно не висит apache и mysql, когда не занимаешься разработкой, об остальных плюсах расскажут другие статьи ;)
                            0
                            Спасибо за подсказку с Pow — вот уж точно, век живи, век учись.

                          Only users with full accounts can post comments. Log in, please.