
- •Раздел 12. Веб-сервера
- •12.2. Стандарт cgi
- •Раздел 13. Технология Java Servlet
- •Пример сервлета
- •Компиляция сервлетов
- •Структура веб-модуля
- •Запуск сервлета
- •Архив веб-модуля
- •13.2. Структура и жизненный цикл сервлета
- •Работа сервлетов в многопоточной среде
- •13.3. Основные классы Servlet api Класс HttpServletRequest (запрос)
- •Класс HttpServletResponse (ответ)
- •Класс HttpServlet (сервлет)
- •Класс ServletContext (взаимодействие с сервлет-контейнером)
- •13.4. Cookies и сессии
- •13.5. Отладка сервлетов
- •Раздел 14. Технология JavaServer Pages
- •14.1. Введение в jsp
- •14.2. Жизненный цикл jsp-страниц
- •Действия
- •14.4. Язык выражений
- •Предопределенные объекты
- •14.5. Библиотеки тегов
- •Раздел 14. Технология JavaServer Pages
- •14.1. Введение в jsp
- •14.2. Жизненный цикл jsp-страниц
- •Действия
- •14.4. Язык выражений
- •Предопределенные объекты
- •14.5. Библиотеки тегов
Раздел 12. Веб-сервера
Технологии, рассмотренные в предыдущем разделе — HTML, XHTML, CSS, JavaScript — позволяют создавать документы любого вида и с некоторой степенью интерактивности (с помощью JavaScript). Этих технологий достаточно, чтобы создать простой статический веб-сайт. Кроме статических HTML-документов на веб-сайтах могут применяться:
-
средства обратной связи,
-
опросы,
-
поиск (по сайту),
-
веб-интерфейс для публикации новостей и других материалов,
-
рейтинг публикаций и т. д.
Такой функционал требует реализации логики на стороне веб-сервера. Программист может его реализовать, используя серверные сокеты: для этого программа должна по протоколу HTTP получать запросы от клиентов, обрабатывать их нужным образом и возвращать результат также по протоколу HTTP в формате HTML.
Однако создавать сложные веб-сервисы таким способом неудобно и затратно, поэтому обычно используются готовые программы веб-сервера. Эти веб-сервера позволяют опубликовать статические документы в Интернет (HTML-файлы, изображения и проч.), а также поддерживают различные технологии создания динамических серверных веб-страниц.
Наиболее популярными веб-серверами являются Apache HTTP Server (или просто Apache) и Internet Information Services (IIS). Наиболее используемым веб-сервером с поддержкой Java-технологий является Apache Tomcat (или просто Tomcat).
Основные особенности перечисленных веб-серверов:
-
Apache HTTP Server — наиболее популярный веб-сервер, применяемый в Интернет. Бесплатный надежный веб-сервер с большим функционалом (за счет использования внешних модулей), существует для разных платформ. Основными технологиями создания динамических веб-страниц, для которых применяется Apache, являются PHP и Perl, реже Python, Ruby, C++.
-
Internet Information Services — набор серверных программ от Microsoft (входит в состав Windows), который включает FTP-сервер, почтовый сервер, веб-сервер и некоторые другие сервисы. Основные технологии разработки динамических веб-страниц в IIS: ASP (Active Server Pages) и более новая технология ASP.NET. В более старой технологии ASP веб-страницы обычно использовали COM-компоненты, реализованные на других языках. Технология ASP.NET позволяет создавать веб-сайты с применением любых языков из семейства .NET.
-
Apache Tomcat — бесплатный веб-сервер, поддерживающий Java-технологии разработки серверных веб-страниц, в том числе, Java Servlet и JavaServer Pages. Веб-сервер Tomcat может работать как самостоятельный веб-сервер или же интегрироваться с Apache HTTP Server.
Фактически, этим серверным решениям соответствуют три крупных группы веб-технологий: скриптовые языки, Java и .NET. Первая группа является более популярной, т. к. более проста и доступна. Недостатки скриптовых языков — относительно низкая производительность и плохая масштабируемость (опять же из-за производительности и особенностей самих языков). Технологии Java и .NET обычно применяются для относительно крупных и относительно сложных проектов. В следующих разделах будут более подробно изучены серверные Java-технологии и язык PHP.
12.1. Apache HTTP Server
-
Наиболее популярный веб-сервер.
-
Есть версии для различных платформ: Windows, Solaris, Linux, FreeBSD и др.
-
Быстрый и надежный.
-
Имеет модульную архитектуру.
-
Разрабатывается Apache Software Foundation.
-
Бесплатен и имеет открытые исходные коды.
-
Сайт: httpd.apache.org
В Windows Apache обычно запускается как сервис (сервис создается при инсталляции), хотя может запускаться и как консольное приложение; в Unix — как демон при загрузке системы.
Все основные настройки сервера располагаются в файле conf/httpd.conf (вспомогательные конфигурационные файлы обычно расположены там же).
Примеры некоторых опций из httpd.conf:
# адрес и порт для прослушивания (0.0.0.0 означает все IP-адреса)
Listen 0.0.0.0:80
# загрузка модуля для поддержки PHP
LoadModule php5_module "C:/php/php5apache2.dll"
# основной каталог с документами (HTML и проч.), который доступен клиентам
DocumentRoot "c:/hosts/htdocs/"
# установка кодировки по умолчанию (в Content-Type)
<Directory C:/hosts/htdocs/html/>
AddDefaultCharset UTF-8
</Directory>
При такой конфигурации при запросе клиента ресурса http://hostname/dir/file.html Apache вернет клиенту файл c:/hosts/htdocs/dir/file.html. Если корректно установлен и настроен интерпретатор PHP, то по запросу http://hostname/index.php Apache выполнит PHP-скрипт (программу на PHP) из файла c:/hosts/htdocs/index.php и сгенерированный PHP-скриптом HTML-код передаст клиенту.
Настройки для конкретного каталога можно разместить в файле .htaccess этого каталога, например:
Deny From All
Все файлы каталога с таким файлом .htaccess не будут отдаваться клиентам — им будет возвращена ошибка с кодом 403 (Forbidden, т. е. доступ запрещен).
Apache поддерживает виртуальный хостинг — это когда на одном физическом веб-сервере размещено и функционирует много сайтов, например: edu.krasu.ru, elib.krasu.ru, matlab.krasu.ru и т. д. Для клиентов эти сайты могут выглядеть как несколько различных веб-серверов, однако в реальности все эти имена могут соответствовать одному физическому веб-серверу, на котором запущен один Apache.
Чтобы указать Apache, что разным веб-сайтам должны соответствовать различные каталоги документов на диске и, возможно, различные настройки, в конфигурационном файле используется директива VirtualHost:
<VirtualHost elib.krasu.ru>
ServerName elib.krasu.ru
DocumentRoot C:/hosts/elib
…
</VirtualHost>
При запросах на сайт elib.krasu.ru Apache будет возвращать документы и выполнять скрипты из каталога C:/hosts/elib, а не из каталога по умолчанию C:/hosts/htdocs. Для определения того, к какому конкретно веб-сайту обратился клиент, используется HTTP-заголовок «Host», который указывается веб-браузером в HTTP-запросе. Поддерживается также идентификация по IP-адресу, а не полю «Host».
Другие возможности веб-сервера Apache:
-
встроенная поддержка стандарта CGI для создания динамических веб-страниц (см. следующий параграф);
-
возможность HTTP-аутентификации для доступа к отдельным папкам и файлам (т. е. доступ по паролю и логину);
-
ведение журналов обращений к веб-серверу и гибкая настройка их формата;
-
создание «алиасов» (синонимов) для веб-страниц (например, чтобы при обращении к ресурсу /about реально выполнялся скрипт /about.php);
-
поддержка шифрованного протокола HTTPS;
-
возможность исправления опечаток в адресах;
-
возможность определения типа файла (Content-Type) по его содержимому;
-
возможность настройки HTTP-заголовков, перенаправлений и т. д.