Установка PHP как модуль сервера Apache. Инструкция по установке Apache 2.4 + PHP 5.6 на Windows. Серверная связка PHP + Apache

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику Веб-программирование и ее раздел PHP. В данной записи мы установим PHP как модуль сервера Apache на компьютер под управлением Windows 10. Отмечу сразу, что инструкция по установки серверной связки PHP 5.6 + Apache 2.4 подойдет всем пользователям, у которых установлена Windows 7 и выше, к сожалению, на Windows XP и Vista эта инструкция не сработает. Также хочу сказать, что данную запись не стоит рассматривать только как инструкцию по установки PHP + Apache на Windows.

Установка PHP как модуль сервера Apache. Инструкция по установке Apache 2.4 + PHP 5.6 на Windows. Серверная связка PHP + Apache

Установка PHP как модуль сервера Apache. Инструкция по установке Apache 2.4 + PHP 5.6 на Windows. Серверная связка PHP + Apache

Поскольку перед установкой серверной связки в виде PHP и Apache мы поговорим о том, как вообще работают серверные технологии и за счет чего мы можем взаимодействовать с посетителями наших сайтов. Поскольку мы собрались устанавливать PHP как модуль сервера Apache, то в этой записи мы в общих чертах разберемся с архитектурой веб-сервера Apache и, собственно, поймем что значит установить PHP как модуль Apache и в чем особенность такой работы этих двух приложения. И лишь в завершении этой записи вы найдете простую и подробную инструкцию по установки вышеописанной связки.


Серверная связка PHP + Apache: как работают серверные технологии

Перед тем, как начать установку сервера Apache 2.4 + PHP5.6 на компьютер под управлением Windows 10, давайте немного поговорим о том, как работают серверные технологии и конкретно наша связка PHP + Apache. Начнем мы немного издалека и дойдем до нашей связки.

Первое и самое главное: любой сайт для конечного пользователя или посетителя в браузере представляет собой HTML страницу, которую создает браузер, анализируя HTML документ и ее структуру. Посетитель сайта видит HTML элементы на странице, которые получаются путем интерпретации HTML тэгов и HTML атрибутов браузером. Сайты в принципе могут быть статическими, а все логика и интерактивность может быть заключена в HTML ссылках, которые будут помогать посетителям передвигаться по сайтам.

Для работы статических сайтов не нужен никакой сервер, ведь HTML документы мы можем просматривать локально, так как браузеры могут спокойно работать с файловой системой компьютера, но такой подход, при котором сайты статические недостаточно гибок и не предоставляет нам интерактивных возможностей взаимодействия с посетителями сайта. Гораздо интереснее, когда на сайте может происходить взаимодействие с пользователем, то есть когда сайт является динамическим.

Для такого сайта нужен целый набор различных технологий, начиная с базы данных, управление которой происходит при помощи СУБД (например, сервер MySQL, библиотека SQLite или PostgreSQL) и заканчивая различными языками программирования, например, язык PHP – является серверным языком и при помощи него реализуются различные серверные возможности. А язык JavaScript – создает интерактивность на стороне клиента.

В данной публикации наибольший интерес для нас представляют серверные технологии и непосредственно связка PHP + Apache. Стоит отметить, что динамические сайты реализуются намного сложнее, чем статические, во-первых, из-за наличия целого стека технологий. Во-вторых, динамические сайты уже подразумевают деление функционала и ролей на клиентские и серверные. То есть в основе динамических сайтов лежит архитектура взаимодействия клиент-сервер.

В данном случае в качестве клиентского приложения выступает браузер, а в качестве серверного приложения выступает связка Apache + PHP (на самом деле эта связка может быть расширена другими приложениями и технологиями). Если смотреть на сеть Интернет глазами веб-мастера или веб-разработчика, то взаимодействие в Интернете происходит по протоколу HTTP (который находится на седьмом уровне сетевой модели OSI), реализует это взаимодействие как раз-таки сервер Apache (мы уже рассматривали установку Apache 2.4 на Windows). Язык PHP в данном случае мы можем рассматривать, как средство, которое позволяет выполнять две базовые вещи:

  1. Управлять взаимодействием по протоколу HTTP.
  2. Обращаться к базе данных для того, чтобы добавлять данные в таблицы базы данных, при этом не важно кто эти данные добавляет: посетитель сайта, оставляя на нем комментарий, или администратор сайта, публикующий очередную статью. Или опять же обращаться к базе данных для выборки данных из базы данных или удаления данных из таблиц базы данных.

