Учебное пособие: Установка и настройка локального web-сервера Apache, PHP, MySQL под операционную систему Windows
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
РОССИЙСКИЙ ХИМИКО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ
им. Д.И. Менделеева
НОВОМОСКОВСКИЙ ИНСТИТУТ
Установка и настройка локального web сервера Apache, PHP, MySQL под операционную систему Windows
УЧЕБНОЕ ПОСОБИЕ
Новомосковск 2008
План
1. УСТАНОВКА ЛОКАЛЬНОГО WEB–СЕРВЕРА И ЕГО КОМПОНЕНТОВ
2. НАСТРОЙКА WEB–СЕРВЕРА И ЕГО КОМПОНЕНТОВ
2.1. Конфигурационные файлы сервера Apache
2.2. Конфигурационный файл httpd.conf и его директивы
2.3. Настройка файла конфигурации Apache
2.4. Создание виртуальных хостов
3.1. Проверка работоспособности виртуальных серверов
3.2. Тест SSI (Server Side Includes)
ЗАКЛЮЧЕНИЕ или С ЧЕГО НАЧАТЬ ?
ВВЕДЕНИЕ
Работающий Web-сервер и СУБД требуются при создании Интернет проектов с использованием современных технологий. Наилучший вариант — это установка локального Web-сервера на тот же ПК, где создается Интернет проект. Этот ПК всегда доступен по IP-адресу 127.0.0.1, что эквивалентно доменному имени localhost. Поэтому для доступа к Web-серверу через браузер можно использовать адрес http://localhost. При использовании локального сервера все изменения в файлах доступны через браузер сразу же. Когда все скрипты будут отлажены, можно зайти в Интернет и скопировать их на сервер хостинг-провайдера.
Язык программирования РНР, специально предназначенный для работы в Интернет, изначально создавался под Unix-подобные операционные системы — Linux, FreeBSD, и т.п. Под Windows существует свой аналог РНР, который называется ASP (Active Server Pages). Он полностью ориентирован на Windows и позволяет учитывать и использовать все особенности этой операционной системы. При этом в качестве HTTP-сервера рекомендуют использовать IIS (Internet Information Server) — продукт компании Microsoft.
Желательно, чтобы на сервере и на компьютере, на котором создаются и тестируются РНР - сценарии, стояли одинаковые операционные системы. Бывает так, что РНР -программа отлично работает на Windows-компьютере, но отказывается работать или работает некорректно под Linux. Профессиональное использование РНР ориентировано на Linux (Unix). Существуют детали и возможности, которые нельзя учесть в силу разности ОС Windows и ОС Linux (Unix).
Можно ли разрабатывать и отлаживать скрипты в Windows, а потом без изменений переносить их в Unix? К счастью, ответ на этот вопрос, чаще всего, — да. Для этого используют локальный Web-сервер Apache для Windows, а также устанавливают РНР и MySQL, способные работать в этой ОС.
Почему именно Apache? Потому что это самый распространенный сервер. Он установлен у большинства хостинг-провайдеров. Существует его Windows-версия, практически идентичная по функциональности своему Unix-собрату.
Рекомендуется устанавливать самую последнюю версию Apache. Ссылка на каталог, в котором расположены последние версии Apache: http://www.apache.org/dist/httpd/binaries/win32/. Нужен ЕХЕ-файл, имя которого содержит подстроку no_src, т. е. "без исходных кодов".
Установка сервера Apache и сопутствующих программ вручную - утомительное занятие. Приходится разбираться с многочисленными параметрами конфигурации Apache, PHP и MySQL.
Существуют готовые комплексы, не нуждающиеся в настройке. Наиболее популярным из таких комплексов является Денвер – это "Джентльменский набор Web-разработчика". Денвер — это те же самые дистрибутивы Apache, PHP, MySQL. Они объединены в единый архив и снабжены удобным инсталлятором и утилитами настройки (включая средства автоматического конфигурирования виртуальных хостов).
Денвер создавался для того, чтобы упростить настройку и установку свободно распространяемых программ (Apache, PHP, MySQL и т. д.). Он имеет модульную структуру. Его ядро — так называемый "базовый пакет". Все остальные компоненты поставляются в виде автономных пакетов расширений, для работы которых нужен базовый пакет.
Базовый пакет содержит большинство необходимых Web-программисту программ и утилит:
● Apache с поддержкой SSI, mod_rewrite, mod_php.
● PHP с поддержкой GD и MySQL.
● MySQL с поддержкой транзакций (mysql-max).
● phpMyAdmin — система управления MySQL через Web-интерфейс; полностью заменяет командную строку MySQL.
● Ядро Perl без стандартных библиотек (они поставляются отдельно).
● Эмулятор sendmail (отладочная "заглушка", помещающая приходящие письма в каталог /tmp); поддерживается работа совместно с РНР и Perl.
● Система управления виртуальными хостами, основанная на шаблонах. Чтобы создать новый хост, вам нужно лишь добавить каталог в /home, править конфигурационные файлы не требуется.
● Система настройки и управления запуском/завершением.
●. Инсталлятор.
Дистрибутив, содержащий все перечисленные выше компоненты, занимает около 2 Мбайт.
На сайте http://web.dklab.ru доступно множество пакетов расширений для Денвера, содержащих:
● Документацию ко всем программам, входящим в комплекс.
● Полную версию Perl со стандартными библиотеками.
● Полную версию PHP 3 и PHP 4, а также модули для РНР 5.
● Модули Apache, не вошедшие в базовый пакет Денвера.
● Разнообразные "облегченные" и "специализированные" версии базового пакета — в частности, дистрибутив, помещающийся на одну дискету, и базовый пакет с поддержкой РНР 4, а не РНР 5 по умолчанию.
По адресу http://forum.dklab.ru/denwer/ действует форум, где можно получить консультацию по вопросам, касающимся использования Денвера. Он также содержит обширную базу данных вопросов и ответов. На форуме действует гибкая система поиска.
Если Вы желаете детально разобраться в работе локального web-сервера, то рекомендуется собрать и настроить его собственноручно из отдельных программных продуктов. Полезно предварительно изучить статью «Установка и настройка Apache+PHР», расположенную по адресу http://php5/ru/study/instal. И, конечно же - разделы официальной документации, посвященные установке соответствующих программ.
1. УСТАНОВКА ЛОКАЛЬНОГО WEB–СЕРВЕРА И ЕГО КОМПОНЕНТОВ
1.1. Структура каталогов
Рекомендуется логически отделить Web-проекты от всех остальных на локальном ПК. Для этого следует установить все программное обеспечение локального web-сервера, а также записывать все HTML-файлы, скрипты и документы в отдельный каталог. Локальный сервер удобнее расположить на отдельном логическом диске (не на С), причем организовать его как реальный сервер. Лучше установить и настроить сервер на отдельном диске D. На этом диске можно устроить «Unix»:создать подкаталог /home/ для хранения локальных сайтов, а для Apache, PHP, MySQL и т.д. создать подкаталог /usr.
Создайте на диске D две папки с названиями usr и home. Названия папок и файлов, во избежание проблем, следует писать строчными буквами, т.к. в *nix операционных системах home и Home не одно и тоже. Большинство серверов, на одном из которых в дальнейшем будет размещен созданный Вами Интернет проект, работают под *nix операционными системами.
1.2. Установка Apache
1. Запустите файл инсталляции «apache_1.3.24-win32-x86-no...»:
2. В появившемся диалоге нажмите кнопку Yes, а затем - кнопку Next:
3. Прочитайте лицензионное соглашение и поставьте галочку напротив «I accept the terms in the license agreement» и нажмите на кнопку Next:
4. В следующем окне «Server Information» нужно написать:
● Network Domain - имя Вашего домена: localhost
● Server Name - имя Вашего сервера: www.localhost.ru
● Administrator's Email Address - Ваш почтовый адрес: admin@localhost.ru.
● Установите переключатель «Run when started manually, only for me» (Запускать вручную только для меня), чтобы запускать сервер в ручном режиме:
В окне «Server Information» можно указать и другую любую информацию о сервере, так как она в дальнейшем может быть исправлена при редактировании файла httpd.conf.
5. В следующем окне «Setup Type» выберите установку «Complete» и нажмите кнопку Next:
6. В окне «Destination Folder» нажмите «Change» и измените путь, на тот где будет располагаться web-сервер, а именно D:\usr.
По умолчанию Web – сервер будет установлен в папку C:\Program Files\Apacher Group
C помощью кнопки «Сhange» (Изменить) можно указать папку, в которую будет установлен Web – сервер Apache: D:\usr\:
В итоге путь будет изменен, нажмите Next, а в следующем окне - кнопку Install:
7. Будет произведено копирование файлов:
8. Затем появиться окно, в котором нужно нажать Finish:
9. Apache установлен. Запустите установленный Web – сервер Apache. Для этого выберите команду главного меню Пуск → Программы → Apache HTTP Server → Start Apache in Console (Programs → Web-сервер Apache → Запустить Apache в консольном режиме).
На экране появится окно программы Apache с сообщением: Apache/1.3.24 (Win32) running... (Apache/1.3.24 (Win32) работает...):
10. Теперь можно подключиться к Web-серверу Apache. Для этого:
● Средствами операционной системы Windows в папке D:\usr\Apache\htdocs:
переименуйте файл index.html.en в файл index.html:
● Запустите браузер Microsoft Internet Explorer или любой другой, например Mozilla Firefox.
● В поле ввода Address (Адрес) браузера введите http://localhost и нажмите клавишу Enter. В окно браузера загрузится начальная страница Web-сервера Apache:
Начальная страница Web-сервера Apache на русском языке:
Если открылась начальная страница, значит Apache установлен правильно.
● Перейдите в окно Web-сервера Apache с помощью Панели задач операционной системы Windows и завершите работу сервера с помощью кнопки [X] в правом верхнем углу окна.
1.3. Установка PHP
Загрузить дистрибутивов PHP можно с официальной страницы http://www.php.net/downloads.php из секции Windows Binaries файл с расширением ZIP. Версии РНР на этой странице обновляются редко. Если нужно получить самый последний дистрибутив, зайдите на сайт http://snaps.php.net. Там можно найти даже версию, откомпилированную сегодня (новые дистрибутивы компилируются и архивируются автоматически несколько раз в день). Они могут содержать и новые (обычно мелкие) ошибки, которые еще не успели исправить. Чаще всего оказывается, что в новой версии появились дополнительные возможности, недоступные на официальной странице дистрибутивов. РНР постоянно совершенствуется. Наилучшим решением будет загрузить последнюю версию, поскольку в ней исправлены ошибки из предыдущих версий языка, и она выигрывает по количеству поддерживаемых возможностей.
Скопировать документацию по РНР можно со страницы http://www.php.net/download-docs.php. Рекомендуется устанавливать документацию в формате СНМ (файлы формата Windows Help). Доступна русская версия справочной системы.
Можно просматривать документацию прямо на сайте РНР (там есть удобный поиск). Классический пример поиска описания той или иной функции — это набор в браузере адреса вида: http://php.net/имя Функции. Например:
http://php.net/fopen;
http://php.net/eval;
http://php.net/str_replace.
Одна из самых полезных функций online-руководства — возможность оставлять и читать пользовательские комментарии к той или иной статье — они выводятся в ее конце. Например, если кто-нибудь обнаружит особенность в работе той или иной функции, он может прямо на странице описания этой функции оставить заметку о своей находке. В результате ценность и объем информации, собранной в таких заметках, значительно превосходят ценность и объем исходной статьи помощи.
Не нужно постоянно подключаться к Интернету, чтобы быть в курсе всех пользовательских заметок. Доступна версия официальной документации, в которую включены все пользовательские комментарии. Скачать ее можно по адресу: http://weblabor.hu/php-doc-chm/Sdownload.
Рассмотрим порядок установки php 4.3.9.
1. Дважды щелкните мышью на файле инсталляции php 4.3.9.-installer.exe:
На экране появится первый диалог мастера установки РНР:
В данном диалоге содержится предупреждение о том, что программа защищена законом об авторских правах. Нажмите кнопку Next.
2. На экране появится второй диалог мастера установки РНР:
Познакомьтесь с текстом лицензионного соглашения во втором диалоге мастера установки РНР. Нажмите кнопку IАgree, чтобы принять условия лицензионного соглашения.
3. На экране появится третий диалог мастера установки РНР:
Установите переключатель «Advanced» (Расширенный), чтобы в дальнейшем выбирать набор функциональных возможностей программы. Нажмите кнопку Next.
4. На экране появится четвертый диалог мастера установки РНР:
С помощью кнопки «Browse» можно указать папку, в которую будет установлена программа. По умолчанию РНР будет установлена в папку C:\PHP. В следующем окне рекомендуется заменить путь на D:\usr\php:
Нажмите кнопку Next.
5. На экране появится пятый диалог мастера установки РНР:
Диалог определяет каталог для временных файлов. Кнопка «Browse» позволяет указать папку, в которой будут размещаться временные файлы (по умолчанию эти файлы будут находиться в папке C:\PHP\uploadtemp). Рекомендуется выбрать D:\usr\php\uploadtemp:
Нажмите кнопку Next.
6. На экране появится шестой диалог мастера установки РНР. В этом диалоге с помощью кнопки «Browse» можно указать папку, в которой будут размещаться данные сеанса работы. По умолчанию эти файлы будут находиться в папке C:\PHP\sessiondata. Рекомендуется выбрать D:\usr\php\sessiondata:
Нажмите кнопку Next.
7. На экране появится седьмой диалог мастера установки РНР:
В поле ввода «Please enter the address of your SMTP Server» (Пожалуйста, введите адрес вашего SMTP-сервера) введите электронный адрес своего SMTP-сервера, который указывают при настройке почтовой программы: localhost.
В поле ввода «Please enter the «from» address for the mail function» (Пожалуйста, введите адрес from для функции mail) введите свой электронный адрес: me@localhost.com.
Нажмите кнопку Next.
8. На экране появится восьмой диалог мастера установки РНР:
Установите переключатель «Display all errors, warnings and notices» (Отображать все ошибки, предупреждения и примечания), чтобы программа в ходе своей работы выводила все ошибки, предупреждения и примечания.
Нажмите кнопку Next.
9. На экране появится девятый диалог мастера установки РНР:
Установите переключатель Apache, чтобы указать используемый Web-сервер.
Нажмите кнопку Next.
10. На экране появится десятый диалог мастера установки РНР:
Если сброшен флажок php, то установите его, чтобы файлы с расширением php интерпретировались программой РНР. Нажмите кнопку Next.
11. На экране появится одиннадцатый диалог мастера установки РНР с сообщением о готовности начать установку программы:
Нажмите кнопку Next.
12. На экране появится диалог, показывающей процесс установки РНР.
13. После завершения копирования файлов на экране возникнет диалог Apache Configuration (Конфигурация Apache) с сообщением о необходимости ручной настройки Web-сервера Apache для использования совместно с РНР:
Нажмите кнопку OK, чтобы закрыть диалог Apache Configuration (Конфигурация Apache) с сообщением.
14. На экране появится диалог «Instalation complete» (Установка завершена) с информацией о завершении установки РНР. Нажмите кнопку ОК, чтобы закрыть диалог «Instalation complete». Установка РНР завершена.
15. Для правильной работы PHP с Apache необходимо установить специальный модуль. Нужно воспользоваться специальным архивом (php-4.3.9 RC3-Win32 6,96 Мб), который содержит все необходимое для полноценной работы PHP с Apache.
● Создайте папку и распакуйте в эту папку специальный архив (php-4.3.9 RC3-Win32 6,96 Мб):
● Все содержимое созданной папки (распакованный архив php-4.3.9 RC3-Win32) скопируйте в папку D:\usr\php:
● Запустите файл go-pear.bat, который проинсталлирует PHP. На вопросы 1, 2 и 3 нажмите последовательно Enter, на 4 вопрос ответьте Y:
◘ Вопрос 1:
◘ Вопрос 2:
◘ Вопрос 3:
◘ Вопрос 4:
Следует ответить Y:
Установка PHP со специальным модулем завершена.
1.4. Установка MySQL
1. Запускают setup.exe:
2. Нажимают Next:
3. Затем нажимают еще раз Next:
4. В окне «Choose Destination Location» изменяют путь на D:\usr\mysql:
5. Вариант установки рекомендуется выбирать «Typical»:
6. Далее произойдет копирование файлов:
8. В заключении нажимают Finish:
1.5. Установка Send Mail
После создания скрипта, отправляющего сообщения, рекомендуется проверить работает он или нет. Для этого открывают файл sendmail.log и смотрят, осуществлялась ли попытка отправления сообщения. Если да, тогда созданный скрипт работает. Почему написано «попытка»? Потому что отправить сообщение без SMTP -сервера невозможно. Если будет установлен SMTP - сервер, то сообщение будет отправлено на сервер получателя. Для установки Send Mail запускают инсталлятор, в первых двух окнах нажимают Next, далее заменяют путь на D:\usr\sbin и нажимают Next. Затем еще в двух окнах нажимаем Next и в конце Finish.
Эта программа является платной. В Интернете имеется генератор ключей, который можно скачать по адресу - http://newprog.by.ru/serv/apache/sendmail_gen.zip. Windows-версию этой программы предлагают на http://www.webwarper.net/ww/~GZ/www.indigostar.com/sendmail.htm?*, где можно взять тридцатидневную полнофункциональную shareware-версию. Здесь будет рассказываться именно о ней. В конце этой главы можно прочитать про то, как снять с Send Mail защиту.
Send Mail нужен Вашим скриптам, чтобы не вылетать с сообщениями об ошибке, когда они не найдут его в /usr/sbin/sendmail, a Вам он потребуется, чтобы видеть, способен ли Ваш скрипт что-то отправлять, и будет ли он работоспособен после выгрузки на сайт в Интернете. Вообще говоря, Вам совсем не нужно, чтобы скрипт что-то отсылал по почте, когда Вы его тестируете на домашнем компьютере - Вы ведь не будете тестировать свой домашний сайт, сидя в онлайн, и Send Mail’у до SMTP сервера всё равно не достучаться. Поэтому главной пользой от деятельности этой программы будет sendmail.log, который программа создаёт после запуска. Из него будет видно, что пытался отправить Send Mail - и пытался ли. Если нет, то у Вас появятся вопросы к Вашему скрипту. Если Вы установите SMTP сервер, то программа сможет отправлять письма на порт сервера.
Send Mail нужно будет установить в папку d:\usr\sbin. Там после установки поселится файл sendmail.exe, что в результате даст нам необходимый путь: /usr/sbin/sendmail
1.6. Установка SMTP сервера
SMTP-сервер применяют для отправки исходящей почты на сервер получателя. В качестве SMTP сервера можно рекомендовать программу Advanced Direct Remailer. Эта программа платная. Создана альтернативная бесплатная программа: SPECTral Personal SMTP Server 0.3. Найти ее можно по адресу - http://spsmtp.net.ru.
Программа SPECTral Personal SMTP Server 0.3 устанавливается в следующей последовательности:
2. НАСТРОЙКА WEB–СЕРВЕРА И ЕГО КОМПОНЕНТОВ
2.1. Конфигурационные файлы сервера Apache
Сервер Apache имеет три конфигурационных файла: httpd.conf, srm.conf, access.conf. Обычно эти файлы находятся в каталоге /etc/httpd/conf. Вся настройка сервера заключается в редактировании этих трех файлов.
Рассмотрим, какие функции выполняют эти файлы:
● Файл httpd.conf — это основной файл конфигурации сервера. В нем содержится техническое описание работы сервера.
● В файле srm.conf задаются параметры документов, которые размещены на сервере.
● Файл access.conf содержит параметры доступа к серверу.
Начиная с версии 1.3, рекомендуется все директивы, которые раньше находились в файлах srm.conf и access.conf, помещать в файл httpd.conf.
Сервер Apache версии 2.0, который входит в состав дистрибутива Linux Red Hat 9.0, содержит еще несколько конфигурационных файлов: apache-mime.types, vhosts/vhosts.conf,vhosts/VirtualHomePages.conf, vhosts/DynamicVHosts.conf. В файле apache-mime.types содержатся типы MIME, поддерживаемые сервером Apache. Файлы vhosts.conf, VirtualHomePages.conf, DynamicVHosts.conf относятся к конфигурированию виртуальных Web-серверов, о которых речь пойдет немного позже.
2.2. Конфигурационный файл httpd.conf и его директивы
Директивой называется параметр сервера, влияющий на его поведение. Директивы бывают простыми и сложными, которые также называются блоками директив. Простые директивы изменяют только одно свойство сервера, например, его имя, а блоки директив позволяют изменять сразу несколько свойств какого-нибудь объекта, например, каталога.
Как уже отмечалось ранее, этот файл содержит практически все директивы, необходимые для работы сервера. Директивы конфигурационного файла сервера Apache можно условно разделить на такие группы:
1. Общие. К общим директивам относятся глобальные директивы, влияющие на работу всего Web-сервера. Это директивы ServerName, ServerType, Port, User и Group, ServerAdmin, ServerRoot, PidFile, DocumentRoot, UserDir.
2. Директивы протоколирования: Error Log, TransferLog, HostnameLookups.
3. Директивы ограничения доступа: AllowOverride, Options, Limit.
4. Директивы управления производительностью: StartServers, MaxSpareServers, MinSpareServers, а также Директива CacheNegotiatedDocs.
5. Директивы обеспечения постоянного соединения с клиентом: Timeout, KeepAlive, KeepAliveTimeout.
6. Директивы настройки отображения каталогов. Оформить отображение каталогов можно с помощью директив настройки отображения каталогов: Directorylndex, Fancylndexing и AddlconByType.
7. Директивы обработки ошибок. Директивой обработки ошибок HTTP-сервера является директива ErrorDocument. С ее помощью можно установить реакцию на любую ошибку сервера, например, на ошибку 404 (документ не найден).
8. Директивы перенаправления: Redirect, Alias и ScriptAlias.
9. Директивы для работы с многоязычными документами: AddLanguage и LanguagePriority.
10. Директивы обработки MIME-типов. Настроить свой сервер для обработки различных MIME-типов можно с помощью директив DefaultType, AddEncoding, AddType, AddHandler и Action.
11. Директивы создания виртуальных узлов: VirtualHost, Listen, BindAddress.
Все эти директивы редактировать вам вряд ли придется — нужно будет задать только значения директив ServerName и ServerAdmin. По умолчанию остальные директивы содержат вполне разумные значения. Далее приведено описание директив, используемых в файле httpd.conf.
2.3. Настройка файла конфигурации Apache
Apache по праву считается одним из лучших веб-серверов, однако заставить его правильно работать не каждому под силу. В лучших традициях *nix-программ все настройки осуществляются редактированием текстового файла httpd.conf. Значительно облегчить конфигурирование может графическая оболочка ApacheConf 3.3: http://apache-gui.com, http://www.zecos.com, support@zecos.com.ApacheConf 3.3 позволяет редактировать файл httpd.conf, используя графический интерфейс (GUI):
Все параметры сервера в утилите удобно разбиты на разделы (глобальные параметры, виртуальные хосты и т.п.), имеет мастера по установки SSI, PHP и множество дополнительных функций. Начинающие администраторы смогут улучшить свои знания Apache - многие директивы снабжены комментариями, имеются подсказки на русском языке. Опытным пользователям программа поможет сэкономить время при настройке. Поддерживаются версии сервера Apache 2 и 1.3. Редактировать можно как локальный файл httpd.conf, так и расположенный на FTP-сервере.
Конфигурирование Apache — непростое занятие. К счастью, все директивы сервера подробно описаны в сопроводительной документации, включенной в дистрибутив. Существует и online-версия руководства. Она доступна по адресу http://httpd.apache.org/docs/ . Главное достоинство документации на сайте в том, что по ней можно проводить поиск, что недоступно при использовании руководства из дистрибутива.
Следует в точности выполнять перечисленные ниже шаги, не пропуская и не откладывая ни одного.
Создайте в папке home папку localhost:
В папке localhost будет храниться содержимое главного хоста Apache-того, который будет доступен по адресу http://localhost.
В папке localhost следует создать папки cgi-bin и www:
В папке cgi-bin будут храниться CGI-сценарии, а в папке www – программы на PHP и разные документы. Обратите внимание CGI-сценарии – это не совсем то же самое, что PHP – скрипты. Поэтому они должны располагаться раздельно.
Для настройки Apache необходимо открыть файл D:\usr\Apache\conf\httpd.conf при помощи Блокнота или Notepad++. Это единственный файл, который нужно настроить. Прежде чем начать редактирование данного файла рекомендуется сделать его резервную копию (например, с названием: httpd.conf рез коп исх).
Приступим к настройке.
1. Первую опцию, которую мы установим, будет путь к Apache. Измените ее следующим образом: ServerRoot "/usr/Apache"
2. Далее установим число запросов, которое сервер может обрабатывать одновременно: ThreadsPerChild 15
3. Директиву BindAddress использовать не рекомендуется, поэтому оставьте ее закомментированной:
4. Раскомметируйте строку подключения модуля: LoadModule rewrite_module modules/mod_rewrite.so
5. В конец списка загружаемых модулей добавьте строку: LoadModule php4_module "/usr/php/sapi/php4apache.dll"
Эта строка подключает модуль PHP для правильной работы с Apache. Если его не подключить, то могут возникать проблемы при работе со скриптами.
6. После подключения модуля PHP добавьте две строчки:
#For the module mod_rewrite
RewriteEngine On
7. Далее идет раздел добавления модулей Apache - AddModule. Его необходимо поменять местами с разделом LoadModule. Т.е. раздел:
# Reconstruction of the complete module list from all available modules
# (static and shared ones) to achieve correct module execution order.
AddModule mod_setenvif.c
поместите перед словами:
#
# Dynamic Shared Object (DSO) Support
#
Перейдем ко второму разделу файла httpd.conf – конфигурация сервера по умолчанию.
8. В опции ServerAdmin следует указать адрес, на который следует направлять сообщения в случаи неправильной работы сервера:
ServerAdmin admin@localhost.ru
9. Опция ServerName задает имя сервера:
ServerName localhost
10. Опция DocumentRoot указывает каталог, в котором расположены web-страницы: DocumentRoot "/home"
Было:
Стало:
11. Опция <Directory> и </Directory> используется для применения опций к конкретному каталогу. Замените следующий блок:
<Directory "D:/usr/Apache/htdocs">
#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
Options Indexes FollowSymLinks MultiViews
#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
на блок:
<Directory "/">
#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
Options Indexes FollowSymLinks Includes MultiViews
#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
В этом блоке была настроена папку home. Давайте разберем значения опций.
● Директива Options определяет, какие особенности сервера являются доступными в данном каталоге:
- Indexes - если запрошенный URL соответствует папке, и в этой папке нет ничего соответствующего DirectoryIndex (например, index.html), то сервер выведет содержание данной папки;
- FollowSymLinks - разрешить переходы по символическим ссылкам (создаваемым командой ln);
- Includes - разрешить SSI (Server Side Includes);
- MultiViews - разрешить поддержку многих языков.
● Директива AllowOverride позволяет отменять, при помощи файлов .htaccess, ранее установленные директивы. Если данная директива установлена в None, то файл .htaccess игнорируется, если же в All, то все директивы .htaccess файла будут допускаться.
● Директивы Order allow,deny и Allow from all определяют, кто может получать, что бы то ни было с данного сервера.
12. Закомментируйте следующий модуль:
#<IfModule mod_userdir.c>
# UserDir "D:/usr/Apache/users/"
#</IfModule>
13. Далее для опции DirectoryIndex необходимо указать файлы, которые будут загружаться, когда происходит обращение к папке, а не к конкретному файлу:
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.php index.shtml index.shtm
</IfModule>
14. В блоке:
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
удалите строку: Satisfy All.
15. Далее следует отключить директиву UseCanonicalName On, т.е. поставить значение Off: UseCanonicalName Off
16. Если вы желаете, чтобы в сообщениях об ошибке высвечивался e-mail администратора, то замените в следующей опции On на Email:
ServerSignature EMail
17. Находим такую строку:
ScriptAlias /cgi-bin/ "D:/usr/Apache/cgi-bin/"
и заменяем ее другой строкой: ScriptAlias /cgi-bin/ "/home/cgi-bin/"
Этот каталог cgi-bin, в котором должны располагаться ваши CGI - скрипты. Он был создан в директории home.
18. Установите следующие опции для папки cgi-bin:
<Directory "/home/cgi-bin/">
AllowOverride All
Options ExecCGI
</Directory>
19. Ищем строку AddType application/x-tar .tgz, она расположена после настроек приоритета языков. Перед этой строкой необходимо добавить блок подключения php:
#AddType application/x-httpd-php phtml php3 php
#ScriptAlias /__php_dir__/ "/usr/php/"
#Action application/x-httpd-php "/__php_dir__/php.exe"
Первая строка указывает расширения файлов, которые должны обрабатываться PHP интерпретатором.
Во второй строке связывается настоящий путь к PHP и псевдоним, а в третьей указывается файл интерпретатора.
Эти строки пока следует закомментировать, иначе могут возникнуть ошибки. После настройки PHP, комментарии нужно будет снять.
20. Далее настраивают SSI — очень мощный и в то же время очень простой инструмент, способный помочь при создании и поддержке сайта. С помощью SSI-директив, их еще называют SSI-вставками, можно включать в страницу другие файлы, результаты работы программ, значения системных переменных и пр. Преимущества этой технологии особенно проявляются, когда нужно поддерживать достаточно большой по объему сайт, который имеет определенную структуру и повторяющиеся по всему сайту элементы. Для подключения SSI находят строки, снимают с них комментарии и изменяют, как показано ниже: AddHandler cgi-script .cgi
Затем надо раскомметировать и изменить:
AddType text/html .shtml .shtm
AddHandler server-parsed .shtml .shtm
Было:
Стало:
Этими директивами настраиваем SSI. Apache будет обрабатывать файлы с указанными расширениями процессором SSI. Это наиболее стандартный ход. Впрочем, вместо .shtml можно написать .html или .phtml - главное, чтобы расширение было идентично расширению, которые использует для обозначения использующих SSI файлов провайдер.
И, естественно, нужно включить сам "механизм" вложения, а для этого добавить к команде Options слово Includes. Тогда строка с командой Options может принять вид: Options Indexes FollowSymLinks Includes
Далее надо раскомметировать: AddHandler send-as-is asis
Эта функция разрешает Apache передачу файлов, не сопровождающихся http заголовками.
21. Для использования карт изображения и карт типов раскомметируйте следующие строки:
AddHandler imap-file map
AddHandler type-map var
22. В самый конец файла добавьте строку:
Include conf/vhosts.conf
Сохраните все изменения файла httpd.conf. Создайте резервную копию рабочего файла httpd.conf (например, с названием: httpd.conf рабочий). Это может оказаться полезным при восстановлении системы.
23. Создайте в папке D:\usr\Apache\conf файл vhosts.conf:
Допустим, что Вам придется работать с несколькими серверами. Разработчики Apache предусмотрели и этот вариант. При настройке Apache, изначально сделано так, чтобы с появлением нового сервера на Вашем компьютере его было легко подключить и настроить. Для этого при настройке Apache создают файл vhosts.conf и в конец файла httpd.conf добавляют строчку «Include conf/vhosts.conf», которая подключает этот файл.
Добавление нового сервера подробно описано в разделе 2.4.
24. Теперь перезапустите Apache: Пуск → Все программы → Apache HTTP Server → Control Apache Server → Restart.
Если все сделано верно, то откроется консольное окно:
В консольном окне сообщается, что Apache запущен, модуль PHP 4.3.9RC3 для правильной работы Apache с PHP установлен и работает.
Если же имеются ошибки, то в течение 30 секунд оно будет запущено и в нем будет написана ошибка, по которой Apache не может быть запущен, например:
Сообщается, что на линии 327 файла httpd.conf имеется ошибка. Ошибка часто возникает, если забыли скопировать файл php4ts.dll в каталог C:\Windows\System32.
Ошибка может возникнуть также, если забыли создать файл vhosts.conf и хотя бы один виртуальный хост.
2.4. Создание виртуальных хостов
Разработчики Apache предусмотрели возможность создания нескольких виртуальных хостов. При настройке Apache, изначально сделано так, чтобы с появлением нового сервера на Вашем компьютере его было легко подключить и настроить.
Для этого при настройке Apache был создан файл vhosts.conf:
и в конец файла httpd.conf добавлена строчка «Include conf/vhosts.conf», которая подключила этот файл:
Для того чтобы добавить новый сервер:
● необходимо создать папку, в директории home, в которой будут расположены серверные папки и файлы;
● сделать описание этого сервера в файле vhosts.conf;
● добавить название сервера и IP-адрес в файл C:\WINDOWS\system32\drivers\etc\hosts.
Т.к. в файле httpd.conf имя сервера мы установили localhost и папку для документов установили home, то это нас не устроит, потому что во всем должен быть порядок (сейчас поймете, о чем идет речь).
Если мы оставим все как есть, то html документы, принадлежащие серверу localhost, и новые виртуальные серверы окажутся в одной папке home. Это выглядит не очень красиво и удобно.
Поэтому мы перенастроим localhost, оформив его в виде виртуального сервера:
1. Создайте в папке home папку localhost, а в ней папку cgi-bin:
2. Добавьте следующее описание в файл vhosts.conf:
#----localhost
<VirtualHost 127.0.0.1>
DocumentRoot "/home/localhost/"
ServerName localhost
ScriptAlias /cgi-bin/ "/home/localhost/cgi-bin/"
ErrorLog /home/localhost/error.log
</VirtualHost>
Здесь папка cgi-bin (вместо cgi), html-файлы (которые должны располагаться в папке html) и файл error.log будут находиться в одной папке localhost:
Эти описания можно было сделать в файле httpd.conf, но если все виртуальные серверы описать в отдельном файле, то строение вашего http-сервера становится более наглядным.
3. Создайте второй виртуальный хост.
Допустим, что Ваш сайт расположен в Internet по адресу http://mysite.ru. Настроим Apache так, чтобы при наборе этого адреса загружался Ваш сайт, без выхода в Internet.
Для этого в папке home создайте папку mysite и в папке mysite папки cgi и html:
Опишите данный сервер в файле виртуальных хостов vhosts.conf:
<VirtualHost 127.0.0.2> - задается IP-адрес сервера
DocumentRoot "/home/mysite/html/" - папка расположения документов
ServerName www.mysite.ru - имя сервера
ScriptAlias /cgi-bin/ "/home/mysite/cgi/" - папка с cgi-скриптами
ErrorLog /home/mysite/error.log - расположение файла ошибок
CustomLog /home/mysite/access.log common - расположение файла доступа
</VirtualHost> - закрываем описание сервера
#----localhost
<VirtualHost 127.0.0.1>
DocumentRoot "/home/localhost/"
ServerName localhost
ScriptAlias /cgi-bin/ "/home/localhost/cgi-bin/"
ErrorLog /home/localhost/error.log
</VirtualHost>
#----mysite
<VirtualHost 127.0.0.2>
DocumentRoot "/home/mysite/html/"
ServerName www.mysite.ru
ScriptAlias /cgi-bin/ "/home/mysite/cgi/"
ErrorLog /home/mysite/error.log
CustomLog /home/mysite/access.log common
</VirtualHost>
В конец файла С:\WINDOWS\system32\drivers\etc\hosts:
добавьте IP-адрес и имя сервера:
127.0.0.2 mysite.ru
Перезапустите Apache.
5) Если Вам понадобиться обратить к сайту mysite.ru на удаленном сервере, то закомментируйте строку: #127.0.0.2 mysite.ru
в файле С:\WINDOWS\system32\drivers\etc\hosts.
Не забывайте про это, иначе при попытке обращения к удаленному серверу, Вы будете оказываться на своем локальном.
Что бы этого не делать, лучше виртуальные хосты называть так же, как и на настоящем web – сервере, но только без «суффикса» .ru или .com. В этом случае, используя правило «отсечения суффиксов» можно легко обращаться к «реальному» и «виртуальному» хостам, даже если имеется подключение к Интернет.
Вы можете использовать любой IP-адрес из диапазона 127.0.0.1 – 127.255.255.255.
На этом настройка сервера окончена. Перезапустите его. Все должно работать:
Если Вы получаете сообщение об ошибке и номер строки в файле http.conf, где она произошла, то исправьте ошибку и перезапустите сервер. Если ошибок больше нет, то появится показанное выше окно.
2.5. Настройка PHP
Для настройки PHP необходимо воспользоваться файлом php.ini. Если при установке PHP использован инсталлятор, то этот файл расположен в C:\WINDOWS:
Если Вы использовали архив, то скопируйте файл php.ini-distr в каталог C:\WINDOWS и переименуйте его в php.ini. Откройте этот файл при помощи Notepad++.
1. Диагностический вывод при наличии ошибок. Найдите директиву error_reporting и присвойте ей значение E_ALL & ~E_NOTICE & ~E_STRICT
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
Эта директива указывает PHP, насколько подробным должен быть диагностический вывод при наличии ошибок и предупреждений. Установлен минимальный вывод. Но если вы собираетесь создавать скрипты на PHP, то лучше оставить E_ALL, т.к. это позволит создавать более качественный код:
Установлен максимально подробный режим контроля ошибок. Это очень поможет при отладке скриптов. Для программ, которые на этот режим не рассчитаны, всегда его можно отключить.
2. Сохранение последнего сообщения об ошибке. Установите:
track_errors = On
Сделанные изменения позволят сохранять последнее сообщение об ошибке или замечании в переменной $php_errormsg.
3. Режим register_globals.
Внимание |
Начиная с PHP 4.2.0, значение директивы register_globals по умолчанию установлено в off (отключено, раньше было on - включено). Положение register_globals в off делает предопределенные переменные доступными в глобальной области видимости. Например, чтобы получить: ● DOCUMENT_ROOT, необходимо использовать $_SERVER['DOCUMENT_ROOT'] вместо $DOCUMENT_ROOT; ● $_GET['id'] из URL http://www.example.com/test.php?id=3 вместо $id; ● $_ENV['HOME'] вместо $HOME. |
При работе с полями формы, например, следует каждый раз писать:
$_REQUEST[' … ']
Это делать необходимо из-за того, что все данные из полей формы PHP помещает в глобальный массив $_REQUEST.
Рекомендуется писать скрипты с расчетом на выключенный register_globals=off.
Сценарий, корректно работающий при выключенном register_globals, будет работать и при включенном режиме. Но не наоборот.
Установите строку: register_globals = Off
4. Магические автокавычки. Чтобы код проекта работал в соответствии с описанием, необходимо бывает включить режим magic quotes. Если это не выполнено, к вводимым данным в базу данных MySQL потребуется применить функцию addslashes(), а к извлекаемым данным — функцию stripslashes().
Включить (магические кавычки) директивы magic_quotes_gpc и magic_quotes_runtime можно в файле php.ini. Они автоматически добавляют или убирают управляющие символы обратной косой черты, причем magic_quotes_gpc выполняет это для входных переменных методов GET, POST и cookie-наборов, a magic_quotes_runtime — для данных, входящих или исходящих из базы данных.
Примечание: директива конфигурации magic_quotes_gpc действует на значения Get, Post и Cookie. Если она включена, значение (It's "PHP!") автоматически становится (It\'s \"PHP!\"). Мнемонизирование необходимо для вставки в БД.
Если magic_quotes_sybase также включена, одинарные кавычки мнемонизируются одинарной кавычкой вместо backslash, если magic_quotes_gpc или magic_quotes_runtime включена.
Когда magic_quotes включены, все ' (одинарные кавычки), " (двойные кавычки), \ (обратные слэши) и NUL мнемонизируются обратными слэшами автоматически. Если magic_quotes_sybase также включена, одинарные кавычки мнемонизируются одинарной кавычкой вместо backslash.
5. Конфигурирование расширений. PHP поставляется в виде ядра и набора из нескольких десятков «внешних расширений» (DLL-библиотек), которые можно подключать и отключать. Этим процессом можно управлять при помощи следующих директив. Сначала указываем папку, в которой хранятся загружаемые модули: extension_dir = "/usr/php/extensions/"
ЭТА ДИРЕКТИВА – ОДНА ИЗ САМЫХ ВАЖНЫХ. БЕЗ НЕЕ РАСШИРЕНИЯ ПРОСТО НЕ ПОДКЛЮЧАЮТСЯ
Теперь подключим те расширения, которые понадобятся для работы. Для этого нужно найти место, где впервые упоминается директива extension. Надо добавить (или снять комментарии) непосредственно перед ней следующие команды:
extension=php_xsl.dll
extension=php_gd2.dll
extension=php_mysql.dll
Все остальные расширения пока не потребуются. Необходимые библиотеки лучше подключать по мере необходимости (некоторые из них требуют дополнительных настроек).
При компиляции и сборке PHP имеется возможность для каждой библиотеки расширения указать, как именно с ней поступать: собирать ли в виде отдельного DLL-модуля или же помешать код в ядро (php5td.dll). Поэтому многие популярные расширения уже включены в ядро PHP и не требуют дополнительной директивы extension. Такими модулями являются: dom, iconv, libxml, sqlite и т. д. Это определяется экспериментально. Если какой-то модуль не заработает, возможно, разработчики дистрибутива его вынесли из ядра в отдельный DLL-файл и его следует подключить. Или наоборот, его внесли в ядро, и директиву extension нужно убрать.
После подключения новых модулей обязательно нужно проверить, что сервер Apache запускается, а тестовая страница PHP – открывается. И уже после этого открывайте php.ini и добавляйте необходимые модули.
Появились сообщения:
Поэтому провели изменения:
При помощи модуля: extension=php_gd2.dll
осуществляется работа с графической библиотекой GDLib.
Найдите директиву include_path, задающую путь к библиотекам PHP.
;include_path = ".;c:\php\includes"
Снимите с нее знак комментария (точка с запятой) и укажите следующее значение: include_path = ".; \usr\php\PEAR "
PEAR – это набор разнообразных библиотек, написанных на PHP. Некоторые из этих библиотек входят в дистрибутив PHP:
6. Каталог для временных файлов. Найдите директиву:
; upload_tmp_dir = C:\PHP\uploadtemp ; temporary directory for HTTP uploaded files (will use system default if not specified)
Отредактируйте ее: upload_tmp_dir = /tmp
Если значение директивы оставить пустой, то будет использован системный каталог для хранения временных файлов.
7. Сохраните все изменения, сделанные в файле php.ini.
8. После этого скопируйте файл php4ts.dll из папки D:\usr\php:
в каталог C:\Windows\System32:
Этим мы скопировали библиотеки в каталог, который уже присутствует в путях поиска (C:\Windows\System32):
При установке новой версии PHP или после переустановки системы не забывайте повторно скопировать библиотеки.
9. Найдите директиву session. Ее значение должно быть: session.save_path =/tmp
Это путь к временной папке, в которой PHP будет хранить файлы сессий (session files). Поскольку этого каталога пока нет, рекомендуется его создать: D:\tmp, а в проводнике установить для него атрибут Скрытый (Hidden), чтобы случайно не удалить:
10. Откройте файл httpd.conf и раскомметируйте три строки, в которых настроен PHP в виде CGI программы:
AddType application/x-httpd-php phtml php3 php
ScriptAlias /__php_dir__/ "/usr/php/"
Action application/x-httpd-php "/__php_dir__/php.exe"
Директива AddType связывает расширение файла (PHP) с уникальным идентификатором MIME-типа. Далее указывается программа, которую нужно запустить, когда пользователь попытается открыть файл указанного типа. Так как в директиве Action допустимо использовать только URL (но не абсолютные пути), то предварительно назначаем абсолютному пути до PHP -каталога с URL/php/.
11. Сохраните изменения в файле httpd.conf. Перезапустите сервер. Перезагрузка должна выполниться, если не было допущено ошибок.
2.6. Настройка MySQL
Зайдите в папку D:\usr\mysql\bin\:
и запустите файл winmysqladmin.exe:
Должно появиться такое окно:
Введите имя (admin) пользователя и пароль (password):
Нажмите ОК. На панели в нижнем правом углу монитора появился значок светофора. Нажмите на светофор на панели правой клавишей мышки:
Выберете Show me. Появится окно:
Закройте окно, удалите файл my.ini в папке C:\WINDOWS:
Запустите winmysqladmin.exe:
В открывшемся WinMySQLadmin, введите имя (admin) и пароль (password):
Нажмите ОК. Нажмите правой клавишей мыши по значку светофора на панели монитора, выберите Show me, откроется окно:
В открывшемся окне перейдите на закладку my.ini Setup:
Нажмите кнопку «Create ShortCut on Start Menu», а затем нажмите ОК:
Можно перейти к настройке файла my.ini.
Файл my.ini состоит из нескольких секций, нас интересует только секция mysqid. Можно удалить все остальные секции из файла, все равно их игнорирует сервер.
Для изменения значений директив, расположенных в my.ini, снимают знак комментария с соответствующей строки. Многие из этих директив уже записаны в файле, и остается лишь их подкорректировать. Другие же команды там даже и не упоминаются — для них нужно вручную вписать нужные строки.
Итак, выполняют следующие действия:
1. Укажите IP-адрес, на котором MySQL будет ожидать подключения:
bind-address=127.0.0.1
Рекомендуется использовать только 127.0.0.1, чтобы сервер был доступен лишь с текущей машины (но не из локальной сети). Это позволит обезопасить себя от хакерских атак.
2. Укажите каталог, который MySQL будет использовать для хранения временных файлов (конечно, он должен существовать):
tmpdir=/tmp
3. Укажите путь к каталогу, хранящему файлы различных кодировок:
character-sets-dir=/usr/mysql/share/charsets
4. Укажите кодировку по умолчанию, используемую при создании всех таблиц:
default-character-set=cpl251
Этот параметр очень важен: неверное его значение (в частности, значение, используемое MySQL по умолчанию) приводит к ошибкам при поиске и неправильной сортировке результатов запросов.
5. Укажите основной каталог MySQL, а также папку, где сервер будет хранить свои данные:
basedir=/usr/localhost/mysql/
datadir=/usr/localhost/mysql/data/
6. Раскомметируйте и измените строку, которая устанавливает язык:
language=D:/usr/mysql/share/russian
Остальные параметры затрагивают работу с таблицами типа InnoDB, поддерживающими высокую надежность хранения данных и защищенных от аппаратных сбоев. Работа с такими таблицами не рассматривается, поэтому можно пропустить директивы, касающиеся InnoDB.
Вполне вероятно, что сервер запустится и без настройки всех многочисленных параметров — просто на "значениях по умолчанию". Однако в этом случае он будет работать неправильно.
Отредактированный my.ini:
#This File was made using the WinMySQLAdmin 1.4 Tool
#03.10.2005 18:21:07
#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions
[mysqld]
basedir=D:/usr/mysql
bind-address=127.0.0.1
datadir=D:/usr/mysql/data
language=D:/usr/mysql/share/russian
#slow query log#=
tmpdir=/tmp
#port=3306
#set-variable=key_buffer=16M
default-character-set=cp1251
character-sets-dir=/usr/mysql/share/charsets
[WinMySQLadmin]
Server=D:/usr/mysql/bin/mysqld-nt.exe
user=admin
password=password
В опциях user и password можно в любое время изменить/установить имя пользователя и пароль.
Нажмите «Save Modification», а затем последовательно нажимайте ОК:
Теперь кликните правой кнопкой в любом месте этого окна, и в выпадающем меню выберите команду Hide me, чтобы программа обратно свернулась в трей возле часов. На панели задач в правом нижнем углу монитора появится значок светофора.
При необходимости можно всегда изменить настройки файла my.ini. Для этого нажмите на светофор на панели правой клавишей мышки:
Выберите Show me. Появится знакомое окно:
Далее выполняйте уже описанные действия.
Перезапустите сервер Apache. Если все прошло удачно (сервер перезапустился без ошибок) в файле index.php для проверки работоспособности MySQL поместите следующий код:
<?php
$dblocation = "127.0.0.1";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
echo "<p>К сожалению, не доступен сервер MySQL</p>";
exit();
}
if (!@mysql_select_db($dbname,$dbcnx) )
{
echo "<p>К сожалению, не доступна база данных</p>";
exit();
}
$ver = mysql_query("SELECT VERSION()");
if(!$ver)
{
echo "<p>Ошибка в запросе</p>";
exit();
}
echo mysql_result($ver, 0);
?>
В случае успешной интеграции MySQL в связку Apache и PHP, обращение по адресу http://localhost/index.php выведет в окно браузера версию сервера MySQL:
База данных MySQL установлена успешно.
Для входа в систему MySQL в интерфейс командной строки наберите следующее:
> mysql -h hostname -u username -p
Команда mysql запускает монитор MySQL. Это клиент командной строки, который выполняет соединение с сервером MySQL.
Аргументами mysql являются:
1. Ключ -h используется для обозначения хоста, к которому осуществляется подключение — это компьютер с запущенным сервером MySQL. При вводе этой команды на той же машине, на которой находится сервер MySQL, применять этот ключ, равно как и параметр hostname, вовсе не обязательно. Если на другой, то параметр hostname следует заменить именем машины, на которой выполняется сервер MySQL.
2. Ключ -u используется для указания имени пользователя, под которым требуется осуществить соединение. Если не указать имя пользователя, по умолчанию будет использоваться имя, под которым вы входили в операционную систему.
Если сервер MySQL установлен на вашем собственном компьютере или сервере, необходимо войти в систему под именем root и создать базу данных. Если установка производилась впервые, то root будет единственным пользователем, который имеет доступ к системе.
Если MySQL используется на машине, которую администрирует другой человек, применяйте имя пользователя, которое вам назначил этот администратор.
3. Ключ - р сообщает серверу о том, что вы хотите соединиться с использованием пароля. Можете не использовать этот ключ, если для пользователя, под именем которого вы регистрируетесь, пароль не требуется.
Если вы входите в систему под именем root и не установили пароль, настоятельно рекомендуется установить пароль. Без пароля для пользователя root система не защищена.
Включать пароль в эту строку не обязательно. Сервер MySQL запросит его самостоятельно. Лучше даже его не включать. Если набрать пароль в командной строке, он появится на экране в виде текста и таким образом станет доступным остальным пользователям.
После ввода команды mysql и нажатия клавиши Enter должен быть получен приблизительно такой ответ (Enter password:_):
Если после ввода команды mysql и нажатия клавиши Enter Вы получаете сообщение о том, что программа не найдена или введена неправильная команда, нужно при работе в Windows найти в файле AUTOEXEC.BAT:
строку, в которой устанавливается переменная PATH. Значение переменной PATH надо установить так, чтобы она содержала каталог установки mysql. Если программа установлена в каталоге D:\usr\mysql\bin:
то переменная PATH должна выглядеть так:
SET PATH=D:\usr\mysql\bin; C:\WINDOWS; C:\WINDOWS\COMMAND
После того как переменная окружения установлена, чтобы сделанные изменения вошли в силу, надо перезагрузить компьютер.
В ответ на запрос пароля введите пароль пользователя root. Если MySQL-пользователь не имеет пароля, просто нажмите клавишу Enter. Должен наблюдаться приблизительно такой ответ:
Сейчас вы должны наблюдать приглашение MySQL на ввод команды: mysql>_, т.е. система готова к созданию базы данных.
Для выхода из MySQL используют предложение quit.
Осталось только создать базу данных.
2.6. Настройка Send mail
Для настройки откройте файл D:\usr\sbin\sendmail.ini:
В файле sendmail.ini следует сделать следующие исправления.
Переменной Mailserver присвойте имя вашего сервера или его IP-адрес: MAILSERVER=localhost
В переменную From напишите e-mail отправителя по умолчанию:
FROM=sk@localhost.ru
Измените время между отправлениями сообщений (время в секундах):
TIMEOUT=5
Переменной Regkey необходимо указать регистрационный ключ, который генерируется «KeyGen»:
В переменную Replyto укажите Ваш e-mail: REPLYTO=sk@localhost.ru
Файл sendmail.ini после внесенных изменений:
Сохраните изменения. Запустите программу sendmail.exe из консоли:
Для настройки Send mail служит пункт "Configure Sendmail" в меню "Пуск" Windows в папке, созданной установщиком. Вы можете установить нужные параметры с его помощью, или отредактировать d:\usr\sbin\stndmail.ini вручную, изменив его следующим образом:
[OPTIONS];
; Адрес почтового сервера. Укажите здесь "localhost"
; или "127.0.0.1" - адрес вашего компьютера;
; Впрочем, можно указать и SMTP-сервер вашего провайдера;
MAILSERVER=localhost;
; Здесь нужно указать адрес отправителя по умолчанию.;
FROM=ваш@мейл;
; Порт почтового сервера. Пусть остаётся "25";
PORT=25;
; Интервал между отправками сообщений в секундах.
; Измените со 180 на, например, 3;
TIMEOUT=3;
; Регистрационный ключ.;
REGKEY=none;
; Адрес по умолчанию для поля "reply-to".;
REPLYTO=ваш@мейл
Это всё, что требуется для правильной установки Sendmail.
Дальше cкачайте генератор ключей к Sendmail и сохраните его у себя на диске. К версии 2.01 подходят генераторы как от 1.14, так и от предыдущих версий.
Регистрационный ключ в Sendmail привязан к имени Вашего компьютера. Чтобы узнать его, Вам нужно щёлкнуть правой кнопкой мышки по иконке “Мой компьютер” на рабочем столе Windows и, выбрав в выпавшем меню пункт “Свойства” ("Properties"), дождаться появления такого окна.
Запомните имя, присвоенное Вашему компьютеру.
После этого запустите файл tno_s114.exe из архива. Введите имя для регистрации и имя вашего компьютера в соответствующие графы.
Сгенерированный ключ Вам нужно будет подставить в sendmail.ini Вместо REGKEY=none
У Вас получится что-то типа: REGKEY=Имя,Имя_компьютера,12345
Сохраните sendail.ini и попробуйте запустить sendmail.exe. У Вас должно получиться что-то типа
Sendmail for Windows V1.16 at Mon Nov 20 20:00:00 2003
Host name: Имя_компьютера [IP компьютера]
Licensed to Имя for Имя_компьютера [IP компьютера]
Использование этого кряка является противозаконным и решение запускать его или нет, целиком и полностью зависит от Вашей законопослушности. Если Вы хотите вознаградить труды разработчиков, заплатите за Sendmail официально на http://www.webwarper.net/ww/~GZ/www.indigostar.com/ordsend.htm?*
3. ТЕСТИРОВАНИЕ СЕРВЕРА
3.1. Проверка работоспособности виртуальных серверов
При помощи Блокнота создайте два файла с именем index.html. Один сохраните в папке home\localhost:
другой в home\mysite\html:
Содержание первого файла index.html:
<html>
<head><title>Тест сервера</title></head>
<body><h2>Сервер localhost работоспособен!!!</h2></body>
</html>
Содержание второго файла index.html:
<html>
<head><title>Тест сервера</title></head>
<body><h2>Сервер mysite.ru работоспособен!!!</h2></body>
</html>
Набирайте http://localhost в Вашем браузере, должен будет загрузиться файл index.html:
Тоже самое повторите для сервера mysite.ru:
Можете поэкспериментировать с расширениями файла index- .htm, .php. Мы это настраивали.
3.2. Тест SSI (Server Side Includes)
Для того чтобы включить поддержку SSI (Server Side Includes – сборка на стороне сервера) в Apache необходимо в файл httpd.conf добавить следующие строки:
AddType text/html .shtml
AddHandler server-parsed .shtml
Это наиболее стандартный ход. Впрочем, вместо расширения .shtml можно написать .html или .phtml. Главное, чтобы выбранное расширение было идентично расширению, которое использует для обозначения SSI файлов провайдер.
И, естественно, нужно включить сам "механизм" вложения, а для этого добавить к команде Options слово Includes. Тогда строка с командой Options может принять вид: Options Indexes FollowSymLinks Includes.
В настройках Apache было указано, что поддержка SSI используется в файлах с расширениями .shtm и .shtml. Данная технология позволяет создавать одну страницу из нескольких. Это удобно, когда у Вас имеются повторяющиеся элементы на нескольких страницах. Технология SSI позволяет отказаться от использования фреймов, которые часто ругают из-за некорректной работы.
Измените файл index.html следующим образом:
<html>
<head><title>Тест сервера</title></head>
<body>
<h2>Проверка поддержки SSI</h2>
<!--#include virtual="test_ssi.shtml" -->
</body>
</html>
Сохраните данный файл с расширением .shtml.
Затем создайте в директории localhost файл test_ssi.shtml, имеющий следующее содержание:
<H3><I>Данный текст был добавлен в файл index.shtml по средствам технологии SSI</I></H3>
Запустите браузер и наберите http://localhost:
Скопируйте два файла (полученные выше), удалив при этом файл index.html, в папку mysite\html и проверьте работоспособность для адреса http://mysite.ru:
Нет необходимости проделывать одно и тоже для двух серверов, т.к. понятно если тест работает на одном сервере, то это будет работать и на другом (в нашем случае). Это происходит, потому что параметры обоих серверов одинаковые (мы их описали в файле httpd.conf), разное у них только расположение файлов в папках. Здесь работает принцип: все параметры не указанные в настройках виртуального сервера, должны наследоваться от главного сервера.
С учетом сказанного дальнейшее тестирование проведем для адреса http://localhost, если потребуется произвести тест на обоих серверах, то об этом будет сказано дополнительно.
3.3. Тест PHP
Создайте файл test_php.php в папке localhost. Содержание файла test_php.php:
<?php
echo “<h4>Привет, $n! Тест PHP выполнен!</h4>”;
phpinfo();
?>
Откройте браузер и наберите следующий адрес: http://localhost/test_php.php?n=Виктор Сергеевич .
Результат работы скрипта:
Мы передали скрипту значение переменной, при помощи метода GET. А затем выполнили функцию phpinfo(), которая отображает состояние PHP. Можно просмотреть настройки PHP и узнать, какие модули подключены. Функция phpinfo() отображает детальную информацию об интерпретаторе:
♦ Версию РНР.
♦ Версию операционной системы.
♦ Параметры, заданные при сборке РНР.
♦ Дату сборки интерпретатора.
♦ Сведения о дополнительных модулях.
♦ Переменные окружения — основные и локальные настройки интерпретатора.
♦ Заголовки HTTP.
♦ Лицензию РНР.
Как правило, данная функция используется один-единственный раз: при установке интерпретатора для проверки его работоспособности.
К информационным функциям относятся три функции: phpinfo(); phpversion(); getlastmod().
Функция phpversion() просто отображает версию интерпретатора. Например: PHP Version 4.3.2
Функция getlastmod() очень полезна — отображает время последнего изменения сценария. Использовать ее можно примерно так:
echo date ("d.m.Y", getlastmodO);
3.4. Тест MySQL
Для удобной работы с MySQL создан специальный набор скриптов под названием PhpMyAdmin (имеется русская версия).
Cоздайте файл test_mysql.php:
<?
if (!mysql_connect("localhost","root",""))
{
echo "Не удалось соединиться с сервером\n";
echo mysql_error();
exit;
}
echo "MySQL сервер работает!"
?>
Откройте браузер и наберите следующий адрес: http://localhost/test_mysql.php:
Можно провести более детальное тестирование работы MySQL. Создайте PHP-сценарий с именем mysql.php в каталоге D:\home\localhost\:
<?php ## Скрипт для проверки работоспособности MySQL.
echo "<pre>";
//Открываем соединение с СУБД MySQL:
//пользователь: root, пароль: пустой.
@mysql_connect("localhost", "root", "")
or die(mysql_error() ) ;
//Будем работать с базой данных mysql которая существует по
// умолчанию и хранит конфигурацию сервера MySQL.
@mysql_select_db("mysql")
or die(mysql_error());
// Выбираем все записи из таблицы users БД mysql.
$r = @mysql_query("SELECT * FROM user")
or die(mysql_error());
//В цикле печатаем каждую найденную строку,
while ($row = mysql_fetch_assoc($r))
{
print_r ($row) ;
}
?>
Запустите серверы (Apache и MySQL) и наберите в браузере адрес: http://localhost/mysql.php.
Обратите внимание, что СУБД MySQL запущена на текущей машине, а значит, для соединения с ней нужно указывать адрес сервера localhost. Мы сконфигурировали СУБД так, чтобы она принимала запросы только с текущей машины. Пользователь root существует сразу же после инсталляции и получает неограниченный доступ ко всем таблицам и базам данных. При установке MySQL пользователю root не назначается пароль, так что в качестве последнего параметра функции mysql_connect() передается пустая строка.
Для работы с MySQL в РНР 5 необходимо подключение библиотеки расширения php_mysql.dll. В РНР 4 функции для работы с этой СУБД встроены в ядро.
Если все сконфигурировано правильно, вы получите несколько десятков строк вывода в браузере без сообщений об ошибках. Этот скрипт распечатывает всю информацию о пользователях MySQL, которая хранится в таблице user базы данных с именем mysql:
В пределах СУБД обычно существует несколько именованных баз данных, каждой из которых можно назначить отдельного пользователя с соответствующими правами доступа.
В листинге config.php представлен код файла, содержащий параметры соединения с базой данных, скрипт установления соединения и функцию puterror, предназначенную для вывода сообщений об ошибках соединения в браузер. Этот код рекомендуется включать в начало каждого файла, в котором происходит обращение к базе данных. С его помощью осуществляется соединение с базой данных (include "config.php"):
<?
//листингconfig.php - код файла, содержащего параметры соединения с базой данных
//предназначен для вывода сообщений об ошибках соединения в браузер
$dblocation = "localhost"; //Имя сервера
$dbname = "auth"; //Имя базы данных
$dbuser = "root"; //Имя пользователя базы данных
$dbpasswd = ""; //Пароль
//Осуществляем соединение с сервером базы данных
//Подавляем вывод ошибок символом @ перед вызовом функции
$dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
echo("<p> В настоящее время сервер базы данных не доступен,поэтому корректное отображение страницы невозможною</p>");
exit();
}
//Осуществляем выбор базы данных
//Подавляем вывод ошибок символом @ перед вызовом функции
if(!@mysql_select_db($dbname,$dbcnx))
{
echo("<p> В настоящее время база данных не доступена,поэтому корректное отображение страницы невозможною</p>");
exit();
}
//Небольшая вспомогательная функция,которая выводит сообщение
//об ошибке в случае ошибки запроса к базе данных
function puterror($message)
{
echo("<p>$message</p>");
exit();
}
?>
Этот файл содержит конфигурационную информацию о соединении с базой данных. Первая переменная — $dblocation — включает имя сервера MySQL. В листинге config.php значение этой переменной выставлено для локального хоста. Если вы собираетесь расположить проект на другом хостинге, переменной $dblocation следует присвоить адрес сервера базы данных этого хостинга.
Переменная $dbname содержит имя базы данных, $dbuser — имя пользователя, $dbpasswd — пароль. Если вы будете размещать проект на хостинге, необходимо изменить все эти переменные в соответствии с информацией, предоставляемой хост-провайдером.
ЗАКЛЮЧЕНИЕ или С ЧЕГО НАЧАТЬ?
На этом установка и предварительная настройка сервера закончена. Теперь можно создавать и тестировать сайты любого уровня сложности с поддержкой современных Интернет - технологий на локальном компьютере. Для начала рекомендуется приступать к изучению PHP и MySQL. На официальном сайте PHP (http://www.php/net/manual/ru/tutorial.php) полностью переведен на русский язык раздел документации «Вступление» и «Краткое руководство»:
Следует обязательно прочитать его, чтобы получить начальные сведения о языке и приемах программирования. Далее на сайте http://php5/ru/study следует познакомиться с книгой «Самоучитель PHP». Курс находится в процессе написания. Рекомендуется изучить материал Вадима Ткаченко «Вступление в PHP и MySQL», который находится по адресу http://phpclub.ru/detail/article/phpintro:
Он издавался отдельной книгой, а сейчас - исправленный и дополненный - размещается на сайте:
Ресурс «PHP в деталях» - неисчерпаемый источник информации по PHP, находится по адресу http://phpclub.ru/detail/. Единственное замечание - обращайте внимание на дату написания статьи. Не стоит доверять статьям, написанным до 2003 года.
Если вы еще не прочли сайт http://phpfaq.ru/- обязательно сделайте это. Здесь перечислены проблемы, с которыми рано или поздно столкнется каждый, кто пишет на PHP.
Сайт php.if.ua посвящен программированию на PHP. На нем Вы найдете документацию и примеры скриптов:
Много документации по PHP на русском языке можно найти на сайте php.spb.ru:
Рекомендуется статья «Установка и настройка Apache+PHР» , расположенная по адресу http://php5/ru/study/instal. И, конечно же - разделы официальной документации, посвященные установке соответствующих программ.
При изучении любого дела обязательно появятся вопросы. Вопросы удобно задавать на форумах. Есть несколько форумов, посвященных PHP. Это самый посещаемый и известный форум: http://phpclub.ru/talk/forumdisplay.php?s=&forumid=12. К сожалению, очень часто на вопрос новичка отвечает еще более зеленый новичок, давая совершенно неправильный ответ. Однако профессионалов там тоже предостаточно, готовых объяснить ошибки и первому и второму. Форум по PHPhttp://forums.webscript.ru/forumdisplay.php?s=&forumid=16 отличается очень суровым цензом к качеству ответов.
Задавая вопрос на форуме, помните: что, скорее всего, с ним уже сталкивались другие, и подробные ответы на них есть и их можно найти в поиске. Если же, все-таки, вопрос приходится задавать - то описывайте его как можно подробнее (только своими словами, а не кодом): что делали, что хотели получить, и что получилось в результате, а так же точно копируйте сообщения об ошибках.
Можно рекомендовать следующие книги и журналы:
1. Скляр Д., Трахтенберг А. PHP. Сборник рецептов. – Пер. с англ. – СПб: Символ – Плюс, 2005. – 627 с., ил. Это самая лучшая книги по PHP: собрание конкретных ответов на конкретные вопросы. Книга разбита на 21 главу, каждая глава состоит из разделов вида: постановка проблемы - решение - объяснение. Немного устарела, в плане того, в чем PHP сильно ушел вперед - XML, обработка ошибок. Однако в базовых основах языка остается непревзойдённой. Может использоваться как в виде справочника для решения конкретных проблем, так и в виде учебника. Поддерживается веб-страница для этой книги http://www.oreilly.com/catalog/phpckbk, где приводятся ошибки, примеры и другая дополнительная информация. Можно сделать замечание или задать вопрос, послав электронное письмо по адресу: bookquestions@oreilly.com. За дополнительной информацией по этой книге, о конференциях, Resource Centers и O'Reilly Network обращайтесь к веб-сайту O'Reilly: http://www.oreilly.com.
2. Котеров Д., Костарев А. PHP5 в подлиннике. – СПб: Символ – Плюс, 2005. – 1120 с., ил. Это второе издание знаменитой книги Д. Котерова. Не имеет ничего общего с первым. Это не переработанная, это совершенно новая книга. Она подходит как начинающему, так и профессионалу - в ней изложены все аспекты программирования на PHP. Все исходные коды приведенных в книге листингов доступны для загрузки с сайта книги в виде одного большого архива. Для обеспечения резервирования сайт имеет несколько разных имен (если какое-то из них не будет работать, попробуйте другое): http://book.PHP5.ru; http://PHP5.dWab.nl ; http://PHP5.nevod.ru . На сайте имеется ссылка на форум, в котором можно обсудить тот или иной аспект книги, сообщить о замеченной неточности или просто задать вопрос по РНР.
3. Можно почитать очень старый учебник Д. Гилмора «PHP - учебный курс»: http://phpfaq.ru/txt/gilmor.
4. Очень полезен русскоязычный онлайн журнал по PHP - PHPinside.RU.
5. Сборник полезных сведений от автора РНР можно найти по адресу: www.lerdorf.com/tips.pdf (на английском языке).
6. Официальный перевод документации по MySQL: http://dev.mysql.com/doc/mysql/ru/index.html.
7. Книгу М. Грабера «Введение в SQL» можно найти по адресу: http://www.mysql.ru/docs/gruber/.
8. Дюбуа П. MySQL. Сборник рецептов. – Пер. с англ. - СПб: Символ – Плюс, 2004. – 1056 с., ил. Книга от автора «Библии MySQL» Поля Дюбуа, необходима каждому разработчику, использующему MySQL. Это собрание ответов на любые практические вопросы. На веб-сайте книги http://www.kitebird.com/mysql-cookbook/ можно найти исходные тексты и тестовые данные рассмотренных примеров.
9. Дюбуа. П. MySQL. 2-е издание. Второе издание «Библии MySQL», на которой училось не одно поколение. Объясняет секреты MySQL очень простым и понятным языком.
ЛИТЕРАТУРА
1. Скляр Д., Трахтенберг А. PHP. Сборник рецептов. – Пер. с англ. – СПб: Символ – Плюс, 2005. – 627 с., ил.
2. Котеров Д., Костарев А. PHP5 в подлиннике. – СПб: Символ – Плюс, 2005. – 1120 с., ил.
3. Дюбуа П. MySQL. Сборник рецептов. – Пер. с англ. - СПб: Символ – Плюс, 2004. – 1056 с., ил.