Установка Apache+php+MySQL+phpMyAdmin под Windows проверено на 2003

http://uploads.ru/i/x/A/T/xAT8C.png

Наверняка многие мечтали о своем веб-проекте, но не знали как это сделать на домашнем компьютере. Я постараюсь помочь вам в этом. Это не так и сложно на самом деле, иметь свой сайт работающий на домашнем сервере. Далее будет по шаговое описание как это сделать.

Этапы инсталляции

1. Получение дистрибутивов на ваш компьютер

Дистрибутивы можно скачать с официальных сайтов:

Apache: http://httpd.apache.org/ (последняя рабочая на момент написания статьи была Apache HTTP Server 2.2.22)

PHP: http://windows.php.net/download/ (последняя рабочая на момент написания статьи была PHP 5.3.10)
- Рекомендую выбрать дистрибутив php не в виде инсталлятора, а в виде архива ZIP (15М).

MySQL: http://www.mysql.com/downloads/mysql/ (последняя рабочая на момент написания статьи была MySQL Community Server 5.5.22)
- Выберите под свою разрядность системы x86 (32 бит) или x64 (64 бит), я рекомендую скачать Windows (x86, 32-bit), MSI Installer
- Так же можете скачать базы с русско-язычного ресурса, если с скаченное с английского каким либо образом не работает корректно http://www.mysql.ru/download/ мне это помогло - mysql-5.0.67-win32.zip версия для Windows 95/98/NT/2000/XP/2003 (45.3Mb)

phpMyAdmin: http://php-myadmin.ru/download/ (последняя рабочая на момент написания статьи была phpMyAdmin-3.4.10.2-all-languages.zip)


2. Установка Apache

Разворачиваем Apache из архива zip в любую удобную Вам папку. Например, в C:\www (это расположение и будем предполагать в дальнейшем).

Теперь нам придётся подправить файл C:\www\conf\httpd.conf. Это файл, хранящий настройки Апача. Открываем его через обычный текстовик. Основной разговор о нём у нас впереди, а пока подправим его, чтобы Apache запустился.

Находим строку через поиск по слову ServerRoot и правим так, чтобы строка имела такой вид:
ServerRoot "c:/www/"

Находим строку через поиск по слову ServerName и правим так, чтобы строка имела такой вид:
ServerName localhost (или ваше предпологаемое доменное имя, например: site.ru)

Находим строку через поиск по слову DocumentRoot и правим так, чтобы строка имела такой вид:
DocumentRoot "c:/www/htdocs"

Затем инсталлируем Apache как службу. Для этого в командной строке выполняем следующую команду:
C:\www\bin\httpd.exe -k install

При запуске этой команды под Vista/7 мы рискуем прочитать ругательство вроде этого:
<OS 5>Access denied: Failed to open the WinNT service manager
Так замысловато Вам сообщается, что Вы запускаете эту команду без прав администратора. Вам придётся запустить её от имени администратора. Например, сохранив её в виде bat-файла и щелкнув на этом файле правой кнопкой мыши — и выбрав в контекстном меню Запуск от имени администратора (Run as admininstrator).


Если служба установлена, пробуем её запустить:
C:\www\bin\httpd.exe -k start

Если Вам повезло, то эта команда ничего не выведет. Но слишком часто приходится читать нечто невразумительное:

httpd.exe: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
(OS 10048)+сvўэю ЁрчЁх°рхЄё юфэю шёяюы№чютрэшх рфЁхёр ёюъхЄр (яЁюЄюъюы/ёхЄхтющрфЁхё/яюЁЄ). :
make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down
Unable to open logs
Note the errors or messages above, and press the <ESC> key to exit. 30...


Переведу для Вас фразу +сvўэю ЁрчЁх°рхЄё юфэю шёяюы№чютрэшх рфЁхёр ёюъхЄр (яЁюЄюъюы/ёхЄхтющрфЁхё/яюЁЄ).
По-русски она звучит так:
Обычно разрешается одно использование адреса сокета (протокол/сетевой адрес/порт).

Суть ошибки Вы уже уловили: какая-то программа или служба уже закрепила за собой хост и порт, под которым Апач хотел работать. Чаще всего это IIS или Skype.

Выхода у Вас два: или раскулачивать программы/службы, коотрые «сидят» на 80-м порту, или уходить на другой порт.

Если Вы собираетесь отбирать 80-й порт у другой программы, то сначала нужно выяснить, у какой именно. В этом Вам поможет список, который построит для Вас команда Windows
netstat -anb
Ну а дальше настраиваете выявленную программу или службу в соответствии с её особенностями.

Чтоб уйти на другой порт (например, на 8080), нужно скорректировать две строки файла httpd.conf:

Строка должна иметь вид:
Listen 8080

Строка должна иметь вид:
ServerName localhost:8080

И теперь снова попытайте счастья:
C:\www\bin\httpd.exe -k start

Если команда запустилась, ничего не выведя — Апач наконец установился.

Проверка установки службы Apache: При вызове броузером адреса http://localhost/ (Или http://localhost:8080/, если Вы увели Apache на порт 8080) Вы увидите надпись «Forbidden». Это ошибка http, но она свидетельствует, что Вы на правильном пути: Апач принял и обработал http-запрос.

Если Вы не видите надпись «Forbidden»
Проверьте — не заблокирован ли Apache Вашим брандмауэром
Проверьте — установилась ли служба Apache2.2. Выяснить это можно, зайдя в Панель Управления Windows — в разделе Администрирование/Службы (Administrative Tools/Services).
В Windows Vista зачастую Apache запускается и останавливается только через консоль Службы
Может помочь установка в начало файла httpd.conf директивы Win32DisableAcceptEx


Ну и последний штрих: поставьте в меню Windows Автозагрузка (StartUp) ярлык, указывающий на
C:\www\bin\ApacheMonitor.exe
Чтобы проще было перезапускать Апач

3. Распаковка архива php в c:\php

Именно на это расположение ориентированы строки в конфигурационных файлах php. Если Вы первый раз устанавливаете Apache/php/MySQL — Вам лучше выбрать именно это расположение, так как в противном случае Вам придётся менять некоторое количество параметров в конфигурационных файлах.

4. Внесение исправлений в файл httpd.conf

Их смысл: мы сообщаем Апачу, что у него есть модуль, который должен срабатывать на расширение php

В распакованном архиве c:\php есть файл install.txt. В нём написано на англ.языке, какие изменения нужно внести в файл httpd.conf. А именно:

В файле httpd.conf добавить строку:
LoadModule php5_module "c:/php/php5apache2_2.dll"

Таким образом, мы указали, что при загрузке apache запускает интерпретатор php в качестве своего модуля. Теперь укажем Апачу, где он должен искать файл php.ini (параметры php)

В файле install.txt есть строка PHPIniDir "C:/php". Её нужно поставить в файл httpd.conf (если ее там нет, пользуйтесь поиском по строкам).

Теперь нужно указать, что этот модуль должен обрабатывать файлы с расширением php

В файле install.txt есть строка:
AddType application/x-httpd-php .php
Её вставляем в окончание блока AddType файла httpd.conf

5. Создаём и описываем в httpd.conf папку для хранения WEB-папок.

Один WEB-сервер может управлять работой нескольких сайтов (или веб-приложений). Различать их Apache будет по доменному имени — и каждому из этих имён назначит в соответствие WEB-папку (в которой будут хранится файлы сайта).

Как мы зададим эти соответствия — я расскажу в следующем параграфе. А пока создадим папку, в которой будут храниться WEB-папки.