Общую схему взаимодействия посетителя с динамическим сайтом, находящимся на веб-сервере, вы можете увидеть на рисунке ниже.

Общая схема взаимодействия посетителя с динамическим веб-сайтом

Общая схема взаимодействия посетителя с динамическим веб-сайтом

Теперь немного поговорим о взаимодействие по протоколу HTTP и работе динамических сайтов. Отметим, что ни в один браузер в мире не встроен интерпретатор PHP кода, поэтому браузер не может его исполнять, в отличии от кода JavaScript. Весь PHP код выполняется на сервере, а браузер лишь получает результаты его работы. Этот процесс можно описать довольно просто следующим образом:

  1. Мы знаем, что обмен данными по протоколу HTTP происходит при помощи HTTP сообщения, их структура строго описана в стандарте HTTP.
  2. Перед тем, как начать обмениваться информацией браузер и сервер Apache устанавливают постоянное HTTP соединение, для которого используется TCP порт 80 или его псевдоним 8080.
  3. После установки соединения происходит обсуждения содержимого HTTP сообщений. В процессе обсуждения браузер и сервер договариваются о том, в каком виде они будут обмениваться информацией при помощи служебных полей HTTP заголовка.
  4. Сообщения, которые посылает браузер серверу получили название HTTP запросы клиента. Особенность запросов заключается в том, что такие сообщения содержат HTTP методы, которые позволяют понять серверу, что от него хочет браузер.
  5. Сообщения, отправляемые сервером, получили название HTTP ответы сервера, их особенность заключается в том, что они содержат специальные коды состояния, которые помогают понять браузеру то как его понял сервер Apache. В HTTP выделяют пять классов состояния: успешные коды состояния, которые начинаются с двойки; информационные коды состояния (все они начинаются с единицы); коды перенаправления, которые начинаются с тройки; коды ошибок клиента, они начинаются с четверки и коды ошибок сервера, которые начинаются с пятерки. Вообще, любой код состояния состоит из трех цифр, а его класс определяется первой цифрой.
  6. Обратим внимание, что процесс обмена сообщениями последователен, то есть сперва браузер посылает запрос серверу Apache или в общем случае HTTP серверу, а затем сервер посылает ответ. Таким образом происходит разделение функций: браузер отвечает за отображения информации посетителю сайта, а сервер отвечает за обработку этой информации и ее хранение.

Простейшая схема взаимодействия веб-клиента с сервером HTTP показана на рисунке ниже.

Простейшая схема взаимодействия веб-клиента с сервером HTTP

Простейшая схема взаимодействия веб-клиента с сервером HTTP

Обратим внимание, что процесс взаимодействия между браузером может быть локальным: в этом случае сервер Apache, PHP и другие серверные технологии установлены на одну и ту же машину, что и браузер или клиент. Таким образом можно разработать, настроить и протестировать сайт перед тем, как будет куплено доменное имя сайта и арендован хостинг, то есть перед тем, как он появится в сети Интернет.

Для некоторых пользователей установка связки PHP + Apache может показаться довольно утомительной и нудной, поэтому специально для таких людей были созданы готовые серверные сборки, в качестве примера можно привести локальный сервер AMPPS или сборку Денвер. Они вполне удобны и на 100% удовлетворят потребности новичков в мире веб-разработки, а также потребности 70-80% разработчиков. Для тех, кто хочет понять как работают серверные технологии и детально разобраться с работой веб-серверов рекомендуется ручная сборка веб-сервера, при которой мы можем самостоятельно, в процессе установки, настроить сборку под свои специфичные нужды. В данной же публикации мы будем устанавливать связку Apache 2.4 + PHP 5.6 на Windows и при этом PHP будет работать, как модуль сервера Apache.

Ранее мы уже разобрались с вопросами что такое PHP и что такое Apache, теперь нам стоит немного поговорить о том, что такое модуль сервера Apache и в чем его особенности, так как отдельной публикации пока нет, об этом мы поговорим в следующем разделе данной публикации, а затем составим инструкцию по установки Apache + PHP на Windows.

Что представляет собой модуль сервера Apache в Windows

Когда мы рассматривали процесс установки PHP на Windows без Apache с использованием встроенного веб-сервера, то говорили, что PHP в связки Apache может работать как его модуль, а можно сделать так, чтобы PHP работал как обработчик CGI. В первом случае PHP является частью архитектуры сервера Apache и поток PHP (в случае с Windows) работает параллельно с потоками других модулей сервера Apache.

