22
Янв

Учтановка Вебсервера на локальный компьютер. Apache и PHP

Введение
При разработке простых статических сайтов на html, достаточно удобно и просто держать все файлы в отдельном каталоге, который будет соответствовать корневой папке вебсервера. А при использовании серверных скриптов PHP, Perl и других для их предварительной отладки и тестирования необходимо иметь локально установленный вебсервер.Первоначально свой проект biznescenter.com я разрабатывал в статическом варианте, потом по мере роста сайта он начал генерироваться у меня локально PHP скриптами, а уже после переезда на платный хостинг задача тестирования работы сайта, потребовала локальной установки вебсервера.

В результате поиска информации по установке и настройке вебсервера, php и MySQL в Рунете, мне удалось найти несколько неплохих, но уже сильно устаревших статей на woweb.ru, ссылки на Denwer, а также огромное количество вопросов, которые задавали многочисленные пользователи друг другу. Пришлось разбираться самостоятельно, что не вызвало никаких сложностей, но суммарно с учетом всех настроек потребовало значительный объем времени, хотя установка (с дистрибутивов) и настройка первого локального сайта у меня заняла около 20 минут.

Данная статья написана с целью помощи пользователям, желающим разрабатывать и тестировать скрипты в домашних условиях, а также использовать возможности настроек Apache, PHP и MySQL, как локально так и на реальном сервере. Но в отличии от большинства статей такой тематики, здесь не рассказывается когда и какую кнопку нажимать, а дается нормальное качественное описание понятий, действий и настроек. Т.е. эта работа ориентирована на опытных пользователей, занимающихся вебдизайном и программистов.

Основные понятия
Когда набирается адрес в строке браузера, идет работа по протоколам http (hypertext transfer protocol - протокол передачи гипертекста) или ftp (file transfer protocol). Например, адресная строка может иметь вроде http://sb-news.net.

Вебсервер - это компьютер, на котором установлено программное обеспечение, дающее возможность передавать информацию при запросе ее браузером. Наиболее распространенным вебсервером является Apache, другое достаточно популярное решение - это сервер Microsoft - IIS, который часто применяется вместе с ее серверным языком ASP. Взаимодействие вебсервера и браузера происходит по выбранному протоколу.

Сайты на сервере хранятся в отдельных каталогах, как правило, это каталоги public_html, html или www, находящиеся в вашем каталоге, к которому вы можете получить доступ с помощью ftp-клиента, через вебинтерфейс или контрольную панель сайта. Более удобным является работа через ftp-клиент (например, привычные всем Far Manager или Total Commander), в этом случае сайт, представляется обычным каталогом, в который вы можете записывать файлы. Для сервера Apache имена каталогов и их соответствие http-адресам записываются в файле конфигурации "httpd.conf", который далее будет рассмотрен. На сервере также выделяются и другие каталоги для служебных целей и могут создаваться вами пользовательские каталоги, в которых можно будет размещать произвольные данные.

Сайты размещаются на серверах провайдеров (хостинг) платных или бесплатных. Примером, такого бесплатного сервера является narod.yandex.ru. Сервисы отличаются предоставляемыми возможностями и правилами работы. Основной недостаток бесплатных сайтов - это неудобный адрес, вида name.narod.ru или, что еще хуже www.halyva.ru/name/, где name - собственно имя вашего сайта. Поэтому лучше зарегистрировать свое доменное имя, стоимость которого за год составит от $1 до $20, в зависимости от зоны и продавца. Или воспользоваться бесплатными доменами вида net.com, net.ru, da.ru, которые можно потом привязать к любому хостингу.

Выбор программных продуктов для организации вебсервера
Для организации работы сайта, необходимо выбрать связку программного обеспечения, которое будет для этого использоваться. В настоящий момент доминирует сочетание Apache (вебсервер) + PHP (серверный язык программирования) + MySQL (СУБД), которое и будет рассматриваться в этой статье. Причины их распространенности в следующем:
эти программы бесплатны;
кросплатформенность - они работают под Windowsm, и различные версии Unix и Linux;
т.к. эти проекты являются открытыми, то они очень быстро развиваются и их возможности часто опережают конкурентов;
высокие показатели качества и скорости работы;
большое количество документации.
Следует отметить, что также вместе с Apache часто применяются языки программирования Perl или Python, а хорошей альтернативой MySQL может послужить Postgree SQL.

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

Ключевые возможности Apache:
Поддержка виртуальных хостов (virtual hosts) - позволяет держать на одной машине несколько виртуальных web- серверов.
Развитая система аутентификации - позволяет ограничить доступ к разным директориям на основе файла паролей или по IP адресу.
Модульность системы позволяет не только подключить свои модули, но и даже дописать недостающие функции
Cуществует так называемый русский релиз: русский Apache, который умеет автоматически производить перекодировку страниц. Но в последние годы стандартным является явное указание кодировки страницы в html коде, например,
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
Уже давно все браузеры (кроме самых старых, начала 90-х годов), корректно обрабатывают этот мета-тег.

Если вам необходимо вести разработку на ASP, то придется устанавливать Microsoft IIS (Microsoft Internet Information Server), его не достатком является платность и как следствие - более высокая стоимость услуг хостинга. Но в последние годы Windows хостинг уже значительно подешевел и иногда оказывается даже дешевле Unix/Linux хостинга, на котором обычно размещаются сервера Apache.

Дистрибутивы и полезные ресурсы
Вот список ссылок на сайты, на которых всегда можно найти самые свежие версии программных продуктов, на которые ссылается статья:
http://www.apache.org - официальный сайт Apache.
http://ru.php.net - официальный сайт PHP.
http://www.mysql.com - официальный сайт MySQL.
Полезные сайты для разработчиков, содержащие документацию и популярные бесплатные программные продукты:
http://sb-news.net - в разделе статей можно найти множество примеров, описаний, необходимых для работы вебмастера, в разделе download, находятся многочисленные оригинальные примеры с подробными комментариями (ранее часть из них размещалась на http://dombiz.org).
http://www.phpmyadmin.net - самая распространенная утилита, для управления базами на MySQL.
http://www.phpbb.com - сайт разработчиков популярного форума phpBB, здесь можно взять его последнюю версию, есть русские шаблоны и многочисленные моды.
http://rus-phpnuke.com - очень популярная CMS с хорошей русификацией, имеет большое количество стандартных модов. У нее не самая богатая функциональность и производительность, но ее важное преимущество для небольших сайтов - это бесплатность.
http://www.denwer.ru - ресурс посвящен одноименному пакету
Отмечу, что для практической работы очень важно иметь одинаковые или максимально близкие версии программ (скриптов) и их настройки на локальном компьютере и на реальном сайте. Проблема в том, что многие хостеры, выполняют обновление программных продуктов (PHP, MySQL, Apache), со значительной задержкой во времени, по отношению к выходу их новых версий. Это объясняется тем, что любое обновление может вызвать (и чаще всего вызывает) различные несовместимости.

На момент выхода статьи применяются Apache 1.3.3 и выше, PHP 4.4.6 и выше (параллельно развивается более современная ветка PHP 5.2.0), MySQL 4.1 и выше. Даже небольшая разница по номерам версий для PHP и MySQL может лишить вас многих возможностей. Поэтому обязательно узнайте какая версия вам нужна и что реально установлено. В документации на PHP и MySQL указано с какой версии доступна та или иная возможность.

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

Все программные продукты следует скачивать непосредственно с сайтов разработчиков, в противном случае вы рискуете получить троянские программы и вирусы.

Установка и настройка Apache и PHP
Для установки Apache, просто запустите программу инсталлятор (например, apache_1.3.33-win32-x86-no_src.exe). Единственное, что следует изменить - это каталог, в который он будет устанавливаться. Лучше всего выделить отдельный каталог не на системном диске, например, d:programapache. Причина в том, что при работе сервер будет создавать многочисленные логи, которые могут занимать десятки и сотни мегабайт, по умолчанию расположенные в подкаталоге logs.

После инсталляции Apache, добавится одноименный сервис, который можно запускать через панель управления. Если вы не будете каждый раз его использовать, то лучше переключить тип его запуска в ручной (manual). Для удобства запуска и остановки можно использовать команды net start и net top.

Для меня самым удобным оказался режим консольный работы сервера. Для этого можно просто запускать файл apacheapache.exe.

Сразу после установки вы можете запустить сервер и набрать в командной строке браузера localhost, после чего попадете на локальный сайт. По умолчанию, в его качестве выступает содержимое каталога apachehtdocs - страница с приветствием, с сообщением о окончании успешной установки и документацией по настройке сервера.

