- Как настроить веб-сервер Apache в MacOS Sierra 10.12
- 0. Terminal, без которого никуда
- 1.1. Создаем папку Sites и папки для проектов
- 1.2. Создадим простой HTML файл
- 1.3. Настраиваем Apache
- 1.3.1. Конфигурационный файл Apache
- 1.3.2. Включаем модули в httpd.conf
- 1.3.3. Редактируем httpd-userdir.conf
- 1.3.4. Перезагрузка Apache
- 1.3.5. Просмотр локальных веб-сайтов
- 2. Настройка виртуальных хостов — опционально
- 3.0. Включаем модуль PHP — опционально
- 3.1. Интерпретация PHP кода внутри HTML файлов
- 3.2. Проверка работы PHP модуля
- Оставьте первый комментарий
- Оставить комментарий Отменить ответ
Как настроить веб-сервер Apache в MacOS Sierra 10.12
Эта статья является переводом статьи How to Set up Apache in macOS Sierra 10.12, и я размещаю ее здесь в первую очередь для себя, так как часто приходится к ней прибегать для настройки/перенастройки Apache в Sierra. Возможно, кому-то этот русскоязычный перевод облегчит понимание, и я буду рад что смог чем-то помочь.
macOS Sierra поставляется с веб-сервером Apache версии 2.4.23. Настройка Apache будет состоять из трех этапов:
- Начальная настройка. Мы настроим веб сервер таким образом, что статические (.html) файлы сайта размещенные в папке Sites (внутри вашей домашней папки) будут доступны к просмотру браузером по адресу http://localhost/
username/, где username — это ваше короткое имя пользователя, например admin или andrey.
0. Terminal, без которого никуда
Веб-разработчики знают, как незаменим порой может быть Терминал для быстрого и эффективного выполнения ряда задач. Однако для неподготовленного пользователя Терминал может показаться слишком сложным и недружелюбным, поэтому в этом руководстве мы вкратце рассмотрим основные приемы работы с Терминалом, чтобы вы чувствовали себя с ним более уверенно.
Прежде чем вы переключитесь в Терминал и начнете выполнять команды, несколько предостерегающих моментов. Некоторые команды, которые мы используем в настоящем руководстве, используют префикс sudo, который позволяет повысить привилегии текущего пользователя до уровня «root» или «superuser». Однако помните, что расширенные возможности влекут за собой повышенную ответственность. Поэтому будьте особенно внимательными, когда используете sudo, убедитесь что не перепутали путь к файлу и что вы не пытаетесь отредактировать файл, который не подлежит изменению.
Терминал находится по адресу:
Запустите его. Приглашение командной строки будет иметь следующий вид:
Сначала будет указано имя компьютера, потом :
потом ваше короткое имя пользователя и знак $ в конце.
1.1. Создаем папку Sites и папки для проектов
Папка Sites будет выступать в роли Document Root для Apache, и в то же время удобно располагаться в вашей домашней папке, обеспечивая беспрепятственный доступ к своему содержимому. Отметим, что папка Sites уже была предустановлена во всех ранних системах Mac OS X и исчезла в OS X 10.7 Lion. Равно как и галочка “web sharing” в System Preferences -> Sharing, которая позволяла запускать/останавливать Apache. Видимо в Apple посчитали, что среднестатистическому пользователю это не нужно, а кому нужно, разберется и без графического интерфейса. Но как только вы создадите папку Sites, сразу станет понятно что Finder ожидает ее возрождения и у него уже есть заготовленная иконка для этой папки с логотипом Safari.
После создания папки Sites мы создадим две папки внутри для отдельных вебсайтов — Foo и Bar.
Создать папку можно с помощью Finder, но мы сделаем это через Terminal, из учебных соображений. Для создания директорий есть команда mkdir (сокращение от make directory). После mkdir должен быть указан путь в файловой системе к создаваемой папке. Символом тильда (
) обозначается ваш домашний каталог (это сокращение принято во всех Unix системах). Таким образом, следующая команда позволит создать папку Sites внутри вашей домашней директории:
Как узнать что команда сработала и папка создалась? Выполните:
Команда ls (сокращенно от list), показывает содержимое указанной директории, в данном случае она покажет содержимое нашей домашней директории так как в качестве пути стоит тильда
Папка Sites теперь будет показываться среди другого содержимого домашней папки.
Теперь создадим две папки для сайтов внутри Sites. Используем для этого mkdir:
С помощью ls убедитесь что папки созданы:
1.2. Создадим простой HTML файл
Можно, конечно, создать simple-text файл в TextEdit, и наполнить его HTML кодом, но мы по-прежнему будем использовать Терминал. Создавать файл удобно командой touch. Она либо создает новый пустой файл либо меняет дату изменения на текущую на указанном файле либо директории. Это удобно запомнить, так как touch == потрогать.
После выполнения этой команды проверьте папку foo — в ней должен находиться index.html.
От пустого index.html толку мало, нужно наполнить его HTML разметкой, и для этого мы воспользуемся редактором nano:
Откроется текстовый редактор прямо в окне Терминала. Внизу будут перечислены команды-подсказки. Символ ^ стоящий перед буквой означает что чтобы выполнить эту команду, нужно нажать клавишу Ctrl и соответствующую букву.
Добавьте следующие строки в файл
Закройте и сохраните файл используя клавишное сочетание Ctrl+X (выйти) потом Y (да, сохранить) и Enter.
Теперь подобный файл нужно положить еще и в папку Bar. Но вместо того, чтобы повторять описанные выше действия, мы отработаем новый навык — копирование. Для копирования существует команда cp. Скопировать index.html из foo в bar поможет такая конструкция:
А теперь откройте свежескопированный файл в nano:
Измените его содержимое, чтобы оно выглядело примерно так:
Теперь, когда у нас есть две папки с тестовыми файлами, можно переключиться на настройку Apache.
1.3. Настраиваем Apache
1.3.1. Конфигурационный файл Apache
Первым делом создадим новый конфигурационный файл, который будет указывать вебсерверу Apache где находятся файлы сайта, которые нужно обслуживать. Конфигурационный файл должен состоять из вашего имени пользователя на данном компьютере и расширения ‘.conf’. Например, у меня этот файл называется andrey.conf. Еще не знаете как узнать свое имя пользователя? Выполните в Терминале команду:
Теперь нам нужно переместиться в директорию /etc/apache2/users и создать там .conf-файл. Apache будет его искать именно там. Переместитесь в эту папку командой cd:
Здесь вы создадите файл username.conf, где username — это ваше имя пользователя. Для того чтобы создать файл по этому пути, потребуется использовать префикс sudo, поскольку эта часть файловой системы относится к системным файлам, и по умолчанию, пользователю не разрешается вносить в них изменения. Можете в этот раз не использовать touch, а просто указать после вызова текстового редактора nano имя нового файла:
Еще раз проверьте что вместо username вы подставили свое реальное имя пользователя!
Откроется новый пустой текстовый файл в редакторе nano, в который нужно добавить следующее содержимое:
И снова замените username на ваше имя пользователя. Закройте Ctrl+X редактор, укажите сохранить (Y) документ, и нажмите Enter для подтверждения.
Теперь подкорректируем права доступа, чтобы Apache мог прочитать этот новосозданный файл. Для изменения прав доступа воспользуйтесь командой:
опять-таки, измените username на реальный. Не особо углубляясь в детали структуры прав доступа в Unix системах, вам нужно понимать, что три цифры ‘6’ ‘4’ ‘4’ указывают уровень доступа для Владельца (Owner) Группы (Group) и Прочих (Other). Цифра 6 для владельца указывает что владелец может читать и писать (read/write), 4 и 4 соответственно указывают, что группа и прочие могут лишь читать (read).
Теперь, когда конфиг-файл создан, и у него установлены корректные права доступа, включим ключевые модули вебсервера Apache.
1.3.2. Включаем модули в httpd.conf
На следующем шаге нам нужно переместиться назад или вверх на один уровень, в папку /etc/apache2. Сейчас, вы наиболее вероятно находитесь в /etc/apache2/users (если не переходили никуда с прошлого шага). Чтобы переместиться на уровень вверх (перейти в родительскую папку), используйте команду cd и две точки вместо указания имени папки:
Перешли? Проверьте, что вы находитесь в правильном месте командой pwd (сокращение от print working directory):
Команда должна показать: /etc/apache2.
В папке /etc/apache2 первым делом следует создать резервную копию существующего httpd.conf файла. Используем уже знакомую для копирования команду cp:
Этой командой мы скопируем httpd.conf в новый файл с именем httpd.conf.bak. Резервная копия никогда не помешает, на случай если мы захотим вернуть все как было, или хотя-бы посмотреть синтаксис оригинального файла.
Теперь, когда есть резервная копия, внесем необходимые правки в httpd.conf. Откроем его с помощью nano:
В этом файле мы включим несколько модулей. ‘Включить’ означает раскомментировать строку с названием модуля. Комментарии в данном файле представляют собой такие значки: #
Так как файл httpd.conf не маленький, найти в нем что-то может оказаться затруднительно. Поэтому можете использовать поиск, доступный по сочетанию клавиш Ctrl+W. В результате, следующие модули/строки должны быть раскомментированы:
Когда уберете # и таким образом, активируете перечисленные выше модули, сохраните и закройте httpd.conf.
1.3.3. Редактируем httpd-userdir.conf
После того как мы обновили файл httpd.conf, нужно внести изменения в httpd-userdir.conf, который находится в папке extra:
Как и в предыдущем случае, обязательно создадим резервную копию файла перед изменением:
Теперь используя уже знакомый нам тектовый редактор nano, поработаем с httpd-userdir.conf:
Раскомментируйте указанную ниже строку, удалив # перед ней:
1.3.4. Перезагрузка Apache
Внеся указанные выше изменения в:
нужно перезагрузить Apache, чтобы изменения вступили в силу. Выполните для перезагрузки Apache команду:
После перезапуска Apache можно проверить результат с помощью браузера (Safari, Firefox, или что вы там используете).
1.3.5. Просмотр локальных веб-сайтов
Перейдите по адресу http://localhost/
username, только не забудьте поменять username на свое имя пользователя. Если все настроено верно, вы увидите содержимое папки Sites, среди которого будут созданные нами ранее
/Sites/bar. Если щелкнуть на foo или bar, откроется заготовленная нами веб-страница которая выводит Hello World. Apache видит наличие html-файла по умолчанию, а именно index.html и при переходе в папку автоматически загружает index.html.
На этом первая часть настройки Apache завершена, и теперь статические веб-сайты размещенные в папке Sites или во вложенных папках будут доступны к просмотру через браузер.
2. Настройка виртуальных хостов — опционально
Если вам приходится работать над несколькими проектами одновременно, или вы по каким-то другим причинам не хотите добираться до своих локальных сайтов, указывая несколько вложенных папок в строке адреса, типа http://localhost/
username/foo или http://localhost/
username/bar, можно настроить локальные доменные имена для каждого проекта. В таком случае сайт, размещенный в
/Sites/foo будет доступен по адресу foo.localhost, а сайт из папки
/Sites/bar будет доступен соответственно по bar.localhost. Так удобнее, правда?
Использование виртуальных хостов позволяет описать несколько блоков VirtualHost, в каждом из которых будут указаны переменные ServerName — имя сервера/адрес сайта и DocumentRoot — путь к файлам сайта в файловой системе. Таким образом, Apache будет знать, что если пользователь зашел по адресу ServerName (напр. foo.localhost), то показать ему сайт из папки DocumentRoot (напр. /Users/john/Sites/foo).
Обратите внимание: используя VirtualHosts, нам придется отказаться от индексированного представления на localhost, и нужно будет отредактировать hosts файл вашего Mac, добавив в него уникальные имена хостов для каждого проекта.
Следуя хорошей традиции, создайте бекап файла описывающего виртуальные хосты — httpd-vhosts.conf. Этот файл располагается по адресу /etc/apache2/extra, и его копию мы сделаем уже знакомой нам командой cp:
Теперь отредактируйте httpd-vhosts.conf, добавив блоки ‘VirtualHost’ для каждого из сайтов, в нашем случае — для foo.localhost и bar.localhost. Редактируем, как обычно, редактором nano:
В результате у вас должен получиться файл httpd-vhosts.conf следующего содержания:
Сохраните и закройте httpd-vhost.conf. Теперь нам необходимо внести изменения в файл /etc/hosts, добавив туда доменные имена foo.localhost и bar.localhost. Файл /etc/hosts очень важный. Он существует в любой операционной системе (путь может отличаться) и представляет собой локальный DNS. Именно его в первую очередь проверит браузер, чтобы узнать, не указан ли для запрашиваемого URL IP адрес. Если не указан — обратится к внешнему DNS, который указан в настройках сети.
Будьте внимательны редактируя файл hosts. Добавьте ваши записи в низ файла и не изменяйте первых три строчки!
Откройте файл /etc/hosts с помощью nano:
Если вы ранее не вносили никаких правок в этот файл, он должен выглядеть так:
Добавьте в него свои локальные доменные имена, и файл будет выглядеть примерно так:
Сохраните и закройте /etc/hosts.
Прежде чем мы сможем проверить что мы понастраивали, нужно перезапустить Apache:
После перезапуска Apache, заходим на foo.localhost и bar.localhost веб-браузером, оба сайта должны выдавать соответствующий index.html.
3.0. Включаем модуль PHP — опционально
Модуль PHP встроен в веб-сервер Apache на macOS Sierra, и чтобы его использовать, достаточно его просто включить. Если вы — PHP разработчик, то наверняка захотите активировать PHP на своем Mac. Обратите внимание, что macOS Sierra поставляется с PHP версии 5.6.3. И в этом руководстве мы просто активируем этот модуль. Если вам нужны новые возможности и улучшенная производительность PHP 7.2, придется обновить версию PHP на вашем Mac, но эта тема выходит за пределы этой статьи, поэтому, мы еще рассмотрим этот вопрос отдельно.
Обратимся еще раз к файлу httpd.conf:
Найдите и раскомментируйте в этом файле строку:
Теперь (если перезапустить Apache), сервер сможет обрабатывать файлы с расширением .php. Apache будет передавать такой файл на обработку интерпретатору PHP, потом получать результат и отдавать его в ответ на HTTP запрос.
3.1. Интерпретация PHP кода внутри HTML файлов
Часто бывает ситуация, когда мы имеем дело не с чистыми .php файлами, а php код располагается в виде вставок в .html файлах. И он тоже должен быть как-то обработан. Чтобы реализовать это, внесем изменения в httpd-vhosts.conf:
Добавьте следующий блок кода в самый верх файла:
Теперь httpd-vhosts.conf будет выглядеть примерно так:
И после всех этих изменений перезапустим Apache:
3.2. Проверка работы PHP модуля
А теперь проверим, все ли у нас корректно работает. Для начала создадим обычный .php файл:
Поместите в него php-код следующего содержания или любой другой php-код:
Сохраните и закройте. Теперь, при обращении по адресу foo.localhost/example.php, браузер должен отобразить надпись «Hello, PHP World!» в стиле соответствующем тегу H1.
Также желательно протестировать как будет интерпретироваться PHP код, вставленный в HTML документ. Открываем на редактирование index.html:
Добавим несколько строк PHP кода в самое начало файла, этот код будет задавать переменную $day, присваивая ей текущее значение дня недели. И потом в теле HTML документа мы выведем значение переменной $day:
Когда вы обратитесь браузером по адресу foo.localhost, вы должны увидеть какой сейчас день недели с учетом часового пояса.
На этом настройка Apache завершена, и ваш компьютер теперь представляет собой практически полноценный веб-сервер.
Как мы увидели на втором шаге, использовать виртуальные хосты очень удобно, так как они дают возможность запустить условно неограниченное количество вебсайтов либо для разработки, либо для тестирования, либо для пользования в локальной сети.
Конечно, немаловажный вопрос о версии PHP. К сожалению, в Sierra используется уже немного подустаревший и в плане функционала и в плане производительности PHP 5.6.3. В High Sierra, насколько мне известно уже предустанавливается PHP 7.1. В любом случае, обновление до 7.2 крайне желательно, но эту тему мы рассмотрим уже в другой статье.
Оставьте первый комментарий
Оставить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Источник