Чтобы детально разобраться с тем, что собой представляет модуль в Apache и в чем будет заключаться особенность установки PHP как модуль сервера Apache, давайте немного разберемся с архитектурой веб-сервера Apache, для начала отметим, что Apache состоит из нескольких частей:

  1. Первая часть – это ядро сервера Apache, которая выполняет основные функции веб-сервера, реализует взаимодействие по протоколу HTTP и осуществляет обработку запросов.
  2. Вторая часть является конфигурационной, она представляет собой текстовые файлы, при помощи которых происходит настройка сервера Apache. Конфигурация сервера Apache осуществляется в файле httpd.conf. Для конфигурации виртуального хоста Apache служит файл extra/httpd-vhosts.conf. Для конфигурации отдельных директорий Apache используется файл .htaccess.
  3. Третий уровень архитектуры Apache является платформозависимым и реализует мультипроцессорные модели. Мультипроцессорные модели Apache очень хорошо развиты для операционных систем семейства UNIX.
  4. Четвертый уровень архитектуры Apache представляет собой модули для данного сервера. Модули сервера Apache разрабатываются как сторонними разработчиками, так и компанией Apache Software Foundation. На данный момент насчитывается более 500 модулей для сервера Apache, которые существенно расширяют возможности ядра.
  5. И наконец пятый уровень представляет собой механизм виртуальных хостов в Apache, благодаря которому хостинги стали доступными для обычных пользователей сети Интернет.

Рисунок ниже схематично демонстрирует модульную архитектуру сервера Apache.

Модульная архитектура сервера Apache

Модульная архитектура сервера Apache

Итак, мы собрались устанавливать PHP, как модуль сервера Apache, следовательно, в данном случае PHP и Apache можно рассматривать как единое целое, грубо говоря, одно многофункциональное приложение, так как PHP будет как бы встроен в архитектуру Apache, каждый модуль Apache при выполнении своих функций создает поток, а PHP будет лишь одни из потоков сервера Apache.

Но обратите внимание на то, что PHP в данном в случае можно лишь условно назвать встроенным в Apache, естественно, он будет модулем Apache, но их взаимодействие будет происходит при помощи специального программного кода, который является связующим звеном между средой PHP и сервером Apache, этот код в Apache оформлен в виде отдельного модуля.

Особенность установки Apache + PHP на Windows заключается в модуле MPM, который появился тогда, когда была разработана версия Apache для операционных систем семейства Windows. Этот модуль реализует мультипроцессорные модели и управляет взаимодействием ядра сервера с операционной системой и другими модулями.  Модуль MPM имеет две модели: Worker и Prefork. Первая модель thread safe, вторая модель non-threaded, а как вы помните мы скачивали PHP версии Thread Safe.

Инструкция по установке PHP 5.6 + Apache 2.4 на Windows 10

Мы детально разобрались с техническими тонкостями, теперь давайте составим небольшую инструкцию по установке Apache 5.6 + Apache 2.4 на Windows, естественно, устанавливать PHP мы будем как модуль сервера Apache. Также заметим, что во многих книгах и на многих сайтах авторы усердно копируют друг друга и говорят: сначала мы должны установить сервер Apache, настроить его, а только потом устанавливать PHP, а только после PHP мы можем устанавливать и конфигурировать сервер MySQL.

Все это чушь, все эти три приложения независимы друг от друга и прекрасно могут работать по отдельности. Другое дело, что мы не сможем заставить работать PHP, как модуль сервера Apache, собственно, без самого Apache, но нам ведь никто не мешает установить и настроить PHP, а затем установить Apache и связать их вместе.

Для установки связки PHP + Apache нам потребуется редактор, хорошо если редактор будет удобным и многофункциональным, мы можем порекомендовать вам выбрать один из четырех редакторов, все они кроссплатформенные, имеют подсветку синтаксиса, очень активное сообщество и множество поклонников по всему миру:

  1. HTML редактор Notepad++ — очень удобный и бесплатный редактор для веб-разработчика, имеет функцию удаленного доступа к серверу по FTP протоколу.
  2. CSS редактор Brackets – прекрасный инструмент для верстальщика, разработанный компанией Adobe, что удивительно, Brackets бесплатный, он в первую очередь ориентирован на фронт-энд разработку.
  3. JavaScript редактор Sublime Text 3 – единственный минус этого редактора заключается в том, что он платный. То, что Sublime Text 3 это JavaScript редактор – сугубо личное мнение автора, основанное на огромном количестве модулей, упрощающих разработку на JavaScript.
  4. Интегрированная среда разработки NetBeans в редакции PHP. Среда NetBeans была разработана на Java для Java программистов, но из-за того, что данная среда оказалась удобной, многофункционально и в то же самое время простой в освоении, она получила несколько редакций для направлений отличных от Java.

Ранее мы уже рассматривали процесс установки Apache 2.4 на Windows 10, в котором мы разобрались с тем откуда скачать Apache и с тонкостями его установки на Windows. Также мы уже говорили о том, как установить PHP на Windows без Apache: здесь мы разобрались с особенностями версий PHP, выбрали версию, которую необходимо скачать, чтобы эта версия работала в Windows и, собственно, установили PHP.

Теперь давайте установим связку Apache + PHP по инструкции ниже и сделаем так, чтобы PHP работал как модуль Apache:

  1. Первое, что нам необходимо сделать – скачать PHP и скачать Apache. О том где и как это сделать мы писали ранее в соответствующих инструкциях, поэтому повторяться не будем.
  2. Второе, мы собираемся устанавливать связку PHP и Apache на Windows, при этом PHP должен быть установлен как модуль Apache. Другими словами, получится единая серверная технология и этих два приложения условно можно будет рассматривать как одно целое. Поэтому для удобства администрирования и поддержания работоспособности сервера логично будет продумать единую файловую архитектуру, мы это сделали уже ранее, когда устанавливали Apache на Windows.

Папки для серверной связки PHP + Apache

Папки для серверной связки PHP + Apache

  1. Обратите внимание на структуру папок общий каталог называется сервер и расположен он у нас в корне диска C (вы можете выбрать любое удобное для вас место). В папку php нам следует распаковать архив, полученный с официального сайта PHP.

Папка с PHP после распаковки

Папка с PHP после распаковки

  1. Теперь нам стоит сказать, что связка PHP 5.6 и Apache 2.4 будет работать только на операционной системе Windows 7 или выше.
  2. Теперь нам нужно прописать путь к PHP в системную переменную PATH. О том, как прописать значение переменной PATH в Windows мы говорили, когда устанавливали SQLite на Windows, а когда мы устанавливали SASS на Windows мы говорили о том, как добавить значение в переменную PATH в Windows 10. В нашем случае путь будет следующим: с:\server\php.
  3. Также добавим еще одно значение в переменную PATH для установленного ранее сервера Apache: c:\server\apache\bin.
  4. Находим файл httpd.conf, в нашем случае он находится по пути: с:\server\apache\conf и добавляем в него следующее содержимое (эти строки можно добавить в конец файла httpd.conf):

  1. В файле httpd.conf находим переменную DirectoryIndex и заменяем ее значение на: index.html index.php.
  2. Создаем PHP файл с содержимым: <?php phpinfo ()?>. И сохраняем данный файл в папку www, созданную ранее, этот файл мы назовем index.php.
  3. Если у вас уже запущен Apache, то сделайте рестарт, чтобы конфигурации Apache вступили в силу, если нет, то запустите Apache при помощи приложения ApacheMonitor.
  4. Откройте браузер и в адресной строке наберите: http://localhost/index.php. Если у вас в папке www нет файла index.html, то наберите: http://localhost/. Вы увидите, что связка PHP6 + Apache 2.4 действительно работает, а PHP является модулем веб-сервера Apache.
  5. Теперь займемся небольшой конфигурацией PHP. Найдите файл php.ini-development в папке c:/server/php и переименуйте его, а еще лучше сделайте его копию с именем php.ini. Файл php.ini отвечает за конфигурации PHP.
  6. Откройте файл php.ini и сделайте несколько изменений:

  1. В данном случае мы указали PHP где находятся его расширения, а также указали папку, куда будут записываться временные файлы. Чтобы изменения вступили в силу, не забудьте перезапустить Apache, так как теперь PHP является его модулем.

На этом мы можем сказать, что инструкция по установки связки PHP + Apache на Windows завершена. PHP работает как модуль сервера Apache, поэтому его конфигурации зависят от Apache, а следовательно, чтобы конфигурации PHP вступали в силу, нужно перезагружать Apache. Чтобы посмотреть расширения PHP, которые на данный момент установлены и работают, выполните команду в командой строке Windows: php -m или откройте файл index.php, созданные нами ранее в браузере.

Не забывайте делиться своим мнением в комментариях и оставлять отзывы, это поможет сделать нашу работу лучше, с уважением ZametkiNaPolyah.ru!

Текст комментария: