Как быстро развернуть среду веб-разработчика в Mountain Lion

В свое время, пересев с Linux на Mac Os, мне было лениво разбираться с настройкой AMP-стека в новой для меня среде, благо нашлось неплохое решение из все в одном из коробки - это MAMP PRO, но речь не о нем. Примерно год я им пользовался, донастраивал под свои нужны. Для друпала MAMP PRO - то что доктор прописал. Но как известно универсальные решения универсальны, пока нам не понадобится полезть в дебри, хотя и не обязательно в дебри. И вот такой момент настал. Понадобилось мне установить ряд дополнительных модулей для php и для python. Поматерившись, поплевавшись, я решил все же отказываться от MAMP.

Итак, сфокуссируемся на установке и настройке необходимых нам приложений.

Настройка Apache

В Mountain Lion из коробки предустановлен Apache/2.2.22 (Unix). Запустить его теперь можно только через терминал командой:

sudo apachectl start

В последнее время я все больше стараюсь работать через терминал, да и к тому же так проще описывать свои действия. Сейчас создадим пару кофигов для апача. Первый в каталоге /etc/apache2/users:

cd /etc/apache2/users
touch имя_пользователя.conf

Добавим в этот конфиг следующие строки:

<Directory "/Users/имя_пользователя/Sites/">
  Options Indexes MultiViews
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
Include /Users/имя_пользователя/Sites/httpd-vhosts.conf

Для удобства создадим конфигурационный файл, в котором будем настраивать все наши хосты в папке /Users/ваше_имя/Sites, чтобы он всегда был под рукой:

cd /Users/имя_пользователя/Sites/
touch httpd-vhosts.conf

Пропишем в него следующий код:

NameVirtualHost *:80
<Directory "/Users/имя_пользователя/Sites">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

<VirtualHost _default_:80>
  ServerName localhost
  DocumentRoot /Library/WebServer/Documents
</VirtualHost>

<VirtualHost *:80>
  ServerName test_host.ru
  DocumentRoot "/Users/имя_пользователя/Sites/test_host.ru"
</VirtualHost>

test_host.ru - тестовый домен, в котором я разверну первый сайт. Шаблон для этого хоста можно копировать сколько угодно раз для создания собственного хоста.

Теперь нужно прописать его в /etc/hosts чтобы сайт открывался по адресу test_host.ru:

sudo vim /etc/hosts

# Добавляем строку
127.0.0.1 test_host.ru

И перезагружаем апач

sudo apachectl graceful

Установка и настройка PHP

В Mountain Lion предустановлен PHP, но для того чтобы установить модули необходимые для работы, придется качать исходники PHP и модулей, с каждым разбираться, компилить... Года бородатых дядек сутками компилящих линукс вроде прошли? Нет? Если есть желание можно и покомпилить, но лично мне хочется сосредоточиться на своих задачах, да и к тому же цель статьи - показать быструю настройку среды разработчика в Mountain Lion, поэтому возьмем готовый, скомпиленный со всем необходимым набор http://php-osx.liip.ch. Здесь из коробки есть модули для работы с XDebug и Symfony, ну а Drupal уж и подавно будет работать. Ставим версию PHP 5.3, хотя на сайте авторов проекта есть и 5.4, но я его не пробовал, поэтому ничего не могу о нем сказать.

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.3

Эта команда установит PHP 5.3 в /usr/local. Теперь нужно рассказать апачу о нашем новом PHP, для это вставим строку в конфиг имя_пользователя.conf

Include /etc/apache2/other/+php-osx.conf

И в .bash_profile добавим строку, чтобы использовать установленный PHP по умолчанию в терминале:

export PATH=/usr/local/php5/bin:$PATH

Для текущей сессии можно перезагрузить профиль:

source .bash_profile

Уже после написания статьи я нашел отличный способ установки php в OS X с помощью Homebrew.

Установка и настройка MYSQL

Его мы будем устанавливать с помощью Homebrew. Что это и для чего расскажу в одной из следующих статей.

Пока что предположим что он у нас установлен.

brew install mysql

Теперь когда MYSQL установлен, нужно установить системные схемы - "имя_пользователя" здесь должно быть задано имя пользователя от которого мы будем запускать mysql.

mysql_install_db --verbose --user=`имя_пользователя` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

Скопируем конфиг MYSQL в системный каталог /etc для того чтобы можно было настроить MYSQL по вкусу.

cp /usr/local/Cellar/mysql/your_mysql_version/support-files/my-small.cnf /etc/my.cnf

Теперь можно стартовать MYSQL:

mysql.server start

Для того чтобы mysql стартовал при загрузке:

mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/mysql/5.5.27/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Для перезагрузки mysql в таком случае удобно создать bash скриптик и прописать в него строки:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Отправка email

Для того чтобы можно было протестировать отправку email из скриптов на локальной машине, нужно немного подшаманить конфиги и запустить postfix.

Отредактируем php.ini, который лежит у меня в /usr/local/php5/lib:

sendmail_path="sendmail -t -i"

Перезапустим apache:

sudo apachectl restart

Далее нужно выполнить несколько комманд для запуска postfix:

sudo mkdir -p /Library/Server/Mail/Data/spool
sudo /usr/sbin/postfix set-permissions 
sudo /usr/sbin/postfix start

Можно протестировать отправку email:

echo test | mail -s test email_address  

Для автоматической загрузки postfix:

vim /System/Library/LaunchDaemons/org.postfix.master.plist

Удаляем строки:

<string>-e</string>
<string>60</string>

Перед /dict вставляем:

<key>RunAtLoad</key>
<true/>
<key>OnDemand</key>
<false/>

Перезапускаем конфигурацию:

sudo launchctl unload /System/Library/LaunchDaemons/org.postfix.master.plist
sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist
Комментарии