Инструкция по установке локального веб-сервера на Mac OS.
Далее ниже будем настраивать веб-сервер самостоятельно, без использования сторонних программ. Благо Mac OS является UNIX системой и настройка веб-сервера почти не отличается от Linux серверов.
Для установки веб-сервера можно воспользоваться готовыми решениями. Например, MAMP PRO. Но если хочется hardcor-а или не хочется платить за готовые решения, то это статья для вас.
Ставим менеджер пакетов для Mac OS
Для начала устанавливаем менеджер пакетов Homebrew.
Ставим apache на Mac OS
Работаем через командную строку, но правки в файлах намного быстрее делать через сторонние редакторы, например, Sublime Text.
Устанавливаем apache
Перенастроим дефолтный конфигурационный файл:
1. Меняем директорию для сайтов
#<Directory "/usr/local/var/www">
на
<Directory "/Users/Dream/Sites/">
2. Меняем порт
на
Теперь сможем заходить на локальные сайты без указания порта
3. Меняем директиву AllowOverride
Обяжем Apache использовать файлы .htaccess.
на
4. Раскомментируем строку mod_rewrite
5. Поменяем стандартного пользователя
Group _www
на нашего в системе и меняем его группу на stuff
Group stuff
Пользователь группы может быть другой. Для того чтобы это узнать, открываем свойство любой папки и смотрим что там указано. В примере ниже указан пользователь everyone.
В этом случае в строке указываем именного этого пользователя:
6. Изменим ServerName
на
Сохраняем файл, но не закрываем, скоро он снова понадобится.
Ставим последнюю версию PHP на Mac OS
Вернемся к файлу настроек апача и сообщим ему, чтобы тот использовал наш PHP. Файл:
В нем переходим к разделу загрузки модулей, видим там
Добавляем после этого
Также заменяем в этом файле
DirectoryIndex index.html
</IfModule>
на
DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Сохраняем, но опять не закрываем файл, он понадобится и дальше.
Запустить сервис PHP
Перезагрузка сервиса
Посмотреть все сервисы
Настройки для PHP указанной выше версии будут здесь:
После изменения обязательно надо перегрузить все сервисы (не только PHP)
Устанавливаем PostgreSQL на Mac OS
В отдельной статье описывается установка PostgreSQL на Mac Os.
Устанавливаем MySQL на Mac OS
Для управления базой данных через веб-интерфейс также можно установить phpMyAdmin:
Или использовать сторонние программы, типа Sequel Pro
Если был установлен phpmyadmin, то допишем в файл:
Следующее:
<Directory /usr/local/share/phpmyadmin/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
Если после этого сразу зайти в phpmyadmin или через любое другое приложение, будет ошибка:
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
В MySQL 8 изменили аутентификацию с mysql_native_password на caching_sha2_password, как на более безопасную. Если мы хотим входить как и раньше, то внесем изменения.
Перегрузим все сервисы:
Войдем внутрь MySQL
Должны зайти на сервер:
Добавим старую авторизацию и пароль: password
Но и этого не достаточно, будут ошибки:
mysqli_real_connect(): (HY000/2002): No such file or directory
mysqli_real_connect (): (HY000 / 2002): нет такого файла или каталога
1. Находим файл
а) Изменим там false на true
б) А вместо
Поставим
2. В конфиг MySQL
Добавим
Теперь всё должно работать! Осталось всё запустить.
По умолчанию адрес доступа в phpmyadmin
Запуск
brew services start mysql
или также для mysql подойдет
Команды для перезапуска:
или
Посмотреть все сервисы:
Логи ошибок в веб-сервере на Mac OS
Если что-то пошло не так, можно посмотреть логи ошибок. Например, почему не открывается та или иная страница:
cat httpd/error_log | tail -10
Ошибки при перезагрузке apache
Если ничего не работает, обязательно надо попробовать перезагрузить apache именно так:
Дальше будут показаны ошибки. По этим сообщениям станет ясно в чем причина.
H00544: httpd: bad group name stuff
Значит в конфигурации httpd.conf указан неверный пользователь. Как поправить смотрите в этой статье выше.
Cannot load /usr/local/opt/php/lib/httpd/modules/ into server
Ошибки:
httpd: Syntax error on line 183 of /usr/local/etc/httpd/httpd.conf: Cannot load /usr/local/opt/php/lib/httpd/modules/libphp7.so into server: dlopen(/usr/local/opt/php/lib/httpd/modules/libphp7.so, 10): Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib\n Referenced from: /usr/local/opt/php/lib/httpd/modules/libphp7.so\n Reason: image not found
httpd: Syntax error on line 183 of /usr/local/etc/httpd/httpd.conf: Cannot load /usr/local/opt/php/lib/httpd/modules/libphp7.so into server: dlopen(/usr/local/opt/php/lib/httpd/modules/libphp7.so, 10): image not found
Причина в том, что была обновлена php версия, а модуль не был изменен. Можно исправить двумя вариантами:
а) Попробовать обновить homebrew:
Обновить php или установить новую версию php:
brew install php@7.4
И еще раз перезагрузить сервисы
б) Заменить вручную.
Проверим версию php:
PHP 8.0.0 (cli) (built: Nov 30 2020 13:51:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v8.0.0, Copyright (c), by Zend Technologies
Дальше меняем правим строки в файле /usr/local/etc/httpd/httpd.conf:
LoadModule php_module /usr/local/Cellar/php/8.0.0_1/lib/httpd/modules/libphp.so
httpd not running, trying to start
Делаем так:
Если покажет что-то вроде:
Убиваем процесс:
И снова запустим:
(48)Address already in use: AH00072
Ошибка появилась в Mac OS Big Sur
httpd not running, trying to start
(48)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Заходим в файл:
Меняем значение в Listen на такое:
Перезагружаем:
Ошибка при импорте базы данных
phpMyAdmin — Ошибка
Incorrect format parameter
Надо увеличить лимиты:
upload_max_filesize = 124M
memory_limit = 1024M
Которые устанавливаются в файл php.ini:
Версия php может быть любой другой, которая была установлена.
Снова перезагрузим все сервисы
После этого (не всегда), чтобы сразу заработало нужно выйти и заново зайти в phpMyAdmin.
Другие ошибки
Попробовать команду:
И воспользоваться подсказками. Например:
formulae that put executables in /usr/local/sbin.
Consider setting the PATH for example like so:
echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc
Вводим:
Локальное подключение к БД
Подключиться можно разными сторонними программами. На примере программы DataGrip:
В поле password пароль будет password.
Добрый день, как связаться с автором статьи?
Что именно вас интересует?
У меня на моменте:
«Войдем внутрь MySQL»
И
«Должны зайти на сервер»
Пишет следующее:
-> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'root@localhost [(none)]>
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_nat' at line 1
Никаких ошибок не выдает, кроме синтаксической и файла по адресу «/usr/local/etc/phpmyadmin.config.inc.php
» нет.
Проблема может быть в кавычке. Посмотрите совет в конце этой статьи.
Та же проблема, мак ос биг сур.
как правильно прописать? Я пробую заменить все ковычки на скошенную все равно синтаксическая ошибка
В каком месте ошибка? Скиньте что конкретно вы вводите и куда.
А Nginx, как же он?
Зачем на локальном сервере nginx? В любом случае не подскажу, не ставил из-за ненадобности.
Было бы здорово если бы Вы описали каким образом можно запустить localhost на устройствах внутри сети wi-fi. С подключением проблем нет. mac_ip:80 и все работает, но вот php не работает. Ну может и не php, но сайты на WordPress отображаются не корректно. Сайты без CMS работают как надо.
А куда потом сайт устанавливать? В какую папку файлы кидать?
Вы не внимательно читали. В самом начале указано, ищите вверху под заголовком: «Меняем директорию для сайтов»