Итак, мы создали папку c:\www (конечно, могли и иначе назвать). Теперь в файл httpd.conf добавляем описание этой папки: мы разрешим доступ к этой папке по протоколу http (по умолчанию этого доступа нет). После описания общих умолчаний добавим следующий блок (если его там нет или правим его):

<Directory "C:/www">
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>


если ваш сайт лежит по дефолту в папке C:\www\htdocs то оставляем блок в таком виде:

<Directory />
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>


6. Включаем механизм виртуальных хостов

Как я уже сказал, мы можем задать несколько WEB-папок для различный доменных имён на одном компьютере с помощью т.н. виртуальных хостов. В первую очередь нужно настроить Windows на «узнавание» этих доменных имён. То есть задать соответствия имя → IP-адрес

Для этого обратимся к файлу C:\Windows\System32\drivers\etc\hosts

В нём после пояснения мы найдём список соответствий имён и IP-адресов. Добавим пока одно новое имя — tm. Отредактированный файл будет иметь вид:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
127.0.0.1       tm


Теперь обратимся к папке extra, которая находится в той же папке, что и файл httpd.conf. В ней мы найдём файл httpd-vhosts.conf

Откроем его и внесём наш новый виртуальный хост:

# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup Virtual Host containers for them.
#... (для краткости пропускаем дальшейшие комментарии)

# Use name-based virtual hosting.
#
NameVirtualHost *:80 #Если нужно - измените номер порта на указанный в директиве Listen

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

#Допустим вы хотите на своем хосте сделать сразу два сайта, тогда создаем сразу два блока по моему примеру, данные потом можете изменить на свои. Первый блок это данные моего сайта в апаче.
#Не за бываем создать папку logs для сохранения в нее логов работы и ошибок при работе сайта. Для каждого сайта создаем свою папку logs в зависимсоти где расположены сами файлы вашего сайта. Внимательно смотрим путь как у меня.

<VirtualHost *:80>
    ServerAdmin epicnet@mail.ru
    DocumentRoot "C:/www/htdocs/"
    ServerName epicnet.ru
    ServerAlias epicnet.ru
    ErrorLog "C:/www/htdocs/logs/epic1-error.log"
    CustomLog "C:/www/htdocs/logs/epic1-access.log" common
</VirtualHost>

#Во втором блоке сайт лежит уже в папке tm так что не забудьте ее создать отдельно и внимательно смотрите путь..

<VirtualHost *:80>
    ServerAdmin epicnet@mail.ru
    DocumentRoot "C:/www/htdocs/tm"
    ServerName tm
    ServerAlias tm
    ErrorLog "C:/www/htdocs/tm/logs/tm1-error.log"
    CustomLog "C:/www/htdocs/wp/logs/tm1-access.log" common
</VirtualHost>


Обратите внимание: слэш прямой: c:/www/htdocs/tm

Теперь ищем в httpd.conf строку
#Include conf/extra/httpd-vhosts.conf

и убираем знак комментария (#) из начала строки и сохраняем.

Ну и теперь, чтоб не «обманывать» Apache, создаём папку C:/www/htdocs/tm там будет расположен один из сайтов

7. Правим директиву DirectoryIndex

Эта директива расположена примерно в файле httpd.conf. Включаем в список поиска файла по умолчанию в WEB-папке файл index.php:

DirectoryIndex index.html index.htm index.php

8. Создание конфигурационного файла php

Переименовываем c:\php\php.ini-production в php.ini.

9. Перезапускаем apache

В случае удачной установки Апача в правом нижнем углу есть пиктограмма вызова монитора Apache.

http://uploads.ru/i/d/r/K/drKxf.gif

Двойным кликом запускаем его и нажимаем Restart. После чего закрываем окно монитора Апача

В некоторых последних версиях Windows так перезапустить Apache не получится. Причём можно даже не заметить, что Apache не перезапустился: внешне всё будет выглядеть как при успешном запуске. В этом случае придётся перезапускать службу Apache через панель управления Windows.


10. Проверка

Создаём файл C:\www\htdocs\tm\index.php следующего содержания:

<?php phpinfo(); ?>

и запускаем в броузере адрес http://tm/

В случае успеха Вы увидите таблицу параметров php

11. Настройка php

Редактирование файла php.ini цель: подключить нужные нам библиотеки функций.

Мы должны поправить директиву extension_dir: она должны иметь вид extension_dir = "c:/php/ext" (без точки с запятой в начале!)

Раздел расширений (Dynamic Extensions) начинается примерно на 946-й строке

В нём мы увидим список расширений. Знак ; в начале — это комментарий. Т.е. если мы стираем ; в начале строки — мы тем самым включаем соответсвующее расширение. А если ставим ; в начале строки — отключаем соответствующее расширение.

Мы пока включим четыре расширения в php.ini, которые нам понадобятся в работе:

extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll

Обратите внимание: есть две библиотеки функций для работы с MySQL — старая и новая. Документация php настоятельно рекомендует использовать новую — php_mysqli.dll. В то же время большинство сайтов и приложений «по старой памяти» используют старую. Поэтому включим обе, благо они не конфликтуют.


Перезапускаем apache, установка php завершена.

12. Установка и настройка MySQL

Установка MySQL предельно проста — вплоть до простого копирования.

Лично я ставил этот вариант mysql-5.0.67-win32.zip версия для Windows 95/98/NT/2000/XP/2003, в архиве установщик Setup.exe.

Далее будут показаны те диалоговые окна, в которых необходимо делать какой-либо выбор.

http://uploads.ru/i/Q/y/L/QyLjB.png

Нажмите в данном окне проще всего на типичную установку компонентов "Typical".

http://uploads.ru/i/0/u/y/0uygd.png

Теперь приступим к настройке MySQL сервера.

http://uploads.ru/i/C/0/a/C0aRF.png

Выбираем детализированную настройку - "Detailed Configuration".

http://uploads.ru/i/A/I/D/AIDcn.png

Отмечаем пункт "Server Machine". Так будет лучше для новичков.

http://uploads.ru/i/x/q/7/xq7Fn.png

Выбрав пункт "Multifunctional Database", вы сможете работать как с таблицами типа InnoDB (с возможностью использования транзакций), так и с высокоскоростной MyISAM (как правило для веб-разработок используется именно этот тип таблиц).

http://uploads.ru/i/U/k/j/Ukj43.png

Выбор диска и директории для хранения таблиц типа InnoDB.

http://uploads.ru/i/O/1/9/O19aI.png

В данном диалоговом окне выбирается максимально возможное количество подключений к серверу MySQL. При выборе "Decision Support (DSS)/OLAP", максимальное количество подключений будет ограничено двадцатью, чего более чем достаточно при установке сервера на домашнем компьютере и отсутствии большого количества одновременных подключений.

http://uploads.ru/i/t/9/n/t9nNB.png

Отметив "Enable TCP/IP Networking" мы включаем поддержку TCP/IP соединений и выбираем порт, через который они будут осуществляться. Стандартным для сервера MySQL является порт 3306. Отметив "Enable Strict Mode", мы задаем режим строгого соответствия стандарту SQL (данную опцию рекомендуется оставлять включенной).

http://uploads.ru/i/v/M/G/vMGwz.png

Обратите внимание на выставление настроек данного окна. Отметив "Manual Selected Default Character Set / Collation" и выбрав из ниспадающего меню "cp1251" определяем, что изначально для таблиц будет использоваться кодировка Cyrillic Windows (cp1251), что означает корректную работу с русским языком в данной кодировке.

http://uploads.ru/i/V/I/R/VIR1u.png

Если отметить "Install As Windows Service", сервер будет запускаться в виде сервиса, что является рекомендуемым способом запуска. Ниже, в ниспадающем списке, задается имя сервиса. Далее, уберите галочку рядом с "Launch the MySQL Server automatically" - мы будем запускать сервер вручную. Также поставьте галочку рядом с "Include Bin Directory in Windows PATH" - это позволит установить видимость директории "bin", для командной строки.

http://uploads.ru/i/F/u/t/Futio.png

Установите пароль пользователя "root". Советую сделать это. Поставьте хотя бы какой-нибудь простенький пароль, только не оставляйте поле пустым, это убережёт вас от возможных неприятностей в дальнейшем.

http://uploads.ru/i/1/C/F/1CFyb.png

В данном окне обратите внимание на строку "Write configuration file", которая указывает на месторасположение конфигурационного файла MySQL - "my.ini", далее, его необходимо будет немного отредактировать.

Откройте для редактирования файл "my.ini".

В раздел [client], после строки:
port=3306
Добавьте строку определяющую каталог содержащий файлы описания кодировок:

character-sets-dir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/share/charsets"

В раздел [mysqld], после строки:
port=3306
Добавьте следующие две строки, первая из которых вам уже известна, вторая – устанавливает кодировку в которой данные передаются MySQL:

character-sets-dir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/share/charsets"
init-connect="SET NAMES cp1251"

Далее, найдите строку:
default-storage-engine=INNODB
Замените изначально устанавливаемый тип таблиц на MYISAM:
default-storage-engine=MYISAM

Сохраните изменения и закройте файл "my.ini".
Установка и настройка сервера MySQL – завершена.

13. Установка и настройка веб-сервера через phpMyAdmin

Вместо тестирования нашего хозяйства, предлагаю установить скрипт phpMyAdmin для управления базой данных MySQL. Если он будет работать, значит мы все сделали правильно и можем собой гордиться. Ну а если работать не будет, значит во всем виновато трудное детство и недостаток витаминов, на чем и порешим. :)

Остановите сервис Apache выполнив в командной строке "C:\www\bin\httpd.exe -k stop". Распакуйте архив в каталог "C:\www\htdocs\www". Появившуюся папку, для большего удобства, желательно переименовать в "phpmyadmin". Далее, в каталоге "C:\www\htdocs\www\phpmyadmin" создайте файл "config.inc.php" следующего содержания (не забудьте вписать пароль пользователя "root", который вы создавали при установке MySQL):

<?php
   $i = 0;
   $i++;
   $cfg['Servers'][$i]['host'] = 'localhost';
   $cfg['Servers'][$i]['extension'] = 'mysqli';
   $cfg['Servers'][$i]['connect_type'] = 'tcp';
   $cfg['Servers'][$i]['compress'] = false;
   $cfg['Servers'][$i]['auth_type'] = 'config';
   $cfg['Servers'][$i]['user'] = 'root';
   $cfg['Servers'][$i]['password'] = 'пароль'; // Пароль пользователя root
?>


Обратите внимание (!), что при подключении мы указываем phpMyAdmin, использовать расширение "mysqli", так как установленный нами MySQL 5, и произведенные выше настройки PHP 5, позволяют полноценно работать с функциями данного расширения.

Далее откройте многострадальный httpd.conf и добавьте в блок начинающийся строкой:
<IfModule alias_module>
Следующую строку:
Alias /pma "C:/apache/localhost/www/phpmyadmin"

Теперь выполните в командной строке команду C:\www\bin\httpd.exe -k start и введите в адресной строке браузера http://localhost/www/phpmyadmin  Вы увидите основное окно скрипта phpMyAdmin для управления базами данных MySQL. Благодаря добавленной нами выше строке в конфигурационный файл Apache (так называемый алиас), мы также можем попасть в phpMyAdmin из любого хоста, для чего понадобится установить виртуальный хост и ввести в адресной строке браузера адрес вида: "имя хоста"/pma. Например: http://www.test.ru/pma.

Далее мы воспользуемся возможностью установить расширение функциональности phpMyAdmin, позволяющее работать с закладками, историями вводимых команд, дизайнером связанных таблиц и некоторыми другими дополнительными функциями.

