16296

Установка Apache, PHP, MySQL

Лабораторная работа

Информатика, кибернетика и программирование

ЛАБОРАТОРНАЯ РАБОТА №1 Установка Apache PHP MySQL Принципы работы Интернета Протоколы передачи данных Как и любая компьютерная сеть Интернет основан на множестве компьютеров соединенных друг с другом проводами через спутниковый канал связи и т. д. Однако как...

Русский

2013-06-20

58.33 KB

4 чел.

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

Установка Apache, PHP, MySQL

  1.  Принципы работы Интернета
  2.  
    Протоколы передачи данных



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

Разумеется, для разных целей существуют различные протоколы. К счастью, нам не нужно иметь представление о каждом из них — достаточно знать только тот, который мы будем использовать в Web-программировании. Таковым для нас является протокол TCP (Transmission Control Protocol — Протокол управления передачей данных), а точнее, протокол HTTP (Hypertext Transfer Protocol — Протокол передачи гипертекста), базирующийся на TCP. Протокол HTTP как раз и задействуется браузерами и Web-серверами.

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

Обратите внимание, что в пределах каждой системы протоколы на схеме расположены в виде "стопки", один над другим. Такая структура обуславливает то, что часто семейство протоколов обмена данными в сети Интернет называют стеком TCP/IP (стек в переводе с английского как раз и обозначает "стопку").





Рис. 1.1. Организация обмена данными в Интернете


Каждый из протоколов в идеале "ничего не знает" о том, какой протокол "стоит над ним". Например, протокол IP (который обеспечивает несколько более простой сервис по сравнению с TCP) не использует возможности протокола TCP, а TCP, в свою очередь, "не догадывается" о существовании протокола HTTP (именно его задействует браузер и понимает Web-сервер, на схеме протокол HTTP не обозначен).

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


1.2. Семейство TCP/IP


Протоколы TCP и IP настолько сильно связаны, что принято объединять их в одну группу под названием семейство TCP/IP. Ниже приводятся основные особенности протокола TCP, входящего в семейство.

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

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

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

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

При передаче данные разбиваются на фрагменты — пакеты, которые и доставляются в место назначения по отдельности. Разные пакеты вполне могут следовать различными маршрутами в Интернете (особенно если их путь пролегает через десятки серверов), но для всех них гарантирована правильная "сборка" в месте назначения (в нужном порядке). Как уже упоминалось, принимающая сторона в случае обнаружения "недосдачи" пакета запрашивает передающую систему, чтобы та передала его еще раз. Все это происходит незаметно для программного обеспечения, эксплуатирующего TCP/IP.

В Web-программировании нам вряд ли придется работать с TCP/IP напрямую (разве что в очень экзотических случаях) — обычно можно использовать более высокоуровневые "языки", например, HTTP, служащий для обмена информацией между сервером и браузером. 


1.3.Адресация с Сети


Машин в Интернете много, это факт. Так что вопрос о том, как можно их эффективно идентифицировать в пределах этой сети, оказывается далеко не праздным. Кроме того, практически все современные операционные системы работают в многозадачном режиме (поддерживают одновременную работу нескольких программ). Это значит, что возникает также вопрос о том, как нам идентифицировать конкретную систему или программу, желающую обмениваться данными через Сеть. Эти две задачи решаются стеком TCP/IP при помощи IP-адреса и номера порта. 

IP-адрес

Любой компьютер, подключенный к Интернету и желающий обмениваться информацией со своими "сородичами", должен иметь некоторое уникальное имя, или IP-адрес. Вот уже 30 лет IP-адрес выглядит примерно так:

127.12.232.56

Как мы видим, это — четыре 8-разрядных числа (то есть принадлежащих диапазону от 0 до 255 включительно), соединенные точками. Не все числа допустимы в записи IP-адреса: ряд из них используется в служебных целях (например, адрес 127.0.0.1 выделен для обращения к локальной машине — той, на которой был произведен запрос, а число 255 соответствует широковещательной рассылке в пределах текущей подсети). 

Доменное имя

И все-таки обычным людям довольно неудобно работать с IP-представлением адреса. Действительно, куда как проще запомнить символьное имя, чем набор чисел. Чтобы облегчить простым пользователям работу с Интернетом, придумали систему DNS (Domain Name System — Система имен доменов).

