

Для разработки страниц сайта написанных с использованием современных серверных технологий необходим тестовый сервер установленный на ваш компьютер.
см. создание ярлыков
В данном разделе сайта приведены рекомендации по получению рабочего сервера Apache 2.2.16 и интерпретаторов Perl и PHP. Конфигурация которых удовлетворяет большинству требований по разработке, отладке и тестированию сайтов на персональном компьютере с OS: Windows NT 4.0, Microsoft Windows Server 2000, Microsoft Windows XP Professional, Microsoft Windows Server 2003, Microsoft Windows Server 2007, Microsoft Windows Server 2008, Microsoft Windows Vista
.
Сервер Apache и языки-интерпретаторы PHP и Perl - являются сложными программными продуктами, поэтому их установка и настройка должна производиться предельно точно и аккуратно. Подход, аналогичный используемому при создании документов в Microsoft Office - напечатаем, если захочем - проверим или так пойдет - данном случае неприемлем. Не исправив сразу же ошибки - ничего, кроме сообщений об них, нельзя увидеть. Это в лучшем случае. Порой, причину ошибок можно выявить только после исследования содержимого лог-файлов сервера Apache, записей в журнале событий ОС, сообщений в консоли MMC. Следует всегда помнить о том, что версия Apache 2.2.16 - итог десятилетнего труда группы из 60-ти разработчиков и миллионов добровольных помощников, имеющих многолетний опыт эксплуатации сервера. Это должно помочь понять - имеете ли вы знания и навыки в их объеме, и предостеречь от необдуманной "творческой" переработки всего, что привлекло внимание. Не увлекайтесь, не изучив документацию, внесением изменений в файлы конфигурации и модули сервера Apache. Сначала подумайте - насколько вы талантливей многочисленной группы специалистов, уже что-то сделавшей и живущей годы в данной теме. Если это вам нужно только для того, чтобы написать что-то "умное" на одном из множества "форумов", с сообщениями, содержащими по три ошибки в каждом слове длиннее пяти букв, то можете смело заканчивать изучение веб-программирования. Это занятие для людей, которые на самый простой вопрос, не дадут ответа - не подумав. Можно предостеречь наивных юношей - никто не будет проверять, исправлять ваши ошибки и разъяснять причины их появления.
Прежде чем задавать вопросы аналогичные приведенному ниже, спросите у знакомых студентов - можно ли зайдя на кафедру или в деканат предложить преподавателям объяснить вам что-то из прочитанной лекции или, тем более, из школьного курса? Получите, примерно такой, вежливый ответ - высшее образование не является обязательным, а адреса и цены на услуги репетиторов можно узнать в газетном киоске. А если вы не студент, а прохожий, у которого вдруг появилось желание обучиться чему-то. В ВУЗах учат учиться, а усвоил - не усвоил материал - проблема обучающегося. Вам читают курс и выдают темы практических заданий. Затем проверяют знания на зачетах и экзаменах. Далее, продолжение обучения или отчисление.
Материал разделов сайта изложен предельно доходчиво и проверен десятками тысяч успешных установок. Для более полного изучения описанных программных комплексов, необходимо обратиться к документации или получить разъяснения у их разработчиков.
Цитата из письма: "Хочу написать сайт, чтобы все объявления в городе присылали ко мне. Видел такое на сайте - имя.ru. Вопрос такой - как в блокноте создать файл с .php расширением. Я установил Apache, PHP-5.2.5 по рекомендациям с вашего сайта, но в браузер выйти со скриптами не получается" (текст - после перевода с "русского" на русский). Что-то подобное этому - Умею нажимать клавиши (гармошки), решил написать партитуру пьесы для струнных с оркестром. Прочитал общие требования к её оформлению. Можно это сделать на оберточной бумаге и, если да, то как ее разлиновать?
Написать что-то достойное внимания на PHP возможно только зная C++, т. к. в первый пытаются включить все, что есть в последнем. PHP - это попытка превратить язык-компилятор C++ в интерпретатор. Работающие в C++ v 5.02, легко узнают знакомые элементы ООП, такие как: сокрытие информации с использованием спецификаторов доступа (атрибуты - public, protected, private) к элементам классов (данным-членам и функциям-членам классов). Увидят попытку использования множественного наследования. Введение, для освобождения ресурсов, деструкторов (непонятно для чего - память после выполнения сценария PHP и так освобождается), обработку исключительных ситуаций. Естественно, все это довольно далеко от возможностей поддержки ООП в C++. Приведенного выше достаточно для понимания того, с какой подготовкой можно приступать к осуществлению мечты, подобной изложенной в приведённом сообщении.
Причина появления таких писем в общем-то одна - любого из тех кто может включить компьютер и что-то напечатать (во время, когда доступность компьютеров зависит только от наличия определенной суммы), именуют "компьютерщиками" или даже программистами. И большинство из них начинают верить, что первое из этих слов, в мире программирования, определяет самую высокую квалификацию. Ну, а программистами они являются по определению. Как не поверить, если в одной из телепередач, солидного возраста ведущий с группой "экспертов", в течение получаса, обзывали десятилетнего, не умеющего пользоваться носовым платком - хакером. Только за то, что тот, получив от великовозрастного знакомого логин и пароль от оплаченного организацией доступа в сеть, в вечернее время (после окончания работы конторы), гулял по сайтам за её счет. Не раз приходилось слышать от родителей, что их талантливые чада легко заходят в корпоративные сети Пентагона, Госдепартамента и т. д. И это в то время, когда в их городах не было ни одного Интернет-провайдера.
Сказанное выше адресовано тем, кто уже понимает, что замена даже нескольких символов в исполняемых файлах (exe), ни к чему, кроме разрушения программы не приведет. Но пока еще ясно не представляет, что внесения изменений в файлы конфигурации, многочисленные модули программных комплексов, описание которых приведено в разделах сайта, без изучения документации приведут к тому же результату.
Возвращаясь к приведенному выше письму - как можно на него ответить не имея информации о том:
и так до бесконечности, потому что невозможно предугадать, что и как пытается сделать с этими сложнейшими программными продуктами человек не понимающий, что делает, судя по неудачным попыткам создать в "блокноте файл с расширением .php".
Можно конечно попытаться ответить, неделю пытаясь представить - что и где может кто-то сделать, чтобы не установить серверное программное обеспечение. Начав примерно так:
Если правильно установлен сервер Apache, то после ввода в адресную строку браузера - http://localhost/вы увидите тестовую страницу сервера Apache:
Если не установлен интерпретатор PHP или не найден путь к нему, то будет выведено окно диалога с предложением сохранить файл с расширением - .php. (Вместо отображения php страницы предлагается загрузить или сохранить файл).