Для установки расширения сперва необходимо создать базу данных "phpmyadmin" и импортировать в нее специально предназначенные таблицы, для чего выберите на главной странице ссылку "Import" ("Импорт"), на открывшейся странице, в разделе "File to import" ("Импортируемый файл") нажмите кнопку "Browse..." ("Обзор..."), выберите файл "create_tables.sql", находящийся в каталоге "scripts", и нажмите кнопку "Go" ("OK").

Следующим шагом необходимо создать специального пользователя с именем "pma" и наделить его соответствующими правами, для чего нажмите "Privileges" ("Привилегии"), на открывшейся странице нажмите ссылку "Add a new User" ("Добавить нового пользователя"), в разделе "Login Information" ("Информация учетной записи") заполните поля следующим образом:

User name (Имя пользователя): pma
Host (Хост): localhost
Password (Пароль): придумайте пароль


Нажмите кнопку "Go" (OK).

На открывшейся странице, в разделе "Database-specific privileges" ("Привилегии уровня базы данных") из ниспадающего меню "Add privileges on the following database:" ("Добавить привилегии на следующую базу") выберите "phpmyadmin". Откроется следующая страница, где в разделе "Database-specific privileges" ("Привилегии уровня базы данных"), в блоке "Data" ("Данные"), поставьте галочки рядом с опциями: SELECT, INSERT, UPDATE, DELETE и нажмите "Go" ("OK").

И последнее что надо сделать – это вновь открыть конфигурационный файл phpMyAdmin "config.inc.php" и добавить несколько новых директив. Все содержимое конфигурационного файла должно будет выглядеть примерно так:

<?php
   $i = 0;
   $i++;
   $cfg['Servers'][$i]['host'] = 'localhost';
   $cfg['Servers'][$i]['extension'] = 'mysqli';
   $cfg['Servers'][$i]['connect_type'] = 'tcp';
   $cfg['Servers'][$i]['compress'] = false;
   $cfg['Servers'][$i]['auth_type'] = 'config';
   $cfg['Servers'][$i]['user'] = 'root';
   $cfg['Servers'][$i]['password'] = 'пароль'; /* Пароль пользователя root. */
   $cfg['Servers'][$i]['controluser'] = 'pma'; /* Имя созданного вами только что пользователя для доступа к расширенным таблицам. */
   $cfg['Servers'][$i]['controlpass'] = 'пароль'; /* А здесь его пароль. */
   $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
   $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
   $cfg['Servers'][$i]['relation'] = 'pma_relation';
   $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
   $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
   $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
   $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
   $cfg['Servers'][$i]['history'] = 'pma_history';
   $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
   $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
   $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
?>


Теперь у вас будет возможность воспользоваться всеми дополнительными функциями скрипта phpMyAdmin.

Вот и всё. Полная установка и настройка скрипта phpMyAdmin – завершена, как и всего комплекса веб-разработчика в целом. Примите мои поздравления. И заметьте - никто не умер. :)

А не проще ли установить «Денвер»?

Денвер установить, конечно, проще. Но следует помнить, что он собой представляет.

Как гласит сайт проекта, «Денвер» — это «Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») — проект Дмитрия Котерова, набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет.»


Таким образом, штатная работа этих продуктов (на сервере организации) даже не декларируется.

Напротив, сайт проекта предупреждает Вас:

Напомним еще раз, что Денвер — это не законченный и надежный Web-сервер, это — всего лишь инструмент, позволяющий отлаживать (тестировать) сайты, «не выходя из дома». Любая попытка использовать его в других целях может быть небезопасна.


* * *

Ну вот и подошло к концу описание установки Apache+php+MySQL+phpMyAdmin под Windows. Я рад, если помог Вам сделать первый шаг в мир веб-разработок, и мне остаётся пожелать Вам удачи!