Основы web-программирования. Лекции 14 Сергей Львович Островский
Скачать 1.82 Mb.
|
Таблица перевода в двоичную и шест- надцатеричную системы счисления
ПрОЛетая над мирОм WEb-ПрОграммирОвания ся ), каждому компьютеру (устройству), подклю- ченному к сети, выдается четырехбайтовый (поэтому и IPv4) числовой адрес, который принято записывать через точки. Например, так: 200.100.020.010. Как именно компьютер получает IP-адрес, что такое маски, подсети и пр. — все это очень интересно, но ле- жит за рамками нашего курса. Впрочем, надо сделать одно важное для нас замечание. Среди всех IP-адресов есть некоторое множество особенных. Эти особенные адреса не используются в Интернете, а применяются для организации локальных сетей и иных служебных нужд. А самый особенный из всех особенных адресов — адрес 127.0.0.1. Этот адрес всегда соответствует данному ком- пьютеру. То есть на самом деле ваш компьютер имеет как минимум два IP-адреса, и один из них — 127.0.0.1. Как это проверить? Например, посредством стан- дартной программы ping — она есть в любой системе. Ping — это универсальный “тук-тук”, он предназначен лишь для того, чтобы проверить, живет ли кто-нибудь в “домике” (по данному IP-адресу). Вот как выглядит процесс “пингования” адреса 127.0.0.1. Рис. 2. “Пингуем” наш собственный компьютер Хотя компьютеры в сети узнают друг друга именно по IP- адресам, людям не очень удобно иметь дело с числами. (Ко- нечно, есть хороший контрпример — телефонные номера. Но так уж сложилось исторически.) Поэтому с самого на- чала в Сети была введена система так называемых “домен- ных имен”. А система установления соответствий между именами и IP-адресами получила название DNS — Domain Name System. За преобразование имен в адреса отвечают специальные DNS-серверы, которые (мы несколько упро- щаем модель) хранят огромные таблицы из двух столбцов. Левый столбец — адрес, правый — имя. Кстати, практически на любом компьютере (на ва- шем — точно) тоже имеется свой маленький “DNS-сер- верок”. Его роль выполняет файл hosts (в Windows XP он лежит по адресу system32/drivers/etc). Записи в этом файле как раз и устанавливают соответствие между именами и адресами хостов. Найдите файл hosts у себя на компьютере и посмотрите на его содержимое. Ско- рее всего вы увидите примерно следующее (Пример 2 внизу страницы). Чтобы окончательно убедиться, что все это работает, можете проделать два простых эксперимента. Сначала попробуйте “пингануть” хост localhost. Результат, как вы видите ниже, практически совпадает с показанным на предыдущей иллюстрации, с той лишь разницей, что утилита ping сначала определила, какой компьютер со- ответствует адресу 127.0.0.1 (SOM — имя компьютера, на котором я ставил эти опыты). Рис. 3. “Пингуем” localhost Пример 2 # (C) Корпорация Майкрософт (Microsoft Corp.), 1993-1999 # Это образец файла HOSTS, используемый Microsoft TCP/IP для Windows. # Этот файл содержит сопоставления IP-адресов именам узлов. # Каждый элемент должен располагаться в отдельной строке. IP-адрес должен # находиться в первом столбце, за ним должно следовать соответствующее имя. # IP-адрес и имя узла должны разделяться хотя бы одним пробелом. # Кроме того, в некоторых строках могут быть вставлены комментарии # (такие, как эта строка), они должны следовать за именем узла и отделяться # от него символом '#'. # # Например: # # 102.54.94.97 rhino.acme.com # исходный сервер # 38.25.63.10 x.acme.com # узел клиента x 127.0.0.1 localhost Лекция 1 Если все получилось, попробуйте поставить опыт № 2. “Пинганите”, к примеру, хост vpupkin. Поскольку тако- го хоста нет, вы получите соответствующее сообщение. Рис. 4. Нет такого хоста! Теперь добавьте в файл hosts запись 127.0.0.1 vpupkin и снова “пинганите”. Получилось? Рис. 5. Ура! Заработало! IP-адрес — важнейшая составляющая часть механиз- ма функционирования Сети. Но есть проблема: адрес соответствует компьютеру (точнее, некоторому сетево- му интерфейсу компьютера, но эта подробность для нас не слишком существенна). А один компьютер может выполнять различные функции — быть и web-сервером, и почтовым сервером, и еще чем-нибудь. Все эти функ- ции связаны с обменом информации по сети. То есть в общем случае на компьютер с данным адресом прихо- дит много различной информации (пакетов информа- ции), и надо понимать, какой пакет кому предназначен. Для решения этой задачи придумали механизм портов. Можно представить себе следующую модель: IP-ад- рес — это адрес дома, а порт — номер квартиры. На каждом пакете написан не только IP-адрес, но и номер порта. Соответственно, не возникает никаких конфлик- тов — каждый пакет отправляется в свой “теремок”. А кто в теремочке живет? А в теремочке как раз и живет конкретная программа. Например, web-сервер, который нас интересует в первую очередь, обычно жи- вет в теремочке № 80 (программисты говорят “висит на 80-м порту”). Почтовый “демон” обычно принимает своих клиентов в теремочках 110 и 25 (в первом он вы- дает письма, во втором — принимает), и т.д. Бери, не жалко! Итак, браузер “стучится” по найденному адресу на определенный порт (по умолчанию — 80-й). Браузер: Тук-тук, есть тут кто? Если на данном компьютере работает программа — web-сервер, она откликается: Web-сервер: Есть. Чего надобно? Браузер: Мне нужен файл document.htm с сайта www.mysite.ru. Web-сервер: Сейчас найду… нашел… забирай! Обратите, пожалуйста, внимание на то, что браузер не случайно называет не только имя файла, но и имя сайта, с которого он хочет его получить. Казалось бы, странно: он же уже пришел на данный сайт, достаточно назвать лишь имя документа. А вот и нет! Почему? Потому что один web-сервер на одном компьютере, как правило, обслуживает много сайтов. Действительно: вспомните о хостинг-провайдерах, которые предоставляют услуги по размещению сайтов. Если бы для размещения каждого сайта требовался отдельный компьютер, это было бы просто немыслимо! Таким образом, web-сервер можно представлять себе как кладовщика, который живет в комнате 80 и через окошко в двери умеет выдавать файлы по запросам брау- зеров. А теперь — внимание! — самый главный вопрос: а как “кладовщик” web-сервер находит требуемый файл на своем компьютере? Зри в корень! Для того чтобы web-сервер умел находить требуемые файлы, он знает самый главный параметр сайта — так называемый корневой каталог. Суть этого параметра очень простая — это каталог в файловой системе компью- тера, на котором работает web-сервер, который соответ- ствует “корню” данного сайта. Например, если для сайта www.mysite.ru корневым каталогом назначен D:\sites\ mysite\www, то файл http://www.mysite.ru/document.htm web-сервер будет искать по адресу D:\sites\mysite\www\ document.htm. Соответственно, файл http://www.mysite.ru/ photos/petya.jpg web-сервер найдет по адресу D:\sites\ mysite\www\photos\petya.jpg. Корневой каталог сайта — это очень просто, но очень важно! Мы еще не раз встретимся с этим параметром. “Кухня” web-сервера Ну и где же здесь место программированию? — спросите вы. До этого вопроса мы как раз добрались. Вышеописанные действия web-сервера к программи- рованию не имели отношения — у него попросили файл, он отдал — и все. Это действительно напомина- ет работу обычного кладовщика — взять вещь с полки и отдать. А что если вещи в готовом виде на полке нет? Как это? А вот так: попросили, допустим, у кладовщика… яич- ницу. (С помидорами! Очень люблю яичницу с поми- дорами!) На складе, конечно, нет яичницы! Яйца есть, соль есть, помидоры есть. А готовой яичницы нет. Но это не беда — кладовщик что-нибудь организует. Как ПрОЛетая над мирОм WEb-ПрОграммирОвания и что — его дело — браузер об этом не знает. Браузер просит яичницу именно у web-сервера и у него же ее и получает. А уж web-сервер сам договаривается с по- варом, передает ему заказ и получает от него яичницу. Вот здесь, на этапе изготовления яичницы, и начинается программирование. Как web-сервер понимает, какой файл надо изгото- вить, а какой просто отдать? Проще, чем вы можете подумать, — по расширению. В настройках web-сервера содержится информация о том, файлы с какими расши- рениями нужно отдавать “как есть”, а с какими — “го- товить”, и кто именно должен их готовить. Например, типичная настройка web-сервера может быть такой: htm- и html-файлы отдавать “как есть”, а php-файлы передавать на обработку интерпретатору языка PHP. И уже то, что вернет интерпретатор, возвращать брау- зеру. Конкретный пример мы рассмотрим уже в конце этого занятия. Идем от реальности: текущие предложения хостинг-провайдеров Прежде чем идти дальше, я хочу обосновать принцип отбора содержания нашего курса. Если посмотреть на это содержание предельно схематично и исключительно с технической точки зрения, то можно увидеть, что речь идет о двух вещах: языке PHP и СУБД MySQL. Что это такое, мы скоро узнаем, а сейчас я постараюсь ответить на вопрос “почему именно PHP+MySQL?”. Для ответа на этот вопрос я предлагаю взглянуть на текущие предложе- ния хостинг-провайдеров. Вообще говоря, практически любых, но я для определенности выбрал двух типичных, с которыми не так давно имел дело, — Agava и Masterhost. Нас будет интересовать, какие возможности, связанные с web-программированием, предлага- ют эти провайдеры. Итак, смотрим… Agava Начнем с провайдера Agava (www.agava.ru). На услуге “Вирту- альный хостинг” (а нас интересует именно это — мы же не собираемся пока нести провайдеру свой ком- пьютер) предлагается поддержка CGI, Perl, PHP, ASP, SSI, MySQL, MS- SQL, ssh, ftp. Перечисленные здесь пункты, вообще говоря, различны, но общее представление о предла- гаемых возможностях составить можно. Кратко объясню, что здесь написано (cм. рис. 6). CGI — Common Gateway Interface — стандартный интерфейс для про- грамм, исполняемых на стороне сервера. Сама по себе поддержка CGI свидетельствует лишь о потенциальной возможнос- ти выполнять программы на сервере. CGI — не язык, а именно интерфейс. Чтобы понять, на чем именно мож- но программировать, надо читать дальше. Perl — культовый язык web-программистов (хотя, ко- нечно, Perl — универсальный язык и web-программиро- вание — лишь одна из областей его применения). Лет 10 назад мир web-программирования практически и был миром Perl. Сейчас Perl используется меньше и реже, потому что появились более удобные, не менее мощные, но более быстрые в освоении языки. Например… PHP — Hypertext Preprocessor (оригинальная рас- шифровка — Personal Home Page — просто сейчас она выглядит несолидно, вот и придумали новую). На сегод- няшний день основной язык, используемый в web-про- граммировании. ASP — Active Server Pages. Своеобразный “PHP от Microsoft”. Технология ASP изначально была придумана для web-серверов Microsoft, но, так как они не слишком распространены, не слишком распространена и сама технология. SSI — Server Side Includes. Очень простое расширение HTML для реализации минимальных возможностей об- работки html-файлов web-сервером. С SSI мы познако- мимся в следующей лекции. MySQL — свободно распространяемая реляционная СУБД. Мощная, удобная и надежная. Очень широко ис- пользуется именно в web-программировании. MSSQL — Microsoft SQL Server. Решение от Microsoft. В web-программровании используется реже, чем MySQL. SSH — Secure Shel. Почему ssh попал в этот список, мне объяснить трудно. Фактически ssh лишь предостав- ляет доступ к командной строке компьютера, на кото- ром установлен web-сервер. FTP — File Transfer Protocol. Это вещь понятная и в объяснениях, на- верное, не нуждается. То, что ftp на- ходится в этом списке, призвано под- черкнуть тот факт, что файлы на web- сервер можно “заливать” по ftp. Ничего особенного в этом нет — трудно найти хостинг, где этого нельзя сделать. Кликнув по ссылке “Подробнее об услуге”, мы можем узнать, что Agava предлагает несколько тариф- ных планов. Обратим внимание на два самых дешевых — Lite и Normal (см. рис. 7). Первый — отметаем сразу. Он нас не интересует, поскольку в нем специально подчеркнуто, что план Lite предназначен для размещения статичных html-страниц. А вот c Normal надо познакомиться “по- дробнее…”. Рис. 6. Базовые предложения Agava 10 Лекция 1 Рис. 8. Подробнее о плане Normal Надо сказать, что по ссылке “Подробнее…” мы уз- наем не слишком много нового. Поясню то, что отно- сится к web-программированию и не было объяснено раньше. “Запуск скриптов из cron”. Cron — это программа, специфичная для Unix-систем, обеспечивающая вы- полнение некоторых действий по расписанию, опреде- ленному пользователем. Сайты часто требуют какого- нибудь периодического обслуживания, и именно для этого, как правило, используется cron. Python — распространенный (но не так широко, как PHP и Perl) универсальный язык, который использует- ся, в частности, в web-программировании. CVS — Concurrent Versions System — удобная, но уже несколько устаревшая (сейчас активно используется SVN) система управления версиями, которая использу- ется, в частности, при разработке программного кода. Суть этой системы в том, что изменения в файлах не теряются и всегда можно “откатить” все изменения до нужной версии, посмотреть, кто именно внес эти изме- нения, и т.д. Такое очень умное бэкапирование. phpMyAdmin — web-интерфейс для доступа к СУБД MySQL. Де-факто практически стандарт. Masterhost Взглянем теперь на предложения хостинг-провайде- ра Masterhost (www.masterhost.ru). Здесь мы не увидим много нового, поэтому сразу перейдем к табличке с рас- шифровкой услуг. Рис. 9. Предложения Masterhost Как видите, все очень похоже. Чуть побольше языков для CGI-скриптов (первая строка), среди которых почему- то нет Python'а. Смело можно сказать — ничего нового. Выводы Если поставить задачу: найти пересечение современных предложений хостинг-провайдеров, — то это пересечение будет иметь примерно такой вид: Perl+PHP+MySQL. Я бы очень хотел сделать курс именно таким, но хорошо понимаю, что в рамки 72-часового дистанционного курса (даже базово- го) уместить это не представляется возможным. Поэтому из двух языков — Perl и PHP — я выбрал более распространен- ный (на сегодняшний день) и более простой в освоении. Так и получилась формула основного содержания: PHP+MySQL. Настраиваем инструментарий: Denwer Мы добрались до самого, пожалуй, интересного — прак- тической части этой лекции. Нам предстоит установить программное обеспечение — пакет Denwer, который будет использоваться в течение всего курса. Что такое Denwer? Denwer — пакет web-разработчика, который поз- воляет легко и просто установить на компьютере под управлением Windows web-сервер Apache, PHP, MySQL, phpMyAdmin и Perl (он нам не понадобится, но сам Denwer использует Perl в служебных целях). Denwer позволяет отлаживать скрипты на локальном компью- тере, а не на сервере. Это очень удобно! Удобно также то, что Denwer при установке не мо- дифицирует системных файлов, не разбрасывает всюду свои библиотеки, в общем — не пытается быть умнее вас. Фактически вся установка заключается в копирова- нии файлов в выбранный вами каталог (лучше, конечно, отдельный — об этом ниже). Подавляющее большинство слушателей нашего курса ра- ботает на компьютерах под управлением Windows XP, поэ- тому я буду ориентироваться на соответствующую сборку Denwer'а . Если у вас другая версия Windows, то скорее всего все также будет работать без всяких проблем и изменений. Если у вас не Windows, а Linux, то никакого Denwer'а вам не нужно вовсе — надо просто поставить соответствующие пакеты. Все примеры данного курса я отлаживаю как мини- мум в Denwer'е под Windows XP и в Linux (Ubuntu). Рис. 7. Два самых дешевых тарифных плана Agava 11 ПрОЛетая над мирОм WEb-ПрОграммирОвания Где взять Denwer? Denwer положено брать с официального сайта разра- ботчиков www.denwer.ru. Но! Пожалуйста, в данном слу- чае не делайте этого, а обязательно возьмите Denwer на странице нашего курса на сайте http://edu.1september.ru (раздел “Учебные материалы”). Почему? Потому что версии Denwer’а на сайте разработчиков могут меняться и возможна (хотя крайне маловероятна) ситуация, когда один и тот же пример — например, со- держащий ошибку, в разных версиях будет работать по- разному. Когда я буду с этой ошибкой разбираться, мне важно знать, что я вижу то же, что видите вы. Впрочем, что я объясняю очевидные вещи коллегам-преподавателям . Файл, который вы скачаете, будет иметь очень длинное имя — в нем записаны версии всех пакетов. Не обращайте на это внимание, смело приступайте к установке. Установка Denwer В этом разделе я по шагам опишу несложный про- цесс установки пакета Denwer. Сначала несколько об- щих замечаний: Denwer ставится в некоторый каталог, указываемый пользователем. Конечно, разумно выбрать (создать) от- дельный каталог (я, например, как будет видно ниже, выбрал каталог D:\Denwer3). Для работы Denwer'а ему необходим так называемый “виртуальный диск”. Организация таких дисков — штат- ная возможность Windows и DOS с незапамятных времен. Сейчас виртуальные диски используются не слишком час- то, поэтому о них подзабыли. Виртуальный диск — просто буква логического диска, закрепленная за некоторым ка- талогом. Создаются виртуальные диски командой subst. Шаг 1 Рис. 10. Запускаем установочный файл. Не боимся, вирусов в нем нет! Шаг 2 Рис. 11. Действительно хотим. Иначе зачем бы мы запускали инсталлятор? Шаг 3 Рис. 12. Здравствуй, Denwer! Шаг 4 Ответственный момент. Здесь надо выбрать каталог, в который будет установлен Denwer (если каталога с та- ким именем не существует, он будет создан). В принци- пе есть возможность установить Denwer и на flash-на- копитель, тогда можно будет носить его с компьютера на компьютер. Правда, работать все будет помедленнее. Если нет необходимости, лучше так не делать. Рис. 12. Выбор каталога для установки Шаг 5 Рис. 13. Здесь разработчики своими словами объясняют, что такое виртуальный диск. 12 Лекция 1 Шаг 6 Требуется ввести букву виртуального диска. Следует выбирать только свободную букву (т.е. уж точно не C и не D!). Я выбрал Q. Рис. 14. Выбор буквы виртуального диска Шаг 7 Выбор вариантов инициализации виртуального дис- ка — при загрузке компьютера или при запуске Den- wer. Я всегда выбираю первый вариант — диск ровным счетом ничему не мешает. При выборе этого варианта в меню автозагрузки появится скрипт инициализации диска (см. рис. 15). Рис. 15. Выбор вариантов инициализации виртуального диска Рис. 16. Вызов скрипта инициализации виртуального диска Шаг 8 Собственно, все. После установки на рабочем сто- ле появляются два ярлыка для запуска и остановки Denwer'а. Можно сразу попробовать его запустить. Рис. 17. Ярлыки на рабочем столе При первом запуске скорее всего сработает систе- ма безопасности — брандмауэр Windows. Это нор- мально — ведь web-сервер начинает “слушать” сетевые порты. Если нажать кнопку “Разблокировать”, Windows запомнит ваш выбор и больше приставать не будет. Рис. 18. Предупреждение системы безопасности при первом запуске Когда Denwer запустится, в системном трее появятся две пиктограммы: одна — с пером (это — web-сервер Apache), другая — с письмом (эмулятор почтового сер- вера, который нам не понадобится). Рис. 19. Пиктограммы в системном трее Теперь можно попробовать, как все это работает. Запустите Denwer (если еще не сделали этого), загрузи- те браузер и введите в адресной строке http://localhost. Ну же! Если все было сделано правильно, вы увидите страни- цу “Ура, заработало!”. Рис. 20. Ура, заработало! А если не работает? . Попробуйте, пожалуйста, в пер- вую очередь посмотреть FAQ на сайте www.denwer.ru. В нем описаны некоторые типичные проблемы и пути их решения. Если ничего не получится — пишите. 1 ПрОЛетая над мирОм WEb-ПрОграммирОвания Что у него внутри? Теперь у нас очень ответственный этап (очередной очень ответственный). Мы установили Denwer и должны научиться с ним работать. Пожалуйста, аккуратно и в точности про- делайте следующие операции (я предполагаю, что виртуаль- ному диску Denwer'а соответствует буква Q): 1. Остановите Denwer, если он у вас запущен. 2. Откройте диск Q. Рис. 21. Содержимое виртуального диска Denwer'а 3. Войдите в каталог home и создайте в нем каталог localweb. Рис. 22. Создали каталог localweb 4. В каталоге localweb создайте каталог www. Рис. 23. Создали каталог www 5. В каталог www поместите html-файл test.htm сле- дующего содержания: |