Если не установлен интерпретатор Perl, то вместо результатов выполнения скрипта будет выведено сообщение -
[an error occurred while processing this directive - произошла ошибка при обработке этой директивы]
И так далее.
На страницах разделов сайта приведены примеры с детальным описанием: установки и настройки Apache, PHP, Perl, MySQL, phpMyAdmin, SendMail. Имеются примеры рабочих скриптов php, perl, директив SSI. Не желающим изучать документацию, не просмотревшим сжатое, предельно краткое описание применения современных веб-технологий на практике, научившимся пользоваться лишь отправкой почтовых сообщений со страницы контакты, ждать что кто - то, бросив все, будет показывать где какую букву ввести – надеяться наивно.
Если не можете четко выполнить инструкции по установке и получению рабочего сервера Apache - значит этот вид деятельности не для вас и не нужно тратить зря время.
Устанавливать нужно именно в такой последовательности.
Выполнив эти несложные операции, вы получите — на (вашем) локальном компьютере — полностью работоспособный сервер Apache HTTP 2.2.16.
Всё изложенное в этом разделе относится ко всем версиям Apache 2.2.x - Apache 2.2.2, Apache 2.2.3, Apache 2.2.4, Apache 2.2.6, Apache 2.2.8, Apache 2.2.16, Apache 2.2.10.
После этого можно приступать к установке интерпретаторов PHP и Perl и другим составляющим современных веб-серверов.
ErrorLog c:/httpserver.ru/logs/error.log
файла конфигурации сервера Apache HTTP - httpd.conf. См. Конфигурирование httpd.conf
<VirtualHost 127.0.0.4:80>
ErrorLog c:/www/docs/имя_сайта.ru /logs/имя_сайта.ru-error.log
файла - httpd-vhosts.conf. См. Конфигурирование - httpd-vhosts.conf.
Если при просмотре файла регистрации ошибок вы встретили записи аналогичные приведенным (реальный пример):
[Sun Dec 21 05:38:31 2008] [error] [client 127.0.0.1] File does not exist: C:/www/docs/avege.ru/www/css/0a16v84j0y54h848p547a0512/06/0a16v84j0y54f848m547i0512/f1.gif, referer: http://www.avege.ru/russian/apache/apache_01.shtml
[Sun Dec 21 05:38:31 2008] [error] [client 127.0.0.1] File does not exist: C:/www/docs/avege.ru/www/css/0a16v84j0y54h848p547a0512/06/0a16v84j0y54f848m547i0512/f1.gif, referer: http://www.avege.ru/russian/apache/apache.shtml
Из которых следует - не найден файл f1.gif вызываемый из страниц:
http://www.avege.ru/russian/apache/apache_01.shtml
http://www.avege.ru/russian/apache/apache.shtml
Несмотря на такой сложный путь к каталогу, в котором должен находиться файл - f1.gif, можно легко перейти в указанное место, с помощью Total Commander. Введите в его командную строку команду DOS Total Comander'а - cd и скопируйте в нее путь к не найденному файлу:
cd C:/www/docs/avege.ru/www/css/0a16v84j0y54h848p547a0512/06/0a16v84j0y54f848m547i0512/

