Разное

Принцип работы apache сервер: что это такое и как работает

29.01.2023

Основы HTTP-сервера, запросы, методы — веб-серверы Apache и nginx.

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

Речь в статье идёт именно о внешних веб-серверах, а не о бек-енде (например, node.js) приложений.

Простой пример работы веб-сервера: посетитель вводит адрес вашего сайта и, после обработки DNS-сервером (название сайта => ip-адрес), запрос переходит к компьютеру, где расположен сайт. Думаю, что вы поняли, что компьютером является сервер, который вам предоставляет хостинг.

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

В зависимости от метода реакция сервера на запросы меняется.

  • GET — получить
  • POST — создать/опубликовать
  • PUT/PATCH — обновить
  • DELETE — удалить

Запросы делаются по определенным адресам. Но результаты обработки запросов с разными методами отличаются даже если вы используете один адрес. Например, запросы к странице /test.html с методами GET и DELETE будут обрабатываться противоположно. Первый запрос получит в ответ содержимое страницы, а второй эту страницу удалит.

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

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

Apache и nginx

Apache выпустили в 1995 году. Долгое время он был самым популярным решением, но в последнее время его обошёл nginx. Оба эти решения предоставляют всю основную функциональность и отличаются лишь очень специфичными вещами, которые могут заинтересовать только узкоспециализированных специалистов.

Оба веб-сервера бесплатны. Оба отличаются высокой производительностью, но nginx немного быстрее. Самое интересное, что их можно использовать вместе для решения определенных задач (так называемый реверс-прокси). То есть запросы принимает сначала nginx, некоторые из них обрабатывает сам, а некоторые (более сложные) отдаёт Apache, получая потом от него ответ.

У каждого из этих веб-серверов есть основные файлы настроек. В ubuntu они хранятся внутри папки /etc и получить к них доступ с обычного виртуального хостинга вы не сможете. Особенность Apache в том, что там можно разрешить использовать настройки из файла, который лежит в папке с сайтом. Файл этот называется .htaccess. Основной файл настроек nginx называется nginx.conf. Более подробную информацию об этих файлах с примерами можно посмотреть в отдельной статье.

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

Сайт, на котором вы сейчас находитесь, использует веб-сервер nginx. Причём настроено реверс-прокси, так как сайт является приложением nuxt. js + node.js. То есть на локальном порте 3000 внутри сервера через менеджер процессов pm2 запущено приложение (данный сайт). А nginx принимает запросы от посетителей и отдаёт их локальному приложению. Приложение обрабатывает запросы и отдаёт ответы для nginx. Затем nginx уже отдаёт ответ вам, посетителям.

Цифры

Полноценное изучение работы HTTP, методов запросов, включая практику — несколько недель.

Установка и настройка веб-сервера Apache или nginx на VDS/выделенный сервер — от 30 минут до 2 часов.

Тема 1. Введение в веб-разработку

Проектирование стороны клиента (frontend)

HTML+CSS+javascript.

Использование javascript-framework’ов

r

(jQuery, Dojo, KnockaoutJS, AngularJS и.т.д)

Использование встраиваемых компонент в веб-браузер.

r

(ActiveX или технологий виртуальных машин Abode Flash, Java, Microsoft Silverlight).

Плагины для браузеров

Совместное использование вышеперечисленных решений.

Технологии веб-разработки

• CMS (content management sytem)

• HTML5

• jQuery и ajax

• Адаптивный веб-дизайн и верстка.
CSS фрэймворки: Twitter Bootstrap,
Foundation и Skeleton.

MVC фреймворки:Zend framework,
CodeIgniter, ASP.net; (Model View
Controller)

MVVM (Model View View Model) —
AngularJS, KnockoutJS;

Веб-сервер

r

Веб-сервер — сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы, как правило, вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными .

Принцип работы простого HTTP-сервера

r

Основная задача HTTP сервера — это ожидание запросов от клиентов и отправка им ответов. Взаимодействие с клиентами происходит по протоколу HTTP (HyperText Transfer Protocol). Клиент (обычно веб-браузер) запрашивает ресурс (обычно HTML файл или графический файл). Сервер связывает запрос с файлом или направляет запрос программе, которая генерирует необходимые данные. После этого сервер отсылает ответ обратно клиенту 

Принцип работы HTTP-сервера Apache.

r

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

Развертывание веб-сайта(deployment)

Хостинг

r

Хостинг может быть следующих типов:Shared — виртуальный хостинг. Минусы: полное разделение всех аппаратных ресурсов между сотнями сайтов.VDS/VPS (Virtual Dedicated Server/ Virtual Dedicated Server ) – виртуальный выделенный сервер. Минусы: разделение аппаратных ресурсов, дисковая система, канал связи между десятками выделенных серверов; необходимость администрирования.Dedicated – физически выделенный сервер. Минусы: необходимость администрирования.Collocated – размещение собственного оборудования у провайдера.

Аспекты при выборе хостинга

r

• Предоставление соответствующих услуг. Возможность масштабирования выделяемых ресурсов.   Репутация хостинг-провайдера. Территориальная удалённость data-центров (центров обработки данных — ЦОД) хостинг-провайдера от целевой аудитории разрабатываемого web-ресурса.Пропускная способность каналов.Возможность использования (дополнительных или сторонних каналов доставки данных) CDN (content delivery network)

Проектирование стороны сервера (Backend)

Архитектурные решения

r

Проектирование серверной стороны можно разделить на следующие архитектурные решения:• Web-сайт на основе статических HTML-страниц без использования DHTML (Dynamic HTML).• Web-сайт c использованием языка программирования разработка с нуля.• Web-сайт на основе Content Management System (CMS). • Web-сайт на основе framework’а. (Zend Framevork, Laravel,CodeIgniter, Rybu on Rails, Microsoft ASP.net и.т.д.) 

Языки программирования

Скриптовые языки / интерпретаторы

r

PHPPerlRubyPython

Компилируемые языки / компиляторы

r

JavaC++

CMS системы

r

CMS ( Content management system — Система управления содержимым) — Информационная система используемая для обеспечения и организации совместного процесса создания, редактирования и управления содержимым.  На данный момент существует множество готовых CMS систем, как платных так бесплатных, с открытым исходным кодом или закрытым, разработанных на различных языках программирования и в различных программных архитектурах. В сети Internet существует так же множество обзоров и ресурсов где можно найти подходящую систему. В типовой конфигурации наборы web-разработчика имеют поддержку только скриптовых языков программирования (php, perl и.т.д.), для того что бы установить/настроить CMS разработанную на другом языке программирования необходимы дополнительные компоненты или другая платформа. Для возможности работы с CMS системами локально, необходимо создать рабочее окружение на вашем персональном компьютере. Необходим веб-сервер, интерпретатор выбранного языка программирования либо виртуальная машина, база данных и возможно другие компоненты в зависимости от выбранной CMS. Рекомендуется инсталлировать готовое программное окружение состоящее из выше перечисленных компонент, таким пакетом программ может быть набор разработчика: • DENWER • XAMPP • WAMPP • и др

Основные функции CMS

r

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

Как работает веб-сервер Apache?

Г. С. Джексон

i Jupiterimages/Photos.com/Getty Images

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

URL-адреса и протокол HTTP

Apache — это программное обеспечение веб-сервера, которое в основном обрабатывает запросы протокола передачи гипертекста через адресные запросы универсального локатора ресурсов. URL-адреса — это просто имя веб-сайта, которое пользователи вводят в веб-браузеры, чтобы найти веб-страницу. Когда пользователь вводит URL-адрес, браузер отправляет HTTP-запрос на серверный компьютер, на котором работает Apache, обычно через порт 80. HTTP-протокол — это стандартный интернет-протокол передачи данных для веб-страниц, поэтому, когда пользователь делает URL-запрос к Apache сервер, сервер Apache обработает HTTP-запрос и вернет запрошенные веб-страницы.

Многозадачность/многопоточность

Сервер Apache будет обрабатывать множество HTTP-запросов одновременно. Для этого сервер должен работать в нескольких «потоках» выполнения. Поток — это часть программы, которая является ответвлением от основной программы и выполняется одновременно для выполнения определенной задачи. Сервер Apache создаст новый поток для каждого HTTP-запроса, который будет обрабатывать выборку и возврат запрошенной веб-страницы. Это позволяет Apache обслуживать веб-страницы для нескольких пользователей одновременно.

Служба программ и файлов

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

Пакеты Apache

Сервер Apache поставляется как отдельный пакет, как часть более крупных программ веб-обслуживания и дополнен модулями для повышения его производительности. Популярной реализацией сервера Apache является стек LAMP (Linux, Apache, MySQL и PHP/Perl/Python). Эта конфигурация упаковывает сервер Apache с его возможностями веб-обслуживания с базой данных MySQL и языками сценариев, такими как PHP, чтобы обслуживать содержимое базы данных для обновленных веб-сайтов, таких как блоги.

Ссылки

  • O’Reilly Docstore: Начало работы (Apache: Полное руководство)
  • Soft Pixel: многопоточность в C

Writer Bio

Г. С. Джексон специализируется на темах, связанных с литературой, компьютерами и технологиями. Он имеет степень бакалавра гуманитарных наук по английскому языку и информатике Университета Южного Иллинойса в Эдвардсвилле.

Как работают веб-серверы?

Интернет служит для нас источником множества информации, и все, что нам нужно сделать, если нам нужна какая-либо информация, это просто запросить Интернет, и тогда мы получим желаемый ответ.
Но кто и как предоставляет нам эту информацию? Всему этому способствует то, что называется веб-сервером. Наряду с этим существуют браузеры как приложения, которые мы используем, такие как Internet Explorer, Mozilla Firefox, Chrome, Safari и т. д., для взаимодействия с Интернетом, просмотра и извлечения файлов на веб-сервере, известных как веб-клиенты.

Веб-серверы — это в основном простые компьютерные программы, которые выдают веб-страницы, когда они запрашиваются с помощью веб-клиента. Машины, на которых работает эта программа , обычно называются серверами, причем имена веб-сервер и сервер почти взаимозаменяемы.

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

 

Когда требуется веб-сервер?

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

 

  • Тот, кто владеет веб-сайтом (чтобы локальная копия в их системе напоминала то, что находится в Интернете).
  • Тот, кто хочет использовать серверные технологии, такие как PHP или ColdFusion, также может использовать веб-сервер.

 

Как работают веб-серверы?

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

Простой процесс состоит из 4 шагов:

  1. Получение IP-адреса из доменного имени: IP-адрес, на который разрешается доменное имя (например, для этой страницы доменное имя www.geeksforgeeks.org). Он может получить IP-адрес двумя способами:
    • Путем поиска в своем кеше.
    • Путем запроса одного или нескольких серверов DNS (системы доменных имен).
  2. Браузер запрашивает полный URL-адрес  : узнав IP-адрес, браузер теперь запрашивает полный URL-адрес с веб-сервера.
  3. Веб-сервер отвечает на запрос: Веб-сервер отвечает браузеру, отправляя нужные страницы, и в случае, если страницы не существуют или возникает какая-либо другая ошибка, он отправляет соответствующее сообщение об ошибке.

    Например:  

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

  4. Браузер отображает веб-страницу: Браузер, наконец, получает веб-страницы и отображает их или отображает сообщение об ошибке.

 

Популярные веб-серверы

Доступно довольно много веб-серверов, таких как Apache, Microsoft IIS, веб-сервер Nginx, веб-сервер LightSpeed. Но два самых популярных из них:

  1. HTTP-сервер Apache: Это самый популярный и широко используемый веб-сервер. Он разработан и поддерживается Apache Software Foundation. Программное обеспечение производится в соответствии с лицензией Apache, что делает его бесплатным и с открытым исходным кодом.
    Он доступен для различных операционных систем — Windows, Mac OS X, Unix, Linux, Solaris, Novell Netware и FreeBSD.
     
  2. Microsoft Internet Information Service: Microsoft IIS (Internet Information Service) является вторым наиболее часто используемым веб-сервером, и его доля на рынке довольно быстро увеличивается с каждым днем, и, вероятно, в ближайшие годы Apache будет капитально обновлен.
    Сервер IIS имеет все функции, как и Apache, но не с открытым исходным кодом. Он разработан и поддерживается Microsoft, поэтому он работает со всеми платформами операционной системы Windows.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *