6 что такое web сервер – что это такое, как он работает, как обеспечить доступ и что нужно, чтобы создать свой

Содержание

Веб-сервер и сервер приложений 2020

Хотя термины Web-сервер и сервер приложений часто используются взаимозаменяемо, чтобы относиться к одной и той же вещи, то есть для обеспечения надлежащего функционирования веб-сайта, но это не одно и то же. Скорее, они работают вместе, чтобы доставлять контент с веб-сайтов конечным пользователям. Веб-сервер может ссылаться на программу, которая принимает и выполняет входящие запросы от клиентов для веб-ресурсов по всему миру. Он обслуживает эти запросы вместе с необязательным содержимым, которое обычно представляет собой HTML-страницы, файлы изображений, видеофайлы и т. Д. Сервер приложений обслуживает динамический контент для конечных пользователей, используя разные протоколы, включая HTTP. В этой статье объясняется разница между ними.

Что такое веб-сервер?

Веб-сервер - это не что иное, как программная программа, предназначенная для обработки веб-запросов. Он принимает входящие запросы в виде статического контента, который в основном является компонентами веб-сайта, включая HTML-страницы, графические и видеофайлы и т. Д. Затем он отвечает на запросы по протоколу HTTP вместе с дополнительным содержимым данных. Основная задача веб-сервера - предоставлять контент в World Wide Web, чтобы сделать их доступными для конечных пользователей. Он может относиться к системе, состоящей из оборудования или программного обеспечения, или к тому, где хранятся веб-содержимое. Говоря простыми словами, веб-сервер - это компьютер, который доставляет веб-страницы по мере их запроса. Apache - самый популярный и широко используемый веб-сервер с открытым исходным кодом, разработанный и поддерживаемый Apache Software Foundation.

Что такое сервер приложений?

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

Разница между веб-сервером и сервером приложений

Основы веб-сервера и сервера приложений

Веб-сервер относится к оборудовани

Собеседование по Java EE - WEB (вопросы и ответы)

Общие вопросы и ответы по web в разделе Java Enterprise Edition.

к списку вопросов раздела JEE

Вопросы

1. Что такое www?
2. Что такое w3c?
3. Что такое TCP/IP?
4. Что такое ftp?
5. Чем отличаются http и https?
6. Что такое протокол передачи данных, какие вы знаете?
7. Что такое web server?
8. Что такое web приложение?
9. Что такое application server?
10. Чем отличаются web server и application server?
11. Какие методы передачи данных вы знаете?
12. Чем отличаются методы get и post?
13. Что такое html?
14. Что такое xml?
15. Что такое css?
16. Что такое MIME type?
17. Что такое cookies?
18. Что такое сессия?
19. Дайте определение понятиям “авторизация” и “аутентификация”, в чем их различия?

20. Что такое Ajax? Как принципиально устроена эта технология?
21. Что такое ORM, как это перевести и как это должно работать?

Ответы

1. Что такое www?

Всемирная паутина (англ. World Wide Web) — распределённая система, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключённых к Интернету. Для обозначения Всемирной паутины также используют слово веб (англ. web «паутина») и аббревиатуру WWW.

Всемирную паутину образуют сотни миллионов веб-серверов. Большинство ресурсов Всемирной паутины основаны на технологии гипертекста. Гипертекстовые документы, размещаемые во Всемирной паутине, называются веб-страницами. Несколько веб-страниц, объединённых общей темой, дизайном, а также связанных между собой ссылками и обычно находящихся на одном и том же веб-сервере, называются веб-сайтом. Для загрузки и просмотра веб-страниц используются специальные программы — браузеры (англ. browser).

2. Что такое w3c?

Консорциум Всемирной паутины (англ. World Wide Web Consortium, W3C) — организация, разрабатывающая и внедряющая технологические стандарты для Всемирной паутины. Консорциум возглавляет сэр Тимоти Джон Бернерс-Ли, автор множества разработок в области информационных технологий.

3. Что такое TCP/IP?

Стек протоколов TCP/IP — набор сетевых протоколов передачи данных, используемых в сетях, включая сеть Интернет. Название TCP/IP происходит из двух наиважнейших протоколов семейства — Transmission Control Protocol (TCP) и Internet Protocol (IP), которые были разработаны и описаны первыми в данном стандарте.

Стек протоколов TCP/IP включает в себя четыре уровня:

  • прикладной уровень (application layer),
  • транспортный уровень (transport layer),
  • сетевой уровень (Internet layer),
  • канальный уровень (link layer).
4. Что такое ftp?

FTP (англ. File Transfer Protocol — протокол передачи файлов) — стандартный протокол, предназначенный для передачи файлов по TCP-сетям (например, Интернет). Использует 21-й порт. FTP часто используется для загрузки сетевых страниц и других документов с частного устройства разработки на открытые сервера хостинга.

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

5. Чем отличаются http и https?

HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов в формате HTML, в настоящий момент используется для передачи произвольных данных). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.

HTTPS (аббр. от англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS. В отличие от HTTP, для HTTPS по умолчанию используется TCP-порт 443.

HTTPS – не самостоятельный протокол передачи данных, а HTTP с надстройкой шифрования. В этом ключевое и единственное отличие.

  1. HTTP – непосредственно протокол передачи данных, HTTPS – расширение этого протокола.
  2. HTTPS используется для защищенного посредством шифрования  обмена данными.
  3. HTTPS применяется в том числе и для авторизации на серверах, требующих повышенного внимания к безопасности данных.
  4. HTTP работает с портом 80, HTTPS – с портом 443.
6. Что такое протокол передачи данных, какие вы знаете?

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

Примеры сетевых протоколов
TCP/IP — набор протоколов передачи данных, получивший название от двух принадлежащих ему протоколов: TCP (Transmission Control Protocol) и IP (Internet Protocol)

Наиболее известные протоколы, используемые в сети Интернет:

HTTP (Hyper Text Transfer Protocol) — это протокол передачи гипертекста. Протокол HTTP используется при пересылке Web-страниц между компьютерами, подключенными к одной сети.

FTP (File Transfer Protocol) — это протокол передачи файлов со специального файлового сервера на компьютер пользователя. FTP дает возможность абоненту обмениваться двоичными и текстовыми файлами с любым компьютером сети. Установив связь с удаленным компьютером, пользователь может скопировать файл с удаленного компьютера на свой или скопировать файл со своего компьютера на удаленный.
POP (Post Office Protocol) — это стандартный протокол почтового соединения. Серверы POP обрабатывают входящую почту, а протокол POP предназначен для обработки запросов на получение почты от клиентских почтовых программ.
SMTP (Simple Mail Transfer Protocol) — протокол, который задает набор правил для передачи почты. Сервер SMTP возвращает либо подтверждение о приеме, либо сообщение об ошибке, либо запрашивает дополнительную информацию.
TELNET — это протокол удаленного доступа. TELNET дает возможность абоненту работать на любой ЭВМ находящейся с ним в одной сети, как на своей собственной, то есть запускать программы, менять режим работы и так далее. На практике возможности ограничиваются тем уровнем доступа, который задан администратором удаленной машины.

7. Что такое web server?

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

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

8. Что такое web приложение?

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

9. Что такое application server?

Сервер приложений (англ. application server) — это программная платформа (фреймворк), предназначенная для эффективного исполнения процедур (программ, скриптов), на которых построены приложения. Сервер приложений действует как набор компонентов, доступных разработчику программного обеспечения через API (Интерфейс прикладного программирования), определённый самой платформой.

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

10. Чем отличаются web server и application server?

Сервер приложений (англ. application server) — сервер, исполняющий некоторые прикладные программы. Сервер-приложений — объект, который обрабатывает запросы, связанные с приложениями, точнее для выполнения прикладных процессов (выборка данных, поиск данных, работа с терминалами). По идее эта технология изначально вообще не была связана с Web’om, однако, сейчас чаще говорят сервер web приложений. Практически используется для работы с базами данных.

Веб-сервер — это сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы. Web-сервер — объект, который обрабатывает запросы, в частности http-запросы. Браузер в данном случае клиент, который делает запросы (POST, GET).

11. Какие методы передачи данных вы знаете?

Основными являются методы POST и GET.

12. Чем отличаются методы get и post?

Метод GET.
Метод GET удобен тем, что прост в эксплуатации. Но у него есть недостатки. Во-первых, методом GET нельзя передавать большие объемы информации, потому что данные, передаваемые этим методом входят в состав URL, длина которого ограничена. Так как данные, передаваемые методом GET входят в состав URL документа, их может подсмотреть любой желающий. У этого есть преимущества и недостатки. Преимущество состоит в том, что можно послать ссылку вместе с данными другу. Недостаток в том, что в строке браузера отображается и ваш, только что введенный пароль. Это одна из причин, почему данные, представляющие ценность, всегда нужно передавать методом POST.

Метод POST.
Как и метод GET, метод POST служит для передачи данных на сервер. Однако, данные, переданные таким образом, идут не в URL документа, а в теле запроса, после заголовков. Эти данные могут быть восприняты CGI-программой.

Когда данные отправляются методом POST, серверу приходит что-то вроде:

POST lines.pl HTTP/1.1 Accept: */* Referer: http://example.com/example.html Accept-Language: ru Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Host: example.com Content-Length: 106 Connection: Keep-Alive Cache-Control: no-cache line=%E4%E0%ED%ED%FB%E5+%F4%EE%F0%EC%FB%2C %EF%E5%F0%E5%E4%E0%E2%E0%E5%EC%FB%E5+%EC%E5%F2%EE%E4%EE%EC+POST

POST lines.pl HTTP/1.1

Accept: */*

Referer: http://example.com/example.html

Accept-Language: ru

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

Host: example.com

Content-Length: 106

Connection: Keep-Alive

Cache-Control: no-cache

 

line=%E4%E0%ED%ED%FB%E5+%F4%EE%F0%EC%FB%2C

%EF%E5%F0%E5%E4%E0%E2%E0%E5%EC%FB%E5+%EC%E5%F2%EE%E4%EE%EC+POST

Плюсы метода POST очевидны: можно передавать неограниченные объемы информации, причем, никто не увидит эту информацию после того, как вы ее отправили (имеется ввиду, в строке браузера).

Но есть и недостатки:

  • Медленнее, чем GET, так как анализируются заголовки и тело запроса.
  • Страницы, сгенерированные как результат запроса POST, нельзя добавить в закладки (СЕО-недружелюбен)
  • Кроме того, если необходимо «протащить» данные через несколько форм или страниц, то это вызовет дополнительные трудности.
13. Что такое html?

HTML – это язык разметки. Вы используете HTML для разметки текстового документа, точно так же, как это делает редактор при помощи жирного красного карандаша. Эти пометки служат для определения формата (или стиля), который будет использован при выводе текста на экран монитора.

14. Что такое xml?

XML, или Язык Расширяемой Маркировки — eXtensible Markup Language, — спроектирован для того, чтобы предоставить Web-разработчикам возможность определения содержания более сложных документов, причем с более корректным “отображением данных”, нежели ранее. XML разрабатывался как язык с простым формальным синтаксисом, удобный для создания и обработки документов программам и одновременно удобный для чтения и создания документов человеком, с подчёркиванием нацеленности на использование в Интернете. Язык называется расширяемым, поскольку он не фиксирует разметку, используемую в документах: разработчик волен создать разметку в соответствии с потребностями к конкретной области, будучи ограниченным лишь синтаксическими правилами языка.

15. Что такое css?

CSS (Cascading Style Sheets — каскадные таблицы стилей) – одна из базовых технологий в современном Интернете. Нечасто можно встретить сайт, свёрстанный без применения CSS. CSS-код – это список инструкций для браузера, – как и где отображать элементы веб-страницы, написанный особым образом.

16. Что такое MIME type?

MIME (Multipurpose Internet Mail Extensions, многоцелевые расширения интернет-почты) — стандарт Интернет, является частью протокола HTTP. Задача MIME это идентификация типа содержимого документа по его заголовку. К примеру, текстовый файл имеет тип text/plain, а HTML-файл — text/html. Отправка заголовка обычно происходит на основе расширения файла веб-сервером.
Internet Media Types — типы данных, которые могут быть переданы посредством сети интернет с применением стандарта MIME. Ниже приведен список MIME-заголовков и расширений файлов.

Согласно RFC 2045, RFC 2046, RFC 4288, RFC 4289 и RFC 4855[2] выделяются следующие базовые типы передаваемых данных:application, audio, example, image, message, model, multipart, text, video.

17. Что такое cookies?

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

аутентификации пользователя;
хранения персональных предпочтений и настроек пользователя;
отслеживания состояния сеанса[en] доступа пользователя;
ведения статистики о пользователях.

18. Что такое сессия?

Сессия (от англ. session) – промежуток времени между первым и последним запросами, которые пользователь отправляет со своего устройства (компьютера, телефона) к серверу сайта. Во время одной сессии посетитель совершает какие-либо активные действия: переходит по ссылкам, заполняет формы, скачивает данные – вся подобная информация записывается и хранится в так называемом лог-файле сайта. Завершается сессия в случае, если со стороны пользователя не поступало запросов в течение определенного промежутка времени или же при обрыве связи.

19. Дайте определение понятиям “авторизация” и “аутентификация”, в чем их различия?

Авторизация (англ. authorization — разрешение, уполномочивание) — предоставление определённому лицу или группе лиц прав на выполнение определённых действий; а также процесс проверки (подтверждения) данных прав при попытке выполнения этих действий. Часто можно услышать выражение, что какой-то человек «авторизован» для выполнения данной операции — это значит, что он имеет на неё право.

Аутентификация — процедура проверки подлинности, например:

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

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

20. Что такое Ajax? Как принципиально устроена эта технология?

AJAX — это аббревиатура, которая означает Asynchronous Javascript and XML. При использовании AJAX нет необходимости обновлять каждый раз всю страницу, так как обновляется только ее конкретная часть. Достоинства AJAX:

  • Возможность создания удобного Web-интерфейса
  • Активное взаимодействие с пользователем
  • Частичная перезагрузка страницы, вместо полной
  • Удобство использования

AJAX использует два метода работы с веб-страницей: изменение Web-страницы не перезагружая её, и динамическое обращение к серверу. Второе может осуществляться несколькими способами, в частности, XMLHttpRequest, о чем мы и будем говорить, и использование техники скрытого фрейма. Для того, чтобы осуществлять обмен данными, на странице должен быть создан объект XMLHttpRequest, который является своеобразным посредником между браузером пользователя и сервером. С помощью XMLHttpRequest можно отправить запрос на сервер, а также получить ответ в виде различного рода данных.

21. Что такое ORM, как это перевести и как это должно работать?

ORM (англ. Object-Relational Mapping, рус. объектно-реляционное отображение) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Существуют как проприетарные, так и свободные реализации этой технологии.

к списку вопросов раздела JEE
31

11914 Total Views 2 Views Today

Views: 10 096

Ответы@Mail.Ru: Что такое Web-сервер?

Веб-сервер — это сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы, обычно вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными. Веб-серверы — основа Всемирной паутины. Веб-сервером называют как программное обеспечение, выполняющее функции веб-сервера, так и непосредственно компьютер (см. : Сервер (аппаратное обеспечение)) , на котором это программное обеспечение работает. Клиент, которым обычно является веб-браузер, передаёт веб-серверу запросы на получение ресурсов, обозначенных URL-адресами. Ресурсы — это HTML-страницы, изображения, файлы, медиа-потоки или другие данные, которые необходимы клиенту. В ответ веб-сервер передаёт клиенту запрошенные данные. Этот обмен происходит по протоколу HTTP.

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

Если я понял вы ищите нормальный сервер, тогда вам можно обратиться в одну известную фирму. Без проблем приобретете https ://sartelekom.ru

Лёгкие Web-серверы

Специализированные HTTP-приложения дополняют Apache и другие ведущие Web-серверы

Камерон Лейрд
Опубликовано 23.10.2007

Comments

Применение в проектах "лёгких" Web-серверов, таких как lighttpd, litespeed и mongrel, дает впечатляющие преимущества. В этой статье мы представляем обзор возможностей и показываем, как их можно применять.

Что должен делать Web-сервер?

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

  • Web-браузера, такого как Firefox или Internet Explorer, который показывает в удобной для человеческого восприятия форме запрашиваемую страницу, которую он получает от…
  • Web-сервера, находящегося, как правило, на удалённой машине, который отвечает на запрос страницы потоком данных в формате HTML или аналогичном.

С браузерами имеют дело Web-пользователи, которые подходят к их выбору и анализу с надлежащей тщательностью. Напротив, серверы видны только техническому персоналу сайтов. Более того, хотя существует множество различных Web-серверов, около 90% всех сайтов, согласно недавним исследованиям Netcraft, работают всего на двух из них - Apache и Internet Information Server (IIS). Оба эти сервера – тщательно проработанные продукты, обладающие не только очень длинным списком встроенных возможностей, но и процветающим "вторичным рынком" книг, дополнений, консультаций, провайдеров и т.д. Надо ли вновь изобретать обычное колесо?

Да. Web-сервер оценивается по целому ряду важнейших параметров:

  • Эффективность: как быстро он отвечает на запрос?
  • Масштабируемость: продолжает ли сервер работать надёжно, когда к нему одновременно обращаются много пользователей?
  • Безопасность: совершает ли сервер только те операции, которые должен? Какие возможности он предлагает для аутентификации пользователей и шифрования потока обмена информацией? Делает ли его использование более уязвимыми соседние приложения или хосты?
  • Работоспособность: какие у сервера режимы отказа и аварийные ситуации?
  • Соответствие стандартам: поддерживает ли сервер соответствующие RFC?
  • Гибкость: можно ли настроить сервер для принятия большого количества запросов или динамических страниц, требующих значительных вычислений, или сложной аутентификации, или ...?
  • Требования к платформе: на каких платформах возможно использование сервера? Предъявляет ли он особые требования к аппаратной платформе?
  • Управляемость: легко ли установить и обслуживать сервер? Совместим ли он с организационными стандартами по ведению журналов, аудиту, оценке затрат и т.д.?

Apache и IIS не могут оптимизировать так много критериев одновременно. В принципе ясно, что нишевые продукты могут превзойти лидеров рынка по крайней мере в одной-двух из этих характеристик.

Самое интересное в лёгких Web-серверах, то, почему они заслуживают такого обзора, как этот – это их далеко не теоретическая конкурентоспособность. Внимательное исследование показывает, что они могут предложить очень многое и за счёт этого успешно конкурировать с Apache и IIS даже во многих обычных ситуациях. Хотя разумно было бы предположить, что лидеры рынка тщательно оптимизированы, чтобы быть непобедимыми (например) в производительности, многие мелкие конкуренты работают быстрее при простом отображении статических Web-страниц. Если вы проделаете свои собственные тесты с этими Web-серверами, у вас возникнет чувство, что вы случайно оказались на гоночном треке на карте и каким-то непостижимым образом обгоняете «порше» и «вайперы». И это еще не всё: временами лёгкие Web-серверы дополняют своих больших братьев, а не только соревнуются с ними. Даже если вы знаете, что будете использовать Apache, иногда удается получить от него гораздо больше, объединив его с лёгким партнёром. Часто наилучшее решение состоит в кооперации между двумя или более Web-серверами.

Лёгкость Web-сервера

"Лёгкость", на которой фокусируется этот обзор – это скорее субъективная характеристика, как "искусство" или "аромат". Обычно "лёгкий" подразумевает простой, легко инсталлируемый, хорошо налаженный, нетребовательный и устойчивый – меньшего размера и менее сложный, чем Apache и IIS, которые в попытке удовлетворить свой большой рынок превратились в довольно громоздкие конструкции. Из-за сложности и размера мы исключаем из рассмотрения Java Web Server, AOLserver и Zeus, несмотря на их интригующую переносимость и производительность.

Достаточно лёгкие серверы открывают возможности, недоступные лидерам рынка и другим "тяжёлым" альтернативам. К примеру, весь сервер может поместиться в одном файле. Это удобно для разработчика, так как позволяет носить с собой все инструменты, которые нужны ему для продуктивной работы; даже если вы используете на вашем производственном сервере Apache, вы можете сидеть в гостиничном номере и экспериментировать с новыми идеями, запуская их на лёгком сервере, инсталляция которого занимает секунды. Также из-за своей нетребовательности лёгкие серверы успешно функционируют на машинах, которые просто не могут выдержать тяжесть IIS.

Упаковка в один файл

Apache требует аккуратной инсталляции многих файлов, разбросанных по нескольким каталогам. Контраст с описанными ниже Web-серверами, некоторые из которых помещаются в одном исполняемом файле, разителен. Одна из специальностей моего работодателя, Phaseit, – развёртывание и сборка установочных пакетов, и мы умеем сделать инсталляцию Apache на вид проще, чем обычно. Но даже когда мы используем наш лучший способ, всё-таки есть огромная разница в "следах" от Apache или IIS или лёгких серверов: первые просто занимают много места.

Маленькие лёгкие Web-серверы также неплохо работают на машинах малой производительности. В нашей собственной компании (Phaseit – см. врезку) мы используем специализированное оборудование, работающее на промышленных компьютерах в удалённых системах, в жёстких условиях или в условиях недостаточного электропитания. В этих ситуациях большим преимуществом является возможность обрабатывать Web-страницы каким-то приложением, которое не требует большой производительности или пространства на диске; это значит, что наши машины могут иметь встроенные доступные через Web управляющие консоли, без сложностей разработки и накладных расходов, характерных для Apache.

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

  • YouTube использует lighttpd для быстрой доставки архивированного контента, например, видео;
  • cdServe работает на CD-дисках "German Woodworking Machinery and Tools";
  • LiteSpeed «отметился» в twitter, www.funnyoride.com, www.airliners.com, WordPress.com, fanfiction.com, SlashGear, www.forumactif.com и в других заметных Web-сайтах;
  • OpenSUSE, RubyOnRails, MarkaBoo и несколько других заметных сайтов опираются на Mongrel;
  • thttpd работает на ht.com, mtv.com, The Drudge Report, garfield.com и др.
  • и т.д.

Вот пример удобства лёгких серверов для разработчиков: в нашей компании мы имеем дело со специальным оборудованием для офисной телефонии. С ним используется специализированное программное обеспечение, которое работает как обычное Linux®-приложение. С помощью всего одного дополнительного файла и небольшой настройки init.d легко добавить высокоэффективную "Web-консоль", которая обеспечивает управляющий интерфейс для аппаратного и программного обеспечения. Конечные пользователи получают возможность отслеживать и конфигурировать свою аппаратуру из любого браузера без установки специального оборудования и других сложностей, которые были характерны для "вертикального" оборудования.

Сервис-ориентированные архитектуры (SOA) имеют репутацию трудных и капризных. По крайней мере часть проблем, по нашему опыту, решается правильной реализацией Web-сервиса. С помощью лёгких Web-серверов мы организуем быстрые установки SOA для демонстраций.

Лёгкие серверы играют свою роль даже в реальных вычислительных центрах, включая перечисленные выше солидные сайты и не только их. Особо высокопроизводительные сайты сегментируют свои операции, чтобы извлечь максимальную выгоду из кэширования, прокси-серверов и т.д. Сайт на основе Apache, к примеру, может иметь архитектуру, в которой медленно изменяющиеся изображения доставляются посредством «минималистского» Web-сервера из выделенной файловой системы. То, что видит в действительности конечный пользователь – это результат командной работы Apache и одного или нескольких дополнительных Web-серверов, каждый из которых играет роль, в которой он превосходит остальных. Такая конструкция может дать очень быстрые результаты с минимальными затратами на вычисления.

Цели и средства

Хотя лёгкие Web-серверы имеют много общего, внутри данной категории есть и различия. Большинство серверов написаны на C, но среди серверов, которые я тестировал, есть и ряд успешных реализаций на других языках, в том числе на Erlang, Java, Lisp, Lua, Perl, Python и Tcl. Если вы предпочитаете какой-либо язык, вы, возможно, найдёте Web-сервер, написанный на нем.

Для того чтобы выбрать "редкий" язык, может быть множество специфических причин:

  • Образование: работа с лёгким Web-сервером – это серьёзная, но не запредельная задача. Это хороший способ получить опыт работы с языком.
  • Кооперация: в то время как лёгкий Web-сервер, написанный на С, обычно укладывается в 10-50 килобайт, а исполняемые файлы более высокоуровневых языков занимают от 100 килобайт до нескольких мегабайт, исходный код для полного Web-сервера на языке высокого уровня может занимать всего несколько тысяч байт. Такой небольшой код намного легче использовать совместно с коллегами, чем модифицировать Apache.
  • Исследование: языки высокого уровня делают облегчают эксперименты – например, для добавления новых возможностей HTTP/1.1 может потребоваться всего несколько дополнительных строчек кода. Эти лёгкие серверы – удобный экспериментальный материал.
  • Модификация: добавление HTTP-сервера к существующему приложению, уже написанному на языке высокого уровня, может потребовать увеличения исходного кода всего на несколько строк.

Хорошим примером здесь может служить Athana. Это Web-сервер, написанный на Python. Он поддерживает HTTP multipart (uploading), сессии, cookies и многое другое. Существующий в настоящее время в версии 0.2.1, Athana пока помещается в одном прекрасно организованном исходном файле.

Как уже говорилось, возможности различных лёгких Web-серверов также варьируются, более или менее независимо от использованного языка. Все лёгкие Web-серверы меньше и конфигурируются легче, чем Apache. Некоторые из них быстрее, чем Apache, некоторые намного быстрее; в других упор сделан на безопасность, бесперебойную работу при больших загрузках, расширяемость или экономию памяти. В любом случае в них скорее всего можно полностью разобраться, что уже нереально для Apache.

Какие конкретные продукты стоят за этими возможностями? Даже ограничившись "лёгкими" серверами, мы получаем необозримо огромный выбор. Рассмотрим эти серверы по подкатегориям: ультралёгкие, особо защищенные, использующие особый язык и так далее.

Среди этих категорий я особенно люблю ультралёгкие Web-серверы – те, которые намного меньше, чем Apache. Приложения такого размера могут уместиться в голове обычного человека; их работу можно представить себе систематически и строго, чтобы строго доказать их безопасность или масштабируемость. К числу очень маленьких Web-серверов относятся:

  • Cheetah Server, содержащий менее тысячи строк на C.
  • DustMote, очень маленький Web-сервер, реализованный в одном Tcl-исходнике размером примерно 3000 байт.
  • fnord занимает менее 20K, в зависимости от платформы и конфигурации. Несмотря на маленький размер, он поддерживает виртуальный хостинг, CGI и keep-alive.
  • ihttpd, имея менее 800 строчек C, умеет обслуживать страницы, включая CGI, посредством inetd.
  • mattows поддерживает CGI, насчитывая при этом всего лишь 600 строк на C.
  • Scrinchy, несмотря на маленький размер - около 30 KB - поддерживает примечательно много языков сценариев, включая специализированный стековый язык под названием Sy.
  • ZWS показывает, как можно написать содержательное приложение – в данном случае сервер HTTP 0.9+ – немногим более чем из 500 строк хорошо откомментированного zsh (!).

Маленький размер не препятствует серьёзному использованию этих серверов; fnord, например, обслуживает тысячи одновременных соединений.

Возможно, наиболее впечатляющая категория легких серверов по достижениям – высокопроизводительные серверы:

  • cghttpd – минимальный Web-сервер, который можно рассматривать как эксперимент по использованию асинхронных средств, доступных в ядрах Linux серии 2.6.
  • darkhttpd – быстрый однопоточный сервер HTTP/1.1.
  • Gatling специально разработан для высокой производительности. Поддерживает FTP, IPv6, виртуальный хостинг, CGI и т.п.
  • Kernux – модуль ядра Linux, который обеспечивает выполнение HTTP-демона.
  • lighttpd – пятый по популярности Web-сервер в мире (и его доля растет!). Он оптимизирован под большое количество одновременных соединений: "Типичный сценарий – использование lighttpd как сервера, разгружающего основной сервер, для выдачи статического контента..."
  • LiteSpeed Web Server – коммерческий лёгкий Web-сервер, в котором особый упор сделан на производительность и безопасность. LiteSpeed Technologies Inc. заявляет об ускорении в шесть раз для статического контента и несколько более скромных показателях для интерпретируемых страниц.
  • Miniature JWS, известный также как tjws - написанный на Java Web-сервер, который обрабатывает сервлеты, JSP и тысячи параллельных соединений, занимая 77 килобайт. Его автор характеризует его так: "на 10% быстрее, чем Apache 2.x."
  • Yaws – высокопроизводительный сервер HTTP/1.1, написанный на Erlang.

Многие Web-серверы реализованы как классы или библиотеки, разработанные для встраивания в большие приложения. Среди них особенно интересны:

  • EHS – "встраиваемый HTTP сервер," класс C++, разработанный для встраивания в большие C++ приложения; и
  • Embedded TCL Web Server, простейший Web-сервер, поддерживающий SSL и Basic Authentication и при этом фантастически быстрый – по замерам автора, не менее быстрый, чем lighttpd и AOLserver. Содержит меньше сотни строк Tcl.

На языке Python реализованы несколько Web-серверов, которые заполняют необычные ниши, в том числе:

  • cdServer - маленький простой http-сервер на Python, "разработанный для выдачи (статического) контента с CD-ROM". Имеет ограниченные возможности в обслуживании динамического контента. У нас есть несколько проектов, которые включают доставку непортящихся "live CD", и инструменты типа cdServer являются для них критическими.
  • edna – остроумный MP3-сервер на Python, основанный на HTTP.

Есть и другие интересные лёгкие Web-серверы, реализованные на Perl и на других, не так хорошо известных, языках:

  • Camlserv – полный Web-сервер, написанный на ocaml и нацеленный на "высокоинтерактивные Web-страницы". Умещается в нескольких тысячах строчек ocaml, большинство из которых посвящено специальным возможностям работы с MySQL и HTML.
  • dhttpd протоколирует обращения в том же формате, что и Apache. Имеет встроенный Perl-интерпретатор для поддержки CGI, виртуальный хостинг, IPv6, управление пропускной способностью и возможности безопасности.
  • DNHTTPD написан на Perl для UNIX®. Он поддерживает виртуальные хосты, SSL соединения, CGI и другое.
  • Jellybean – написанный на Perl сервер Perl Object Server, основанный на HTTP.
  • lns.http – общая Web-среда на LISP HTTP/1.1.
  • Mongrel – библиотека и сервер для HTTP, написанные на Ruby.
  • Nanoweb – быстрый, устойчивый Web-сервер, написанный на PHP. Имеет обширный список возможностей, включая полное соответствие HTTP/1.1, контроль обращений, аутентификацию, виртуальный хостинг, SSL совместимость и т.д.
  • Naridesh – написанный на Perl Web-сервер.
  • OpenAngel – написан на Perl. Его фокус – безопасность.
  • Xavante – HTTP/1.1 Web-сервер, написанный на Lua.
  • XSP написан на C# и выполняет роль ведущего узла ASP.NET.

Однажды вам могут понадобиться и некоторые другие написанные на C лёгкие Web-серверы с необычными дополнительными возможностями:

  • ABYSS переносим между UNIX и Win32 и претендует на то, чтобы "быть полностью HTTP/1.1-совместимым Web-сервером". Экономичен в использовании памяти.
  • Anti-Web HTTPD (также "Anti-Web", "awhttpd" и "AW") однопроцессный (не многопоточный), поддерживающий CGI сервер, в котором особое внимание уделено безопасности и простоте.
  • MHTTPD поддерживает MHTTPD Basic Authentication как из внешнего файла, так и при помощи LDAP-сервера.
  • mini-httpd обрабатывает параллельные запросы в одном потоке и нетребователен к хосту в плане памяти и процессора.
  • Naken Web похож на множество других лёгких серверов – поддерживает Basic Authentication, статический контент и т.д. – но авторы нацеливали его на операции для Web-камер и применяли на Gumstix, WRT54GL, OpenWrt и других инновационных платформах.
  • Null httpd – многопоточный, но простой и портативный Web-сервер.
  • Seminole – коммерческий Web-сервер, не требует много памяти и имеет много возможностей.
  • thttpd поддерживает регулирование пропускной способности, реализует chroot, Basic Authentication и т.д.

Заключение

Мир Web-серверов состоит не только из Apache и IIS, их гораздо больше. В вашем распоряжении широкий выбор альтернативных решений – настолько маленьких, что их можно полностью понять, и при этом достаточно быстрых для серьёзных приложений. Возможно, одно из них поможет вам ускорить ваш следующий проект.

Ресурсы для скачивания
Похожие темы
  • Lightweight Web servers – оригинал этой статьи на developerWorks (EN).
  • LinuxLinks и Wikipedia – обновляемый список лёгких Web-серверов.(EN)
  • Хотите узнать, какое серверное ПО работает на данном сайте (или Заявлено как работающее)? Посмотрите в Netcraft(EN).
  • Netcraft считает что 1.2% (или пятое место) на рынке Web-серверов принадлежит lighttpd, и Serverwatch считает, что рост обусловлен администраторами, которые ищут альтернативу Apache(EN).
  • Три венгерских исследователя описывают "Портативные минимальные Web-серверы (Portableminimal Web servers)" на примерах двух серверов, написанных ими на C и bash, соответственно (EN).
  • "Реализация лёгкого Web-сервера для объединения ресурсов и масштабируемости (Implementing a Lightweight Web Server for Resource Pooling and Scalability)" – типичные для всех упомянутых здесь серверов рекомендации по применению и модели использования, хотя язык реализации, Java, представлен среди них в меньшинстве (EN).
  • Изобретатель REBOL показывает возможности языка на примере этого одностраничного Web-сервера, написанного на REBOL (EN).
  • Скачать бесплатно пробное ПО от IBM, включая таких любимцев публики, как IBMHTTP-сервер, WebSphereApplication Server Community Edition и другие.(EN)
  • Подписка на наши новости.(EN)

Подпишите меня на уведомления к комментариям

Sources.RU Magazine - Создание личного веб-сервера: основные понятия и технологии


Автор: polyglott

Предисловие

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

Вступление

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

Провести ликбез я предлагаю радикальным способом: создайте свой веб-сервер. Причём не уступающий функционально серверу, к примеру, "яндекса". Вы скоро убедитесь, что это не требует денежных затрат и по силам каждому. Нам потребуется только персональный компьютер под управлением операционной системы Windows 2000 (Pro, Server) или похожей (XP, 2003) и соединение с интернетом. Я уверен, что лет через 20 в мире (или, как сейчас модно говорить, "на рынке") личных серверов с личными сайтами будет столько же, сколько сейчас мобильных телефонов.

Что такое сервер

Начнём с определения. Сервер (от to serve - служить) - это программа, способная принимать запросы от других программ и выдавать им ответ; то есть, обслуживающая другие программы. Предположим, что у нас есть программа calc.exe, способная понимать запросы в виде математических выражений и выдавать результат вычисления этих выражений. Это будет самый что ни на есть типичный сервер! Программа, способная делать запросы к другой программе и получать от неё ответ, называется клиентом.

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

Веб-сервер - это серверная программа, обрабатывающая запросы по протоколу HTTP. Протокол HTTP регламентирует вид запросов на получение гипертекстовой информации и вид ответов на эти запросы. Роль клиентов веб-серверов чаще всего играют навигаторы, но ими также могут быть менеджеры закачек и разные другие программы. Когда вы набираете в адресной строке навигатора "http://rambler.ru", он делает запрос HTTP к соответствующему серверу с просьбой получить главную страницу, а полученную страницу отображает в своём окне.

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

Теория и практика клиентсерверного взаимодействия

Итак, смысл жизни программы-сервера - обслуживать программы-клиенты. Как одна программа может обратиться к другой? Современные операционные системы (Windows, *NIX и др.) предоставляют для этих целей два основных средства: каналы (pipes) и сокеты (по-русски - розетки). Причём при помощи сокетов (я буду употреблять этот американизм по причине всеобщего непонимания русских слов) клиент может обратиться не только к серверу, запущенному на том же компьютере, где он сам, но и к расположенному на другом компьютере, доступ к которому происходит через сеть. Все сетевые протоколы (HTTP, FTP,...) предполагают клиент-серверное взаимодействие только через сокеты.

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

Кстати, из-за внутренней ошибки программа может выдать не то, что у неё запросили. Например, та же ICQ (а ошибок в ней тьма) может вдруг выдать удалённому клиенту содержимое какого-нибудь файла на вашем компьютере (а этот файл может содержать какой-нибудь ваш пароль).

Какие порты открыты у вас в данный момент, и кто к ним подключен, можно посмотреть в фаирволе (если ваша фаирволь поддерживает такую возможность) или утилитой "fport". Если запустить ICQ, то в списке портов вы обнаружите что-то вроде "ICQLITE.EXE TCP all:4752", то есть, открыт порт 4752 (проверьте).

Номер порта можно назвать адресом программы внутри компьютера. Но для осуществления межсокетной коммуникации нужно ещё знать адрес компьютера внутри сети. Каждый компьютер тоже имеет номер, называемый адресом IP. Адрес IP - 4-байтное число. Чаще всего каждый байт записывают отдельно через точку, например "1.2.3.4", хотя можно и в шестнадцатеричном или восьмеричном виде, например "0x01020304".

Адреса от 127.0.0.0 до 127.255.255.255 зарезервированы для работы внутри собственного компьютера, и адрес 127.0.0.1 практически всегда адресует собственный компьютер. Адреса в диапазонах 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.0.0 и 192.168.0.0 - 192.168.255.0 адресуют компьютеры в локальной сети. Куда вы попадёте, набирая эти адреса, зависит от того, к каким компьютерам ведёт провод, выходящий из вашей сетевой карты, от конфигурации этих компьютеров, но, самое главное, от их наличия (отсутствия), и от наличия самой сетевой карты 🙂 Если адрес компьютера не входит в вышеупомянутые диапазоны, значит, мы имеем дело с компьютером во внешней сети (интернет). [1].

Теперь я предлагаю сделать HTTP-запрос к какому-нибудь серверу, например, к серверу, запущенному на компьютере с адресом 1.2.3.4 и открывшему порт номер 80. Для того, чтобы делать любые запросы к любому серверу, используйте программу telnet, входящую в дистрибутив Windows. Откройте командную строку и напишите:

telnet 1.2.3.4 80

Скорее всего, эта попытка провалится, так как мала вероятность того, что в сети окажется сервер с таким адресом. Поэтому нужно узнать адрес какого-нибудь существующего сервера. Для этого используем утилиту ping, тоже изначально имеющуюся в Windows. Напишем:

ping ya.ru

...и увидим на экране примерно следующее:

Обмен пакетами с ya.ru [213.180.204.8] по 32 байт:

Ответ от 213.180.204.8: число байт=32 время=449мс TTL=57
Ответ от 213.180.204.8: число байт=32 время=369мс TTL=57
Ответ от 213.180.204.8: число байт=32 время=546мс TTL=57
Ответ от 213.180.204.8: число байт=32 время=639мс TTL=57

Статистика Ping для 213.180.204.8:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время передачи и приема:
    наименьшее = 369мс, наибольшее =  639мс, среднее =  500мс

Как вы догадались, анализируя увиденное, 213.180.204.8 - это адрес IP сервера ya.ru. Если вы видите какой-нибудь другой адрес, это означает, что он изменился с тех пор, как я написал статью. Подтельнетимся к тому адресу, который у вас получился, и 80му порту:

telnet 213.180.204.8 80

Сделав это, вы (в зависимости от версии вашего тельнета) могли увидеть пустой экран. Напечатайте в нём запрос, который хотите послать серверу. Например:

GET / HTTP/1.0

Не смущайтесь, если набираемый вами текст не показывается на экране. В конце надо сделать два перевода строки. И результат должен быть примерно таким:

HTTP/1.0 200 OK
Server: thttpd/2.25b 29dec2003
Content-Type: text/html; charset=windows-1251
Date: Mon, 16 Jan 2006 09:10:33 GMT
Last-Modified: Fri, 13 Jan 2006 11:32:57 GMT
Accept-Ranges: bytes
Connection: close
Content-Length: 2003

<html>
      <head>
            <title>Яndex</title>
                                <link rel="SHORTCUT ICON" href="/favicon.ico" />
<base target="_top" />
...

Кстати, тельнету можно давать не только адреса IP, но и доменные имена, он сам определит, какой адрес соответствует имени:

telnet ya.ru 80

Но почему 80, спросите вы? Потому что мы заранее знаем, что веб-сервер ya.ru ждёт подключений на 80м порту, так как, набрав в навигаторе "http://ya.ru:80", мы получаем от сервера ответ (а набрав "http://ya.ru:81", не получаем). В адресе формата "URL" номер порта записывается после имени хоста через двоеточие. Если порт не указан, то навигатор (и большинство других программ) автоматически подставляет значение по умолчанию. Для протокола HTTP это значение - 80. Таким образом, две нижеследующие строки эквивалентны:Но почему 80, спросите вы? Потому что мы заранее знаем, что веб-сервер ya.ru ждёт подключений на 80м порту, так как, набрав в навигаторе "http://ya.ru:80", мы получаем от сервера ответ (а набрав "http://ya.ru:81", не получаем). В адресе формата "URL" номер порта записывается после имени хоста через двоеточие. Если порт не указан, то навигатор (и большинство других программ) автоматически подставляет значение по умолчанию. Для протокола HTTP это значение - 80. Таким образом, две нижеследующие строки эквивалентны:

http://ya.ru
http://ya.ru:80

Когда вы наберете такой адрес в навигаторе, последний сделает точно такой же запрос к серверу ya.ru (порт 80), какой мы сделали с помощью тельнета. Кстати, вы знали, что вместо имени хоста можно указать IP?

http://213.180.204.8
http://213.180.204.8:80

...а можно IP в шестнадцатеричном или восьмеричном представлении...

http://0xD5B4CC08
http://0xD5B4CC08:80
http://032555146010
http://032555146010:80

Для справки: портом по умолчанию для протокола SMTP является 25, POP3 - 110, FTP (данные) - 20, FTP (управление) - 21, NNTP - 119... [2].

Установка и настройка серверного ПО

Вы уже поняли, что такое веб-сервер и как с ним работать. А теперь я предлагаю вам превратить свой компьютер в сервер, чтобы с ним можно было работать так же, как со всеми остальными серверами. Для этого, как вы знаете, на вашем компьютере надо запустить программу, обрабатывающую HTTP-запросы. Писать такую программу мы с вами сейчас не будем (как-нибудь в другой раз), а установим одну из уже готовых. Программ веб-серверов много в мире, но самые распространённые - это Internet Information Services (IIS) и Apache. Пользователям Windows 2000 лучше всего подходит IIS, потому что он интегрирован в операционную систему, и именно о нём я буду рассказывать. Apache хорош для *NIX-ов, если он вас интересует, обратитесь к сайту dklab.ru.

Для установки IIS зайдите в меню "пуск", выберите "настройка", и откройте "панель управления". Вызовите "установка и удаление программ". Нажмите на кнопку "добавление и удаление компонентов Windows". Теперь вы должны видеть "мастер компонентов Windows" со списком компонентов, которые можно отмечать птичкой (галочкой), и среди них должен быть IIS. Выделите IIS, и нажмите кнопку "состав". В составе отметьте птичками все компоненты, которые считаете полезными (можно вообще все). Главное - отметить "веб-сервер", "документация", "общие файлы", и "оснастка IIS". Можете выбрать FTP-сервер, если он вам нужен, хотя особой пользы от него, если есть HTTP-сервер, я не вижу. А вот "служба SMTP" - очень полезная вещь (правда о ней я в этой статье не рассказываю).

После проделанных действий сервер должен начать работать. Чтобы убедиться в этом, наберите в навигаторе адрес своего компьютера (http://127.0.0.1). Должна появиться страница по умолчанию. Она называется Default.asp и находится в папке %SystemDrive%\Inetpub\wwwroot (например, c:\Inetpub\wwwroot). Всё содержимое этой папки теперь доступно программам-клиентам, в том числе через интернет. Например файл icon1.png (если он там есть) будет доступен по адресу "http://127.0.0.1/icon1.png". Я рекомендую стереть всё, что Билл Гейтс положил вам в эту папку (или перенести куда-нибудь, чтобы потом изучать), и наполнить её чем-нибудь своим. Помните, что файл с именем Default.html, а если его нет, то Default.asp (обязательно с заглавной буквы), открывается по умолчанию.


Администрирование веб-сервера

Администрирование веб-сервера IIS включает в себя изменение следующих параметров:


  • Порт сервера (по умолчанию 80)
  • Домашний каталог (по умолчанию %SystemDrive%\Inetpub\wwwroot)
  • Документ, открываемый по умолчанию (изначально Default.html или Default.asp)
  • Разрешение запуска сценариев и программ
  • Разрешение просмотра содержимого папок
  • Выставление прав доступа к документам
  • Создание виртуальных каталогов
  • Определение, необходимо ли вести лог (журнал) и какие данные в нём протоколировать
  • Другое
  • Администрирование осуществляется при помощи "оснастки IIS". Оснастку можно вызвать, зайдя в панель управления, дважды щёлкнув "администрирование", а затем "диспетчер служб интернета". Перед вами раскроется древовидная структура, корнем которой будет сетевое имя вашего компьютера (вероятно, заданное во время инсталляции операционной системы). Этим именем можно адресовать ваш компьютер в локальной сети. Одним из подэлементов корня должен быть "веб-узел по умолчанию". Выделив его, вы увидите (в правом кадре) список всех файлов, доступных для скачивания с вашего сервера. Чтобы ограничить доступ к какому-нибудь файлу, щёлкните по его названию правой кнопкой мыши и выберите пункт "свойства". В появившемся диалоговом окне всё вполне прозрачно, и вы сами сможете в нём разобраться. Кстати, щёлкнув правой кнопкой мыши по "веб-узел по умолчанию", вы тоже вызовете меню с пунктом "свойства".


    Эксплуатация веб-сервера

    Конечно, ваш сервер доступен всему миру только тогда, когда ваш компьютер включен и соединён с интернетом; а полноценный публичный сервер должен быть доступен круглосуточно. Чтобы обратиться к вашему компьютеру, удалённый клиент должен адресовать вас по вашему внешнему IP-адресу (127.0.0.1 сработает только с вашего собственного компьютера, а адрес типа 10.11.12.13 только с компьютера в вашей локальной сети). Внешний IP можно определить на странице ip.xss.ru (или на любой другой, позволяющей определить IP). Если IP у вас постоянный, то клиентам достаточно знать его, чтобы всегда иметь возможность к вам подключиться. Но это сопряжено с кое-какой проблемой: ни одно живое существо на свете никогда ваш адрес IP не запомнит. Есть и ещё парочка неприятных нюансов: некоторые поисковые системы откажутся индексировать ваш сайт, а письма, отправленные с вашего SMTP-сервера, автоматически попадут в категорию "спам".

    Выйти из ситуации можно, приобретя доменное имя (domain name). Доменные имена - это имена наподобие "google.com", каждое из которых ассоциировано с определённым IP. Чтобы перевести доменное имя в IP, операционная система использует серверы DNS (Domain Name Service), которые обычно расположены у провайдеров интернета.

    Доменное имя на самом деле состоит из нескольких имён, разделённых точкой. Самое правое называется именем первого уровня, или зоной. Есть зоны общие (com, net, org, info) есть тематические (edu, gov, mil, biz, travel), а есть - региональные (ru, ua, us, ca, uk и др). Слева от имени первого уровня идёт имя второго уровня, затем третьего и т.д. Владелец имени уровня n может создавать неограниченное количество любых имён уровня n+1 внутри своего.

    Правами на каждую зону владеет определённая коммерческая организация, зарегистрированная в ICANN. Эта организация продаёт имена второго уровня (около $15/год). Информация об именах в каждой зоне (например, цены и правила, которым должны подчиняться сайты в данной зоне) чаще всего доступна на сайте администрации зоны. Этот сайт как правило имеет адрес "nic." плюс имя зоны (например "nic.com", "nic.ru"). Домены третьего уровня можно найти бесплатные.

    Приобретя домен, вы сможете связать его со своим адресом IP. Если ваш IP изменится, вы должны будете внести изменения в настройки домена. Эти изменения будут сообщены всем серверам DNS на земном шаре, что займет около суток.

    Сегодня у провайдеров интернета распространена практика выдавать пользователю новый адрес IP при каждом новом соединении со шлюзом, поэтому у подавляющего большинства пользователей интернета динамический (часто меняющийся) IP. Что делать в таком случае? Можно воспользоваться услугами служб динамических имён, таких как dyndns.com. DynDNS позволяет управлять доменом второго или третьего уровня, связывая домен с постоянным или динамическим IP. В случае с динамическим IP вам предложат использовать специальную программу DynDNS Updater, которая будет отслеживать изменение IP и автоматически посылать новое значение на сервер DynDNS. Изменение IP вступает в силу мгновенно, а не спустя сутки, как в случае с обычными доменными именами (см. выше). Вы можете иметь один аккаунт на DynDNS бесплатно.

    После того, как вы создадите сервер, обзаведётесь для него доменным именем и сделаете на нём свой сайт, вы, наверное, захотите, чтобы ваш сайт начали посещать. Как люди узнают о нём? Чаще всего люди узнают о сайте после того, как попадут на него с поисковой машины. Поисковые машины узнают о новом сайте либо когда владелец сайта явно им об этом сообщает (google.com/addurl, webmaster.yandex.ru, rambler.ru/doc/add_site.shtml), либо самостоятельно найдя новый сайт по ссылке. Могу вам сказать, что я свой сайт в поисковики не добавлял, но указал пару раз его адрес при заполнении формы в одной гостевой книге (это была гостевая книга очень раскрученного сайта). Спустя две-три недели у меня в серверных логах начали появляться следы роботов, индексирующих сайты.

    Первое, что делает индексирующий робот - запрашивает файл "robots.txt" из корневой директории сервера. Если этот файл отсутствует, то ваш сайт будет проиндексирован (целиком, если так решит робот). Если robots.txt существует, то он должен содержать информацию о том, какие части сайта каким роботам индексировать нельзя. Синтаксис этого файла описан на странице www.robotstxt.org/wc/exclusion-admin.html.

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

    Напоследок хочу пожелать вам, чтобы ваш сайт внёс весомый вклад в культурную жизнь интернета! Удачи!


    Литература

    [1] Linux Network Administrators Guide (Olaf Kirch) http:/sec.pmg17.vn.ua/teacher/nag-20/lnag.htm
    [2] Программирование на Java. 1001 совет. (Марк С. Чен, Стивен В. Грифис, Энтони Ф. Изи)

    С уважением, polyglott!

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

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