Как запустить WEB-сервер на macOS (Apache + PHP + MySQL) – быстро и по шагам

если нужно локально запускать сайты на Mac – можно включить встроенный Apache и поставить PHP через Homebrew (PHP в macOS начиная с Monterey больше нет), либо поставить весь стек (httpd + php + mysql) через Homebrew – так проще контролировать версии. В статье: команды, что править в httpd.conf, как включить PHP, как сделать виртуальные хосты и права для _www, как смотреть логи и решать типичные проблемы.


Короткая сводка вариантов – выбирайте, что вам удобнее

  • Вариант A – использовать встроенный Apache (быстро, ничего не ставим). Работает в Big Sur / Ventura / Sonoma и т.д
  • Вариант B – Homebrew httpd + php + mysql (лучше для разработчика, можно управлять версиями, не лезть в системные файлы).

Я опишу оба пути – сначала быстрое включение встроенного Apache, потом как добавить PHP (через Homebrew) и как сделать виртуальные хосты. В конце – типичные ошибки и как смотреть логи.


1. Включаем встроенный Apache (быстро и просто)

Открой Terminal и выполни:

# запустить Apache
sudo apachectl start

# остановить
sudo apachectl stop

# перезагрузить после правок
sudo apachectl restart

# проверить конфиг на синтаксис
sudo apachectl -t

Если в браузере открыть http://localhost/ – должна появиться страница «It works!» или стартовая страница.

Если macOS новая (Ventura / Sonoma), учтите что по-умолчанию Apache есть, но доступ к домашним папкам _www может быть ограничен – об этом ниже. Apple Support Community+1


2. Где конфиг Apache и что изменить (DocumentRoot → ~/Sites)

Файл конфигурации системного Apache:

/etc/apache2/httpd.conf

Откройте в редакторе:

sudo nano /etc/apache2/httpd.conf

Обязательные правки, чтобы сделать ~/Sites корнем:

  • раскомментировать или установить:
ServerName localhost
  • изменить DocumentRoot:
DocumentRoot "/Users/ВАШ_ЛОГИН/Sites"
  • изменить <Directory "/Library/WebServer/Documents"> на:
<Directory "/Users/ВАШ_ЛОГИН/Sites">
  • убедиться, что есть:
DirectoryIndex index.php index.html
  • разрешить виртуальные хосты:
Include /private/etc/apache2/extra/httpd-vhosts.conf

Сохраните и перезапустите:

sudo apachectl restart

3. PHP: что с ним в современных macOS и как добавить (важно)

Начиная с macOS Monterey (12) Apple удалила встроенный PHP, поэтому если вы на Monterey и новее – PHP придётся ставить вручную (через Homebrew). Если у вас старый macOS – возможно PHP уже есть, но лучше поставить свежий через Homebrew.

Установка PHP через Homebrew (рекомендуется)

Если Homebrew ещё нет:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Установить PHP и запустить:

brew install php
brew services start php

После установки PHP можно подключить его к Apache. Проще сделать так – использовать PHP-FPM (Homebrew ставит его) и прописать в httpd.conf (или в отдельном vhost) блок для проксирования .php к php-fpm. Пример (в httpd.conf раскомментируйте/добавьте):

# Модуль proxy и proxy_fcgi должны быть включены
LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_fcgi_module libexec/mod_proxy_fcgi.so

# Далее в vhost или глобально:
<FilesMatch \.php$>
    SetHandler "proxy:unix:/opt/homebrew/var/run/php-fpm.sock|fcgi://localhost/"
</FilesMatch>

Путь к сокету может отличаться – посмотрите brew info php или /opt/homebrew/var/run/ на Apple Silicon, или /usr/local/var/run на Intel.

Если вы не хотите возиться с этим – можно поставить Homebrew httpd и подключить PHP модуль к нему, но чаще используют встроенный Apache + Homebrew PHP-FPM.


4. MySQL / MariaDB / phpMyAdmin (быстро через Homebrew)

brew install mysql
brew services start mysql
# Если хотите MariaDB:
brew install mariadb
brew services start mariadb
# Для phpMyAdmin
brew install phpmyadmin
# Затем настройте alias или vhost к phpmyadmin каталогу

5. Создаём папку Sites и даём доступ Apache (_www)

Если используете ~/Sites как корень, создайте папку и дайте Apache-ю (пользователь _www) права читать:

mkdir -p ~/Sites
# дать доступ исполнителю _www (важно на Ventura / Sonoma, новые правила безопасности)
sudo chmod +a "_www allow execute,read,search" ~
# или конкретно на Sites
sudo chmod -R 755 ~/Sites
sudo chown -R $(whoami):staff ~/Sites

Замечание: в новых macOS нужно дать _www права на выполнение по всему пути – иначе Apache не сможет войти в home. Apple Support Community


6. Виртуальные хосты – как сделать локальный сайт http://test/

  1. В /etc/hosts добавьте:
127.0.0.1 test
  1. Откройте /private/etc/apache2/extra/httpd-vhosts.conf и добавьте:
<VirtualHost *:80>
    ServerName test
    DocumentRoot "/Users/ВАШ_ЛОГИН/Sites/test"
    <Directory "/Users/ВАШ_ЛОГИН/Sites/test">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  1. Перезагрузите Apache:
sudo apachectl restart
  1. Создайте ~/Sites/test/index.php:
<?php
phpinfo();

Откройте http://test/ и увидите phpinfo или вашу страницу.


7. Альтернатива: поставить все через Homebrew (httpd + php + mysql)

Если хотите полностью локальный стек, не трогая системный Apache:

