Зарегистрируйтесь, чтобы продолжить обучение

Веб-сервер Веб-разработка на PHP

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

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

Первым и простым способом взаимодействия веб-сервера с кодом сайта был стандарт CGI (Common Gateway Interface). Он был разработан с учетом того, что сервер не должен зависеть от языка программирования, используемого для написания сайта. Он использует переменные окружения для передачи параметров запроса веб-серверу.

Сайт представляет собой исполняемый файл, который запускается веб-сервером во время обработки входящего запроса и передает в него все параметры запроса через переменные окружения. Всё, что требуется от скрипта, — это вернуть HTTP-ответ в стандартный вывод (STDOUT). Общий алгоритм работы выглядит так:

  1. Клиент запрашивает страницу сайта
  2. Веб-сервер принимает запрос и устанавливает переменные окружения. Через них приложению передаются данные и служебная информация
  3. Веб-сервер перенаправляет запросы через стандартный поток ввода (stdin) на вход вызываемой программы
  4. CGI-приложение выполняет все необходимые операции и формирует результаты в виде HTML
  5. Сформированный гипертекст возвращается веб-серверу через стандартный поток вывода (stdout). Сообщения об ошибках передаются через поток ошибок (stderr)
  6. Веб-сервер передает результаты запроса клиенту

CGI

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

Реализации

Существует много разных веб-серверов. Некоторые из них встроены в PHP, а другие — общего назначения.

Самым эффективным и популярным веб-сервером на данный момент является Nginx. С ним нам и стоит познакомиться. Для разработки он не понадобится, так как в PHP встроен свой сервер, но в продакшен-среде без него никак.

Помимо этих серверов в PHP мире до сих пор популярен Apache. Его можно использовать только в случае, если нет другого выбора, например, если хостинг предлагает только его. В остальных случаях предпочтительнее использовать Nginx. Это связано с различиями в работе самих серверов. Apache работает по модели «поток за запрос», что является более затратным и медленным в сравнении с асинхронной моделью Nginx.


Самостоятельная работа

Установите nginx и убедитесь в том, что он запускается и работает. Сделать это можно по одному из руководств в сети, которые гуглятся так: php nginx <имя вашей операционной системы>. Это задание повышенной сложности. Если не получается прямо сейчас, то не тратьте время, сначала пройдите курс, а затем попробуйте еще раз.


Дополнительные материалы

  1. Сетевые сокеты
  2. CGI
  3. FastCGI

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»