• доступно о веб-разработке
01.10.2012 Интернет, Сервер ,

Веб-сервер

Веб-сервер

Сколь мощным и продвинутым не было бы компьютерное железо, без программного обеспечения оно бы таковым и оставалось. Поэтому софт (от англ. [[software]]) имеет не менее, а то и более важное значение, чем аппаратная составляющая.

Сегодня мы поговорим о веб-сервере. Это программа, которая в буквальном смысле «раздает» сайты с сервера по запросу клиентов, то есть нас с вами. Часто веб-сервер путают с просто «сервером», поэтому я искренне надеюсь, что после прочтения этого материала вы никогда не сможете подловить себя на этой неточности.

Давайте вспомним цепочку сигналов из предыдущих материалов.

  • Вы набираете адрес сайта в браузере.
  • Ваша система ищет IP-адрес сервера в кеше DNS. Если его нет на вашем компьютере, запрашивает его на DNS-серверах провайдера. Провайдер или сообщает IP-адрес, или сам ищет его по цепочке выше и обновляет запись у себя, отправив её вам.
  • Между вашим компьютером, имеющим внешний IP-адрес данный провайдером (узнать свой можно просто на 2ip.ru), и сервером с сайтом, который расположен по связанному с доменом IP-адресу, происходит соединение.

Соединение установлено, что дальше?

Порты

Теперь представьте себе, что на сервере могут работать и отдавать наружу информацию десятки или даже сотни программ.

Не станут же они через один канал выстраиваться в очередь? Верно.

Для этого была создана система портов.

Когда вы отправляете запрос, явным или неявным образом, вы отправляете его не только на нужный IP-адрес, но и заданный порт.

Например, вы пишете http://yandex.ru и жмете Enter. На самом деле все браузеры знают, что веб-сервер по-умолчанию работает на 80 порте.

Поэтому фактически вы делаете запрос http://yandex.ru:80 (попробуйте перейти по ссылке), потому что порт указывается после адреса через двоеточие.

Но, набирая адрес в строке запроса, вы могли не знать вообще, что отсылаете запрос на 80-ый порт. Теперь будете знать.

Сколько всего может быть портов? И снова по степени двойки, начиная от нуля — от 0 до 65535. То есть до двойки в 16-ой степени.

На деле, конечно, одновременно далеко не все они используются. Одни — для внутренних нужд системы, другие — для раздачи информации вовне.

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

Протоколы

Помимо портов существует понятие протоколов. Это как раз та самая известная приставка в адресе, которая идет до ://.

Вот некоторые из самых популярных протоколов:

  • http— HyperText Transfer Protocol. Протокол передачи гипертекста (текста со ссылками).
    • https — HyperText Transfer Protocol Secure. Безопасный протокол передачи гипертекста. Все данные шифруются специальным подписным сертификатом. Кстати, соц.сеть «ВКонтакте» недавно решила обезопасить своих пользователей от утечки данных в общественных местах, введя работу по этому протоколу. Мой комментарий здесь.
  • ftp — File Transfer Protocol. Протокол передачи файлов. Многим может быть знаком. Обычно работает на 21 порту сервера.

Апачи

Вы удивились, что на иллюстрации к посту делает индейская девушка?

Самый известный в мире веб-сервер называется Apache, от названия индейских племен. Создан он в 1995 году и обслуживает и по сей день миллионы сайтов.

Должно быть, совесть не дремлет в генах американского народа, и стыд за геноцид миллионов индейцев дает о себе знать.

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

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

Давайте от лирики перейдем к практическим знаниям.

Итак, Апач принимает запрос клиента на сервере. В принципе, его можно настроить для работы на любом порту, но изначально он работает на 80-ом, как было сказано выше.

Когда программа запускается, она считывает конфигурационный файл, который обычно называется httpd.conf.

В этом файле прописаны все настройки программы.

Наиболее важными являются:

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

<VirtualHost 178.63.26.3:8080> //IP-адрес:порт / В данном случае он нестандартный, так как сигнал идет через еще один более быстрый сервер Nginx (отечественный)
ServerName cogear.ru //Домен
DocumentRoot /home/cogear/data/www/cogear.ru //Папка на сервере с файлами сайта
SuexecUserGroup cogear cogear  //Пользователь и группа на сервере из под имени которых вызываются файлы
CustomLog /home/httpd-logs/cogear.ru.access.log combined // Запись лога с информацией о доступе
ErrorLog /home/httpd-logs/cogear.ru.error.log // Запись лога с ошибками
ServerAlias www.cogear.ru xn--c1akeqm.xn--p1ai *.xn--c1akeqm.xn--p1ai // Альтернативные имена домена
ServerAdmin webmaster@cogear.ru // Электропочта для связи с админом в случае ошибок
// Параметры для языка программирования PHP
php_admin_value open_basedir "/home/cogear/data:."
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@cogear.ru"
php_admin_value upload_tmp_dir "/home/cogear/data/mod-tmp"
php_admin_value session.save_path "/home/cogear/data/mod-tmp"
// Соответствие типа файлов особому модулю языка PHP
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
AddType application/x-httpd-php-source .phps
</VirtualHost>

Сам по себе веб-сервер может отдавать только статические файлы.

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

Обо всем этом вы узнаете в следующих материалах, поэтому пока не забивайте себе голову. Всему свое время.

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

Но вернемся к веб-серверу.

Согласно вот таким вот, типа указанной выше, инструкциям, веб-сервер знает как обработать поступивший сигнал.

Он идет в указанную параметром DocumentRoot папку на сервере и ищет там один из файлов указанный в параметре DirectoryIndex.

В данной конфигурации его нет, так как он указан единожды глобально для всех сайтов.

Обычно он выглядит так:

DirectoryIndex index.html index.php

Уверен, что вы могли заметить, что главная страница многих сайтов как раз находится по указанным адресам.

Если в директории сайта лежит указанный файл, то он либо отдается (index.html — просто файл с разметкой страницы), либо отправляется в обработчик языка программирования (index.php — в интерпретатор PHP через модуль Апача mod_php). В последнем случае Апач получает ответ от своего модуля, и он уже отправляется нам в браузер в виде сгенерированной разметки сайта.

Языки программирования в начале XXI века позволили от простых сайтов, представленных просто набором html-файлов перейти к созданию сложных систем управления сайтами, интегрированных с базами данных и другими системами. Сегодня практически каждый сайт представляет собой такую систему, которые называются CMS (Content Management System, система управления содержимым).

И все это будет предметом нашего дальнейшего изучения.

Поэтому следите за обновлениями в блоге. До скорых встреч.

Поделиться

Комментарии Правила дискуссии

Читайте ранее:
Хостинг
Хостинг

Уверен, что многие завсегдатаи Рунета слышали это слово и не один раз. Но не все в полной мере понимают его...

Закрыть