Установка PHP происходит еще проще - для этого достаточно распаковать архив с дистрибутивом в выбранный вами каталог, например, php-4.3.11-Win32.zip в каталог d:programphp. Для удобства настройки лучше держать Apache и PHP рядом. Каталог PHP содержит:
файл php.exe - файл интерпретатора php, который можно сразу запускать и передавать ему в качестве параметра php скрипт. Удобно настроить вашу файловую оболочку, чтобы для php файлов, автоматом запускался интерпретатор и выводил результат в одноименный html файл. Тогда запуск и отладка программ независимо от расположения на диске упростятся.
php.ini, php.ini-dist, php.ini-recommended - соответственно действующие настройки, стандартные из дистрибутива и рекомендуемые (из соображений совместимости и безопасности, часто противоречащих). Обратите внимание, что из этого каталога, файл php.ini будет браться только при запуске php.exe. При совместной работе с Apache, файл настроек php.ini должен находиться с каталоге Windows.
php4ts.dll (php5ts.dll для PHP 5) - dll с интерпретатором php, именно она будет вызываться через Apache.
в каталоге sapi находятся библиотеки для интеграции с вебсерверами, нам потребуется php4apache.dll (в PHP 5 - php5apache.dll, лежит в корневом каталоге)
dlls, extentions - библиотеки языка php (в PHP 5, по умолчанию для расширений каталог ext).
Для совместной работы Apache и PHP нужно (для PHP 5 названия файлов соответственно меняются):
скопировать файл phpsapiphp4apache.dll в apachemodules
скопировать файл php4ts.dll в каталог apache
в файле настроек аpacheconfhttpd.conf нужно в секции <IfModule mod_mime.c> перед ее закрытием (</IfModule>) прописать (если этого там нет по умолчанию):
AddType application/x-httpd-php phtml php php3
LoadModule php4_module modules/php4apache.dll

для php 5 строки будут немного отличаться:
AddType application/x-httpd-php phtml php php3
LoadModule php5_module modules/php5apache.dll
Все первоначальная настройка завершена. Apache и PHP уже будут работать с настройками по умолчанию. Для проверки запустите сервер Apache с командной строки. Он должен будет вам выдать строку следующего типа: Apache/1.3.33 (Win32) PHP/4.3.11 running:

Для удобной работы нам потребуется настроить виртуальные серверы на Apache, чтобы мы моли одновременно работать с разными проектами и при необходимости задать настройки PHP.

Рассмотрим порядок настройки сервера Apache для работы с виртуальными хостами. Настройки этого файла могут несколько отличаться для разных версий сервера:
Создайте отдельный каталог project, в котором, cделайте несколько подкаталогов site1, site2, site3 и т.д., для ваших сайтов;
Откройте файл httpd.conf
Раскомментируйте строку ServerName localhost, если стоит строка #ServerName new.host.name (# - знак комментария, а имя new.host.name заменяем на свое localhost).
DocumentRoot -настройте на каталог вашего сайта, например, "DocumentRoot d:/project/site1"
Строку "<Directory "d:/program/apache/htdocs">", тоже меняем на "<Directory "d:/project/site1">"
Строки "ErrorLog logs/error.log" и "CustomLog logs/access.log common", можно перенаправить на другие подкаталоги. Я предпочитают держать все логи в стандартном каталоге logs, так на мой взгляд их удобнее анализировать.
Включаем виртуальные хосты для этого раскомментируем параметр NameVirtualHost
NameVirtualHost 127.0.0.1:80
Его значение можно задать и именем, например, localhost, но тогда придется указывать его в VirtualHost (смотрите следующий пункт).
Остается добавить виртуальные хосты в конце файла настроек, по приведенному там образцу.
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
Добавим пару виртуальных хостов:
<VirtualHost site1>
ServerAdmin webmaster@host.some_domain.com
DocumentRoot "d:/project/site1"
ServerName site1
ErrorLog logs/site1-error.log
CustomLog logs/site2-access.log common
</VirtualHost>

<VirtualHost site2>
ServerAdmin webmaster@host.some_domain.com
DocumentRoot "d:/project/site2"
ServerName site2
ErrorLog logs/site2-error.log
CustomLog logs/site2-access.log common
</VirtualHost>

