45049 (664171), страница 5
Текст из файла (страница 5)
ErrorLog f:/home/serv1/log/error.log
CustomLog f:/home/serv1/log/access.log common
При желании можно добавить и другие параметры (например, DirectoryIndex и т.д.) Вообще, не переопределенные параметры наследуются виртуальным хостом от главного.
Теперь надо немного подправить системный файл hosts, который находится в C:\WINDOWS\hosts (такого файла может не быть по умолчанию - в этом случае его надо создать). hosts - обычный текстовый файл, и в нем обычно заранее прописана только одна строка:
195.161.69.169 www.real.ulan-ude.ru
именно эта строка и задает соответствие имени localhost адресу 127.0.0.1. (Ради справедливости следует сказать, что имя localhost работает и без указанной выше строки. Ну и выдумщики же эти парни из фирмы Microsoft!) Для нашего виртуального хоста надо добавить соответствующую строчку, чтобы файл выглядел так:
195.161.69.170 www.real.ulan-ude.ru
195.161.69.171 www.real2.ulan-ude.ru
Этим Вы создадите виртуальных хост со следующими свойствами:
Имя - serv1
Доступен по адресу http://serv1 (или http://195.161.69.171).
Расположен, соответственно, в директории f:/home/serv1.
Директория для хранения документов - f:/home/serv1/www, доступная по адресу http://serv1.
Директория для CGI - f:/home/serv1/www/cgi, доступная по адресу http://serv1/cgi/
Файлы журналов хранятся в f:/home/serv1/log
Ну вот, мы создали один виртуальный хост! Если будет необходимо сделать второй, нужно просто проделать аналогичные действия, заменив параметры, связанные с расположением хоста на диске. Главное, не забудьте в этом случае указать другой IP-адрес (лучше всего указывать их последовательно, начиная с 195.161.69.170, затем 195.161.69.171 и т.д. - в этом случае все работает корректно). Желательно также для этих целей не указывать IP-адрес http://195.161.69.169, так как это - адрес главного сервера.
Кстати, необходимо заметить, что главный хост (невиртуальный, тот, который мы создали в разделах 1 и 2) по-прежнему доступен по адресу http://195.161.69.169 или http://www.real.ulan-ude.ru. Более того, его директория cgi-bin "видна" всем созданным виртуальным хостам, так что Вы можете ее использовать.
Установка Perl
Это совсем просто, за исключением, может быть, выбора директории для Perl. А именно, Вы ДОЛЖНЫ разместить Perl. Замечу, что это очень важно, так как Perl требует, чтобы в каждом скрипте первой строкой стоял путь к Perl-интерпретатору; например, эта строка может выглядеть так:
#!/usr/local/bin/perl
Эту же строку можно было бы написать и так:
#!/usr/local/bin/perl.exe
или даже так:
#!f:\usr\local\bin\perl.exe
Это заставляет искать Perl-интерпретатор в директории f:/usr/local/bin/ (если диск f: не указан, это означает, что он совпадает с диском, на котором расположен Apache). Ясно, что если установить Perl не в такую же директорию, Вам придется каждый раз менять эту самую первую строку во всех скриптах при закачке их на сервер. Итак, далее буду считать, что эта директория такова, как на большинстве Apache-серверов:
f:/usr/local/bin
ВНИМАНИЕ: очень распространенной ошибкой является установка Perl не в ту директорию или не на тот диск. Еще раз обращаю внимание на то, где должен быть расположен транслятор.
Если все же по какой-то необъяснимой причине не придерживаетесь моего совета, то проверьте первую строку в скрипте. Она должна указывать не на директорию с Perl, а на исполнимый файл perl.exe. Напоминаю, что #!/usr/local/bin/perl заставляет искать Perl-интерпретатор perl.exe в директории f:/usr/local/bin/, а не в f:/usr/local/bin/perl
Если все же установлен путь неправильно, Apache выдаст непонятное сообщение об ошибке, а в errors.log появится сообщение: couldn't spawn child process.
Вот шаги, приводящие к цели:
Первым делом создайте директорию
f:/usr/local/bin
Затем скачайте дистрибутив Perl - файл с именем perl_setup.exe (436.137 байт), желательно в только что созданную директорию. Это саморазворачивающийся архив, Вам нужно будет просто его запустить, чтобы разархивировать в текущую директорию.
Теперь настроим сервер. Найдите в файле конфигурации Apache conf/httpd.conf строчку
AddHandler cgi-script .bat .exe
Замените ее на
AddHandler cgi-script .bat .exe .pl .cgi
Как это ни странно, но эту директиву AddHandler иногда указывать не обязательно. Однако лучше перестраховаться...
Вот, собственно, и все. Можете пользоваться Perl-транслятором. Для проверки его работоспособности используйте такой скрипт (помещенный, разумеется, в директорию cgi-bin или аналогичную):
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "It works!
\n";
system("dir");
Настройка и установка Apache Jserv v 1.1
Устанвка
Установка Jserv также проста как и установкм самого веб-сервера Apache. Для это нужно естественно имет файл установки ApacheJServ-1.1.2-2.exe (14).
Запустив файл установки нужно указать дирикторию куда будет установлены все нужные файлы для работы Jserv`а. После чего программа установки попрости указать путь до виртуальной машины Java, она должна быть уже установлена.
Виртуальная машина Java можно скачать с веб сайта фирмы Microsoft - SDKJava40.exe. Поле того как программе установки будет указан правельный путь до JVM, он попросит указать путь до Java Servlet Devolopment Kit 2 (JSDK), после чего будет запрошен путь до конфигурационного файла httpd.conf веб-сервера. Вот собственно и вся установка.
Настройка
А теперь нужно рассказать про настройку Jserv`а что бы он мог работать вместе с веб-сервером. Для того что бы Jserv запускался вместе с веб-сервером нужно все что находится в файле jserv.conf перенести в файл настройка веб-сервера Apache httpd.conf, желательно в конец.
Разберем синтаксис. Первый параметр это LoadModule.
Его синтаксис очень прост LoadModule [имя модуля в нашем случае это - jserv_module] [путь до модуля "./ApacheModuleJServ.dll"]. В конечном итоге эта строчка должна выглядить так: LoadModule jserv_module "./ApacheModuleJServ.dll"
Следующая интересующий нас параметр это - ApJServManual он говорит веб-серверу о том как запускать Jserv on=вручную off=автозапуск.
Далее идет параметр ApJServProperties "./conf/jserv.properties" это путь до файла настроек Jservs.
2.4. Использование языка Perl
2.4.1. Основные особенности Perl
Perl - интерпретируемый язык, приспособленный для обработки произвольных текстовых файлов, извлечения из них необходимой информации и выдачи сообщений. Perl также удобен для написания различных системных программ. Этот язык прост в использовании, эффективен, но про него трудно сказать, что он элегантен и компактен. Perl сочитает в себе лучшие черты C, shell, sed и awk, поэтому для тех, кто знаком с ними, изучение Perl-а не представит особого труда. Cинтаксис выражений Perl-а близок к синтаксису C. В отличие от большинства утилит ОС UNIX Perl не ставит ограничений на объем обрабатываемых данных и если хватает ресурсов, то весь файл обрабатывается как одна строка. Рекурсия может быть произвольной глубины. Хотя Perl приспособлен для обработки текстовых файлов, он может обрабатывать так же двоичные данные и создавать .dbm файлы, подобные ассоциативным массивам. Perl позволяет использовать регулярные выражения, создавать объекты, вставлять в программу на С или C++ куски кода на Perl-е, а также позволяет осуществлять доступ к базам данных, в том числе Oracle.
Этот язык часто используется для написания CGI-модулей, которые, в свою очередь, могут обращаться к базам данных. Таким образом может осуществляться доступ к базам данных через WWW.(5,6)
2.5 Использование языка Java
2.5.1 Основные особенности
Развитие Internet и World Wide Web заставляет совершенно по-новому рассматривать процессы разработки и распределения программного обеспечения. Для того, чтобы выжить в мире электронного бизнеса и распространения данных, язык Java должен быть
-
безопасным,
-
высокопроизводительным,
-
надежным.
Работа на различных платформах гетерогенных сетей отбрасывает традиционную схему распределения ПО, версий ПО, модификации ПО, объединения ПО и т.д. Для решения проблем гетерогенных сред язык должен быть
-
нейтральным к архитектуре,
-
переносимым,
-
динамически подстраиваемым.
Разработчики Java с самого начала хорошо понимали, что язык, предназначенный для решения проблем гетерогенных сред, также должен быть
-
простым - его должны с легкостью использовать все разработчики
-
ясным - разработчики должны без больших усилий выучить Java
-
объектно-ориентированным - он использует все преимущества современных методологий разработки ПО и подходит для написания распределенных клиент-серверных приложений
-
многопоточным - для обеспечения высокой производительности приложений, выполняющих одновременно много действий (например, в мультимедийных системах)
-
интерпретируемым - для переносимости и большей динамичности
Необходимо более подробно рассмотреть перечисленные характеристики Java.
Простота
Простота языка входит в ключевые характеристики Java: разработчик не должен длительное время изучать язык, прежде чем он сможет на нем программировать. Фундаментальные концепции языка Java быстро схватываются и программисты с самого начала могут вести продуктивную работу. Разработчиками Java было принято во внимание, что многие программисты хорошо знакомы с языком С++, поэтому Java, насколько это возможно, приближен к С++.
В Java не включены некоторые редко используемые, плохо понимаемые и усложняющие работу возможности С++, которые приносят больше проблем, чем преимуществ. Пришлось отказаться от
-
перегрузки операторов (но перегрузка методов в Java осталась),
-
множественного наследования,
-
автоматического расширяющего приведения типов.
Добавилась автоматическая сборка мусора, упрощающая процесс программирования, но несколько усложняющая систему в целом. В С и С++ управление памятью вызывало всегда массу проблем, теперь же об этом не придется много заботиться.
Объектно-ориентированность
Язык Java с самого начала проектировался как объектно-ориентированный. Задачам распределенных систем клиент-сервер отвечает объектно-ориентированная парадигма: использование концепций инкапсуляции, наследования и полиморфизма. Java предоставляет ясную и действенную объектно-ориентированную платформу разработки.
Программисты на Java могут использовать стандартные библиотеки объектов, обеспечивающие работу с устройствами ввода/вывода, сетевые функции, методы создания графических пользовательских интерфейсов. Функциональность объектов этих библиотек может быть расширена.
Надежность
Платформа Java разработана для создания высоконадежного прикладного программного обеспечения. Большое внимание уделено проверке программ на этапе компиляции, за которой следует второй уровень - динамическая проверка (на этапе выполнения).
Модель управления памятью предельно проста: объекты создаются с помощью оператора new. В Java, в отличие от С++, механизм указателей исключает возможность прямой записи в память и порчи данных: при работе с указателями операции строго типизированы, отсутствуют арифметические операции над указателями. Работа с массивами находится под контролем управляющей системы. Существует автоматическая сборка мусора.
Данная модель управления памятью исключает целый класс ошибок, так часто возникающих у программистов на С и С++. Программы на Java можно писать, будучи уверенным в том, что машина не "повиснет" из-за ошибок при работе с динамически выделенной памятью.
Безопасность
Java разработана для оперирования в распределенных средах, это означает, что на первом плане должны стоять вопросы безопасности. Средства безопасности, встроенные в язык, и система исполнения Java позволяют создавать приложения, на которые невозможно "напасть" извне. В сетевых средах приложения, написанные на Java, защищены от вторжения неавторизованного кода, пытающегося внедрить вирус или разрушить файловую систему.
Независимость от архитектуры
Java разработан для поддержки приложений, внедряемых в гетерогенные сетевые среды. В подобных средах приложения должны исполняться на различных аппаратных архитектурах, под управлением различных операционных систем и во взаимодействии с интерфейсами различных языков программирования. Для обеспечения платформо-независимости программ компилятор Java генерирует байт-код - архитектурно-нейтральный промежуточный формат программы, создаваемый для эффективной передачи кода на различные аппаратные и программные платформы. При выполнении программы байт-код интерпретируется исполняющей машиной Java. Один и тот же Java-байткод будет исполняться на любой платформе.
Переносимость
Архитектурная независимость - лишь составная часть переносимости. В отличие от С или С++ в Java не существует понятия "зависимости от реализации", когда речь идет о размерности базовых типов. Форматы типов данных и операции над ними четко определены. Тем самым, программы остаются неизменными на любой платформе - не существует несовместимости типов данных на аппаратных и программных архитектурах.
Архитектурная независимость и переносимость программного обеспечения Java обеспечивается виртуальной машиной Java (Java Virtual Mashine - JVM) - абстрактной машиной, для которой компилятор Java генерирует код. Специальные реализации JVM для конкретных аппаратных и программных платформ предоставляют уже конкретную виртуальную машину. JVM базируется на стандарте интерфейса переносимых операционных систем (POSIX).
Высокая производительность