Создание виртуальных хостов

На одном WEB-сервере Apache можно установить несколько WEB-сайтов. Эта функция сервера называется виртуальным хостингом. Ниже рассмотрим создание виртуальных узлов на едином сервере.

Размещение файлов виртуальных узлов
в файловой системе

Для начала создадим папку для виртуальных хостов. В папке «Servers» для этого можно сформировать дополнительную папку «WebSiteVirt», в которой сформируем папки для наших сайтов: «site1» и «site2». Теперь опишем структуру одной из папок (остальные формируются аналогично).

В папке с сайтом необходимо сформировать две папки: «log» - в ней будут храниться log-файлы к нашему сайту и «public» - папка для хранения файлов сайта. В папку «public» нужно скопировать все файлы нашего сайта.

После этого приступаем к конфигурированию сервера.

Файл httpd.conf

Команда включения виртуальных узлов обычно расположена в конце файла httpd.conf (изначально она закомментирована). Необходимо отредактировать эту строчку убрав символ комментария «#» перед командой «Include»:

#Virtual hosts

Include conf/extra/httpd-vhosts.conf

Команда подключает особый файл, «httpd-vhosts.conf», который хранит всю необходимую информацию о виртуальных хостах. Находится этот файл в поддиректории «extra», директории «conf».

Файл httpd-vhosts.conf

Сначала требуется указать какой IP-адрес используется для виртуальных хостов. Если адрес меняется, или заранее неизвестно, то следует указать символ «*», иначе укажите нужный адрес. Далее формируются контейнеры виртуальных хостов, их количество равно количеству сайтов:

NameVirtualHost *:80
<VirtualHost *:80>
# Директивы виртуального хоста 1
</VirtualHost>

<VirtualHost *:80>
# Директивы виртуального хоста 2
</VirtualHost>

<VirtualHost *:80>
# Директивы виртуального хоста n
</VirtualHost>

Далее внутри каждого контейнера нужно прописать директивы для контейнера <VirtualHost>, которые будут определять конфигурацию виртуального хоста:

<VirtualHost *:80>

ServerName mysite1

ServerAlias site1.ru

DocumentRoot "C:/Servers/WebSiteVirt/site1/public"

ErrorLog "C:/Servers/WebSiteVirt/site1/log/error.log"

CustomLog "C:/Servers/WebSiteVirt/site1/log/access.log" combined

<Directory "C:/Servers/WebSiteVirt/site1/public">

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

 

Рассмотрим директивы виртуального узла:

· «ServerName» указывает имя виртуального узла, по которому к нему можно обратиться. В данном случае, по адресу «http://mysite1/».

· «ServerAlias» содержит псевдонимы имен виртуального узла. В данном случае к одному виртуальному узлу можно также обратиться, используя другие имена, например «http://www.site1.ru/».

· «DocumentRoot» указывает каталог, где расположены файлы (странички) данного виртуального узла (WEB-сайта).

· «ErrorLog» и «CustomLog» указывает имена логов сервера для этого виртуального хоста.

· «Directory» контейнер для настройки директории размещения сайта.

 

Обращаться к виртуальным узлам следует только по их доменным именам, поэтому перед началом работы сервера следует прописать используемые имена в DNS-сервере. Если Вы используете Apache для тестирования файлов на локальной машине, то имена ваших виртуальных узлов следует прописать в файле hosts. Для Windows 2000,XP,7 он расположен в каталоге «C:\Windows\System32\drivers\etc». В файле «hosts» необходимо внести записи об используемых именах виртуальных хостов, указав свой «IP» адрес:

Формат записей файла hosts:

192.168.0.137 mysite1 site1.ru

 

ВНИМАНИЕ! В этом файле необходимо прописать все имена всех сайтов, включая их псевдонимы, описанные в параметре «ServerAlias». Но нужно помнить, что виртуальные хосты будут доступны только локально на этой же машине. Для того, что бы они все были доступны и с других станций сети, необходимо сделать подобные записи и на других локальных машинах, или централизовано на ближайшем DNS-сервере. В сетевом доступе будет только первых виртуальных хост.

 

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

 

ВНИМАНИЕ! Сайт, размещенный в папке «htdocs» в папке с приложением сервера, после активации виртуальных хостов, станет недоступным. Основным сайтом, работающим с доменным именем узла, а также с адресом «localhost» станет виртуальный хост, размещенный в файле «httpd-vhosts.conf» первым.

 

Установка поддержки PHP

Современный web-сервер уже немыслим без поддержки динамически-генерируемых страниц. В России лидером среди технологий создания динамических страниц и web-приложений является технология PHP.

Изначально web-сервер Apache не имеет поддержки языка PHP. Его необходимо установить отдельно. Для этого запускают установочный файл языка «php-5.2.9-2-win32-installer.msi» и следуют указаниям мастера установки. В качестве каталога размещения модулей языка выберем каталог «C:\Server\PHP\» (см. рис. 2.5). Для выбора вида установки выберем опцию «Apache 2.2.xModule» (см. рис. 2.6). Это позволит сориентировать установку на наш сервер.

 

Рис. 2.5. Выбор места установки модулей PHP Рис. 2.6. Выбор типа установки

Рис. 2.6. Выбор папки, в которой хранятся
конфигуровочные файлы сервера

 

Подключение PHP к Apache

Для подключения php, в качестве модуля, необходимо отредактировать файл httpd.conf (некоторые директивы уже будут добавлены в конец файла).

Найти и отредактировать команду (добавить index.php что бы файл открывался автоматически при указании только имени директории):

 

<IfModule dir_module>

DirectoryIndex index.html index.phtml index.php

</IfModule>

 

Дописать в конец файла (частично уже будет создано):

 

#BEGINPHPINSTALLEREDITS - REMOVEONLYONUNINSTALL

PHPIniDir "C:/Servers/PHP/"

LoadModulephp5_module "C:/Servers/PHP/php5apache2_2.dll"

AddType application/x-httpd-php phtml php

#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

 

Эти строки следует поместить в конец файла «httpd.conf», там, где уже будут написаны некоторые из них:

· Первая строка позволяет явно указать расположением конфигурационного файла php.ini.

· Вторая строка загружает модуль PHP, реализованный в библиотеке php5apache2_2.dll

· Третья строка дает возможность обрабатывать файл с указанным расширением.

 

После всех манипуляций сервер необходимо перезапустить. Для проверки работоспособности сервера разместите в его директории «C:\Servers\WebServer\htdocs\» пробный web-документ (html или php) и откройте его браузером по адресу «localhost». Если все работает, то в окне браузера документ отобразится.

 

ЗАДАНИЕ

1. Произвести установку сервера Apache с поддержкой PHP и выложить на него свой web-сайт, созданный предварительно (можно использовать уже имеющиеся сайты, обязательно с командами PHP).

2. Сформировать второй сайт и разместить на вашем сервере оба на различных виртуальных хостах. Имена обоих сайтов придумать самостоятельно.

 

Файлы установщиков взять из папки с предметом:

· Apache [v. 2.2.3-win32-x86-no_ssl].msi

· php-5.2.9-2-win32-installer.msi


 

ЛАБОРАТОРНАЯ РАБОТА №4

Цифровое кодирование

Цель работы

Освоить принципы цифрового кодирования в компьютерных сетях

 

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

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

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

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

Другим серьезным недостатком метода NRZ является наличие низкочастотной составляющей, при передаче длинных последовательностей единиц или нулей. Из-за этого многие каналы связи, не обеспечивающие прямого гальванического соединения между приемником и источником, этот вид кодирования не поддерживают. В чистом виде код NRZ в сетях не используется. Привлекательность кода NRZ, из-за которой имеет смысл заняться его улучшением, состоит в достаточно низкой частоте основной гармоники f0, ко­торая равна N/2 Гц. У других мето­дов кодирования, например манчестерского, основная гармоника имеет более высокую частоту.

 

Рис. 4.1. Способы дискретного кодирования данных

 

Одной из модификаций метода NRZ является метод биполярного кодирования с альтернативной инверсией (BipolarAlternateMarkInversion, AMI). В этом методе (рис. 4.1, б) используются три уровня потенциала — отрицательный, нулевой и положительный. Для кодирования логического нуля используется нулевой потенциал, а логическая единица кодируется либо положительным потенциалом, либо отрицательным, при этом потенциал каждой новой единицы противоположен потенциалу предыдущей.

Код AMI частично ликвидирует проблемы постоянной составляющей и отсутствия самосинхронизации, присущие коду NRZ. Это происходит при передаче длинных последовательностей единиц. В этих случаях сигнал на линии представляет собой последовательность разнополярных импульсов с тем же спектром, что и у кода NRZ, передающего чередующиеся нули и единицы, то есть без постоянной составляющей и с основной гармоникой N/2 Гц (где N — битовая скорость передачи данных). Длинные же последовательности нулей также опасны для кода AMI, как и для кода NRZ — сигнал вырождается в постоянный потенциал нулевой амплитуды. Поэтому код AMI требует дальнейшего улучшения.

В целом, для различных комбинаций бит на линии использование кода AMI приводит к более узкому спектру сигнала, чем для кода NRZ, а значит, и к более высокой пропускной способности линии. Например, при передаче чередующихся единиц и нулей основная гармоника f0 имеет частоту N/4 Гц. Код AMI предоставляет также некоторые возможности по распознаванию ошибочных сигналов. Так, нарушение строгого чередования полярности сигналов говорит о ложном импульсе или исчезновении с линии корректного импульса. Такой сигнал называется запрещенным сигналом (signalviolation).

Кроме потенциальных кодов в сетях используются и импульсные коды, когда данные представлены полным импульсом или же его частью — фронтом. Наиболее простым случаем такого подхода является биполярный импульсный код, в котором единица представлена импульсом одной полярности, а ноль — другой (рис. 4.1, в). Каждый импульс длится половину такта. Такой код обладает отличными самосинхронизирующими свойствами, но постоянная составляющая может присутствовать, например, при передаче длинной последовательности единиц или нулей. Кроме того, спектр у него шире, чем у потенциальных кодов. Так, при передаче всех нулей или единиц частота основной гармоники кода будет равна N Гц, что в два раза выше основной гармоники кода NRZ и в четыре раза выше основной гармоники кода AMI при передаче чередующихся единиц и нулей. Из-за слишком широкого спектра биполярный импульсный код используется редко.

В локальных сетях до недавнего времени самым распространенным методом кодирования был так называемый манчестерский код(рис. 4.1, г). Он применяется в технологиях Ethernet и TokenRing.

В манчестерском коде для кодирования единиц и нулей используется перепад потенциала, то есть фронт импульса. При манчестерском кодировании каждый такт делится на две части. Информация кодируется перепадами потенциала, происходящими в середине каждого такта. Единица кодируется перепадом от низкого уровня сигнала к высокому, а ноль — обратным перепадом. В начале каждого такта может происходить служебный перепад сигнала, если нужно представить несколько единиц или нулей подряд. Так как сигнал изменяется, по крайней мере, один раз за такт передачи одного бита данных, то манчестерский код обладает хорошими самосинхронизирующими свойствами. Полоса пропускания манчестерского кода уже, чем у биполярного импульсного. У него также нет постоянной составляющей, а основная гармоника в худшем случае (при передаче последовательности единиц или нулей) имеет частоту N Гц, а в лучшем (при передаче чередующихся единиц и нулей) она равна N/2 Гц, как и у кодов AMI или NRZ. В среднем ширина полосы манчестерского кода в полтора раза уже, чем у биполярного импульсного кода, а основная гармоника колеблется вблизи значения 3N/4. Манчестерский код имеет еще одно преимущество перед биполярным импульсным кодом. В последнем для передачи данных используются три уровня сигнала, а в манчестерском — два.

 

Задание

Выполнить все виды цифрового кодирования на заданной битовой последовательности. Для ее формирования взять первые четыре кода своей фамилии и преобразовать ее в двоичный код с использованием таблицы кодировки ANSI.

 

Пример:

Выполним цифровое кодирование для символа «А».

1. Символ «А» согласно кодировке ANSI имеет числовой код «192».

2. Переведем число «192» в двоичное число «11000000»

3. Выполним цифровое кодирование:

 

Рис. 4.2. Код NRZ

 

Рис. 4.3. Код AMI

 

Рис. 4.4. Биполярный импульсный код

 

Рис. 4.5. Манчестерский код


 

ЛАБОРАТОРНАЯ РАБОТА №5

Логическое кодирование

Цель работы

Освоить принципы логического кодирования в компьютерных сетях

 

Логическое кодирование используется для улучшения потенциальных кодов типа AMI, NRZI или 2Q1B. Логическое кодирование должно заменять длинные последовательности бит, приводящие к постоянному потенциалу, вкраплениями единиц. Для логического кодирования характерны два метода — избыточные коды и скрэмблирование.

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

,

где Вi — двоичная цифра результирующего кода, полученная на i-м такте работы екрэмблера, Ai — двоичная цифра исходного кода, поступающая на i-м такте на вход скрэмблера, Bi-3 и Bi-5 —двоичные цифры результирующего кода, полученные на предыдущих тактах работы скрэмблера, соответственно на 3 и на 5 тактов ранее текущего такта, — операция исключающего ИЛИ (сложение по модулю 2).

Например, для исходной последовательности 110110000001 скрэмблер даст следующий результирующий код:

Bi = Ai = 1 (первые три цифры результирующего кода будут совпадать с исходным, так как еще нет нужных предыдущих цифр)

 

Таким образом, на выходе скрэмблера появится последовательность 110001101111, в которой нет последовательности из шести нулей, присутствовавшей в исходном коде.

Различные алгоритмы скрэмблирования отличаются количеством слагаемых, дающих цифру результирующего кода, и сдвигом между слагаемыми. Так, в сетях ISDN при передаче данных от сети к абоненту используется преобразование со сдвигами в 5 и 23 позиции, а при передаче данных от абонента в сеть — со сдвигами 18 и 23 позиции.

 

Задание

Для битовой последовательности, полученное в предыдущей работе, выполнить скремблирование и сделать вывод об эффективности процесса.

Если длинные последовательности одинаковых битов уменьшились, то скремблирование эффективно. Если увеличились, то – нежелательно. Если же последовательности не изменились, то – не эффективно.