После нажатия на - Enter вы перейдете в нужный подкаталог, в котором, в данном примере, можно видеть, что вместо файла f1.gif находится - f1.png.

При обращению к сайту - www.имя_сайта.ru, на локальном сервере Apache, выводится сообщение об ошибке:
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a CGI script.
If you think this is a server error, please contact the webmaster.
Тоже самое происходило и при обращении к сайтам -
dummy-host.httpserver.ru, (C:\www\docs\dummy-host2.httpserver.ru)
dummy-host2.httpserver.ru, (C:\www\docs\dummy-host2.httpserver.ru)
name.ru, (C:\www\htdocs\name.ru)
name1.ru (C:\www\public_html\name1.ru)
При обращении к главному сайту сервера Apache 2.2.16 - www.httpserver.ru, главная страница сайта нормально выводится в браузерах.
Не трудно определить, что не работают сайты расположенные в общем каталоге - C:\www\, следовательно нужно искать причину здесь.
В файле регистрации ошибок сайта www.httpserver.ru - error.log (C:/httpserver.ru/logs/error.log) не видно ничего, что бы могло подсказать направление поиска причин вызывающих такое поведение сервера.
[Wed Dec 17 15:05:30 2008] [notice] Apache/2.2.16 (Win32) PHP/5.2.8 configured -- resuming normal operations
[Wed Dec 17 15:05:30 2008] [notice] Server built: Dec 10 2008 00:10:06
[Wed Dec 17 15:05:30 2008] [notice] Parent: Created child process 2524
[Wed Dec 17 15:05:30 2008] [notice] Child 2524: Child process is running
[Wed Dec 17 15:05:30 2008] [notice] Child 2524: Acquired the start mutex.
[Wed Dec 17 15:05:30 2008] [notice] Child 2524: Starting 64 worker threads.
[Wed Dec 17 15:05:30 2008] [notice] Child 2524: Starting thread to listen on port 80.
Дежурная проверка записей в файлах:
C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf
# пути к каталогу PHP.
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:/Program Files (x86)/PHP/"
LoadModule php5_module "C:/Program Files (x86)/PHP/php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
и в
C:\Program Files (x86)\PHP\php.ini
в секции:
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
Directory in which the loadable extensions (modules) reside.
Каталог, в котором находятся загружаемые расширения (модули).
extension_dir ="C:\Program Files (x86)\PHP\ext"
как и следовало ожидать, ничего не дала.
Причина: В каталоге C:\www\ находился, временно размещенный для редатирования и не удаленный, файл .htaccess, в котором находилась директива - Options -Indexes.
На страницах одного из сайтов - www.имя_сайта.ru не выполняются скрипты Perl.
В файле регистрации ошибок сайта www.имя_сайта.ru - error.log имеются записи:
invalid CGI ref "//cgi-bin/today.cgi" in C:/www/docs/www.имя_сайта.ru/www/index.shtml
C:/www/docs/www.имя_сайта.ru/cgi-bin/.htaccess: Options not allowed here (Варианты, не позволенные здесь)
Причина: В каталоге c:\www\docs\www.имя_сайта.ru\cgi-bin\ находился, файл .htaccess, с директивой - Options -Indexes.
Следует помнить, что директивы в файле .htaccess расположенном в любом подкаталоге сайта, переопределяют значения директив в файлах конфигурации сервера Apache - httpd.conf и httpd-vhosts.conf.
Создайте каталог Дневник с подкаталогами: месяц - день - время. разместив его в удобном для вас месте, например, C:\Дневник\Январь\01\14 20\

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

