Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Самоучитель по PHP 4

.pdf
Скачиваний:
82
Добавлен:
02.05.2014
Размер:
4.36 Mб
Скачать

Глава 4. Установка Apache

81

ментации Apache, в частности, той ее части, которая касается конфигурирова- ния.

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

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

Рис. 4.1. Установка Apache

Рис. 4.2. Каталог для установки сервера

82

Часть II. Выбор и настройка инструментария. Web-сервер Apache

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

C:\Program Files\Apache Group\Apache). Запомните его на будущее.

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

Next (рис. 4.3).

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

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

Рис. 4.3. Тип установки

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

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

Глава 4. Установка Apache

83

1.Выберите каталог, в котором будут храниться ваши сайты (их может быть несколько). Пусть, например, это будет C:\INTERNET. Ваш каталог будет содержать корневой каталог нового диска Z:.

2.В начале файла autoexec.bat (но после команды @echo off, если она у вас там есть) напишите такую строку:

subst Z: C:\INTERNET

3.Перезагрузите компьютер, чтобы новый логический диск Z: создался. Теперь все, что сохранено в каталоге C:\INTERNET, будет отображаться на панели диска Z:, как будто это — обычный жесткий диск.

Имеются сведения, что в Windows 95/98 есть ошибка. В результате при ис- пользовании subst пути иногда "сами по себе" преобразуются в абсолютные (то есть, например, в нашем случае Z: преобразуется в C:\INTERNET), при- чем в процессе работы какой-нибудь программы и совершенно неожиданно для нее. Указанная ошибка чаще всего проявляется в неработоспособности Perl-транслятора (если его не совсем корректно настроить). При работе с PHP никаких побочных эффектов не наблюдалось.

Вы можете также создать диск Z: с помощью какой-нибудь программы для виртуальных разделов (например, с помощью встроенной в Windows 95/98 программы DriveSpace). Это решение, пожалуй, даже лучше, чем использование subst, как с точки зрения экономии памяти, и с точки зрения быстродействия. Ведь что такое Webсайт, как не набор очень небольших файлов? А DriveSpace как раз и оптимизирует работу с такими файлами. Как использовать DriveSpace, смотрите во встроенной в Windows документации.

rСоздайте на диске Z: каталог home, а в нем — каталог localhost. В нем будет храниться содержимое главного хоста Apache — того, который доступен по адресу http://localhost. Перейдите в последний созданный каталог. Создайте в нем каталоги cgi и www. В первом будут храниться CGI-сценарии, а во втором — ваши документы и программы на PHP. Замечу, что подобную операцию вам нужно будет проделывать каждый раз при создании нового виртуального хоста (о них мы поговорим чуть позже). Полученная структура каталогов показана на рис. 4.4.

Откройте в Блокноте файл конфигурации httpd.conf, который расположен в подкаталоге conf каталога Apache (в нашем примере это

C:\Program Files\Apache Group\Apache). Впрочем, вы можете и не искать этот файл вручную, а воспользоваться командой Edit configuration, пройдя по це-

почке меню Пуск ú Программы ú Apache Web Server ú Management.

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

84

Часть II. Выбор и настройка инструментария. Web-сервер Apache

комментариев, разобраться в которых с первого раза довольно тяжело (впрочем, вы можете обратиться к Приложению Б, в котором приведен полный перевод этих комментариев на русский язык). Поэтому не обращайте на них особого внимания.

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

Рис. 4.4. Структура каталогов главного хоста

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

ServerName localhost

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

rВ поле DocumentRoot укажите тот каталог, в котором будут размещены ваши HTML-файлы. Мы ранее договорились, что это будет z:\home\localhost\www)

DocumentRoot z:/home/localhost/www

rНайдите секцию, начинающуюся строкой <Directory диск:/> и заканчивающийся строкой </Directory> (такие блоки содержат установки для заданного каталога и всех его подкаталогов). Этот блок может содержать множество комментариев — не обращайте на них внимания. Его нужно заменить на секцию следующего вида:

<Directory z:/>

Options Indexes Includes AllowOverride All

Allow from all </Directory>

Этим вы обеспечите, что в данном блоке будут храниться настройки для всех каталогов по умолчанию (так как z: — корневой каталог). А именно, для всех каталогов по умолчанию предоставляется возможность автоматической генерации индекса — списка содержимого каталога при просмотре его в браузере, а также

Глава 4. Установка Apache

85

поддержка SSI и разрешение использовать файлы .htaccess для индивидуальных настроек каталогов.

r Найдите аналогичный блок, начинающийся строкой

<Directory "C:/Program Files/Apache Group/Apache/htdocs"> и закан-

чивающийся ограничителем </Directory>. Там будет много комментариев, не обращайте на них внимание. Эту секцию вам нужно удалить, т. к. все настройки для каталога со страничками должны наследоваться от настроек по умолчанию, которые мы только что установили.

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

DirectoryIndex index.htm index.html

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

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

ScriptAlias /cgi-bin/ "z:/home/localhost/cgi/"

Добавьте после него еще такую строчку:

ScriptAlias /cgi/ "z:/home/localhost/cgi/"

Да, именно так, с двумя слэшами — в начале и в конце. Это будет тот каталог, в котором должны располагаться ваши CGI-сценарии. Подобный параметр говорит Apache о том, что, если будет указан путь вида http://localhost/cgi-bin, то на самом деле следует обратиться к каталогу z:/home/localhost/cgi. Мы используем два псевдонима для CGI-каталога потому, что /cgi-bin/ будет доступен не только главному хосту localhost, но и всем остальным виртуальным хостам. В то же время у каждого из них будет дополнительно свой CGI-каталог /cgi/.

rТеперь следует найти блок параметров, начинающийся с <Directory "C:/ Program Files/Apache Group/Apache/cgi-bin"> и заканчивающийся

</Directory>. Это — настройки для CGI-каталога. Так как мы не собираемся указывать никаких дополнительных параметров взамен тех, которые уже установлены по умолчанию, этот блок нужно удалить.

rНайдите и настройте (не забудьте раскрыть комментарий!) следующий параметр:

AddHandler cgi-script .bat .exe .cgi

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

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

AddType text/html .shtml

AddHandler server-parsed .shtml .html .htm

86

Часть II. Выбор и настройка инструментария. Web-сервер Apache

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

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

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

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

боты с Apache.

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

1.Запустите Сеанс MS-DOS. Для этого нажмите кнопку Пуск, затем выберите Выполнить. Наберите в появившемся диалоговом окне строку command и нажмите клавишу <Enter>. Появится подсказка командной строки.

2.Наберите следующие команды DOS: c:

cd "\Program Files\Apache Group\Apache" apache.exe

3.Если до этого Apache не выполнялся, то вы получите сообщение об ошибке и номер строки в httpd.conf, где она произошла. Исправьте httpd.conf и повторите описанный процесс сначала, до тех пор, пока в окне не отобразится что-то вроде

"Apache/1.3.14 (Win32) running..."

Несколько слов о том, как можно упростить запуск и завершение сервера. В Windows можно назначить любому ярлыку функциональную комбинацию клавиш, нажав которые, вы запустите связанное с ним приложение. Так что щелкните правой кнопкой мыши на панели задач, в контекстном меню выберите Свойства, затем Настройка меню и кнопку Дополнительно. В открывшемся Проводнике присвойте ярлыку Start Apache комбинацию клавиш <Ctrl>+<Alt>+<A>, а ярлыку Stop Apache — <Ctrl>+<Alt>+<S>. Теперь вы сможете запускать сервер нажатием

<Ctrl>+<Alt>+<A> и останавливать его, нажав <Ctrl>+<Alt>+<S>.

Теперь проверим, правильно ли мы настроили сервер.

Проверка html

В каталоге z:/home/localhost/www, содержащем HTML-документы Apache, создайте файл index.html с любым текстовым наполнением. Теперь запустите браузер и наберите:

http://localhost/index.html

Глава 4. Установка Apache

87

или просто

http://localhost/

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

Проверка SSI

В каталоге z:/home/localhost/www с HTML-документами Apache создайте файл test.shtml со следующим содержанием (внимательно следите за соблюдением пробелов в директиве include!):

Листинг 4.1. Файл test.shtml

SSI Test!<hr>

<!--#include virtual="/index.html" --> <hr>

Затем наберите в браузере:

http://localhost/test.shtml

Должен открыться файл, который состоит из текста "SSI Test!", за которым следует содержимое файла index.html между двумя горизонтальными чертами. Если этого не произошло, значит, вы неправильно сконфигурировали SSI.

Проверка CGI

В каталоге z:/home/localhost/cgi, предназначенном для хранения CGIсценариев, создайте файл test.bat с таким содержанием:

Листинг 4.2. Файл test.bat

@echo off

echo Content-type: text/html echo.

echo. Dir

Далее в браузере наберите:

http://localhost/cgi-bin/test.bat

В окне отобразится результат команды DOS dir.

88

Часть II. Выбор и настройка инструментария. Web-сервер Apache

Нужно отметить, что последний пример работает не под всеми версиями Windows: иногда вместо того, чтобы выполнить файл test.bat, Apache выво- дит в браузер его содержимое. С чем это связано не совсем ясно, однако, кажется, можно избавиться от указанной ошибки путем манипулирования с реестром Windows. Если у вас test.bat не запускается, не расстраивайтесь: вряд ли вы когда-нибудь будете писать сценарии в виде bat-файлов, тем бо- лее, что этот способ несовместим с Unix.

Если что-то пошло не так, либо окно Apache открывается и тут же закрывается, значит, где-то произошла ошибка — скорее всего, причины ее возникновения можно найти в httpd.conf. За детальным разъяснением этих причин можно обратиться к log-файлам, расположенным в каталоге C:\Program Files\Apache Group\Apache\logs.

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

Итак, вы установили Apache и получили, таким образом, каталог z:/home/localhost/www для хранения документов и z:/home/localhost/cgi

для CGI. Однако в Интернете вы поддерживаете (или, скорее всего, будете поддерживать) несколько серверов, а Apache создал для вас только один. Конечно, можно структуру этих нескольких серверов хранить на одном сервере, однако проще и удобнее было бы создать несколько виртуальных хостов с помощью Apache. В нашем распоряжении есть два вида виртуальных хостов: отдельные для каждого IP-адреса или же использующие один общий IP-адрес (так называемые name-based хосты хосты, определяемые по имени). В тренировочных целях мы рассмотрим оба варианта, а именно, создадим хост hacker, задействующий тот же адрес, что и localhost, а также хост cracker с адресом 127.0.0.2.

Конечно, вместо "hacker" и "cracker" вам нужно будет указать желаемые имена ваших виртуальных хостов. Советуем назвать их так же, как и на вашем настоящем Web-сервере, но только без "суффикса" .ru или .com это может многое упростить при программировании сценариев.

Как это принято в Unix, каждый сервер будет представлен своим каталогом в z:/home с именем, совпадающим с именем сервера (мы уже проделывали нечто подобное с хостом localhost). Например, сервер hacker будет храниться в каталоге z:/home/hacker, который вам необходимо создать прямо сейчас (конечно, вместе с его подкаталогами cgi и www, как мы делали это ранее), а хост cracker — в каталоге z:/home/cracker. В этих каталогах будут находиться:

rфайлы access.log с журналом доступа к виртуальному серверу;

rфайлы errors.log с журналом ошибок сервера;

Глава 4. Установка Apache

89

rкаталог www, где, как обычно, будут размещаться HTML-документы;

rкаталог cgi для хранения CGI-программ.

На рис. 4.5 представлена структура каталогов, которая должна у нас получиться.

Рис. 4.5. Структура каталогов виртуального хоста с объявлением главного хоста

Для установки виртуальных хостов необходимо внести некоторые изменения в файл конфигурации Apache httpd.conf (см. выше), а также в некоторые файлы Windows. Опишем, что для этого нужно сделать.

Откройте файл httpd.conf ожете для этого воспользоваться уже упоминавшимся выше ярлыком Edit configuration. Перейдите в конец файла, вам предстоит добавить туда несколько строк. Вставьте следующие строки в конце файла после всех комментариев:

Листинг 4.3. Настройка виртуальных хостов

NameVirtualHost 127.0.0.1

#----localhost <VirtualHost 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

</VirtualHost>

#----hacker <VirtualHost hacker>

90 Часть II. Выбор и настройка инструментария. Web-сервер Apache

ServerAdmin webmaster@hacker.ru 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

</VirtualHost>

#----cracker <VirtualHost cracker>

ServerAdmin webmaster@cracker.ru 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

</VirtualHost>

Обратите внимание на то, что мы добавили дополнительно секцию <VirtualHost> для хоста localhost. Если этого не сделать, то все запросы к нему (то есть, по адресу 127.0.0.1) будут обработаны name-based хостом hacker. Происходит это, видимо, из-за того, что хосты в секции <VirtualHost> имеют больший приоритет при обработке, чем главный хост, который мы создали ранее.

Директива NameVirtualHost говорит серверу, что указанный IP-адрес может использоваться несколькими виртуальными хостами, поэтому для обработки запросов, поступающих на этот адрес, нужно привлекать протокол HTTP 1.1 (который, собственно, и поддерживает технику работы с name-based хостами).

При желании можно добавить и другие параметры в блоки <VirtualHost> (например, DirectoryIndex и т. д.) Не переопределенные параметры наследуются виртуальным хостом от главного. Однако не советую злоупотреблять настройками в этих секциях — лучше сделать их в файле htaccess в директории нужного хоста, потому что компания, которая предоставляет (будет предоставлять) вам "настоящие" виртуальные хосты в Интернете, вряд ли позволит менять данные блоки.

Но как же система узнает, что хост cracker сопоставлен с адресом 127.0.0.2, а hacker — name-based хост? Для решения проблемы надо немного подправить системный файл hosts, который находится в каталоге C:\WINDOWS для операционных систем Windows 95/98/Millenium и C:\WINNT\SYSTEM32\DRIVERS\etc для

Windows NT и Windows 2000.