Конфигурация Apache и PHP на Mac OS X
Существует множество способов развернуть локальный сервер на Mac OS X, но сама система уже содержит предустановленный веб-сервер Apache и интерпретатор PHP, которые необходимо активировать и настроить.
Данное руководство требует некоторых навыков работы с командной строкой и знания редактора nano, поэтому рекомендую прочитать хорошую книгу по основам работы с командной строкой и терминалом в Mac OS X «Take Control of the Mac Command Line with Terminal».
Приведенный ниже материал является универсальным и будет полезен пользователям любых операционных систем.
Включить веб-сервер можно в настройках: Системные настройки > Общий доступ > включить службу Общий веб-доступ.
Если набрать в адресной строке браузера http://localhost/
, то сервер вернет страницу с текстом «It works!».
Команды для работы с Apache через командную строку:
sudo apachectl start | stop | restart
Ошибка Apache в Mac OS X 10.6.5 и выше
Следующая ошибка наблюдается при перезапуске Apache в Mac OS X 10.6.5 и выше, если попытаться перезапустить сервер через командную строку, Apache вернет ошибку:
/usr/sbin/apachectl: line 82: ulimit: open files: cannot modify limit: Invalid argument
Необходимо внести изменения в скрипт apachectl (/usr/sbin/apachectl
):
sudo nano /usr/sbin/apachectl
закомментируем строку 82:
ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"
и добавим под ней:
ULIMIT_MAX_FILES=""
Сохраняем скрипт и перезапускаем Apache.
Конфигурация Apache
Для конфигурации Apache необходимо открыть файл /etc/apache2/httpd.conf
:
sudo nano /etc/apache2/httpd.conf
Переходим к строке 116 и подключаем PHP (необходимо раскомментировать строку):
LoadModule php5_module libexec/httpd/libphp5.so
Зададим свой каталог для локального сервера, поменяем путь к корневому каталогу в строке 168 и 195. После этих изменений корневым каталогом будет папка Сайты (Sites), находящаяся в домашнем каталоге пользователя.
DocumentRoot "/Library/WebServer/Documents"
на
DocumentRoot "/Users/имя_пользователя/Sites"
Аналогично заменим прежний путь в строке 195:
на
В строке 230 пропишем какие типы файлов и в какой последовательности должен обрабатывать Apache:
DirectoryIndex index.php index.html
В строке 264 можно задать место для хранения журнала ошибок Apache:
ErrorLog "/private/var/log/apache2/error_log"
Раскомментируем строку 469, чтобы подключить файл в котором будем записывать виртуальные хосты:
Include /private/etc/apache2/extra/httpd-vhosts.conf
Сохраняем все изменения в файле httpd.conf
и перезапускаем Apache. Если перейти по адресу http://localhost/
, загрузится стартовая страница из папки сайты с приветствием "Ваш веб-сайт".
Проверим работоспособность PHP, для этого создадим в каталоге Сайты тестовый PHP-скрипт:
touch ~/Sites/index.php
sudo nano ~/Sites/index.php
и напишем сценарий, который покажет конфигурацию PHP:
Сохраняем файл index.php
и вновь переходим по адресу http://localhost/
, должна открыться страница с информацией о версии PHP. Если по прежнему загружается страница приветствия, необходимо проверить настройки Apache (строка 230).
Конфигурационный файл php.ini
находится в папке /private/etc/php.ini.defaults
, его необходимо переименовать в php.ini
:
sudo mv /private/etc/php.ini.default /private/etc/php.ini
Конфигурация виртуальных хостов.
Рекомендую познакомиться с более простым решением для работы с виртуальными хостами - VirtualHostX, с помощью этого приложения можно упростить весь процесс конфигурации виртуальных хостов.
Все проекты будут размещаться в каталоге пользователя Сайты (/Users/имя_пользователя/Sites/
). Создадим в этом каталоге новую папку с названием test
, а в ней файл index.php
с тестовым скриптом. Локальный сайт будет открываться по адресу http://test/
. Переходим к командной строке и вводим следующие команды:
mkdir ~/Sites/test
cd ~/Sites/test
touch index.php
nano index.php
и добавим сценарий:
Теперь займемся конфигурацией виртуальных хостов. Для начала откроем файл /etc/hosts
и добавим в исключения адрес локального сайта (http://test/
). Переходим к командной строке:
sudo nano /etc/hosts
и добавляем строчку:
127.0.0.1 test
Добавим записи с конфигурацией нового виртуального хоста:
sudo nano /private/etc/apache2/extra/httpd-vhosts.conf
И в конец файла добавляем записи:
<VirtualHost *:80>
ServerAdmin webmaster@test
DocumentRoot "/Users/имя_пользователя/Sites/test"
ServerName test
<Directory "/Users/имя_пользователя/Sites/test">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Сохраняем изменения и перезапускаем Apache. Теперь, если перейти по адресу http://test/
откроется страница с приветствием «Hello world!».
Все указания выше приведены с учетом моих вкусов и предпочтений, цель данного руководства разобраться с основными принципами конфигурации нативного Apache и PHP на Mac OS X. С огромным удовольствием выслушаю предложения и замечания по доступности изложенного материала.
Андрей
1 марта 2011 в 22:20 #Огромное спасибо за столь подробное изложение. Только я добавлю свои пять копеек. Сразу после первичного редактирования httpd.conf, когда включался php5 и указывалась директория, при переходе на localhost браузер выдавал ошибку 403 — Forbidden. Если посмотреть лог, то можно увидеть причину — не существующие тестовые хосты в файле httpd-vhosts.conf. Нужно открыть его и вставить в конце файла хост:
ServerAdmin webmaster@localhost
DocumentRoot «/Users/Имя пользователя/Sites»
ServerName localhost
ErrorLog «/private/var/log/apache2/mysite-error_log»
CustomLog «/private/var/log/apache2/mysite-access_log» common
Теперь localhost заработает. Тестовые хосты можно удалить.
Александр
22 марта 2011 в 10:02 #И от меня поклон автору. Многое понял и многому научился.
И у меня — как и у Андрея — при переходе на localhost браузер выдавал ошибку 403 — Forbidden.
Только из комментария Андрея я не понял что нужно сделать. Слитно написано
Пожалуйста, напишите по шагам:
1.
2.
3.
Заранее благодарен.
softspice
7 апреля 2011 в 01:06 #После слов (команд):
«sudo nano /etc/hosts
и добавляем строчку:
127.0.0.1 test»
Нужно перезапустить сервер:
killall SystemUIServer
Иначе будет использоваться старый файл hosts.
Александр
23 июня 2011 в 22:10 #У автора то ли кавычки съелись в разделе «Конфигурация виртуальных хостов», то ли еще что, но на данный момент в записи отсутствуют тэги VirtualHost и Directory. Короче, чтобы заработали виртуальные хосты, правильнее писать в файле /private/etc/apache2/extra/httpd-vhosts.conf так:
ServerAdmin webmaster@test
DocumentRoot «/Users/имя юзера/Sites/test»
ServerName test
AllowOverride All
Order allow,deny
Allow from all
Иначе работать не будет ниче.
Спасибо за статью!
Александр
23 июня 2011 в 22:13 #Опять кавычки съелись:
<VirtualHost test:80>
ServerAdmin webmaster@test
DocumentRoot «/Users/имя юзера/Sites/test»
ServerName test
</VirtualHost>
<Directory «/Users/aleyrsrglts/Sites/test»>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
makegood
23 июня 2011 в 22:26 #Статью поправил
Алексей
29 октября 2011 в 08:52 #Вроде все так сделал. Только только у меня все равно запускается index.php из sites а не из sites/test
В чем может быть проблема?
makegood
29 октября 2011 в 10:00 #Алексей, скорее всего, неправильно настроены хосты.
Рекомендую настройку через MacPorts, на блоге есть подробная инструкция.