ТурМенеджер. Оставьте рутину машине
WEB-приложение для автоматизации турфирмы

Инсталляция Apache, php 5, MySQL под Windows

Статья обновлена 25 мая 2009 г.

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

1. Получение дистрибутивов

Дистрибутивы Apache, php и MySQL можно скачать с сайтов с сайтов www.apache.org, www.php.net, www.mysql.com.

php

На 7 мая 2009 г. последней надёжной (stable) версией для Windows была версия 5.2.9-2. Рекомендую выбрать дистрибутив php не в виде инсталлятора, а в виде архива (10 М). 7 мая 2009 года ссылки на этот архив располагались по адресу:
http://ua2.php.net/get/php-5.2.9-2-Win32.zip/from/a/mirror. Вам рекомендуется выбрать ссылку, соответсвующую своей стране (чтоб быстрее выкачать).
Далее предполагается, что Вы последовали моему совету и выбрали дистрибутив в виде ZIP-архива.

Apache

7 мая 2009 г. дистрибутив рекомендуемой версии (2.2.11) был доступен по адресу http://apache.infocom.ua/httpd/binaries/win32/apache_2.2.11-win32-x86-openssl-0.9.8i.msi

MySQL

7 мая 2009 г. оглавление дистрибутивов последней стабильной версии (5.1.34) находились по адресу
http://dev.mysql.com/downloads/mysql/5.1.html#win32

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

Запускаем дистрибутив. Надо будет указать, что согласен с условиями лицензии, и ввести синтаксически корректные домен, url и email -- они будут возвращаться пользователю при ошибке.
Критерий успешной установки: При вызове броузером адреса http://localhost/ Вы увидите надпись It works!

