Конфигурация 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. С огромным удовольствием выслушаю предложения и замечания по доступности изложенного материала.

Комментарии (8):

  1. Андрей

    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 заработает. Тестовые хосты можно удалить.

  2. Александр

    22 марта 2011 в 10:02  #

    И от меня поклон автору. Многое понял и многому научился.
    И у меня — как и у Андрея — при переходе на localhost браузер выдавал ошибку 403 — Forbidden.
    Только из комментария Андрея я не понял что нужно сделать. Слитно написано
    Пожалуйста, напишите по шагам:
    1.
    2.
    3.
    Заранее благодарен.

  3. softspice

    7 апреля 2011 в 01:06  #

    После слов (команд):
    «sudo nano /etc/hosts
    и добавляем строчку:
    127.0.0.1 test»
    Нужно перезапустить сервер:

    killall SystemUIServer

    Иначе будет использоваться старый файл hosts.

  4. Александр

    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

    Иначе работать не будет ниче.

    Спасибо за статью!

  5. Александр

    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>

  6. makegood

    23 июня 2011 в 22:26  #

    Статью поправил

  7. Алексей

    29 октября 2011 в 08:52  #

    Вроде все так сделал. Только только у меня все равно запускается index.php из sites а не из sites/test
    В чем может быть проблема?

  8. makegood

    29 октября 2011 в 10:00  #

    Алексей, скорее всего, неправильно настроены хосты.
    Рекомендую настройку через MacPorts, на блоге есть подробная инструкция.