brew install httpd
brew services start httpd
# назначить DocumentRoot в /opt/homebrew/var/www или ваш ~/Sites
# и установить php и mysql как выше

Преимущества: версии из Brew обновляются, не ломаете системные файлы, проще отключить автозапуск системного Apache.


8. Логи и отладка – куда смотреть когда что-то не работает

  • Apache лог ошибок:
/private/var/log/apache2/error_log
  • Проверить синтаксис конфигов:
sudo apachectl -t
  • Посмотреть, что слушает порт 80:
sudo lsof -i :80

Если Apache не стартует – открывайте error_log и читайте строку с ошибкой, чаще всего это права, занятый порт или синтаксис.


9. Частые проблемы и быстрые решения

  • PHP не работает → скорее всего PHP не установлен (Monterey+). Установите через Homebrew и подключите php-fpm.
  • 403 Forbidden при заходе в ~/Sites → проверьте права на домашнюю папку и дайте _www execute/read доступ. Apple Support Community
  • Порт 80 занят → проверьте sudo lsof -i :80, возможно, уже запущен другой httpd (nginx, brew httpd). Остановите его.
  • After editing httpd.conf Apache won’t start → запустите sudo apachectl -t и посмотрите логи.

10. Резюме / что выбрать

  • Хочешь быстро – включил sudo apachectl start, поставил PHP через Brew, сделал ~/Sites и забыл.
  • Хочешь контроль и отдельный стек – ставишь весь httpd/php/mysql через Homebrew.
  • Если у тебя Apple Silicon – Homebrew в /opt/homebrew, пути отличаются.

Если что не получилось – заходите в нашу Telegram-группу, там люди делятся рабочими решениями и подсказками, можно скинуть скрин логов и мы поможем
👉 https://t.me/NibblitClub

Виталий nibbl

Привет 👋 Меня зовут Виталий, в сети я известен как Виталий Nibbl. С 2009 года я в IT и люблю задачки, от которых у других опускаются руки. Если вам сказали, что - "это невозможно" — значит, вы просто ещё не обратились ко мне 😎 В моих блогах на YouTube и Telegram вы найдёте пошаговые инструкции и решения любых сложностей. А ещё я профессионально скачиваю видео с любых платформ и всегда на связи по IT-вопросам.

Оцените автора
NIBBL
    • 16.10.2016 02:15

    Здавствуйте. Никак не получается настроить все правильно. http://localhost работает. Все другое нет. Проверил все 100 раз.
    Вот ошибки.Спасибо!
    [Sat Oct 15 18:37:58.937155 2016] [mpm_prefork:notice] [pid 2578] AH00163: Apac$
    [Sat Oct 15 18:37:58.937445 2016] [core:notice] [pid 2578] AH00094: Command lin$
    [Sat Oct 15 18:44:58.203894 2016] [mpm_prefork:notice] [pid 2578] AH00169: caug$
    [Sat Oct 15 18:45:07.396358 2016] [mpm_prefork:notice] [pid 2706] AH00163: Apac$
    [Sat Oct 15 18:45:07.396504 2016] [core:notice] [pid 2706] AH00094: Command lin$
    [Sat Oct 15 18:58:34.899385 2016] [mpm_prefork:notice] [pid 2706] AH00169: caug$

    Ответить
      • 02.01.2019 14:34

      Проверьте, насколько верно записали данные в файл:
      /private/etc/apache2/extra/httpd-vhosts.conf

      У меня, например, скопировалось как:

      <VirtualHost *:80>

      А должно быть:

      То есть появились лишние символы. Пройдитесь по всем строчкам и исправьте остальное.

      Ответить
        • 24.03.2019 22:01

        спасибо проверю!

        Ответить
        • 02.01.2019 14:39

        В комментарии строчка отобразилась по-другому, чем писал. Вторая вообще не показалась…

        Смысл в том, что возможно пример кода для httpd-vhosts.conf, приведённый автором может скопироваться неверно. Отсюда могут и ошибки.

        P.S. Автор, спасибо, всё заработало. Впрочем, пришлось немного поломать голову – как писал выше, некоторый код неверно отобразился.

        Ответить
      • 23.10.2016 22:06

      не очень понимаю что работает а что нет. напишите более подробно

      Ответить
    • 11.12.2016 00:24

    Спасибо! У меня получилось. Но с трудом)

    В статье не сказано что надо раскомментировать это:
    Include /private/etc/apache2/extra/httpd-vhosts.conf

    И надо удалить примеры виртуальных хостов написать свои, к примеру:

    ServerAdmin webmaster@school.loc
    DocumentRoot “/Users/sbeka/Sites/school.loc”
    ServerName school.loc

    AllowOverride All
    Order allow,deny
    Allow from all

    Ответить
    • 04.11.2017 21:11

    Красавчик автор

    Ответить
    • 08.05.2019 18:40

    Не работает, ошибка:
    Forbidden
    You don’t have permission to access / on this server.

    Ответить
      • 08.05.2019 18:50

      Помогла правка имя сервера в: sudo nano /private/etc/apache2/extra/httpd-vhosts.conf

      Код:

      ServerAdmin webmaster@test
      DocumentRoot “/Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/sites”
      ServerName localhost

      AllowOverride All
      Order allow,deny
      Allow from all

      Ответить
    • 18.08.2019 18:56

    Помучался но все получилось) Хорошо до комментариев промотал и прочитал. Спасибо за труды!!!! как раз сейчас нужен локальный сервер для учебы. 💡 💡 💡

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Оценка

PROS

+
Add Pros

Cons

+
Add Cons