Если Вы не видите надпись It works!
  1. Проверьте — не заблокирован ли Apache Вашим брандмауэром
  2. Если запущен MS IIS — он вцепится мёртвой хваткой в порт 80 и никому его не отдаст. Апачу придётся уходить на порт, например, 8080. И тогда придётся править директиву Listen файла httpd.conf, и после перезагрузки Апача обращаться к ссылке http://localhost:8080/
  3. В Windows Vista зачастую Apache запускается и останавливается только через консоль Службы
  4. Если при попытке запустить Apache выдаётся сообщение:
    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...
    попробуйте поставить директиву Win32DisableAcceptEx в файл httpd.conf (спасибо за эту информацию странице
    http://www.php.com.ua/forum/viewtopic.php?f=3&t=9403&p=62365)

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

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

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

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

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

В строке 953 файла install.txt есть строка:
LoadModule php5_module "c:/php/php5apache2.dll"

Её нужно отредактировать, исправив версию Апача:
LoadModule php5_module "c:/php/php5apache2_2.dll"

и вставить в окончание блока инструкций LoadModule файла httpd.conf (примерно 130-я строка файла httpd.conf)

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

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

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

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

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

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


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

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

Как я уже сказал, мы можем задать несколько WEB-папок для различный доменных имён на одном компьютере с помощью т.н. виртуальных хостов. В первую очередь нужно настроить Windows на «узнавание» этих доменных имён. То есть задать соответствия
имяIP-адрес
Для этого обратимся к файлу %System32%\drivers\etc\nosts
(%System32% — это обычно C:\Windows\System32 или C:\Winnt\System32)

В нём после пояснения мы найдём список соответствий имён и 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 *:8080

#
# 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.
#

<VirtualHost *:80>
    DocumentRoot "c:/www/tm"
    ServerName tm
</VirtualHost>

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

Теперь ищем в httpd.conf строку
#Include conf/extra/httpd-vhosts.conf
(номер этой строки приблизительно 473-й)
и убираем знак комментария (#) из начала строки.

Ну и теперь, чтоб не «обманывать» Apache, создаём папку c:\www\tm

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

(примерно 251-я строка файла httpd.conf) чтоб включить в список поиска файла по умолчанию в WEB-папке файла index.php

DirectoryIndex index.html index.htm index.php

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

Переименовываем c:\php\php.ini_recommended в php.ini и переносим в папку Windows — C:\Windows или c:\Winnt .

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

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

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

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

10. Проверка

Создаём файл C:\www\tm\index.php следующего содержания:
<?php phpinfo(); ?>
и запускаем в броузере адрес http://tm/

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

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

11.1. Обеспечение работы php c MySQL

Скопируйте файл C:\php\libmysql.dll в папку %System32% (C\Windows\system32 или C\Winте\system32).

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

Напомню, файл php.ini мы поместили в папку %WinDir% (C:\Windows или C:\Winnt)

В строке 542 мы должны поправить директиву extension_dir: она должны иметь вид extension_dir = "c:/php/ext"

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

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

Список расширений с описаниями Вы можете найти по адресу:
http://www.php.net/manual/en/install.windows.extensions.php

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

  • php_gd2.dll — функции для работы с графикой (примерно 667-я строка файла php.ini)
  • php_mysql.dll — функции для работы с MySQL (примерно 681-я строка файла php.ini)

Функции для работы с MySQL уже не являются частью ядра php,
как было до появления 5-ых версий.

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

.

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

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

Затруднения может вызвать только настройка кириллицы. Этому вопросу я посвятил отдельную статью


Добавить комментарий


Комментарии к статье:

Анна Ковалева
29 июля 2008 г. 21:49
Очень хорошая статья. Буду ждать продолжения. Данная тема конечно же интересна всем.

Юрий Максименко:

Спасибо за добрый отзыв. В благодарность за него готов написать продолжение. Только предложите тему.

Серега
6 августа 2008 г. 23:00
Прикольно написано, но мне кажется, что все-таки автор что-то не договаривает :)
Девелопер
14 августа 2008 г. 17:20
У меня не получился пункт №9 - проверка,создал файл,ввел необходимый текст,а в окне браузера никакой таблици параметров,только тот текст который ввел в файл.может,где-то выше ошибся,буду проверять,ну помоему нет,в чем может быть проблема?

Юрий Максименко:

В чём проблема -- понятно: Апач не натравил на файл интерпретатор php.

Почему это произошло -- могу только гадать. Вероятные причины таковы:

-- Не перезапустили Апач

-- Не внесли строку AddType ..., о которой говорилось в 4-м пункте

Не пожелал представиться
14 августа 2008 г. 17:49
Понял в чем ошибка,Apache выдает ошибку когда я вставляю строку:LoadModule php5_module "c:/php/php5apache2.dll" в файл конфигурации,непойму в чем дело,может нетуда вставляю,так вроде правильно - последняя строчка у меня идет:
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
за ней я и вставляю строчку с dll-кой,помогите ламеру ПОЖАЛУЙСТА!
Юрий Максименко
14 августа 2008 г. 18:35
Есть ли по файл c:/php/php5apache2.dll на сервере?
Дмитрий Гончаренко
14 августа 2008 г. 18:51
Извините Юрий,я слаб в этом,я непонял вопрос,у меня на компе в папке php есть этот файл,а на каком сервере,непонимаю?
Девелопер
14 августа 2008 г. 19:43
Т.е. Вы у себя на компьютере ставите всё это. Ясно. Значит, на компьютере такой файл есть.

Значит, эта длл-ка вс свою очередь не может найти чего-то. Чтобы это узнать, войдите в режим командной строки, доберитесь до apache2/bin и оттуда запустите
apache -k start
Дмитрий Гончаренко
15 августа 2008 г. 10:33
прочитал на одном форуме,что для апача версий 2.2 нужно подключать 2_2.dll,попробовал-заработал апач,дальше пока еще не тестировал но надеюсь что все будет хорошо,спасибо за проявленное терпение и помощь.
Алекс
27 августа 2008 г. 20:13
Спасибо вам огромное. Это именно то, что всем нужно было :)
tiger
30 августа 2008 г. 14:37
Добрый день, отличное рукводство, спасибо.

Теперь вопрос. Поставил php 5.2.6+apache 2.0.63, все сделал как "в книжке", когда создаю php-файл, то по адресу http://localhost/ ничего не происходит. Браузер пишет что узен найден, идет загрузка, но через пару минут "страница не найдена"(как я понимаю все должно загружаться сразу). В чем может быть проблема?
Мне отсюда не видно, где Вы ошиблись. наиболее вероятно -- не прописали путь к папке, соответсnвующей хосту (директива DocumentRoot). Ну или файл не там сохранили.
Ната
1 сентября 2008 г. 01:10
Просто отлично - очень интересные мысли. Разжевано специально как будто для меня :)
Брун
3 сентября 2008 г. 08:53
Опять-таки достаточно побочная проблемка. Вряд ли она кому-то мешает, мне вот лично как то пофиг :)
Nicola
14 октября 2008 г. 14:14
Проблема с установкой mysql, apache её не видит, не могли бы вы поподробнее описать процедуру установки mysql...

Апач не взаимодействует с МуСкулом. МуСкул может работать без Апача -- и наоборот. Они не завязаны друг на друга.

DeadMax
22 ноября 2008 г. 12:27
Спасибо вам огромное! Очень хорошая статья.
Вроде все сделал правильно. А он выдаёт вот что"You don't have permission to access / on this server."
Гость
30 ноября 2008 г. 18:20
Выкачал и установил те дистрибутивы, которые были предложены для инсталляции. ОС WinXP SP2. При запросе данных из mysql в кодировке ср1251, через сценарий PHP, explorer отображает вопросы. При запросе данных из консоли, mysql отображает данные правильно. В чем может быть проблема?
Юрий Максименко
30 ноября 2008 г. 18:48
Гость, Ваша проблема в том, что Вы не установили кодировку для php-приложения. Примерно так:

mysql_query("set names cp1251",$conn);

где $conn -- ссылка на соединение, полученное mysql_connect
Гость
30 ноября 2008 г. 19:02
Юрий!!! Ты прав!!! Действительно все заработало. Огромное спасибо.
Артур
2 декабря 2008 г. 01:20
Вот какая штука... Года два-три назад ставил себе такую связку (Апач+PHP+Мускуль) и все работало :). Потом не стало нужно, машина сменилась...
Сейчас решил вспомнить старое, проверить некоторые скрипты - попробовал поставить Денвер (машина стандартная, Core2duo. WXP+sp2, правда пытался поставить SP3 - из-за непоняток с выходом в интернет удалил через 20 минут) - Апач денверовский валится через 2 секунды после старта без всяких слов. Решил поставить полноценный апач с указанной здесь ссылки, все встало без сообщений об ошибке, но при старте пишет "No installed service named Apache2". Логи писать не успевает. Куда посмотреть?
Юрий Максименко
2 декабря 2008 г. 01:44
Решил поставить полноценный апач с указанной здесь ссылки, все встало без сообщений об ошибке, но при старте пишет "No installed service named Apache2".

Попробуйте в командной строке набрать команду
Путь_к_папке_bin\apache -k install

