Apache — один из более фаворитных веб-серверов. Распространяется безвозмездно. При разработке веб-сайтов и веб-приложений отладку удобнее вести не на сервере провайдера, а на локальном сервере, установленном на своей машине.
Данная статья предугадывает наличие установленного Аpache сервера, начиная с версии 1.3.14 (пакет включающий в себя Apache, PHP, perl, MySQL — PHPTriad есть возможность безвозмездно и законно скачать здесь, здесь либо здесь), оперционной системы Windows 95/98/NT/XP. На более ранешних версиях Apache, а так же на ОС Windows Vista не тестировалось, у создателя первичной статьи комментариев по этому поводу нет. В том случае компьютер введен в домен могут появиться трудности с winMySQLAdmin входящей в пакет PHPTriad.
Настройка файла конфигурации Apache
На этом шаге необходимо обусловиться с директорией, в какой будут храниться веб-сайты. По дефлоту Apache употребляет для этого C:Program FilesApache GroupApachehtdocs, где сходу после установки есть возможность отыскать документацию по серверу. Для суровых целей она не бог весть как подходит — очень уж длинноватое имя, потому рекомендуется сделать для всех веб-сайтов отдельный диск (к примеру, с именованием Z:).
На диске Z: нужно сделать директорию home, а в ней — каталог localhost. В нем будет храниться содержимое головного хоста Apache — того, который доступен по адресу http://localhost. В каталоге localhost сделайте директории cgi и www. В первой будут храниться CGI-скрипты, а во 2-ой — документы и программки на PHP. Замечу, что схожую операцию необходимо будет проделывать всякий раз при разработке нового виртуального хоста.
Откройте в Блокноте файл конфигурации httpd.conf, который размещен в поддиректории conf директории Apache. Установите поле ServerName последующим образом:
ServerName localhost
Только не забудьте раскомментировать поле ServerName, другими словами убрать знак «#» перед этим параметром (по дефлоту он закомментирован)! Вообщем, все, что идет после чего знака и до конца строчки, Apache игнорирует.
В поле DocumentRoot укажите ту директорию, в какой будут храниться ваши html-файлы. Мы ранее условились, что это будет Z:homelocalhostwww):
DocumentRoot «z:/home/localhost/www»
Найдите блок, начинающийся строчкой и заканчивающийся (вообщем, такие блоки обозначают установки для данной директории и всех ее поддиректорий). Этот блок может содержать огромное количество комментариев — не обращайте на их внимания. Его необходимо поменять на таковой блок:
Options Indexes Includes
AllowOverride All
Allow from all
Следовательно, в этом блоке будут храниться установки для всех директорий по дефлоту (т.к. это — корневая директория). А конкретно, для всех директорий по дефлоту устанавливается возможность автоматической генерации индекса — перечня содержимого директории во время просмотра ее в браузере, также поддержка SSI и разрешение применять файлы .htaccess для личных опций каталогов.
Найдите аналогичный блок, начинающийся и заканчивающийся . Там будет много комментариев, не обращайте на их внимание. Этот блок необходимо удалить, потому что все опции для директории со страницами должны наследоваться от опций по дефлоту, которые только-только установили.
Установите DirectoryIndex так:
DirectoryIndex index.htm index.html
Это — так именуемые файлы индекса, которые автоматом выдаются сервером при воззвании к какой-нибудь директории, в том случае не обозначено имя html-документа. В принципе, есть возможность добавить сюда и другие имена, к примеру, index.php, и т.д. Но дополнительные опции все таки лучше делать в файлах .htaccess для каждого веб-сайта в отдельности.
Найдите и исправьте таковой параметр:
ScriptAlias /cgi-bin/ «z:/home/localhost/cgi/»
Добавьте после него еще подобную строку:
ScriptAlias /cgi/ «z:/home/localhost/cgi/»
Схожий параметр говорит Apache о том, что, в том случае будет указан путь вида http://localhost/cgi-bin, то по сути следует обратиться к директории z:/home/localhost/cgi.
Сейчас следует отыскать блок характеристик, начинающийся с и заканчивающийся. Это — установки для CGI-директории. Потому что указывать никаких дополнительных характеристик взамен тех, которые уже установлены по дефлоту не надо, этот блок необходимо удалить.
Найдите и настройте (не забудьте раскомментировать!) последующий параметр:
AddHandler cgi-script .bat .exe .cgi
Это говорит Apache о том, что файлы с расширениями exe, bat и cgi необходимо подвергать рассмотрению как CGI-скрипты.
И последнее — установите последующие характеристики:
AddType text/html .shtml
AddHandler server-parsed .shtml .html .htm
Тестирование Apache
Для пуска сервера нажмите Запуск, потом Программки, Apache Web Server, Management и Start Apache, при всем этом появится окно, очень схожее на Сеанс MS-DOS, и ничего больше не произойдет. Не закрывайте его и не трогайте до конца работы с Apache.
В том случае окно раскрывается и здесь же запирается, это значит, что допущена какая-либо ошибка в файле httpd.conf. В данном случае придется находить некорректность. Проще всего это сделать так:
Запустите Сеанс MS-DOS. Для этого нажмите Запуск, потом Выполнить. Наберите в показавшемся диалоге command и нажмите . Появится подсказка командной строчки. (В том случае нет способности запустить Сеанс MS-DOS, воспользуйтесь каким-либо другим средством. К примеру, запустите Far и работайте через него. Просмотр результатов работы программки — +.)
Наберите последующие команды DOS:
c:
cd «Program FilesApache GroupApache»
apache.exe
В том случае ранее Apache не запускался, то получите сообщение об ошибке и номер строчки в httpd.conf, где она произошла. Исправьте httpd.conf и повторите описанный процесс поначалу, до того времени, пока в окне не отобразится что-то вроде «Apache / 1.3 . 14 (Win32) running…«
Проверка html
В директории z:/home/localhost/www с html-документами Apache сделайте файл index.html с хоть каким текстовым содержанием. Сейчас запустите браузер и наберите:
http://localhost/index.html
либо просто
http://localhost/
Должен загрузиться сделанный файл.
Проверка SSI
В директории z:/home/localhost/www с html-документами Apache сделайте файл test.shtml c подобным содержанием (пристально смотрите за соблюдением пробелов в директиве include!):
SSI Test!
Сейчас наберите в браузере:
http://localhost/test.shtml
Должен загрузиться файл, который состоит из текста «SSI Test!«, за которым следует содержимое файла index.html меж 2-мя горизонтальными чертами. В том случае этого не вышло, означает, некорректно настроена работа SSI.
Проверка CGI
В директории z:/home/localhost/cgi для CGI-скриптов сделайте файл test.bat с подобным содержанием:
@echo off
echo Content-type: text/html
echo.
echo.
dir
Сейчас в браузере наберите:
http://localhost/cgi/test.bat
В окне отобразится итог команды DOS dir.
Виртуальные хосты Apache
Существует два вида виртуальных хостов: отдельные для каждого ip-адреса либо же использующие один общий ip-адрес (так именуемые name-based хосты — хосты, определяемые по имени). В тренировочных целях разглядим оба варианта, а конкретно, сделаем хост hacker, использующий тот же адрес, что и localhost, также хост cracker с адресом 127.0.0.2.
Сервер hacker будет храниться в директории z:/home/hacker, которую нужно сделать прямо на данный момент (естественно, совместно с ее поддиректориями cgi и www), а хост cracker — в директории z:/home/cracker. В этих директориях будут находиться:
Для установки виртуальных хостов нужно сделать некие конфигурации в файле конфигурации Apache httpd.conf (см. выше), также в неких файлах Windows.
Откройте файл httpd.conf (сможете для этого пользоваться ярлычком Edit configuration в меню Запуск — Программки — Apache Web Server — Management). Перейдите в его конец, Вам предстоит добавить туда немного строк. Добавьте последующие строчки в конце файла после всех комментариев:
NameVirtualHost 127.0.0.1
#—-localhost
ServerAdmin webmaster@localhost
ServerName localhost
DocumentRoot «z:/home/localhost/www»
ScriptAlias /cgi/ «z:/home/localhost/cgi/»
ErrorLog z:/home/localhost/error.log
CustomLog z:/home/localhost/access.log common
#—-hacker
ServerAdmin [email protected]
ServerName hacker
DocumentRoot «z:/home/hacker/www»
ScriptAlias /cgi/ «z:/home/hacker/cgi/»
ErrorLog z:/home/hacker/error.log
CustomLog z:/home/hacker/access.log common
#—-cracker
ServerAdmin [email protected]
ServerName cracker
DocumentRoot «z:/home/cracker/www»
ScriptAlias /cgi/ «z:/home/cracker/cgi/»
ErrorLog z:/home/cracker/error.log
CustomLog z:/home/cracker/access.log common
Откройте системный фаил hosts, который находится в директории C:WINNTSYSTEM32DRIVERSetc.
В нем должна быть 1 раскомментированная строчка:
127.0.0.1 localhost
Поменяйте ее на:
127.0.0.1 localhost hacker
127.0.0.2 cracker
Направьте внимание на то, что хост hacker описан на той же строке, что и localhost. Дело в том, что в файле hosts должны указываться только уникальные ip-адреса. В том случае же одному адресу сопоставляется сходу немного хостов, то какой-то из них (тот, который идет первым) объявляется основным, а другие — его синонимами. В нашем случае localhost — главный, а hacker — его синоним. Apache при получении запроса на адрес 127.0.0.1 выяснит, что он пришел хосту с именованием hacker, и активизирует соответственный блок .
Настройка Apache для работы с PHP
Откройте в Блокноте файл конфигурации Apachehttpd.conf.
Найдите в нем подобную закомментированную строчку:
#AddType application/x-httpd-php php
Раскомментируйте ее:
AddType application/x-httpd-php php
Сразу после этой строчки добавьте такие опции:
ScriptAlias /-php/ «C:/Program Files/PHP4/»
Action application/x-httpd-php «/-php/php.exe»
Тестирование PHP
Сделаем в директории z:/home/localhost/www файл test.php со последующим содержанием:
echo «It works!
n»;
phpinfo();
?>
Сейчас наберите в браузере: http://localhost/test.php. Должна отобразиться страничка с различной информацией о PHP, которая генерируется функцией phpinfo().
Установка Perl
Найдите в файле конфигурации Apache httpd.conf строку
AddHandler cgi-script .bat .exe
Поменяйте ее на
AddHandler cgi-script .bat .exe .pl .cgi
Найдите и раскомментируйте параметр:
ScriptInterpreterSource registry
Проверка работоспособности Perl
Сделайте в директории z:localhostcgi файл test.pl с подобным содержанием:
#!/usr/local/bin/perl -w
print «Content-type: text/htmlnn»;
print «It works!
n»;
Принципиально! Направьте внимание на первую строку в скрипте. Есть возможность поразмыслить, что она показывает Apache, что Perl размещен в z:usrlocalbinperl.exe. На самом же деле Apache видит, что подобного файла не существует, и употребляет Реестр для поиска ассоциации для расширения pl. Происходит это благодаря директиве ScriptInterpreterSource. Но, хотя Apache игнорирует первую строчку в скрипте, Perl ее употребляет для того, чтоб найти, какие флаги были применены при его запуске.
Тестирование MySQL
Сделайте таковой PHP-скрипт с именованием mysql.php в директорииz:homelocalhostwww.
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{ $id=time();
mysql-query(«insert into t(id,a) values($id,’Стр$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 равна пустой строке.
Источники: