WEB-технологии
Многопоточный веб-сервер с входным и обрабатывающими модулями. HTTP—протокол передачи гипертекста. Установка и настройка локального веб-сервера "OpenServer". Установка phpMyAdmin, конфигурация PHP. Настройка веб-сервера и виртуальных хостов, модулей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 08.12.2013 |
Размер файла | 3,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра Автоматики и компьютерных систем
Специальность «Информационные системы и технологии»
«WEB - технологии»
Учебно-исследовательская работа
Томск 2013 г
Содержание
Введение
1. Клиент-серверная архитектура
1.1 Сторона клиента
1.2 Сторона сервера
1.3 HTTP -- протокол передачи гипертекст
2. Установка и настройка локального веб-сервера «OpenServer»
2.1 Установка (распаковка) сервера
2.2 Настройка сервера
3. Настройка веб-сервера на операционной системе «Debian»
3.1 Установка веб-сервера
3.2 Установка MySQL
3.3 Подключение модулей
3.4 Проверка результата
3.5 Установка phpMyAdmin
3.6 Настройка PHP
3.7 Настройка веб-сервера и виртуальных хостов
3.8 Изменение локального хоста
3.9 Создание главной страницы сайта
3.10 Создание нового виртуального хоста
Заключение
Список используемой литературы
Введение
Привлекательность Web-технологий как средства доставки информации во многом определяет универсальный интерфейс между человеком и компьютером. Каждому человеку понятны надписи, заголовки, ссылки, картинки. Веб-интерфейс как средство доступа к информации интуитивно понятен. Следствием простоты веб-интерфейса является широкая употребимость Интернета как канала коммуникации.
Всемирная паутина стала столь популярной, что для большинства пользователей понятия Интернет и WWW являются синонимами, хотя такое мнение, разумеется, является ошибочным. Вследствие этого, для начала необходимо разобраться с основными понятиями веб-технологий: веб-сайт и веб-страница. А также разобрать их работу, основанную на клиент-серверной архитектуре. Для передачи информации используется HTTP -- протокол передачи гипертекста, который будет рассмотрен подробнее.
Также в основе практической работы в рамках данной УИРС будет рассмотрена установка и настройка локального веб-сервера OpenServer, а также установка и настройка веб-сервера на операционной системе «Debian», включающая в себя установку самого сервера, установку MySQL и подключение к ней необходимых модулей, установку phpMyAdmin, а также его настройку.
Всемирная паутина (WWW, World Wide Web) -- это архитектура, являющаяся основой для доступа к связанным между собой документам, находящимся на миллионах машин по всему Интернету. За 10 лет своего существования из средства распространения информации на тему физики высоких энергий она превратилась в приложение, о котором миллионы людей с разными интересами думают, что это и есть «Интернет». Огромная популярность этого приложения стала следствием цветного графического интерфейса, благодаря которому даже новички не встречают затруднений при его использовании. Кроме того, Всемирная паутина предоставляет огромное количество информации практически по любому вопросу.
Всемирная паутина была создана в 1989 году в Европейском центре ядерных исследований CERN в Швейцарии. В этом центре есть несколько ускорителей, на которых большие группы ученых из разных европейских стран занимаются исследованиями в области физики элементарных частиц. В эти команды исследователей часто входят ученые из пяти-шести и более стран. Эксперименты очень сложны, для их планирования и создания оборудования требуется несколько лет. Программа Web (паутина) появилась в результате необходимости обеспечить совместную работу находящихся в разных странах больших групп ученых, которым нужно было пользоваться постоянно меняющимися отчетами о работе, чертежами, рисунками, фотографиями и другими документами.
Изначальное предложение, создать паутину из связанных друг с другом документов пришло от физика центра CERN Тима Бернерс-Ли (Tim Berners-Lee) в марте 1989 года. Первый (текстовый) прототип заработал спустя 18 месяцев. В декабре 1991 году на конференции Hypertext'91 в Сан-Антонио в штате Техас была произведена публичная демонстрация. Эта демонстрация, сопровождаемая широкой рекламой, привлекла внимание других ученых. Марк Андрессен (Marc Andreessen) в университете Иллинойса начал разработку первого графического браузера, Mosaic. Программа увидела свет в феврале 1993 года и стала настолько популярной, что год спустя ее автор Марк Андрессен решил сформировать собственную компанию Netscape Communications Corp., чьей целью была разработка клиентов, серверов и другого программного обеспечения для веб-приложений. Когда в 1995 году корпорация Netscape получила известность, инвесторы, полагая, очевидно, что появилась еще одна корпорация типа Microsoft, заплатили за пакет ее акций 1,5 млрд. долларов.
С точки зрения пользователя Всемирная паутина состоит из огромного собрания документов, расположенных по всему миру. Документы обычно называют для краткости просто страницами. Каждая страница может содержать ссылки (указатели) на другие связанные с ней страницы в любой точке мира. Пользователи могут следовать по ссылке (например, просто щелкнув на ней мышью), при этом страница, на которую указывает ссылка, загружается и появляется в окне браузера. Этот процесс можно повторять бесконечно. Идея страниц, связанных между собой гиперссылками (гипертекст), была впервые пророчески предложена в 1945 году, задолго до появления Интернета, Ванневаром Бушем, профессором из Массачусетского университета, занимавшимся электротехникой.
Основной принцип работы Паутины показан на рис. 1. Браузер отображает веб-страницу на клиентской машине. Когда пользователь щелкает на строке, которая является ссылкой на страницу, расположенную на сервере «abcd.com», браузер следует по этой гиперссылке. Реально при этом на «abcd.com» отправляется служебное сообщение с запросом страницы. Получив страницу, браузер показывает ее. Если на этой странице содержится гиперссылка на страницу с сервера «xyz.com», то браузер обращается с запросом к «xyz.com», и так далее до бесконечности.
Рисунок 1 - части всемирной паутины
1. Клиент-серверная архитектура
1.1 Сторона клиента
Необходимо детально рассмотреть сторону клиента, основываясь на рис. 1. По сути дела, браузер -- это программа, которая может отображать веб-страницу и распознавать щелчки мыши на элементах активной страницы. При выборе элемента браузер следует по гиперссылке и получает с сервера запрашиваемую страницу. Следовательно, гиперссылка внутри документа должна быть устроена так, чтобы она могла указывать на любую страницу Всемирной паутины. Страницы именуются с помощью URL (Uniform Resource Locator -- унифицированный указатель информационного ресурса). Типичный указатель выглядит так: «http://www.abcd.com/products.html».
URL состоит из трех частей: имени протокола (http), DNS-имени машины, на которой расположена страница (www.abcd.com), и (обычно) имени файла, содержащего эту страницу (products.html).
Между щелчком пользователя и отображением страницы происходят следующие события.
Когда пользователь щелкает мышью на гиперссылке, браузером выполняется ряд действий, приводящих к загрузке страницы, на которую указывает ссылка. Например, пользователь, блуждая по Интернету, находит ссылку на документ, рассказывающий про интернет-телефонию, а конкретно -- на домашнюю страницу ITU, расположенную по адресу http://www.itu.org/home/index.html. Далее описывается каждое действие, происходящее после выбора этой ссылки.
1. Браузер определяет URL (по выбранному элементу страницы).
2. Браузер запрашивает у службы DNS IP-адрес www.itu.org.
3. DNS дает ответ 156.106.192.32.
4. Браузер устанавливает TCP-соединение с 80-м портом машины 156.106.192.32.
5. Браузер отправляет запрос на получение файла /home/index.html.
6. Сервер www.itu.org высылает файл /home/index.html.
7. TCP-соединение разрывается.
8. Браузер отображает весь текст файла /home/indexhtml.
9. Браузер получает и выводит все изображения, прикрепленные к данному файлу.
10. Многие браузеры отображают текущее выполняемое ими действие в строке состояния внизу экрана. Это позволяет пользователю понять причину низкой производительности: например, не отвечает служба DNS или сервер или просто сильно перегружена сеть при передаче страницы.
11. Для отображения каждой новой страницы браузер должен понять ее формат.
Чтобы все браузеры могли отображать любые страницы, они пишутся на стандартизованном языке HTML, описывающем веб-страницу. Несмотря на то, что браузер, по сути дела, представляет собой интерпретатор HTML, большинство браузеров оснащаются многочисленными кнопками и функциями, облегчающими навигацию по Всемирной паутине.
Вместо того чтобы наращивать возможности и размеры браузеров, встраивая в них интерпретаторы для различных типов файлов (количество которых быстро растет), обычно применяется более общее решение. Когда сервер возвращает в ответ на запрос какую-либо страницу, вместе с ней высылается некоторая дополнительная информация о ней. Эта информация включает MIME-тип страницы. Страницы типа text/html выводятся браузером напрямую, как и страницы некоторых других встроенных типов. Если же для данного MIME-типа внутренняя интерпретация невозможна, браузер определяет, как выводить страницу, по своей таблице MIME-типов. В данной таблице в соответствие каждому типу ставится программа просмотра.
Существуют два способа отображения: с помощью подключаемого модуля (plug-in) или вспомогательных приложений. Подключаемый модуль представляет собой особый код, который браузер извлекает из специального каталога на жестком диске и устанавливает в качестве своего расширения. Поскольку подключаемые модули работают внутри браузера, у них есть доступ к текущей странице, вид которой они могут изменять. После завершения своей работы (обычно это связано с переходом пользователя на другую страницу) подключаемый модуль удаляется из памяти браузера.
Каждый браузер имеет набор процедур, которые должны реализовывать все подключаемые модули. Это нужно для того, чтобы браузер мог обращаться к последним. Например, существует стандартная процедура, с помощью которой базовый код браузера передает подключаемому модулю данные для отображения.
Набор этих процедур образует интерфейс подключаемого модуля и является специфичным для каждого конкретного браузера.
Кроме того, браузер предоставляет подключаемому модулю определенный набор своих процедур. Среди них в интерфейс браузера обычно включаются процедуры распределения и освобождения памяти, вывода сообщений в строке статуса браузера и опроса параметров браузера.
Рисунок 2 - модель работы браузера
1.2 Сторона сервера
Когда пользователь вводит URL или щелкает на гиперссылке, браузер производит структурный анализ URL и интерпретирует часть, заключенную между http:// и следующей косой чертой, как имя DNS, которое следует искать. Вооружившись IP-адресом сервера, браузер устанавливает ТСР-соединение с портом 80 этого сервера. После этого отсылается команда, содержащая оставшуюся часть URL, в которой указывается имя файла на сервере. Сервер возвращает браузеру запрашиваемый файл для отображения. Этому серверу, как и настоящему веб-серверу, передается имя файла, который следует найти и отправить.
В обоих случаях в основном цикле сервер выполняет следующие действия:
1. Принимает входящее TCP-соединение от клиента (браузера).
2. Получает имя запрашиваемого файла.
3. Получает файл (с диска).
4. Возвращает файл клиенту.
5. Разрывает ТСР-соединение.
Современные веб-серверы обладают более широкими возможностями, однако существенными в их работе являются именно перечисленные шаги. Проблема данного подхода заключается в том, что каждый запрос требует обращения к диску для получения файла. В результате число обращений к веб-серверу за секунду ограничено максимальной скоростью обращений к диску. Среднее время доступа к высокоскоростному диску типа SCSI составляет около 5 мс, то есть сервер может обрабатывать не более 200 обращений в секунду. Это число даже меньше, если часто запрашиваются большие файлы. Для крупных веб-сайтов это слишком мало. Очевидным способом решения проблемы является кэширование в памяти последних запрошенных файлов. Прежде чем обратиться за файлом к диску, сервер проверяет содержимое кэша. Если файл обнаруживается в кэше, его можно сразу выдать клиенту, не обращаясь к диску. Несмотря на то, что для эффективного кэширования требуются большие объемы памяти и некоторое дополнительное время на проверку кэша и управление его содержимым, суммарный выигрыш во времени почти всегда оправдывает эти накладные расходы и стоимость.
Следующим шагом, направленным на повышение производительности, является создание многопоточных серверов. Одна из реализаций подразумевает, что сервер состоит из входного модуля, принимающего все входящие запросы, и k обрабатывающих модулей, как показано на рис. 3. Все k + 1 потоков принадлежат одному и тому же процессу, поэтому у обрабатывающих модулей есть доступ к кэшу в адресном пространстве процесса. Когда приходит запрос, входящий модуль принимает его и создает краткую запись с его описанием. Затем запись передается одному из обрабатывающих модулей. Другая возможная реализация подразумевает отсутствие входного модуля; все обрабатывающие модули пытаются получить запросы, однако здесь требуется блокирующий протокол, помогающий избежать конфликтов.
Рисунок 3 - Многопоточный веб-сервер с входным и обрабатывающими модулями
Обрабатывающий модуль вначале проверяет кэш на предмет нахождения там нужных файлов. Если они там действительно есть, он обновляет запись, включая в нее указатель на файл. Если искомого файла в кэше нет, обрабатывающий модуль обращается к диску и считывает файл в кэш (при этом, возможно, затирая некоторые хранящиеся там файлы, чтобы освободить место). Считанный с диска файл попадает в кэш и отсылается клиенту.
Преимущество такой схемы заключается в том, что пока один или несколько обрабатывающих модулей заблокированы в ожидании окончания дисковой операции (при этом такие модули не потребляют мощности центрального процессора), другие модули могут активно обрабатывать захваченные ими запросы. Разумеется, реального повышения производительности за счет многопоточной схемы можно достичь, только если установить несколько дисков, чтобы в каждый момент времени можно было обращаться более чем к одному диску. Имея k обрабатывающих модулей и k дисков, производительность можно повысить в k раз по сравнению с однопоточным сервером и одним диском.
Теоретически, однопоточный сервер с k дисками тоже должен давать прирост производительности в k раз, однако программирование и администрирование такой схемы оказывается очень сложным, так как в этом случае невозможно использование обычных блокирующих системных вызовов READ для чтения с диска.
Многопоточные серверы такого ограничения не имеют, поскольку READ будет блокировать только тот поток, который осуществил системный вызов, а не весь процесс.
Современные веб-серверы выполняют гораздо больше функций, чем просто прием имен файлов и отправка файлов. На самом деле, реальная обработка каждого запроса может оказаться довольно сложной. По этой причине на многих серверах каждый обрабатывающий модуль выполняет серии действий. Входной модуль передает каждый входящий запрос первому доступному модулю, который обрабатывает его путем выполнения некоторого подмножества указанных далее шагов в зависимости от того, что именно требуется для данного запроса:
вычисление имени запрашиваемой веб-страницы;
регистрация клиента;
осуществление контроля доступа для клиента;
осуществление контроля доступа для веб-страницы;
проверка кэша;
получение запрошенной страницы с диска;
определение типа MIME для включения этой информации в ответ клиенту;
аккуратное выполнение различных дополнительных задач;
возвращение ответа клиенту;
добавление записи в журнал активности сервера.
Шаг 1 необходим, потому что входящий запрос может и не содержать реального имени файла в виде строкового литерала. Например, URL может быть вот таким: http://www.cs.vu.nl. Здесь имя файла отсутствует. Этот URL необходимо дополнить неким именем файла по умолчанию. К тому же современные браузеры могут указывать язык пользователя по умолчанию (например, итальянский или английский), что позволяет серверу выбирать веб-страницу на соответствующем языке, если таковая существует. Вообще говоря, расширение имени - задача не такая уж тривиальная, как может показаться, поскольку существует множество соглашений об именовании файлов.
Шаг 2 состоит в проверке идентификационных данных клиента. Это нужно для отображения страниц, недоступных для широкой публики.
Шаг 3 проверяет наличие каких-либо ограничений, накладываемых на данного клиента и его местоположение.
На шаге 4 проверяются ограничения на доступ к запрашиваемой странице. Если определенный файл (например, .htaccess) присутствует в том же каталоге, что и нужная страница, он может ограничивать доступ к файлу. Например, можно установить доступ к странице только для сотрудников компании.
Шаги 5 и 6 включают в себя получение страницы. Во время выполнения шага 6 должна быть обеспечена возможность одновременного чтения с нескольких дисков.
Шаг 7 связан с определением типа MIME, исходя из расширения файла, первых нескольких байтов, конфигурационного файла или каких-то иных источников.
Шаг 8 предназначен для различных задач, таких как построение профиля пользователя, сбор статистики и т. д.
На шаге 9, наконец, отсылается результат, что фиксируется в журнале активности сервера на шаге 10. Последний шаг требуется для нужд администрирования. Из подобных журналов можно впоследствии узнать ценную информацию о поведении пользователей -- например, о том, в каком порядке люди посещают страницы на сайте. Если приходит слишком много запросов в секунду, центральный процессор может перестать справляться с их обработкой вне зависимости от того, сколько дисков параллельно работают на сервере. Решается эта проблема установкой на сервере нескольких узлов (компьютеров). Их полезно укомплектовывать реплицированными (содержащими одинаковую информацию) дисками во избежание ситуации, когда узким местом становится дисковый накопитель. В результате возникает многомашинная система, организованная в виде серверной фермы. Входной модуль по-прежнему принимает входящие запросы, однако распределяет их на сей раз не между потоками, а между центральными процессорами, снижая тем самым нагрузку на каждый компьютер. Отдельные машины сами по себе могут быть многопотоковыми с конвейеризацией, как и в рассматриваемом ранее случае.
Рисунок 4 - серверная форма
Одна из проблем, связанных с серверными фермами, заключается в отсутствии общего кэша -- каждый обрабатывающий узел обладает собственной памятью. Эта проблема может быть решена установкой дорогостоящей мультипроцессорной системы с разделяемой памятью, однако существует и более дешевый способ. Он заключается в том, что входной модуль запоминает, на какой узел он посылал запросы конкретных страниц. Последующие запросы тех же страниц он сможет тогда направлять на те же узлы. Таким образом, получается, что каждый узел специализируется по своему набору страниц; и отпадает необходимость хранения одних и тех же файлов в кэшах разных компьютеров.
Другая проблема, возникающая при использовании серверных ферм, состоит в том, что TCP-соединение клиента заканчивается на входном модуле, то есть ответ в любом случае должен пройти через входной модуль. Эта ситуация показана на рис. 5, а. Здесь как входящий запрос A), так и исходящий ответ B) проходят через входной модуль. Иногда для обхода этой проблемы применяется хитрость под названием передача TCP. Суть ее в том, что TCP-соединение продлевается до конечного (обрабатывающего) узла, и он может самостоятельно отправить ответ напрямую клиенту (рис. 5, б). Эта передача соединения для клиента незаметна.
Рисунок 5 - Обычный запрос-ответный обмен (а); обмен запросами и ответами при передаче TCP (б)
1.3 HTTP -- протокол передачи гипертекста
Стандартный протокол для передачи данных по Всемирной паутине -- это HTTP (HyperText Transfer Protocol -- протокол передачи гипертекста). Он описывает сообщения, которыми могут обмениваться клиенты и серверы. Каждое взаимодействие состоит из одного ASCII-запроса, на который следует один ответ, напоминающий ответ стандарта RFC 822 MIME. Все клиенты и все серверы должны следовать этому протоколу. Он определен в RFC 2616.
Соединения
Обычный способ взаимодействия браузера с сервером заключается в установке ТСР-соединения с портом 80 сервера, хотя формально эта процедура не является обязательной. Ценность использования TCP -- в том, что ни браузерам, ни серверам не приходится беспокоиться о потерянных, дублированных, слишком длинных сообщения и подтверждениях. Все это обеспечивается протоколом TCP.
В HTTP 1.0 после установки соединения посылался один запрос, на который приходил один ответ. После этого TCP-соединение разрывалось. В то время типичная веб-страница целиком состояла из HTML-текста, и такой способ взаимодействия был адекватным. Однако прошло несколько лет, и в странице оказалось множество значков, изображений и других украшений. Очевидно, что установка TCP-соединения для передачи одного значка нерациональна и слишком дорога.
Это соображение привело к созданию протокола HTTP 1.1, который поддерживал устойчивые соединения. Это означало, что появилась возможность установки TCP-соединения, отправки запроса, получения ответа, а затем передачи и приема дополнительных запросов и ответов. Таким образом, снизились накладные расходы, возникавшие при постоянных установках и разрывах соединения. Стало возможным также конвейеризировать запросы, то есть отправлять запрос 2 еще до прибытия ответа на запрос 1.
Методы
Несмотря на то что HTTP был разработан специально для использования в веб - технологиях, он был намеренно сделан более универсальным, чем это было необходимо, так как рассчитывался на будущее применение в объектно-ориентированных приложениях. По этой причине в дополнение к обычным запросам веб-страниц были разработаны специальные операции, называемые методами. Они обязаны своим существованием технологии SOAP. Каждый запрос состоит из одной или нескольких строк ASCII, причем первое слово является именем вызываемого метода. Встроенные методы перечислены в таблице на рис.6. Помимо этих общих методов, у различных объектов могут быть также свои специфические методы. Имена методов чувствительны к регистру символов, то есть метод GET существует, a get -- нет.
Рисунок 6 - Встроенные методы HTTP-запросов
Метод GET запрашивает у сервера страницу (под которой в общем случае подразумевается объект, но на практике это обычно просто файл), закодированную согласно стандарту MIME. Большую часть запросов к серверу составляют именно запросы GET.
Метод HEAD просто запрашивает заголовок сообщения, без самой страницы. С помощью этого метода можно узнать время последнего изменения страницы для сбора индексной информации или просто для проверки работоспособности данного URL.
Метод PUT является противоположностью метода GET: он не читает, а записывает страницу. Этот метод позволяет создать набор веб-страниц на удаленном сервере. Тело запроса содержит страницу. Она может быть кодирована с помощью MIME. В этом случае строки, следующие за командой PUT, могут включать различные заголовки, например, Content-Type или заголовки аутентификации, подтверждающие права абонента на запрашиваемую операцию.
Метод POST несколько напоминает метод PUT. Он также содержит URL, но вместо замены имеющихся данных новые данные «добавляются» (в неком общем смысле) к уже существующим. Это может быть публикация сообщения в конференции или добавление файла к электронной доске объявлений BBS. На практике ни PUT, ни POST широко не применяются.
Метод DELETE, что неудивительно, удаляет страницу. Как и в методе PUT, здесь особую роль могут играть аутентификация и разрешение на выполнение этой операции. Даже при наличии у пользователя разрешения на удаление страницы нет никакой гарантии, что метод DELETE удалит страницу, так как даже при согласии удаленного HTTP-сервера сам файл может оказаться защищенным от изменения или перемещения.
Метод TRACE предназначен для отладки. Он приказывает серверу отослать назад запрос. Этот метод особенно полезен, когда запросы обрабатываются некорректно и клиенту хочется узнать, что за запрос реально получает сервер.
Метод CONNECT в настоящее время не используется. Он зарезервирован для будущего применения.
Метод OPTIONS позволяет клиенту узнать у сервера о его свойствах или о свойствах какого-либо конкретного файла.
В ответ на каждый запрос от сервера поступает ответ, содержащий строку состояния, а также, возможно, дополнительную информацию (например, веб-страницу или ее часть). Строка состояния может содержать трехразрядный код состояния, сообщающий об успешном выполнении запроса или о причинах неудачи. Первый разряд предназначен для разделения всех ответов на пять основных групп, как показано в таблице на рис.7. Коды, начинающиеся с 1 Aхх), на практике используются редко. Коды, начинающиеся с 2, означают, что запрос был обработан успешно и данные (если их запрашивали) отосланы. Коды Зхх сообщают клиенту о том, что нужно попытать счастья в другом месте -- используя либо другой URL, либо свой собственный кэш.
Рисунок 7 - Группы кодов состояния, содержащиеся в ответах сервера
Коды, начинающиеся с 4, означают, что запрос по какой-либо причине, связанной с клиентом, потерпел неудачу: например, была запрошена несуществующая страница или сам запрос был некорректен. Наконец, коды 5хх сообщают об ошибках сервера, возникших либо вследствие ошибки программы, либо из-за временной перегрузки.
Пример использования HTTP
Поскольку HTTP является текстовым протоколом, взаимодействие с сервером посредством терминала (который в данном случае выступает как противоположность браузеру) можно организовать достаточно просто. Необходимо лишь установить TCP-соединение с портом 80 сервера. Читателю предоставляется возможность самому посмотреть, как работает этот сценарий (предпочтительнее запускать его в системе UNIX, поскольку некоторые другие системы могут не отображать статус соединения). Итак, последовательность команд такова:
Рисунок 8 - последовательность команд HTTP-протокола
Эта последовательность команд устанавливает telnet-соединение (то есть ТСР- соединение) с портом 80 веб-сервера IETF, расположенного по адресу www.ietf.org.
Результат сеанса связи записывается в файл log, который затем можно просмотреть. Далее следует команда GET. Указывается имя запрашиваемого файла и протокол передачи. Следом идет обязательная строка с заголовком Host. Пустая строка, которая находится за ней, также обязательна. Она сигнализирует серверу о том, что заголовки запросов закончились. Командой close (это команда программы telnet) соединение разрывается.
Файл журнала соединения, log, может быть просмотрен с помощью любого текстового редактора. Он должен начинаться примерно так, как показано в листинг на рис.8, если только на сайте IETF за это время не произошли какие-нибудь изменения.
Рисунок 9 - Начало вывода файла «www.ietf.org/rfc.html»
Первые три строки в этом листинге созданы программой telnet, а не удаленным сайтом. А вот строка, начинающаяся с HTTP/1.1, -- это уже ответ IETF, говорящий о том, что сервер желает общаться с вами при помощи протокола НТТР/1.1. Далее следует ряд заголовков и, наконец, само содержимое запрашиваемого файла. Заголовок ETag, который является уникальным идентификатором страницы, связанным с кэшированием, и X-Pad -- нестандартного заголовка, помогающего бороться с ошибками браузеров.
2. Установка и настройка локального веб-сервера «OpenServer»
Обычно для разработки веб-программисты не используют удаленные веб-сервер, удаленные веб-серверы используются для демонстрации разрабатываемого веб-сайта заказчику или для публикации разработанного веб-сайта в интернет. Компании, предоставляющие возможность публикации веб-сайта в сети Интернет, называются Хостинг компаниями. Чаще всего хостинг компании предоставляют следующие услуги: ограниченное место на жестком диске, определенное тарифом количество виртуальных хостов и соответственно базы данных для каждого виртуального хоста, возможность делегирования прав на управление доменным именем. Так же хостинг провайдер гарантирует высокую скорость пропускного канала, бесперебойный доступ к веб-сайтам и обеспечивает архивирование данных в случае сбоя оборудования. Для быстрой и удобной работы в процессе разработки удобнее использовать локальный веб-сервер. В сети интернет существует большой выбор сборок, позволяющие установить локальный веб-сервер, «OpenServer» - это бесплатный и быстроразвивающийся веб-сервер, идеально подходящий для разработки веб-приложений в локальных условиях. Необходимо рассмотреть процесс установки и настройки.
2.1 Установка (распаковка) сервера
Установщик представляет собой самораспаковывающийся архив, таким образом, достаточно указать директорию, куда будет установлен OpenServer. Желательно установку производить в корень любого раздела жесткого диска. Например, если выбрать в качестве директории для распаковки диск G:\, то распаковщик создаст директорию G:\OpenServer и распакует сервер в эту директорию.
Рисунок 10 - Путь распаковки
Рисунок 11 - Результат распаковки
Директория «domains» будет содержать виртуальные хосты (в дальнейшем её можно сменить), папка «modules» содержит модули OpenServer, под модулем понимается программное обеспечение, используемое в работе сервера, например СУБД MySQL различных версий, интерпретатор PHP различных версий и непосредственно сам веб-сервер (nginx или Apache) и многое другое. В директории «userdata» хранятся настройки для модулей.
2.2 Настройка сервера
Далее о настройке OpenServer и созданию виртуальных хостов. После запуска сборки OpenServer в трее появится иконка OpenServer представляющая собой флаг красного (остановлен), зеленого (запущен) или желтого цвета (перезапускается). Для того, чтобы вызвать окно с Настройками необходимо нажать правой клавишей мыши по иконке как показано на рисунке 12.
Рисунок 12 - Контекстное меню OpenServer
Рисунок 13 - настройка сервера
Вкладка «Основные» отображает основные настройки программного комплекса, необходимо создать профиль и для каждого профиля завести различные уникальные настройки.
Рисунок 14 - вкладка "Сервер"
Если же вы всё-таки решено установить OpenServer не в корень раздела жесткого диска, то OpenServer позволяет при запуске создать виртуальный диск для удобного обращения к файлам, корнем которого будет являться директория OpenServer, которая автоматически создается при распаковке.
При создании виртуальных хостов OpenServer автоматически добавляет запись в файл «hosts», но иногда возникает ситуация, когда у пользователя компьютера недостаточно прав для модифицирования файла. Поэтому в OpenServer предусмотрена возможность запуска сервера без редактирования файла, администратор (преподаватель) заранее добавит необходимые записи. Необходимо отметить независимый переключатель «Не вносить изменения в HOSTS файл».
Программный комплекс OpenServer может обеспечить не только локальную работу, но также может сделать персональный компьютер полноценным веб-сервером. Для этого в поле «IP-адрес сервера» необходимо указать IP-адрес выданный вам провайдером (рисунок 15 - IP-адрес сервера).
Рисунок 15 - IP-адрес сервера
Рисунок 16 - Смена «Корневой папки доменов»
Далее необходимо в папке domains создать папку с именем «project» - а в ней создать html-документ с именем index.html, таким образом, будет создан виртуальный хост. Любое серверное ПО, которое работает по сети, должно быть привязано к конкретному сетевому порту.
Рисунок 17 - Задание портов
Может возникнуть ситуация, что сетевой порт занят другим приложением, что не позволит запустить веб-сервер. Тогда необходимо в настройках OpenServer сменить проблемный порт. В случае, если при запуски OpenServer произошел сбой, то причина, по которой произошел сбой указывается в окне «Просмотр логов».
Рисунок 18 - Ошибка. Порт 443 занят
Во вкладке «Модули» осуществляется конфигурирование веб-сервер, есть возможность выбрать в качестве веб-сервера не только Apache, но и nginx, либо выбрать подходящую версию языка PHP и СУБД и многое другое. Необходимо установить настройки, такие как показаны на рисунке 19.
Рисунок 19 - Модули веб-сервера
После чего необходимо в окне браузера открыть страницу http://project, имя домена определяется именем директории, которая была создана, соответственно не следует использовать русские символы и знак пробела. Если имя домена не устраивает, то можно во вкладке «Домены» выбрать из выпадающего списка ручное управление доменами и задать собственное имя.
Рисунок 20 - Управление доменами
Если ни одного домена не было найдено, то в окне с логами будет следующая ошибка.
Рисунок 21 - Ошибка. Запуск сервера без доменов невозможен
И последним шагом настройки локального веб-сервера будет установка кодировки по умолчанию для веб-сервера и СУБД. Необходимо установить кодировку utf-8 как показано на рисунке 22.
Рисунок 22 - Установка кодировки
На этом установка и настройка веб-сервера закончена.
3. Настройка веб-сервера на операционной системе «Debian»
3.1 Установка веб-сервера
Apt-get (Advanced Packaging Tool) - программа для установки, обновления и удаления программных пакетов в командном режиме. Программа способна автоматически устанавливать и настраивать программы как из предварительно откомпилированных пакетов, так и из исходных кодов. Пакеты берутся из интернет-репозиториев, либо их можно установить с имеющихся носителей. Для пользователей, предпочитающих командной строке графический интерфейс, есть Synaptic - графическая оболочка для apt-get, созданная на основе GTK+ .
Использование утилиты:
apt-get [параметры] команда
apt-get [параметры] install|remove пакет1 [пакет2 …]
apt-get [параметры] source пакет1 [пакет2 ...]
Перед установкой веб-сервера необходимо выполнить обновление пакетов, для этого в терминале необходимо выполнить следующие команды:
update - используется для синхронизации файлов-описаний пакетов с их источником и получения обновлённых списков пакетов. Перед upgrade и dist-upgrade всегда нужно выполнять update.
upgrade - используется для установки новейших версий установленных пакетов системы из источников. Для того, чтобы apt-get узнал о существовании доступных новых версиях пакетов, данной команде должна предшествовать команда update.
sudo apt-get update
sudo apt-get upgrade
После того, как пакеты были обновлены, можно приступить к установке веб-сервера. В качестве веб-сервера будет выступать Apache. Установка осуществляется при помощи команды install, после которой следуют наименования пакетов, которые необходимо установить.
В качестве языка программирования будет использоваться скриптовый язык программирования PHP, установка которогоосуществляется вместе с веб-сервером, а связь между веб-сервером и PHP осуществляется с использованием библиотеки: libapache2-mod-php5.
Ключ install - устанавливает один или более пакетов, отмеченных для установки.
Каждый пакет - это имя пакета, а не полное имя файла, содержащее этот пакет. Все пакеты-зависимости также будут получены и установлены.
sudo apt-get install apache2 apache2-doc php5 libapache2-mod-php5 php-pear
Рисунок 23 - Установка веб-сервера Apache
Для хранения данных может быть использована любая система управления данными (СУБД): MySQL, Sqlite, Oracle, PostgreSQL, MSSQL. Связь СУБД с PHP осуществляется за счет подключения дополнительных модулей.
3.2 Установка MySQL
Выполнение работы, будет осуществляться с использованием СУБД MySQL. MySQL является свободной системой управления базами данных и подходит для использования при разработки малых и средних приложений. Для установки MySQL необходимо выполнить следующую команду:
sudo apt-get install mysql-server mysql-client php5-mysql
Рисунок 24 - Установка mysql
Рисунок 25 - Настройка MySQL
3.3 Подключение модулей
Язык программирования PHP позволяет расширить набор стандартных классов и функций за счет установки дополнительных модулей. Подключение модулей осуществляется в конфигурационном файле php.ini. Данный файл можно открыть в любом текстовом редакторе и раскомментировать директивы подключения тех или иных модулей, чтобы они выглядели так:
extension = имя_модуля
Рекомендуется не подключать все модули сразу, а делать это позже, по мере необходимости. Такой подход позволит сэкономить оперативную память и сделает работу сервера более стабильной.
Данная команда позволяет автоматически загрузить дополнительные модули, которые могут пригодиться в будущем:
sudo apt-get install php5-curl php5-gd php5-idn php5-imagick php5-ldap
php5-imap php5-memcache php5-mhash php5-mysql php5-ps php5-pspell php5-sqlite
php5-suhosin php5-tidy imagemagick php5-xcache php5-xdebug php5-xmlrpc php5-xsl
Проверка результата
После того, как все было установлено, можно проверить результат, для этого необходимо узнать IP-адрес веб-сервера командой ifconfig, далее открыв веб-браузер и указав URL-адрес, который состоит из IP-адреса: http://192.168.126.130. можно увидеть стандартное сообщение приветствия веб-сервера Apache.
Рисунок 26 - проверка работы сервера Apache
3.3 Установка phpMyAdmin
PHPMyAdmin - веб-приложение с открытым исходным кодом, разработанное на языке PHP и обеспечивающее полноценную, в том числе и удаленную, работу с базами данных MySQL через браузер.
Для установки веб-приложения необходимо воспользоваться следующей командой:
sudo apt-get install phpmyadmin
Во время установки необходимо указать веб-сервер, который будет автоматически настроен для работы с phpMyAdmin. В данном случае таким веб-сервером является Apache2. Для выбора необходимо нажать пробел.
Рисунок 27 - Настройа phpMyAdmin
PhpMyAdmin для корректной работы использует базу данных для хранения данных, которые необходимы для его работы. Таким образом, позволяем phpMyAdmin в автоматическом режиме настроить базу данных:
Рисунок 28 - Создание базы данных для успешной работы phpMyAdmin
PhpMyAdmin это веб-приложение, работу которогообеспечивает веб-сервер. Поэтому сервер Apache2 необходимо переконфигурировать, так как стандартной настройки не достаточно. Для этого необходимо внести изменения в конфигурационный файл веб-сервер.
sudo nano /etc/apache2/apache2.conf
В открывшемся в редакторе GEDIT конфигурационном файле необходимо добавить (в конце) следующие строки. При помощи данной строки мы подключаем конфигурационный файл phpMyAdmin к веб-серверу Apache2.
# Include phpmyadmin configurations:
Include /etc/phpmyadmin/apache.conf
После чего следует настроить само веб-приложение phpMyAdmin. Для выполнения работы нет необходимости углубляться в настройки веб-приложения, поэтому необходимо сделать всего одно обязательное изменение в конфигурационном файле:
phpMyAdmin.
sudo nano /etc/phpmyadmin/config.inc.php
и добавить парольную фразу в самый конец файла (любую из букв и цифр):
$cfg['blowfish_secret'] = 'qwerty';
Начиная с версии 2.5.2, 'cookie' auth_type (cookie-аутентификация) использует алгоритм blowfish для шифрования пароля. Если используется 'cookie' auth_type, необходимо ввести здесь случайную идентификационную фразу, которая будет использоваться в работе алгоритма 'blowfish'. Максимальный размер фразы 46 символов.
Рисунок 29 - Настройка phpMyAdmin
Далее необходимо выполнить набор команд по запуску веб-сервер:
sudo /etc/init.d/apache2 restart //перезапуск apache2
sudo a2enmod php5 //запуска php
sudo a2enmod rewrite //активация модуля mod_rewrite - основанный на правилах механизм (синтаксический анализатор с применением регулярных выражений), выполняющий URL преобразования на лету.
На этом установка phpMyAdmin закончена, для того чтобы получить доступ к веб-приложению. Необходимо в браузере открыть страницу http://192.168.126.130/phpmyadmin/.
Рисунок 30 - Авторизация PhpMyAdmin
3.5 Настройка PHP
Следующим шагом настройки веб-сервера будет конфигурация PHP. Для начала стоит определиться, где будут храниться сайты. Все сайты будут находиться в каталоге /var/www. Для обеспечения безопасности необходимо сменить владельца и группу пользователей, которые будут иметь доступ к данной папке. Для смены владельца используется команда chown, после которой следует ключ -R для рекурсивной смены владельца во вложенных файлах и папках. Далее следует имя пользователя и группа.
sudo chown -R student:student /var/www
Необходимо убедиться, что пользователь и группа была изменена, для этого необходимо выполнить команду:
ls -l
Данная команда показывает содержимое текущего каталога.
Рисунок 31 - Права доступа к каталогу
Теперь сама настройка PHP, конфигурационный файл с именем php.ini хранится в директории /etc/php5/apache2/. Необходимо внести следующие изменения в данный файл:
max_execution_time с 30 меняем на 90
max_input_time поменяем с 60 на 180
post_max_size меняем с 8M на 200M
upload_max_filesize меняем с 2M на 50M
max_file_uploads меняем с 50 на 150
3.6 Настройка веб-сервера и виртуальных хостов
веб сервер протокол хост
Использование виртуальных хостов позволяет на одном веб-сервере создавать несколько веб-сайтов.
Существует два основных метода реализации доступа к веб-сайтам:
по имени, когда все веб-сайты используют один общий IP-адрес. Согласно протоколу HTTP/1.1 веб-браузер при запросе к веб-серверу указывает доменное имя веб-сайта в поле Host заголовка текущего запроса, и веб-сервер использует его для правильного выполнения запроса, а также копирует это имя в ячейку [HTTP_HOST] суперглобального массива $_SERVER.
по IP-адресу, при котором у каждого веб-сайта есть собственный IP-адрес, а веб-сервер имеет несколько физических или виртуальных сетевых интерфейсов.
В данном случае для работы будет использоваться первый метод доступа к сайтам. Так как в распоряжении всего один IP-адрес.
Изменение локального хоста
Каждому сайту, который будет располагаться на веб-сервере, необходимо создать директорию командой mkdir. Первый сайт имеет локальное имя localhost. Хороший тон при создании виртуального хоста, внутри папки с именем хоста в нашем случае localhostсоздать папку www, в которой будет располагаться файлы сценариев сайта.
cd /var/www/
mkdir localhost
cd /var/www/localhost
mkdir www
Настройка каждого виртуального хоста хранится в директории: /etc/apache2/sites-available/. Необходимо сделать так, чтобы сайт, который доступен по адресу http://localhost, физически располагался в директории /var/www/localhost/www.
Для этого необходимо внести изменения в конфигурационный файл стандартного виртуального хоста, который отвечает за сайт с доменным именем localhost. Красным цветом обозначено место изменения. Таким образом, было указано, что корневая директория для этого хоста будет располагаться /var/www/localhost/www.
sudo nano /etc/apache2/sites-available/default
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/localhost/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/localhost/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
После того как изменения были внесены, необходимо перезагрузить apache.
Создание главной страницы сайта
Теперь к разработке главной страницы сайта, она будет состоять всего лишь из одной строчки и выводить текущую конфигурацию сервера. Необходимо открыть в редакторе не существующий файл с именем index.php, он автоматически создаться после сохранения
nano /var/www/localhost/www/index.php
В открывшемся файле нужно написать скрипт, в котором осуществляется вызов функции phpinfo():
<?php phpinfo(); ?>
Все сценарии разработанные на языке php помещаются в теги <?php ?>.
Для просмотра результата выполнения скрипта необходимо открыть страницу http://192.168.126.130/ . Физически файл находится в директории /var/www/localhost/www.
Создание нового виртуального хоста
Для создания еще одного виртуального хоста, следует проделать вышеописанные действия. Но для каждого нового хоста необходимо создавать свой собственный файл с уникальным именем (описывающий доменное имя, например labs) и настройками в директории /etc/apache2/sites-available/. Можно скопировать файл с настройками по умолчанию и внести в него изменения:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/labs
Прописать в настройках, то доменное имя, по которому он будет доступен из браузера.
...
ServerAdmin webmaster@localhost
DocumentRoot /var/www/labs/www
ServerName labs.loc
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
...
Создание конфигурационного файла недостаточно для работы виртуального хоста, нужно его активировать командой:
sudo a2ensite labs
После чего обязательна перезагрузка Apache2.
Теперь нужно сопоставить созданному виртуальному хосту IP-адрес, чтобы браузер знал, где искать запрашиваемый пользователем сайт. Для этого необходимо отредактировать hosts файл. Hosts - текстовый файл, содержащий базу данных доменных имен и используемый при их трансляции в сетевые адреса узлов. Запрос к этому файлу имеет приоритет перед обращением к DNS-серверам. В отличие от DNS, содержимое файла контролируется администратором компьютера.
Необходимо скопировать файл C:\Windows\System32\drivers\etc\host, на рабочий стол компьютера, отредактировать скопированный файл, добавив следующую запись: 192.168.126.130 labs.loc
Затем заменить оригинальный файл модифицируемым.
Рисунок 32 - Редактирование hosts файла
Заключение
В рамках данной учебно-исследовательской работы, в ходе теоретической работы, был изучен базовый материал для работы с WEB-технологиями. Было изучено понятие всемирной паутины, а также принцип ее работы. Рассмотрены исторические аспекты появления данной технологии. Также было рассмотрено взаимойдесвие и работа веб-сервера с клиентом, в котором подробно изучен протокол передачи данных гипертекста HTTP.
В ходе практической работы были получены навыки установки и настройки локального веб-сервера OpenServer. Также была рассмотрена установка веб-сервера на операционной системе Debian, включающая в себя установку и настройку MySQL, PHP, phpMyAdmin, а также подключение необходимых модулей.
Список используемой литературы
Для подготовки данной работы были использованы материалы из учебника Эндрю Таненбаума - «Компьютерные сети», а так же часть с сайтов «wikipedia.org» и «php.ru».
Размещено на Allbest.ru
Подобные документы
Установка и настройка локального web–сервера и его компонентов. Конфигурационные файлы сервера Apache и их натройка. Настройка PHP, MySQL и Sendmail. Проверка работоспособности виртуальных серверов. Создание виртуальных хостов. Тест Server Side Includes.
учебное пособие [6,2 M], добавлен 27.04.2009Установка VirtualBox. Создание двух виртуальных машин с операционной системой CentOS. Настройка сетевых интерфейсов в режиме bridgeс и хоста как маршрутизатора для сети. Установка www-сервера. Настройка динамической маршрутизации по протоколу RIP.
курсовая работа [807,5 K], добавлен 14.07.2012Система доменных имен. Регистрация доменов и обратное преобразование имен. Схема работы DNS сервера. Конфигурация BIND сервера. Расшифровка полей файлов зон. Программное обеспечение, настройка DNS сервера BIND. Проверка работоспособности системы.
курсовая работа [1,6 M], добавлен 20.09.2013Сетевые соединения для передачи команд и данных между клиентом и сервером. Появление первых клиентских FTP-приложений. Графические пользовательские интерфейсы. Вход в FTP сервер. Настройка, подключение и вход в файловый сервер с клиентских компьютеров.
курсовая работа [2,6 M], добавлен 25.11.2014Установка, разработка конфигурации и дальнейшее администрирование FTP-сервера на системе типа UNIX. Настройка операционной системы и удаленного управления. Основные команды; соединение и передача данных. Аутентификация, способы доступа к FTP-серверу.
курсовая работа [1,3 M], добавлен 02.04.2015Организационно-штатная структура офисного центра. Выбор и обоснование архитектуры сети. Сервисы конфигурации сервера. Выбор топологии сети. Установка и настройка Active Directory, DNS и файлового сервера под управлением СОС Windows Server 2012 R2.
курсовая работа [2,5 M], добавлен 10.04.2017Общие сведения об операционной системе Linux. Анализ информации о серверах. Основные прикладные клиент-серверные технологии Windows. Сведения о SQL-сервере. Общая информация о MySQL–сервере. Установка и специфика конфигурирования MYSQL-сервера на LINUX.
курсовая работа [1,3 M], добавлен 16.12.2015Создание виртуальной машины для гостевой операционной системы Microsoft Windows Server 2003. Первоначальная настройка установленной операционной системы. Создание DHCP-сервера с диапазоном рабочих адресов. Настройка доменного имени для IP-адреса сервера.
лабораторная работа [3,2 M], добавлен 20.12.2012Теория разработки интернет-магазина: описание предметной области. Сравнение систем управления контентом. Установка локального сервера "OpenServer". Установка CMS "MODX" на локальный сервер. Развертывание сайта на хостинге. Регистрация хостинга и домена.
дипломная работа [2,7 M], добавлен 16.06.2017Создание локальной сети для рационального использования компьютерного оборудования. Характеристика многопользовательской сетевой операционной системы Debian Linux. Установка web-сервера, настройка виртуальных хостов, почты и Drupal. Работа с Drush.
курсовая работа [3,6 M], добавлен 01.02.2011