Артур
2 декабря 2008 г. 13:48
Это понятно, я так пытался, промелькивало досовское окно и ничего. сейчас попробовал из досовской обочки запустить - пишет - make_sock: could not bind to adress 0.0.0.0:80 no listetning sockets avaliable, shutting down. Unable to open logs.
Во всяком случае, что то... Попробовал поменять listen 80 на listen 127.0.0.1:80 - результат тот же :(, только адрес меняется..
Файрвол отключал - без разницы
Юрий Максименко
2 декабря 2008 г. 14:02
Попробуйте запустить Apache как службу вручную -- т.е. из панели управления->администрирование->службы
Артур
2 декабря 2008 г. 14:49
В том то и дело, что хотя msi отрапортовал о нормальном заввершении установки (в просмотрщике событий винды), но в качестве службы апач не появился. Вручную - это аналог команды -k start
А у меня похоже, install не отрабтывает, не может сокет найти
Юрий Максименко
3 декабря 2008 г. 12:23
Артур, я думаю, на компе стоит IIS, который вцепился в 80-й порт мёртвой хваткой. Попробуйте listen 8080
Не пожелал представиться
3 февраля 2009 г. 18:34
добрый день ,у меня таже проблемма, что и у Юрия, не как не могу ее решить, не поможите?
Юрий Максименко
3 февраля 2009 г. 19:22
Какая у Вас проблема? Я в онлайне
Dronis
15 марта 2009 г. 00:13
make_sock: could not bind to adress 0.0.0.0:80
no listening sockets available, shutting down

Сработавшее для меня решение:
Причина в том, что порт 80 уже занят, в моём случае это бы Skype, который использует порт 80 в качестве резервного (это можно отключить).
Ramon
3 апреля 2009 г. 19:03
При установке MySQL возникает проблема на действии "Apply security setting"
Есть какие-нибудь соображения по этому поводу?
Не пожелал представиться
21 мая 2009 г. 15:45
Доброго времени суток. У меня проблема: html-файлы из папки htdocs показываются, а php-файлы браузер предлагает сохранить или открыть.
Директиву "AddType application/x-httpd-php .php" в файле httpd.conf в блоке <IfModule mime_module>...</IfModule> прописал. Не помогло.
Юрий Максименко
21 мая 2009 г. 16:22
Убедитесь, что файлы действительно *.php, а не *.php.txt
Bogdan
21 мая 2009 г. 17:32
Спасибо.
Это Firefox что-то глючит... Другой браузер корректно обработал php-файл, а Firefox и после перезагрузки тот тестовый файл, который я пытался запустить хочет сохранить (видно в кеше застрял...) так что зря час провозился.
Также не было реакции на тег <?, c <?php всё ok. Но раньше (на других машинах) с подобным не сталкивался и смело обходился <?

Юрий Максименко:
В файле php.ini есть директива short_open_tag, разрешающая использовать <?
С некоторых пор она по умолчанию Off

Bogdan
21 мая 2009 г. 17:41
...на тег '?' ,а c тегом '?php' пхп-код не игнорируется. Но до этого (на других машинах) я смело ставил '?' и он воспринимался нормально.

Очистка кеша решила первую проблему.
Вторую замена '?' на '?php'
owneteFew
24 мая 2009 г. 21:59
Познавательно очень
Саша
30 мая 2009 г. 14:27
Добрый день!
Спасибо за подробное описание. Сделал все пошагово, но при запуске http://tm/ ошибка You don't have permission to access / on this server. Укажите, пожалуйста, где я ошибся?

Юрий Максименко:
Попробуйте записать файл в папку tm и обратитесь к нему: http://tm/имяфайла
Если опять прочитаете про Аксесс Денайд -- перечитайте внимателльно пункт 5 статьи.
А если файл откроется -- это значит, Апач не нашёл в папке стартового файла (название которого было б в списке DirectoryIndex -- см. пункт 7 статьи.

Анатолий
4 июня 2009 г. 23:32
неделю не мог поставить Apache и PHP по книжкам.Зашел на ваш сайт все получилось.Большое спасибо.
Саша
6 июня 2009 г. 13:03
Спасибо за ответ. У меня теперь возникла другая проблема. Когда ввожу http://tm/, в ответ выпадает окошко где указано Вы собираетесь открыть файл application/x-httpd-php из http://tm и т.д. Не могу найти ошибку. Помогите, пожалуйста, буду очень благодарен.
BrifeNigeDigh
9 июня 2009 г. 22:38
покуда я жив, я буду произносить ваш ресурс! заношу в букмарки…
Алексей
30 июня 2009 г. 01:41
Здравствуйте.А когда я открываю http://localhost/ таблица открывается,а когда набираю http://tm/ пишет,что не может найти сервер.Что я сделал не так? Спасибо.
Михаил
8 июля 2009 г. 15:34
Подскажите,пожалуйста! .html с локальной машины работает, а .php нет. AddType application/x-httpd-php .php и LoadModule php5_module "c:/php/php5apache2_2.dll" вставлены, кажется, правильно:
...
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule php5_module "c:/php/php5apache2_2.dll"

и


...
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
...
AddType application/x-httpd-php .php


Подскажите, что не так. Спасибо!

Добавить комментарий

Представьтесь:
Ваш комментарий:

Можете использовать теги HTML
 Высота шрифта
© 1999-2009 Максименко Юрий
Все права у меня есть...