Данная статья написана мной по мотивам частых вопросов службе поддержки хостинг-провайдера RunWeb.Ru (к которой я имею непосредственное отношение) по тестированию скриптов и настроек Apache на домашнем компьютере. Первоначально этот материал публиковался на сервере RunWeb.Ru и в рассылке "PHP для начинающих". Постепенно он расширялся по мере поступления вопросов от наших пользователей. Когда же набралось достаточно информации, я собрал ее в отдельную статью и решил, что она может быть полезна не только нашим пользователям хостинга, но и остальным жителям сети.
Поводом для статьи послужило желание создать единое руководство для пользователей, которое помогло бы им тестировать скрипты в домашних условиях, а также использовать возможности настроек Apache для дальнейшего использования на нашем сервере.
Пара слов о работе вебсервера
Установив вебсервер, как описано в этой статье, Вы получаете полноценный работающий сервер с полным набором возможностей. Что же это такое, почему теперь можно обращаться к адресу "127.0.0.1" и даже не подключаться к Интернету? Я уверен, новички зададутся и этими вопросами и многими другими. Здесь я хочу немножко объяснить принцип работы вебсерверов и более подробно рассказать о структуре сайтов в сети.
Вы наверняка знаете, что когда Вы набираете адрес в строке броузера, то Вы работаете по протоколу http (hypertext transfer protocol - протокол передачи гипертекста). Это понятно хотя бы по строке адреса - она имеет вид вроде http://www.адрес.ru.
Что же такое протокол? Это набор команд, с помощью которых общаются Ваш компьютер (конкретно Ваш броузер) и вебсервер, к которому Вы обратились. Для создания сайтов очень важно понимать этот момент.
А что представляет собой вебсервер? В первую очередь это компьютер, на котором установлено программное обеспечение, дающее возможность передавать информацию Вам при запросе ее Вашим броузером. Это программное обеспечение и есть устанавливаемый нами Apache, который просто умеет работать по протоколу http. Когда Вы запускаете Apache, в Вашей системе появляется кто-то, кому есть что ответить броузеру при запросе им конкретного адреса. То есть получается, что Вы имеете сервер, на котором храниться сайт (или сайты) и ПО, которое умеет эти сайты передавать броузеру. Вот и общаются они между собой на языке (протоколе) http - броузер и Apache. Броузер запрашивает у Apache файлы, а Apache их ему отдает.
Теперь о том, каким образом выглядят сайты на нашем сервере. Все сайты хранятся в упорядоченном виде, каждый в отдельном каталоге. Сайт, который открывается по адресу "http://127.0.0.1" имеет в качестве корневого каталога "F:\project". Каталог может называться как угодно и является корневым каталогом для этого сайта. Имена каталогов и их соответствие http-адресам записываются в файле конфигурации Apache - "httpd.conf", который мы ниже будем настраивать. Чтобы это понять, представьте, что можно создать каталог "F:\site" и записать в файле "httpd.conf" что это самый настоящий сайт и он должен открываться по адресу "http://127.0.0.2". И это будет работать. (Как это сделать мы изучим позже).
Обычно в корневом каталоге сайта есть еще несколько каталогов - для хранения html файлов (это наш каталог www), для хранения файлов статистики обращений к сайту (это каталог logs) и другие, пока нами по небольшой надобности неиспользуемые (например папка cgi-bin для хранения программ, написанных на языке PERL). Так вот, папка которая умеет хранить html-странички, т.е. наша папка www может также содержать и php-программы. То есть все, что положить в эту папку и будет видно по адресу "http://127.0.0.1". Это значит, что если вы создадите файл "F:\project\www\page.html", то вы его увидите по адресу "http://127.0.0.1/page.html". Создав каталог "F:\project\www\katalog", вы сможете посмотреть на него по адресу "http://127.0.0.1/katalog/".
Кроме того, каждый каталог на сервере может иметь т.н. "индексный файл". Это файл, который открывается по умолчанию при вызове каталога, т.е. без явного указания имени файла. В нашем случае это index.html, который находиться в корневом каталоге сервера. Набирая "http://127.0.0.1" мы видим именно этот файл. Соответственно, можем также увидеть его, набрав "http://127.0.0.1/index.html".
Установка вебсервера Apache и языка PHP
Для того, чтобы установить вебсервер на свой компьютер, Вам понадобиться некоторое программное обеспечение. Все ПО, которое мы будем использовать, совершенно бесплатно от рождения и доступно в сети для свободного скачивания. Это, согласитесь, хорошо, особенно, если учесть что бесплатных программ (тем более такого серьезного уровня) для Windows бывает очень немного. Также примечательно, что Вам не придется скачивать пиратские программы и копаться в сети в поиске крэков/серийных номеров и т.п.
Apache - это программа, которая исполняет функции http-сервера. Именно с ее помощью и будет функционировать вебсервер. Эта программа исполняет все необходимые функции, под ее руководством работает большинство ресурсов сети. Наш не исключение, в силу гибкости и универсальности Apache мы будем использовать именно этот сервер. В дальнейшем Вы увидите, насколько просто использовать эту программу в домашних условиях и насколько широкие возможности она предоставляет. Перед тем, как начать установку сервера, Вам необходимо сразу загрузить Apache. В качестве версии Apache я предлагаю использовать 1.3.12, которая имеет полный набор функции и одновременно не осложнена ненужными на данном этапе усовершенствованиями. К тому же она примерно на 2 Мб меньше, чем более новые версии. Загрузить ее можно прямо с нашего сервера RunWeb.Ru:
Загрузить Apache: http://RunWeb.Ru/download/apache_1_3_12_win32.exe (3.1 МБ)
Именно эта программа даст Вам возможность использовать PHP-скрипты на сайтах, созданных в рамках сервера Apache. В качестве версии я советую PHP 4.3.4, как наиболее перспективную и стабильную версию. Кроме того, эта версия содержит богатые возможности по сравнению с предыдущими. Загрузить ее также с сервера хостинг-провайдера RunWeb.Ru:
Загрузить PHP4: http://RunWeb.Ru/download/php-4.3.4-Win32.zip (6,0 МБ)
Как видите, обе программы достаточно большие. Однако ничего с этим не поделаешь, тем более, что загрузив их один раз Вы сохраните их надолго и сможете пользоваться ими в дальнейшем. Итак, если все загружено, можно переходить к установке.
Для работы сервера и всех наших дальнейших проектов целесообразно выделить отдельный диск на Вашем компьютере. Конечно, Вам не придется покупать новый винчестер, нам вполне хватит возможностей виртуального диска. Что такое виртуальный диск? Это имитация жесткого диска в системе. Если Вы знакомы с возможностями MS-DOS, то уже поняли, что я имею в виду. Виртуальный диск имеет свое, отдельное имя в системе (например, диск F:) и в качестве своего корневого каталога использует обычный каталог на основном диске. Создается виртуальный диск следующей командой MS-DOS:
subst F: C:\server
Где F: - это имя виртуального диска, а C:\server - это папка на основном диске, которая и будет корневым каталогом нового диска F. Теперь давайте создадим новый диск. Для этого выполните следующие действия (только для Windows 95-98. Как это делается в других версиях смотрите ниже):
Создайте на диске C: папку "server". Откройте в Windows меню "выполнить", которое находиться кнопке "Пуск" и наберите строчку "subst F: C:\server". При этом должно открыться окно с корневым каталогом Вашего нового диска. Обратите внимание, что как здесь, так и дальше я буду использовать именно диск F: в качестве сервера и папку C:\server в качестве корневого каталога этого диска. Я настоятельно советую Вам использовать именно эти параметры, чтобы в дальнейшем при установке не было путаницы. В следующих примерах я буду исходить из того, что у вас все настроено именно так.
Обратите внимание, что виртуальный диск пропадает после перезагрузки и команду subst нужно выполнить заново. Для того, чтобы не вызывать эту команду каждый раз, нужно записать ее в файл autoexec.bat, который находиться в корневом каталоге системного диска. В этом файле содержится список всех программ, которые необходимо выполнить при загрузке системы. Итак, откройте этот файл в "Блокноте" и запишите в самый конец такую строку:
subst F: C:\server
Однако на некоторых операционных системах это может не пойти (например, Windows ME, XP...). Это связано с принадлежностью файла autoexec.bat системе MS-DOS, а в поздних версиях Windows ее попросту нет. В этом случае сделайте следующее. Создайте файл "subst.bat" и запишите в него всего одну, все ту же строку "subst F: C:\server". Теперь поместите этот файл в корневом каталоге и добавьте его ярлык в автозагрузку. Такой подход приведет к исполнению командного файла subst.bat при каждом запуске Windows. Но здесь появится и неприятный момент. При запуске файла должно открываться окно эмуляции MS-DOS, в котором будет выполняться файл. Не очень удобно закрывать это окошко при каждом запуске системы. Так что может быть лучше отдельно при необходимости запускать файл subst.bat.
Все готово? Тогда давайте продолжим установку. Первое, что нам необходимо сделать - это установить вебсервер Apache. Программа, которую Вы загрузили, является установщиком и сама копирует все необходимые файлы. Однако дальше не все так гладко и не достаточно будет просто завершить все шаги установки. Чтобы установить сервер именно так, как нам требуется, давайте действовать следующим образом.
Запускаем файл установки Apache. После запуска установщика нажимаем кнопку "NEXT" и "YES", пока не дойдет очередь до указания пути установки. По умолчанию записан путь "C:\Program Files\Apache Group\Apache". Это нас абсолютно не устраивает - нужно установить Apache на свежевыделенный диск F. Для этого нажимаем "Browse" и указываем путь "f:\usr\apache" (если такого каталога нет, система спросит нужно ли его создать, на что отвечайте утвердительно). Почему именно "F:\usr\apache"? Дело в том, что каталог "usr" на сервере является служебным, лежащим отдельно от каталогов, где размещаются файлы сайтов и прочие элементы сервера. Каталог "usr" на сервере - это вроде каталога "Windows\System" в Windows. Далее вы еще столкнетесь с этим каталогом при администрировании вашего сервера. Нажимаем "NEXT", выбираем "Typical" - обычная установка. Ждем еще пару раз "NEXT" и сервер наконец устанавливается на наш компьютер, выполняя копирование файлов. Все! Вы только что установили на свой компьютер персональный вебсервер, на котором можете создавать неограниченное количество сайтов с неограниченными возможностями.
Однако с созданием сайтов мы пока подождем. Перед этим нужно еще установить PHP и много чего настроить в параметрах Вашего сервера. Это несложно - мы не будем сегодня углубляться в серьезные настройки Apache (это, кстати, тема для целой книги!), выполним лишь действия, необходимые и достаточные нам для полноценный работы домашнего сервера.
Продолжим. Теперь нам нужно установить PHP. Вы имеете файл, загруженный с сервера RunWeb.Ru. Это уже не установщик - это обычный ZIP-архив. Создайте в том же каталоге "F:\usr\" папку "php" и разархивируйте его в получившийся каталог "F:\usr\php".
Теперь посмотрите содержимое каталога "F:\usr\php". Вы видите файл php.exe и наряду с ним папки ddl, extensions, java, Mibs и т.п.? Да? Отлично! Поздравляю, PHP готов исполнять Ваши команды. Осталось только познакомить Apache с PHP - они, кстати, образуют отлично работающую пару.
С установкой программ покончено. Теперь перейдем к их настройке. В первую очередь Вам нужно найти файл "php.ini-dist" в каталоге "F:\usr\php" и скопировать его в папку C:\Windows, причем переименовать его на новом месте в файл "php.ini". В итоге у Вас должен получиться файл "C:\Windows\php.ini". Оставим его как есть, ничего в нем не изменяя и перейдем к настройке Apache. Здесь все немного сложнее.
Открываем файл "F:\usr\apache\conf\httpd.conf" в каком-нибудь текстовом редакторе, например "Блокноте". Это очень важный файл, который содержит все настройки Вашего сервера. В нем необходимо задать несколько параметров. Начнем.
1. Найдите в файле httpd.conf строчку "#ServerName new.host.name". Измените ее на строчку "Servername localhost". Обратите внимание, что знак "#" в начале строки убирается.
2. Далее найдите строчку "DocumentRoot "f:/usr/apache/htdocs" и измените ее на "DocumentRoot "f:/project/www". Обратите внимание на _отсутствие_ слеша в конце.
3. Теперь найдите строчку "<Directory "f:/usr/apache/htdocs">" и измените ее на "<Directory "f:/project/www">. Слеш опять отсутствует.
4. Также найдите и измените строку "ErrorLog logs/error.log" на строку "ErrorLog F:/project/logs/error.log" и строку "CustomLog logs/access.log common" на "CustomLog F:/project/logs/access.log common".
5. Теперь перейдите в самый конец файла httpd.conf и впишите в него такие строчки:
ScriptAlias /php/ "f:/usr/php/" AddType application/x-httpd-php .php .phtml .php4 Action application/x-httpd-php "/php/php.exe"
Эти строчки добавляют в настройки Apache возможность выполнения файлов с расширением .php, .phtml или .php4 как программ, написанных на PHP (PHP скриптов).
6. Ну а теперь создайте каталог "F:\project", и в нем два каталога "www" и "logs". В итоге Вы должны получить такое дерево каталогов:
F:\project
F:\project\www
F:\project\logs
Все! Поздравляю, Вы установили и настроили полноценный http-сервер с поддержкой PHP. Теперь дело за малым - научиться включать и выключать сервер, а также немножко его протестировать. Этим мы и займемся далее.
При инсталляции сервера программа установки создала в Главном меню (Кнопка "Пуск", далее "Программы") папку "Apache Web Server". В этой папке находиться несколько ярлыков. Нам потребуются следующие из них:
Start Apache - для запуска сервера
Stop Apache - для остановки сервера
При желании Вы можете скопировать их на Рабочий стол, чтобы иметь возможность быстро запускать и выключать сервер.
Двигаемся далее и подходим к самому главному моменту - запуску сервера. Если Вы произвели все указанные действия, то этот этап Вы точно преодолеете без проблем. Но перед запуском я хотел бы предложить Вам сделать еще кое-что, чтобы наверняка протестировать работу вашего сервера.
Итак, создайте в папке "F:\project\www\" файл с именем "index.html" следующего содержания:
<html> <head><title>Главная страница сервера</title></head> <body bgcolor=#ffffff> Поздравляю Вас, сервер работает!<br> Протестируйте PHP: <a href="test.php">test.php</a> </body> </html>Создайте там же файл с именем "test.php" такого содержания:
<? phpinfo(); ?>Вот и все, наконец-то можно запускать сервер. Торжественно запускаем ярлык Start Apache. При этом открывается черное окошко вроде окна MS-DOS с единственной надписью "Apache/1.3.12 (Win32) running...". Это означает, что сервер успешно запущен и на данный момент работает. Окошко закрывать не нужно, оно является рабочей средой Apache и закрывается с помощью ярлыка "Stop Apache", который и выключает сервер.
Итак, сервер запущен. Что дальше? Открывайте ваш броузер и набирайте в нем адрес "http://127.0.0.1". Помните, подключаться к Интернету в этот момент не нужно! Вы должны увидеть уже набранное приветствие, т.е. код файла "index.html". Перейдите по ссылке, ведущей к файлу "test.php". Что вы видите? Броузер должен вывести довольно большой файл с кучей различных обозначений и гордым заголовком "PHP Version 4.3.4" вместе в логотипом PHP. Это - результат работы нашего маленького скрипта "test.php", а точнее функции phpinfo(), которую мы в нем написали. Эта функция выводит все параметры PHP, установленного в системе.
Если Вам все это показалось сложным и непонятным, не пугайтесь. Дальше будет намного проще, просто в первый раз нужно было все установить и настроить, чтобы работало. Сейчас Вы имеете тот необходимый минимум, которого вполне достаточно, чтобы успешно начать работать с сервером.
Отдельно хочу обратиться к продвинутым пользователям, которые, я уверен, читают (или будут читать) мою статью. В первую очередь - если Вы не удовлетворены количеством информации (и объяснений к ней) по поводу настройки Apache и различных директив PHP - не стоит меня сильно в этом обвинять. Моей целью в этой статье было предоставить новичкам стартовую площадку для их обучения и первого проекта. В будущем я постараюсь продолжить эту тему.
Пример: настройка виртуального хоста
В данный момент на созданном сервере есть всего один хост, с уже известным Вам адресом http://127.0.0.1. Однако если у Вас есть несколько сайтов, то не всегда удобно использовать для их отладки один хост. Для подобных целей подойдет возможность Apache использовать несколько виртуальных хостов.
........
Итак, приступим к созданию виртуального хоста. Как Вы уже знаете, все настройки Apache производятся в файле httpd.conf, который расположен по адресу F:\usr\apache\conf\httpd.conf. В этом файле есть специальный раздел, который обозначен ### Section 3: Virtual Hosts. Он расположен в самом конце файла и отвечает за виртуальные хосты. Далее процесс создания хоста по шагам:
1. Выключите Apache.
2. В самом конце файла httpd.conf допишите такие строчки:
NameVirtualHost 127.0.0.2 <VirtualHost 127.0.0.2> ServerAdmin admin@site2 ServerName 127.0.0.2 DocumentRoot "/site2/htdocs/" ScriptAlias /cgi-bin/ "/site2/cgi-bin/" ErrorLog /site2/error.log CustomLog /site2/access.log common </VirtualHost>
В данной директиве мы описываем новый хост. Строка VirtualHost 127.0.0.2 обозначает адрес нового хоста. ServerAdmin admin@site2 указывает Email администратора, который будет выводиться при ошибках и служебных сообщениях сервера. ServerName 127.0.0.2 обозначает имя хоста, по которому мы будем к нему обращаться из броузера. DocumentRoot "/site2/htdocs/" указывает директорию, где находятся html и php файлы виртуального сервера. ScriptAlias /cgi-bin/ "/site2/cgi-bin/" указывает каталог, в котором расположены cgi-скрипты (программы на perl, c++ и т.д.). ErrorLog и CustomLog указывают расположение лог-файлов сервера. ErrorLog - это журнал ошибок, CustomLog - журнал доступа. В эти файлы будут записываться все ошибки (например, когда запрошенный файл не существует) и все запросы к серверу.
3. Теперь создайте описанные директории F:\site2\htdocs и F:\site2\cgi-bin. Файлы error.log и access.log можно не создавать, они будут сформированы автоматически при запуске Apache. Директория F:\site2 является корневой директорией виртуального сервера. Обратите внимание, что если Вы не создадите или ошибетесь в именах директорий, то Apache откажется запускаться.
4. Теперь можете запускать Apache. Не забудьте перед этим сохранить изменения в файле httpd.conf.
Вот и все, новый хост создан. Можете разместить в него файлы и просматривать их через броузер по адресу http://127.0.0.2.
Файл настроек .htaccess
Файл .htaccess - это служебный файл вебсервера, с помощью которого можно производить определенные настройки своего сайта. Например, с помощью этого файла можно настроить свои страницы ошибок или обработку SSI-директив.
Файл .htaccess может быть размещен в любом каталоге сервера. Кроме того, он действует на все внутренние каталоги, размещенные в текущей директории. То есть, если у Вас есть каталог "www" и в нем два каталога "1" и "2", то размещая файл .htaccess в "www", Вы одновременно распространяете его действие на каталоги "1" и "2".
Обратите внимание, что имя этого файла начинается с точки. Файлы, имена которых начинаются с точки, в системе Unix являются скрытыми. Это означает, что если Вы загрузите этот файл на сервер провайдера, то Вы не будете видеть его в Вашем FTP-клиенте. Это, кстати, частый вопрос, с которым мы сталкиваемся в службе поддержки RunWeb.Ru. А что делать, если Вы хотите изменить этот файл? Самый простой вариант - изменить его на домашнем компьютере и заново загрузить на сервер по FTP. Ваш клиент не должен спросить перезаписывать ли его, так как он не видит .htaccess в списке файлов. Это нормально, можете быть уверены, файл перепишется.
В качестве примера использования .htaccess давайте рассмотрим установку своих страниц ошибок. Что такое "свои страницы ошибок"? Допустим, у сервера запрашивается документ, которого не существует. В этом случае возникает ошибка номер 404, "Файл не найден". Apache при этом отправляет броузеру свою служебную страницу этой ошибки (404 Not Found). То же самое и с ошибкой номер 500 "Внутренняя ошибка сервера". Она возникает при возникновении ошибки на сервере, например, при исполнении CGI-скрипта. Итак, как установить свои страницы ошибок?
Для этого создайте пустой файл .htaccess в корневом каталоге виртуального хоста (например, F:\server) и запишите в него следующие строки:
ErrorDocument 404 http://127.0.0.1/err404.html
ErrorDocument 500 http://127.0.0.1/err500.html
Они назначают каждой ошибке свою страницу, которая будет открываться при возникновении данной ситуации. Естественно, Вам нужно будет создать файлы err404.html и err500.html на сервере. Называться они могут как угодно, не обязательно как в этом примере.
Существует также много других возможностей настроек файла .htaccess. Несколько очень полезных возможностей (таких как установка индексного файла, паролирование директорий, настройки SSI и другие) описано на нашем сервере RunWeb.Ru в разделе Частые вопросы по настройкам сервера. Список часто пополняется, поэтому рекомендую Вам ознакомиться с описанными в нем возможностями.
Частые вопросы по установке
1. Отсутствуют ярлыки запуска и/или выключения сервера.
Странно, конечно, но и такое, оказывается бывает. В этом случае нужно создать ярлыки для запуска и остановки сервера вручную. Они должны иметь вид:
Запуск сервера: F:\usr\apache\Apache.exe Остановка сервера: F:\usr\apache\Apache.exe -k shutdown
2. Отсутствует файл F:\usr\apache\conf\httpd.conf
Это случается и имеет отношение, равно как и предыдущий пункт, к различным дистрибутивам Apache. (по этому советую загружать дистрибутив, приведенный здесь!). Итак, файл "httpd.conf" отсутсвует, но есть файл "httpd.conf.default". В этом случае нужно скопировать файл "httpd.conf.default" в "httpd.conf" (именно создать копию этого файла с другим именем, а не переименовывать сам файл. "httpd.conf.default" всегда желательно иметь, так как он является дистрибутивом установок Apache и с его помощью Вы всегда можете вернуться к первоначальным настройкам). Ну а дальше производить все настройки в получившемся файле.
3. Не работает PHP (в броузер выводиться код) или не работает Apache (окошко сразу закрывается).
Проверьте правильность установки и настройки сервера (см. выше). Все пути, настройки, тексты скриптов обязательно должны совпадать с примерами - буква в букву. Иначе проблемы скорее всего будут. Например, Вы поставили слеш в настройках в другую сторону (вместо "/" написали "\" или наоборот) или в тексте скрипта вместо "<?" написали "< ?" (с пробелом) и т.п. Такие ошибки мне вычислять, к сожалению, очень сложно... мне как минимум нужно сесть за Ваш компьютер :)
4. Окно MS-DOS при запуске Apache открывается и сразу же гаснет. Не успеваю даже прочитать, что там написано.
Это означает, что Apache неправильно установлен или настроен. Не стоит сразу же повторять установку (запускать setup) - файлы сервера скопированы верно, ведь ярлык открывает файл Apache.exe. В этом случае обычно неверны настройки сервера. Проверьте файл "httpd.conf" в каталоге "F:\usr\apache\conf\". Особенно внимательно посмотрите на пути (F:\project и т.п.). Не забывайте про слеши! Они должны быть именно такие (в ту сторону), как приведены в примере (см. архив). И, очень важно: там, где их нет (например, в конце путей) не нужно их ставить! В завершение проверьте, что на сервере верна структура каталогов.
Автор: Иванов Дмитрий.
Хостинг провайдер RunWeb.Ru.
Разрешено любое использование при указании авторства.