Общемировая DNS представляет собой распределенную базу данных, способную преобразовать доменные имена машин в их IP-адреса. 

При использовании DNS любой компьютер в Сети может иметь не только IP-адрес, но также и символическое имя. Выглядит оно примерно так: 

www.somehost.msu.su

То есть, это набор слов (их число произвольно), опять же соединенных точкой. Каждое такое сочетание слов называется доменом N-го уровня (например, su — домен первого уровня, msu.su — второго, somehost.msu.su — третьего и т. д.) Вообще говоря, полное DNS-имя выглядит немного не так: в его конце обязательно стоит точка, например:

www.somehost.msu.su.

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

Нужно заметить, что одному и тому же IP-адресу вполне может соответствовать сразу несколько доменных имен. Каждое из них ведет в одно и то же место — к единственному IP-адресу. Благодаря протоколу HTTP 1.1 Web-сервер, установленный на машине и откликающийся на какой-либо запрос, способен узнать, какое доменное имя ввел пользователь, и соответствующим образом среагировать, даже если его IP-адресу соответствует несколько доменных имен. 

Интересен также случай, когда одному и тому же DNS-имени сопоставлены несколько разных IP-адресов. В этом случае служба DNS автоматически выбирает тот из адресов, который, по ее мнению, ближе всего расположен к клиенту, или который давно не использовался, или же наименее загружен (впрочем, последняя оценка может быть весьма и весьма субъективна). Эта возможность часто задействуется, когда Web-сервер становится очень большим (точнее, когда число его клиентов начинает превышать некоторый предел) и его приходится обслуживать сразу нескольким компьютерам. Такая схема используется, например, на сайте компании Netscape.

Как же ведется поиск по DNS-адресу? Для начала он преобразуется специальными DNS-серверами, раскиданными по всему миру, в IP-адрес. Пусть клиентом выдан запрос на определение IP-адреса машины www.host.ru. (еще раз обратите внимание на завершающую точку! — это не конец предложения). Чтобы его обработать, первым делом посылается запрос к так называемому корневому домену (точнее, к программе — DNS-серверу, запущенному на этом домене), который имеет имя "." (на самом деле его база данных распределена по нескольким компьютерам, но для нас это сейчас несущественно). Запрос содержит команду: вернуть IP-адрес машины (точнее, IP-адрес DNS-сервера), на котором расположена информация о домене ru. Как только IP-адрес получен, по нему происходит аналогичное обращение с просьбой — определить адрес, соответствующий домену host внутри домена ru внутри корневого домена ".".

В конце у предпоследней машины запрашивается IP-адрес поддомена www в домене somehost.ru. Важно, что каждый домен "знает" все о своих поддоменах, а те, в свою очередь — о своих, т. е. система имеет некоторую иерархичность. Корневой домен, как мы уже заметили, принято называть доменом нулевого уровня, домен ru. (в нашем примере) — первого, host.ru. — второго уровня, ну и т. д. При изменении доменов некоторого уровня об этом должны узнать все домены, родительские по отношению к нему, для чего существуют специальные протоколы синхронизации. 

Просто? Не совсем. Представьте, какое бы произошло столпотворение на корневом домене ".", если бы все запросы на получение IP-адреса проходили через него. Чтобы этого избежать, практически все машины в Сети кэшируют информацию о DNS-запросах, обращаясь к корневому домену (и доменам первого уровня — ru, com и т. д.) лишь изредка для обновления этого кэша. Например, пусть пользователь, подключенный через модем к провайдеру, впервые соединяется с машиной www.host.ru. В этом случае будет передан запрос корневому домену, а затем, по цепочке, поддомену host и, наконец, домену www. Если же пользователь вновь обратится к www.host.ru., то сервер провайдера сразу же вернет ему нужный IP-адрес, потому что он сохранил его в своем кэше запросов ранее. Подобная технология позволяет значительно снизить нагрузку на DNS-серверы в Интернете. В то же время у нее имеются и недостатки, главный из которых — вероятность получения ложных данных, например, в случае, если хост host.ru. только что отключился или сменил свой IP-адрес. Так как кэш обновляется сравнительно редко, мы всегда можем столкнуться с такой ситуацией.

Порт

Машины, подключенные к Интернету, точки зрения протокола IP, рассматриваются как некие неделимые сущности. Но TCP использует в своей работе несколько другие понятия.

А именно, для него отдельной сущностью является процесс — программа, запущенная где-то на компьютере в Интернете. Именно между процессами, а не между машинами, и осуществляется обмен данными в терминах протокола TCP. Как же TCP определяет тот процесс, которому нужно доставить данные.

Пусть на некоторой системе выполняется программа (назовем ее Клиент), которая хочет через Интернет соединиться с какой-то другой программой (Сервером) на другой машине в Сети. Для этого должен выполняться ряд условий, а именно:

программы должны "договориться" о том, как они будут друг друга идентифицировать;

программа Сервер должна находиться в режиме ожидания, что сейчас к ней кто-то подключится;

Остановимся на первом пункте подробнее. Программа Сервер, как только она запускается, говорит драйверу TCP, что она собирается использовать для обмена данными с Клиентами некоторый идентификатор, или порт, целое число в

диапазоне от 0 до 65 535 (именно такие числа могут храниться в ячейке памяти размером в 2 байта). TCP регистрирует это в своих внутренних таблицах — разумеется, только в том случае, если какая-нибудь другая программа уже не "заняла" нужный нам порт (в последнем случае происходит ошибка). Затем Сервер переходит в режим ожидания поступления запросов, приходящих на этот порт. Это означает, что любой Клиент, который собирается вступить в "диалог" с Сервером, должен знать номер его порта. В противном случае TCP-соединение невозможно: куда передавать данные, если не знаешь, к кому подключиться?

Теперь посмотрим, какие действия предпринимает Клиент. Он знает следующее:

IP-адрес машины, на которой запущен Сервер;

номер порта, который использует Сервер.

Этой информации вполне достаточно, поэтому Клиент посылает драйверу TCP команду на соединение с машиной, расположенной по заданному IP-адресу с указанием нужного номера порта. Поскольку Сервер "на том конце" готов к этому, он откликается, и соединение устанавливается.

Для TCP существует только два понятия для идентификации процесса: адрес и порт. Так куда же направлять "отклик" Сервера? Очевидно, последний должен каким-то образом узнать, какой порт будет использовать Клиент для приема сообщений от него (ведь мы знаем, что принимать данные можно, только зарезервировав для этого у TCP номер порта). Эту информацию ему как раз и предоставляет драйвер TCP на машине Клиента, который непосредственно перед установкой соединения выбирает незанятый порт из списка свободных на данный момент портов на клиентском компьютере и "присваивает" его процессу Клиент. Затем драйвер информирует о номере порта Сервер в первом же сообщении о желании установить соединение. Собственно, это и составляет смысл такого сообщения.

Как только обмен "приветственными" сообщениями закончен (его еще называют "тройным рукопожатием", потому что в общей сложности посылается 3 таких сообщения), между Клиентом и Сервером устанавливается логический канал связи. Иными словами, Клиент может передать данные Серверу, записав их с помощью системной функции в канал, а Сервер — принять их, прочитав из канала. 

  1.  
    Терминология



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

Сервер — это именно машина ("железо"), а не логическая часть Сети, он может иметь несколько различных IP-адресов (не говоря уже о доменных именах), так что вполне может выглядеть из Интернета как несколько независимых систем.

Отличительной чертой сервера является то, что он использует один-единственный стек TCP/IP, т. е. на нем запущено только по одному "экземпляру" драйверов протоколов. 

У термина "сервер" есть и еще одно, совершенно другое, определение — это программа (в терминологии, TCP — процесс), обрабатывающая запросы клиентов. Например, приложение, обслуживающее пользователей WWW, называется Web-сервером. 

Узел. Любой компьютер, подключенный к Интернету, имеет свой уникальный IP-адрес. Нет адреса — нет узла. Узел — совсем не обязательно сервер (типичный пример — клиент, подключенный через модем к провайдеру). Любая сущность, имеющая уникальный IP-адрес в Интернете, называется узлом. С этой (логической) точки зрения Интернет можно рассматривать, как множество узлов, каждый из которых потенциально может связаться с любым другим. На одной системе может быть расположено сразу несколько узлов, если она имеет несколько IP-адресов. Например, один узел может заниматься только доставкой и рассылкой почты, второй — исключительно обслуживанием WWW, а на третьем работает DNS-сервер.

TCP использует термин "процесс", и каждый процесс для него однозначно идентифицируется IP-адресом и номером порта. Так вот, этот самый IP-адрес и есть узел.

Порт.

Некоторое число, которое идентифицирует программу, желающую принимать данные из Интернета. Таким образом, порт — вторая составляющая адресации TCP. Любая программа, стремящаяся передать данные другой, должна знать номер порта, который закреплен за последней. Например, традиционно Web-серверу выделяется порт с номером 80, поэтому, когда вы набираете какой-нибудь адрес в браузере, запрос идет именно на порт 80 указанного узла.

Сетевой демон.

Сетевой демон — это программа, работающая на сервере и занимающаяся обслуживанием различных пользователей, которые могут к ней подключаться. Иными словами, сетевой демон — это программа-сервер. Типичный пример — Web-сервер, а также FTP- и Telnet-серверы.

Провайдер.

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

Хост

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

Часто хост имеет собственное уникальное доменное имя. Фактически, все, что отличает хост от узла — это то, что он может быть виртуальным. 

Виртуальный хост

Это — хост, не имеющий уникального IP-адреса в Сети, но, тем не менее, доступный указанием какого-нибудь дополнительного адреса (например, его DNS-имени). В последнее время число виртуальных хостов в Интернете постоянно возрастает, что связано с повсеместным распространением протокола HTTP 1.1. С точки зрения Web-браузера (вернее, с точки зрения пользователя, который этим браузером пользуется) виртуальный хост выглядит так же, как и обычный хост — правда, его нельзя адресовать по IP-адресу.

Хостинг-провайдер (хостер)

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

Хостинг

Те услуги, которые предоставляют клиентам хостинг-провайдеры.

Сайт

Сайт — это часть логического пространства на хосте, состоящая из одной или нескольких HTML-страниц (иногда представляемых в виде HTML-документов). Хост вполне может содержать сразу несколько сайтов, размещенных, например, в разных его каталогах. Таким образом, сайт — термин весьма условный, обозначающий некоторый логически организованный набор страниц.

HTML-документ

Файл, содержащий данные в формате HTML.

Страница (или HTML-страница)

Адресуемая из Интернета минимальная единица текстовой информации службы World Wide Web, которая может быть затребована у Web-сервера и отображена в браузере. Часто страница представлена отдельным HTML-документом, однако в последнее время число таких страниц постоянно сокращается — чаще они генерируются автоматически "на лету" какой-нибудь программой и тут же отсылаются клиенту.

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

Язык HTML (Hypertext Markup Language — Язык разметки гипертекста) позволяет вставлять в страницы ссылки на другие страницы. Щелкнув кнопкой мыши на поле ссылки, пользователь может переместиться к тому или иному документу. 

Web-программирование

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

World Wide Web и URL

В наше время одной из самых популярных "служб" Интернета является World Wide Web, Web или WWW (все три термина совершенно равносильны). Действительно, большинство серверов Сети поддерживают WWW и связанный с ним протокол передачи HTTP (Hypertext Transfer Protocol — Протокол передачи гипертекста). Служба привлекательна тем, что позволяет организовывать на хостах сайты — хранилища текстовой и любой другой информации, которая может быть просмотрена пользователем в интерактивном режиме.

Каждый хоть раз в жизни набирал какой-нибудь "адрес" в браузере. Он называется URL (Universal Resource Locator — Универсальный идентификатор ресурса) и обозначает в действительности нечто большее, нежели чем просто адрес. Для чего же нужен URL? Почему недостаточен лишь один DNS-адрес?

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

В общем случае URL выглядит примерно так:

http://www.somehost.com:80/path/to/document.html

Рассмотрим подробнее каждую логическую часть этого URL.

Протокол

Часть URL, предваряющая имя хоста и завершающаяся двумя косыми чертами (в нашем примере http://), указывает браузеру, какой высокоуровневый протокол нужно использовать для обмена данными с Web-сервером. Обычно это HTTP, но могут поддерживаться и другие протоколы. Например, протокол HTTPS позволяет передавать информацию в специальном зашифрованном виде, чтобы злоумышленники не могли ее перехватить, — конечно, если Web-сервер способен с ним работать. Нужно заметить, что все подобные протоколы базируются на сервисе, предоставляемом TCP, и по большей части представляют собой лишь набор текстовых команд. 

Имя хоста

Следом за протоколом идет имя узла, на котором размещается запрашиваемая страница (в нашем примере — www.somehost.com). Это может быть не только доменное имя хоста, но и его IP-адрес. В последнем случае, как нетрудно заметить, мы сможем обращаться только к узлам (невиртуальным хостам), потому что лишь они однозначно идентифицируются указанием их IP-адреса.

Порт

Сразу за именем хоста через двоеточие может следовать (а может и быть опущен) номер порта. Исторически сложилось, что для протокола HTTP стандартный номер порта — 80 (или 81). Именно это значение используется браузером, если пользователь явно не указал номер порта. Как мы знаем, порт идентифицирует постоянно работающую программу на сервере (или, как ее нередко называют, сетевой демон), в частности, порт 80 связывается с Web-сервером, который и осуществляет обработку HTTP-запросов клиентов и пересылает им нужные документы. Существуют и другие демоны, например, FTP и Telnet, но к ним нельзя подключиться с помощью браузера.

Путь к странице

Наконец, мы дошли до последней части адресной строки — пути к файлу страницы (в нашем примере это /path/to/document.html). Как уже упоминалось, совершенно не обязательно, чтобы эта страница действительно присутствовала, — вполне типична ситуация, когда страницы создаются "на лету" и не представлены отдельными файлами в файловой системе сервера. Например, сайт новостей может использовать виртуальные пути типа /Y/M/N.html для отображения всех новостей за число N месяца M года Y, так что пользователь, набрав в браузере адрес наподобие http://новострой_сервер/2000/10/20.html, сможет прочитать новости за 20 октября 2000 года. При этом файла с именем 20.html физически нет, существует только виртуальный путь к нему, а всю работу по генерации страницы берет на себя программное обеспечение сервера.

Есть и другой механизм обработки виртуальных путей, когда запрошенные файлы представляют собой статические объекты, но располагаются где-то в другом месте. С точки зрения программного обеспечения путь к документу отсчитывается от некоторого корневого каталога, который указывает администратор сервера. Практически все серверные программы позволяют создавать псевдонимы для физических путей. Например, если мы вводим:

http://www.somehost.com/cgi-bin/something

отсюда не следует, что существует каталог cgi-bin, — это может быть лишь имя псевдонима, ссылающегося на какую-то другую каталог.

Расширение html (от HyperText Markup Language — Язык разметки гипертекста) принято давать документам со страницами Web. HTML представляет собой язык, на котором задается расположение текста, рисунков, гиперссылок и т. д. Кроме html часто встречаются и другие форматы данных: gif, jpg — для изображений, cgi, pl — для сценариев (программ, запускаемых на сервере) и т. д. Вообще говоря, сервер можно настроить таким образом, чтобы он корректно работал с любыми расширениями, например, никто не запрещает нам сконфигурировать его так, чтобы файлы с расширением htm также рассматривались как HTML-документы (что часто и делается).

  1.  
    Установка Apache, PHP, MySQL для Windows 95/98



2.1. Установка Apache


Дистрибутив сервера можно скачать с официального сайта Apache: http://www.apache.org, выбрав самую последнюю версию сервера для платформы Windows. 

Далее приводятся инструкции по установке и конфигурированию.

Этап первый: установка

1. Запустите полученный файл дистрибутива Apache. В появившемся диалоговом окне нажмите кнопку Next, а затем — кнопку Yes, чтобы согласиться с условиями лицензии.

2. Нажимайте кнопку Next в открывающихся окнах до тех пор, пока не появится запрос о выборе каталога для установки Apache. Рекомендуется оставить тот каталог, который предлагается по умолчанию (C:\Program Files\Apache Group\Apache). 

3. В появившемся окне установите флажок Typical (Обычная) и нажмите кнопку Next.

4. Программа инсталляции Apache предложит создать папку в меню Пуск в папке Программы. Позвольте ей это сделать, нажав кнопку Next. Начнется процесс копирования программного обеспечения.

5. После окончания копирования нажмите кнопку Finish. Процесс установки сервера завершен, впереди — его настройка.

Этап второй: настройка файла конфигурации Apache

На этом этапе вам нужно определиться с каталогом, в котором будут храниться ваши сайты. По умолчанию Apache использует для этого C:\Program Files\Apache Group\Apache\htdocs, где сразу после установки можно найти документацию. Создайте в этом каталоге каталог, в котором будут храниться ваши сайты. 

Откройте в Блокноте файл конфигурации httpd.conf, который расположен в подкаталоге conf каталога Apache (C:\Program Files\Apache Group\Apache). 

Httpd.conf — единственный файл, который вам нужно настроить. Вам предстоит найти и изменить в нем некоторые строки, а именно те, о которых упоминается далее. Следует заметить, что в файле каждый параметр сопровождается несколькими строками комментариев

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

Задайте значение параметра ServerName следующим образом:

ServerName localhost

Только не забудьте раскрыть комментарий для поля ServerName, т. е. убрать

символ # перед этим параметром (установленный по умолчанию), поскольку все, что идет после этого символа и до конца строки, Apache игнорирует.

В поле DocumentRoot укажите тот каталог, в котором будут размещены ваши HTML-файлы. Оставьте путь, указанный по умолчанию (C:/Program Files/Apache Group/Apache/htdocs).

Инициализируйте параметр DirectoryIndex так:

DirectoryIndex index.htm index.html

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

Найдите следующий параметр:

ScriptAlias /cgi-bin/ " C:/Program Files/Apache Group/Apache/cgi-bin/

Это будет тот каталог, в котором должны располагаться ваши CGI-сценарии. Подобный параметр говорит Apache о том, что, если будет указан путь вида http://localhost/cgi-bin, то на самом деле следует обратиться к каталогу C:/Program Files/Apache Group/Apache/cgi-bin. 

Найдите и настройте (не забудьте раскрыть комментарий!) следующий параметр: AddHandler cgi-script .bat .exe .cgi

Он говорит Apache о том, что файлы с расширениями exe, bat и cgi надо рассматривать как CGI-модули.

И последнее — раскомментируйте и настройте следующие параметры:

AddType text/html .shtml

AddHandler server-parsed .shtml .html .htm

Этим вы заставляете Apache обрабатывать файлы с указанными расширениями процессором SSI.

Теперь не забудьте сохранить изменения и закройте Блокнот.

Этап третий: тестирование Apache

Вы настроили свой Apache, и он должен уже работать. Для запуска сервера нажмите кнопку Пуск, затем выберите Программы, Apache HTTP Server и Start Apache in Consol, при этом всплывет окно, очень похожее на Сеанс MSDOS, и ничего больше не произойдет. Не закрывайте его и не трогайте до конца работы с Apache.

Если окно открывается и тут же закрывается, это означает, что вы допустили какую-то ошибку в файле httpd.conf. В этом случае придется искать неточность. 

Проверка html

Наберите в браузере: http://localhost/. Должен загрузиться файл index.html из каталога C:/Program Files/Apache Group/Apache/htdocs.

В подкаталоге каталога C:/Program Files/Apache Group/Apache/htdocs, который Вы создали для хранения своих сайтов, создайте файл index.html с любым текстовым наполнением. Теперь запустите браузер

и наберите:

http://localhost/Название_Вашего_каталога/index.html

или просто

http://localhost/Название_Вашего_каталога/

Должен загрузиться ваш файл.


2.2. Установка PHP


Загрузить PHP можно с официального сайта PHP http://www.php.net из секции Downloads два файла

1. Запустите exe-файл. В открывшемся диалоговом окне нажмите кнопку Next.

2. Согласитесь с условиями лицензии, нажав кнопку I Agree. В появившемся диалоговом окне выберите тип установки Standard.

3. Теперь укажите директорию, в которую будет установлен PHP. Оставьте указанную по умолчанию (C:\PHP)

Оставьте в текстовых полях значения по умолчанию.

5. Выберите сервер, на который будет настроен PHP. В нашем случае это — Apache.

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

На этом этапе язык PHP можно считать уже почти установленным — нам осталось только настроить Apache, чтобы он мог распознать PHP-сценарии, а также подключить дополнительные модули, которые содержатся в загруженном нами zip-архиве.

Настройка Apache для работы с PHP

1. Откройте в Блокноте файл конфигурации Apache httpd.conf, находящийся в каталоге C:\Program Files\Apache Group\Apache\conf. 

2. Найдите в тексте файла такую закомментированную строку:

#AddType application/x-httpd-php php

3. Раскройте комментарий:

AddType application/x-httpd-php php

Таким образом, мы присвоили всем файлам с расширением php тип

application/x-httpd-php.

4. Сразу же после этой строки добавьте такие настройки:

ScriptAlias /_php/ "C:/PHP/"

Action application/x-httpd-php "/_php/php.exe"

Этим мы, во-первых, создаем синоним _php для каталога с процессором PHP, чтобы Apache мог получить к нему доступ, а во-вторых, связываем все файлы типа application/x-httpd-php с обработчиком php.exe.

Префикс к строке "_php" выбран из такого расчета, чтобы она в будущем не конфликтовала с именами каталогов, которые вы можете объявить на вашем хосте.

5. Сохраните изменения в файле конфигурации, остановите Apache, если он был до этого запущен (пункт Пуск u Программы u Apache Web Server u Management u Stop Apache), и стартуйте сервер снова. Если Apache не запускается (его окно открывается и тут же закрывается), значит, вы где-то допустили синтаксическую ошибку. 

Тестирование PHP

Давайте теперь убедимся, что PHP-сценарии работают. Для этого создадим в каталоге C:/Program Files/Apache Group/Apache/htdocs файл test.php со следующим содержанием:


Листинг 5.1. Тестовый сценарий


echo "It works!
\n";

phpinfo();

?>


Теперь наберите в браузере: http://localhost/test.php. Должна отобразиться

страница с разнообразной информацией о PHP, которая генерируется функцией phpinfo().

Напоминаем, что PHP-сценарии — не то же самое, что CGI-сценарии. В частности, если CGI-сценарий обычно располагают в /cgi-bin/ или /cgi/, то php-сценарий должен находиться в каталоге с документами.

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

Откройте его снова и исправьте ошибку, затем не забудьте перезапустить Apache.


2.3. Установка MySQL 


1. Дистрибутив MySQL можно загрузить с официального сайта MySQL (http://www.mysql.com, раздел Downloads). Дистрибутив представляет собой zip-архив, который нужно развернуть в любой удобный вам каталог.

2. Запустите setup.exe из только что разархивированного дистрибутива. Нажмите кнопку Next.

3. В появившемся информационном окне снова нажмите Next. Откроется диалог с запросом о выборе каталога для MySQL. По умолчанию предлагается C:\mysql. Оставьте этот каталог и нажмите Next.

4. Выберите тип установки Typical. Начнется копирование файлов MySQL. Дождитесь его окончания. MySQL установлена.

5. Для того чтобы активизировать MySQL-сервер, запустите исполняемый файл C:\MySQL\bin\mysqld.exe. Можете создать для него ярлык, однако, поскольку обычно MySQL работает "в связке" с Apache, будет логично создать командный файл, который будет стартовать и Apache, и MySQL. Назовем его server.bat. Вот содержание этого файла:


@echo off

"C:\MySQL\bin\mysqld"

start /m "C:\Program Files\Apache Group\Apache\Apache"


Для операционных систем Windows NT и Widows 2000, однако, будет удобнее использовать несколько другие команды (иначе в этих системах окно процесса MySQL будет постоянно видно на экране, что нежелательно):


@echo off

start C:\MySQL\bin\mysqld-nt --standalone

C:\Progra~1\Apache~1\Apache\Apache -k start


Перед выключением или перезагрузкой компьютера нужно завершать работу Apache и MySQL. Для этого удобнее всего создать следующий bat-файл с именем, например, shutdown.bat.


@echo off

"C:\Program Files\Apache Group\Apache\Apache" -k shutdown

"C:\MySQL\bin\mysqladmin" -u root shutdown


Тестирование MySQL

Давайте теперь проверим, все ли работает. Для начала запустите наш файл server.bat, чтобы активизировать сервер. Создайте следующий PHP-сценарий с именем mysql.php в каталоге C:/Program Files/Apache Group/Apache/htdocs.



define("DBName","test");

define("HostName","localhost");

define("UserName","root");

define("Password","");

if(!mysql_connect(HostName,UserName,Password))

{ echo "Не могу соединиться с базой ".DBName."!
";

echo mysql_error();

exit;

}

mysql_select_db(DBName);

// Создаем таблицу t. Если такая таблица уже есть,

// сообщение об ошибке будет подавлено

@mysql_query("create table t(id int, a text)");

// Вставляем в таблицу 10 записей

for($i=0; $i<10; $i++)

{ $id=time();

mysql_query("insert into t(id, a) values($id, 'No.$i!')");

}


$r=mysql_query("select * from t");

for($i=0; $i
 
{ $f=mysql_fetch_array($r);

echo "$f[id] -> $f[a]
\n";

}

?>


Теперь наберите в браузере:

http://localhost/mysql.php

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

В тексте программы присутствуют константы DBName, HostName, UserName и Password.

DBName должен содержать имя базы данных (в нашем случае это test — база данных, которая создается MySQL по умолчанию). HostName — всегда localhost, ведь мы работаем на локальном компьютере. В макросе UserName проще всего подставлять root, который является владельцем всех таблиц. При установке MySQL пользователю root не назначается пароль, так что константа Password равна пустой строке.

ЗАДАНИЯ


  1.  
    Выучить теоретические сведения.
  2.  
    Научиться устанавливать Apache, PHP и MySQL.


 

А также другие работы, которые могут Вас заинтересовать

67361. Перехоплення винятків класового типу 71 KB
  Виняток може мати будь-який тип, у тому числі і класового типу, створенного програмістом. У реальних програмах більшість винятків мають саме класовий тип, а не вбудований тип. Ймовірно, тип класу найбільше підходить для опису помилки, яка потенційно...
67362. ЮРИДИЧЕСКАЯ ОТВЕТСТВЕННОСТЬ. СОЦИАЛЬНАЯ ОТВЕТСТВЕННОСТЬ И ЕЕ ВИДЫ 143.5 KB
  Ответственность личности имеет социальную природу предопределенную как общественным характером отношений так и особенностями личности ее местом в системе этих отношений. Социальная ответственность возникает тогда когда поведение индивида имеет общественное значение...
67363. Перехоплення всіх винятків 78.5 KB
  Часто доцільно використовувати настанову catch(...) як останній «рубіж» catch-послідовності. У цьому випадку вона забезпечує перехоплення винятків усіх інших типів (тобто не передбачених попередніми catch-виразами). Наприклад, розглянемо ще одну версію попереднього коду програми...
67364. ПРАВОСОЗНАНИЕ И ПРАВОВОЕ ВОСПИТАНИЕ 137 KB
  Нормы права нормативные акты правоприменительные решения и другие юридические феномены могут рассматриваться как своеобразные теоретические и практические проекции культуры для обозначения которых в этом качестве науке необходимо специальное понятие.
67365. Повторне генерування винятку 79.5 KB
  Для того, щоби повторно згенерувати винятки в його обробнику, необхідно використовувати throw-настанову без вказання типу винятку. У цьому випадку поточний виняток передається в зовнішню try/catch-послідовність. Найчастіше причиною для такого виконання настанови throw слугує прагнення мати доступ до одного винятку декільком обробникам.
67366. ПРАВОВАЯ КУЛЬТУРА. ПОНЯТИЕ И ОБЩАЯ ХАРАКТЕРИСТИКА 116.5 KB
  Для раскрытия сущности обозначенной проблемы необходимо рассмотреть исходные предпосылки и принципы формирования теории правовой культуры проанализировать последнюю как объект изучения и типы знаний об этом объекте определить круг исследуемых вопросов...
67368. Потоки. Класи потоків С++ 177.5 KB
  На сьогодні існують дві версії бібліотеки об'єктно-орієнтованого введення-виведення даних, причому обидві широко використовуються програмістами: стара, що базується на оригінальних специфікаціях мови C, і нова – визначається стандартом мови програмування C++.
67369. ПРАВОВОЙ НИГИЛИЗМ И ПРАВОВОЙ ИДЕАЛИЗМ 245.5 KB
  Проблема правового нигилизма и правового идеализма в учебной литературе по теории государства и права до сих пор не рассматривалась. Современное российское общество характеризуется множеством различных противоречий среди которых наблюдается и такое как причудливое переплетение...