В свое время, пересев с 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