...
Сайт localhost должен корректно работать сразу после установки Apache, чтобы стали доступны наши имена site1, site2 и т.д. необходимо отредактировать файл C:WINDOWSsystem32driversetchosts, добавив в него строку (или дописав в него недостающие имена):
127.0.0.1 localhost site1 site2

Не забудьте перезапустить Apache, после редактирования hosts и в дальнейшем новые хосты тоже потребуется здесь добавляь.

Все настройка сервера завершена. Для проверки работы сайтов, положите в их папки, следующий PHP скрипт, назовите его index.php:
<?php
phpinfo();
?>
Теперь при наборе имени сайтов localhost, site1, site2 - должны выдаваться страницы с информацией о версии языка PHP и его модулей и сервера Apache.

Файлы настроек .htaccess
Файл .htaccess - это служебный файл вебсервера, с помощью которого можно производить настройки своего сайта, перекрывая глобальные настройки конфигурационного файла Apache httpd.conf. Например, с помощью этого файла можно настроить свои страницы ошибок, защитить файлы и каталоги. Все настройки можно сделать и в конфигурационном файле рассмотренном выше, но .htaccess позволяет сделать их индивидуальными для каждого каталога сайта и для реального сервера дать возможность пользователям настраивать свои сайты, без доступа к httpd.conf. Недостатком .htaccess является то, что этот файл считывается и обрабатывается сервером при каждом обращении к страницам, что несколько снижает скорость работы. Для защиты файлов php каталога от прямого доступа из web, .htaccess будет иметь вид:
<Files *.php>
order allow,deny
deny from all
</Files>

Для того, чтобы директивы .htaccess выполнялись, необходимо разрешить его использование для сервера в целом или для конкретных сайтов в httpd.conf. Для глобальной настройки нужно в разделе:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Нужно установить опцию AllowOverride, она может принимать значения: None (по умолчанию), All или комбинации из групп настроек Options, FileInfo, AuthConfig и Limit. None - фактически запрещает обработку .htaccess, а All - разрешает использование в .htaccess любых директив, поэтому его удобнее всего использовать для отладки.

Для индивидуальной настройки сайтов, нужно создавать аналогичные секции для каждого сайта, в которых после слова Directory, указывать путь к каталогу сайта. По умолчанию такая секция создается для сайта из подкаталога htdocs.

Файл .htaccess может быть размещен в любом каталоге сервера. Кроме того, он действует на все внутренние каталоги, размещенные в текущей директории. То есть, если есть корневой каталог сайта "public_html" (иногда "www"), то размещая в нем файл .htaccess, вы одновременно распространяете его действие на все его подкаталоги.

В качестве примера использования .htaccess давайте рассмотрим установку своих страниц ошибок. Если у сервера запрашивается документ, которого не существует, то возникает ошибка номер 404 ("Файл не найден"). Apache при этом отправляет браузеру свою служебную страницу этой ошибки (404 Not Found).

То же самое и с ошибкой номер 500 ("Внутренняя ошибка сервера"). Она возникает при возникновении ошибки на сервере, например, при исполнении CGI-скрипта. Чтобы установить свои страницы ошибок создадим файл .htaccess в корневом каталоге виртуального хоста (например, d:projectsite2) и запишите в него следующие по следующему формату:

ErrorDocument error-code document
где error-code - номер кода ошибки, а document - может быть полным или частичным (с обратного слеша "/") url к документу или выводим сообщением (начинается с "), например,

ErrorDocument 404 http://site2/404.shtml
ErrorDocument 500 http://site2/500.shtml
ErrorDocument 403 /403.shtml
ErrorDocument 401 "Sorry can't allow you access today
Они назначают каждой ошибке свою страницу или сообщение, которые будут открываться при возникновении данной ситуации. Естественно, вам нужно будет создать файлы 404.shtml и 500.shtml на сервере.

Надеюсь приведенные здесь примеры, помогут установить вам свой локальный вебсервер. Здесь не проводилось глубокого разбора настроек, рассмотрено только то, что нужно для повседневной работы. Для более глубокого знакомства с Apache, рекомендую книгу Ben Laurie, Peter Laurie "Apache: The Definitive Guide, Second Edition", в которой очень подробно с многочисленными примерами рассмотрено решение большого количества практических задач, ее электронная версия доступна во многих библиотеках.

Описание настройки PHP, установки MySQL и вспомогательных утилит будет опубликовано в следующих статьях этого цикла.

Метки: , , , , , , ,

Связанные записи

Оставьте комментарий