Установка веб-сервера Apache и PHP на MacOS

Последнее обновление: 12.03.2022

Установка веб-сервера Apache и PHP на Mac OS несколько отличается от процесса установки на Windows. Прежде всего следует отметить, что Mac OS уже по умолчанию имеет встроенный Apache. Однако начиная с версии macOS Monterey из операционной системы был удален PHP, который в предыдущих версиях устанавливался по умолчанию. Кроме того, настройка конфигурации встроенного веб-сервера несколько затруднена, каких-то пакетов может недостовать. И в этом случае более предпочтительный подход состоит в использовании пакетного менеджера Homebrew, который значительно облегчает установку и настройку всех необходимых компонентов. Поэтому рассмотрим установку и настройку Apache и PHP с помощью пакетного менеджера Homebrew.

Вначале надо установить сам пакетный менеджер Homebrew через терминал с помощью команды:

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

Чтобы убедиться, что Homebrew установлен, можно проверить его версию с помощью следующей команды:

brew --version

В этом случае терминал должен отобразить что-то наподобие:

Homebrew 3.3.1 Homebrew/homebrew-core (git revision 1362c572e16; last commit 2021-10-29)

Затем установим PHP с помощью следующей команды:

brew install php

Далее установим веб-сервер Apache с помощью следующей команды:

brew install httpd

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

brew services start httpd

При удачном запуске веб-сервера мы сможем обратиться к нему, введя в адресную строку веб-браузера адрес http://localhost:8080. И в этом случае веб-браузер должен нам отобразить надпись "It works!":

запуск веб-сервера Apache на MacOS

Настройка Apache

Теперь настроим Apache. Для этого нам надо изменить файл конфигурации веб-сервера. В зависимости от архитектуры Mac расположение файла конфигурации будет отличаться:

  • Для архитектуры Intel это путь /usr/local/etc/httpd/httpd.conf.

  • Для архитектуры Apple M1 это путь /opt/homebrew/etc/httpd/httpd.conf.

Соответственно для изменения файла нам потребуется текстовый редактор. Можно использовать встроенный текстовый редактор типа TextEdit.

Если архитектура - Intel, введем в терминале следующую команду:

open -e /usr/local/etc/httpd/httpd.conf
Настройка конфигурации веб-сервера Apache на MacOS

Если архитектура - Apple M1, введем в терминале следующую команду:

open -e /opt/homebrew/etc/httpd/httpd.conf

Вначале изменим порт - по умолчанию он равен 8080. Для этого найдем следующую строку:

Listen 8080

Параметр Listen указывает на порт, по которому можно будет обращаться к веб-серверу. Заменим эту строку на следующую:

Listen 80

Далее настроим папку для файлов веб-сервера. По умолчанию это папка "/usr/local/var/www". Но изменим ее.

Создадим в папке текущего пользователя новую папку, которую назовем localhost. Например, в моем текущий пользователь называется eugene, поэтому папка документов веб-сервера будет иметь путь Users/eugene/localhost. Теперь установим эту папку в качестве каталога для файлов веб-сервера.

Важно: папка localhost должна открыта для записи и чтения, иначе Apache не сможет с ней работать. Открыть доступ к папке можно в свойствах папки.

Если архитектура Intel, найдем в файле следующие строки

DocumentRoot "/usr/local/var/www"
<Directory "/usr/local/var/www">

Если архитектура Apple M1, найдем в файле следующие строки

DocumentRoot "/opt/homebrew/var/www"
<Directory "/opt/homebrew/var/www">

Параметры DocumentRoot и Directory указывает на каталог файлов веб-сервера. Теперь изменим эти строки, передав данным параметрам наш выше созданный каталог:

    DocumentRoot "/Users/eugene/localhost"
    <Directory "/Users/eugene/localhost">

Напоминаю, что вместо "eugene" в каждом конкретном случае будет идти имя текущего пользователя.

Затем установим имя сервера. Для этого найдем следующую строку:

#ServerName www.example.com:8080

Заменим эту строку на следующую:

ServerName localhost

Изменим пути файлам, в которые будут заноситься сведения об ошибках или посещении сайта.

Если архитектура Intel, найдем строку

ErrorLog "/usr/local/var/log/httpd/error_log"

Если архитектура Apple M1, найдем следующую строку

ErrorLog "/opt/homebrew/var/log/httpd/error_log"

И заменим ее на

ErrorLog "/Users/eugene/localhost/error.log"

Далее изменим путь к логу посещений. Если архитектура Intel, найдем строку

CustomLog "/Users/eugene/localhost/access_log" common

Если архитектура Apple M1, найдем следующую строку

CustomLog "/opt/homebrew/var/log/httpd/access_log" common

И заменим ее на

CustomLog "/Users/eugene/localhost/access_log" common

Таким образом, файл error.log, в который записываются ошибки, и файл access.log, в который заносятся все данные о посещении веб-сайта, будут располагаться в папке c:/localhost.

Настройка PHP

Теперь свяжем Apache с PHP. Вначале нам надо узнать версию PHP. Для этого введем в терминал команду

php -v

Нам должно отобразиться что-то вроде следующего

PHP 8.1.1 (cli) (built: Jan 08 2022 08:25:03) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies

Здесь нас будут интересовать первые две цифры версии. В моем случае выше это 8.1. В зависимости от архитектуры компьютера также настройка PHP будет отличаться.

найдем в файле строку

#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

Если архитектура Intel, после этой строки добавим следующую

LoadModule php_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp.so

Если же архитектура Apple M1, добавим следующую

LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so

В данном случае добавляется модуль php. Обратите внимание на часть php@8.1. Поскольку в моем случае версия 8.1, соответственно я указываю данную версию модуля. То есть в итоге получится

#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
LoadModule php_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp.so    // для Intel
LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so // для Apple M1

Далее найдем блок <IfModule mime_module>:

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.

И под строкой <IfModule mime_module> добавим две строчки:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

То есть должно получиться:

<IfModule mime_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #

В данном случае мы добавили поддержку для файлов с расширением .php и .phps.

И в конце найдем блок <IfModule dir_module>:

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

И заменим его на следующий:

<IfModule dir_module>
	DirectoryIndex index.html index.php
</IfModule>

В данном случае мы определяем файлы, которые будут выполняться при обращении к корню файла или каталога. То есть по сути определяем главные страницы веб-сайта: index.html и index.php.

Это минимально необходимая конфигурация, которая нужна для работы с PHP.

Теперь наша задача - убедиться, что php подключен и работает правильно. Для этого перейдем в папку /Users/eugene/localhost, которую мы создали для хранения файлов веб-сервера, и добавим в нее обычный текстовый файл. Переименуем его в index.php и внесем в него следующее содержание:

<?php
phpinfo();
?>

В данном случае мы создали простейший скрипт, который выводит общую информацию о PHP.

Теперь перезапустим Apache. Для этого последовательно введем в терминале две следующих команды:

brew services stop httpd
brew services start httpd

И после перезапуска веб-сервера обратимся к выше созданному скрипту index.php, набрав в строке браузера адрес http://localhost/index.php

phpinfo

Что тут произошло? При обращении к сайту на локальной машине в качестве адреса указывается http://localhost. Затем указывается имя ресурса, к которому идет обращение. В данном случае в качестве ресурса используется файл index.php. И так как в файле httpd.conf в качестве хранилища документов веб-сервера указан каталог /Users/eugene/localhost, то именно в этом каталоге и будет веб-сервер будет производить поиск нужных файлов.

И поскольку выше при конфигурировании мы указали, что в качестве главной страницы может использоваться файл index.php, то мы можем также обратиться к этому ресурсу просто http://localhost/

Таким образом, теперь мы можем создавать свои сайты на php на MacOS.

Настройка php

Как и для Windows, конфигурация php хранится в файле php.ini. На MacOS этот файл располагается по следующему пути:

/usr/local/etc/php/[версия]/php.ini

Например, я установил версию php 8.1.1, поэтому в моем случай файл php.ini располагается по пути "/usr/local/etc/php/8.1/php.ini". Соответственно, если мне необходимо его отредактировать в текстовом редакторе по умолчанию TextEdit, я могу ввести в терминал команду

open -e /usr/local/etc/php/8.1/php.ini
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850