• Настройка Apache. Настройка MySQL. Настройка PHP. Или локальная среда разработки своими руками. Установка Apache на Windows (7)

    В статье описывается установка Apache 2.4 + PHP 5.6 + MySQL 5.6 на операционную систему Windows 7 / 8 / 8.1 / 10

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

    Данная инструкция будет полезна начинающим WEB-разработчикам, которые собираются установить на своем ПК с ОС Windows WEB-сервер Apache с интерпретатором PHP последних версий. Конечно же, намного проще установить сборку, наподобие Denwer или прибегнуть к использованию инсталляторов и не париться по поводу настроек. Однако каждый WEB-разработчик обязан понимать процесс работы WEB-сервера, процесс его установки и настройки.

    Если Вы хотите установить PHP 7, то обратитесь пожалуйста к статье.

    Если в процессе сборки сервера по этой инструкции Вы столкнулись с проблемами и все еще считаете себя WEB-разработчиком, то будет правильным шагом разобраться в возникших проблемах, а не писать в комментарии что инструкция говно. Инструкция рабочая. Проверено временем и сотнями инсталляций. Будьте внимательней при выполнении простых шагов. Выполнение шагов вручную и разбор ситуаций, если не заработало, добавит Вам skill как разработчику. Если Вы не WEB-разработчик и не планируете им быть, то подыщите простой способ установки в интернете - данная инструкция не для Вас.

    Обратите внимание, что под Windows XP данные версии VC11 запустить будет невозможно (или крайне затруднительно).

    Подготовительные работы

    Убедитесь, что у вас именно Windows 7 или новее. Если у Вас Windows XP, данная инструкция не поможет Вам, так как описанная здесь версия Apache не работает под Windows XP.

    Удалите все WEB-серверы, которые устанавливали до этого, зайдите в службы и убедитесь, что там нет служб Apache или IIS. Если у вас уже установлен какой-либо веб-сервер, второй параллельно скорее всего не заработает вовсе.

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

    Для работы очень желательно иметь файловый менеджер, позволяющий создавать файлы с любыми расширениями, либо, что еще лучше, редактор кода, наподобие Sublime Text или Notepad++ или полноценную IDE.

    Структура папок может быть различной, однако данная инструкция написана под определенную структуру и, если ей следовать, всё гарантированно заработает.
    Перед тем как начать, создайте на диске D папку USR , внутри которой создайте 5 подпапкок: apache , php , tmp , www , log . Именно так. Без указания номеров версий.

    В каталоге www создаем индексные файлы (при помощи файлового менеджера или редактора кода), которые будут нужны для проверки того, что все работает:

    • index.html с содержимым: It works!
    • index.php с содержимым:

    Если файлового менеджера / редактора кода / IDE нет, скачайте архив с этими двумя файлами . Но, если Вы считаете себя WEB-разработчиком, Вы должны обзавестись инструментами.

    В системную переменную PATH добавляем:

    ;D:\USR\apache;D:\USR\apache\bin;D:\USR\php;

    Замечания!

    Приведенные в примерах конфигурационных файлов номера строк могут отличаться для других версий apache и php.
    Все команды, включая редактирование файлов, должны осуществляться от имени Администратора.

    Установка Apache 2.4

    Хотя для простой разработки на PHP и нет необходимости в отдельном WEB-сервере (в PHP встроен собственный WEB-сервер, которого почти всегда достаточно для разработки одного проекта), все же рекомендуется произвести установку и настройку WEB-сервера Apache, хотя бы потому, что программист обязан знать эти тонкости. В конечном итоге придется работать с WEB-сервером и придется разбираться с его конфигурацией. Так что приступим.

    1. Загружаем Apache 2.4 binaries VC11 под свою систему по ссылке http://www.apachelounge.com/download/VC11/ Скорее всего у Вас 64 разрядная ОС, поэтому Вам понадобится файл с именем, наподобие httpd-2.4.xx -win64-VC11.zip
    2. Если нужны какие-то дополнительные модули, их можно загрузить там же (для базовой установки нет необходимости)
    3. Разархивируем содержимое папки Apache24 из скаченного архива в D:\USR\apache . Обратите внимание, что в D:\USR\apache нужно положить не папку Apache24 из архива, а ее содержимое. Инсталлировать ничего не требуется.
    4. В файле изменяем значение ServerRoot на "d:/USR/apache" (строка 37 ) и значение DocumentRoot Direcroty ) на "d:/USR/www" (строки 242 и 243 ). Так же следует раскомментировать строку 218 и изменить ее на: ServerName localhost:80
    5. Изменяем параметры хранения логов в том же файле (находим параметры и изменяем): ErrorLog "D:/USR/log/apache-error.log" CustomLog "D:/USR/log/apache-access.log" common
    6. Устанавливаем сервис Apache (от имени Администратора). Открываем командную строку от имени Администратора и вставляем туда следующую строку: D:\USR\apache\bin\httpd.exe -k install
    7. Следим за сообщениями об ошибках во время установки сервиса. Если все сделано верно, никаких ошибок быть не должно. Если у вас после выполнения строки не появилась снова командная строка, то вы что-то сделали неправильно. Просто воспользуйтесь функциями скопировать и вставить, чтобы не допускать ошибок при перепечатке.
    8. Создаем на рабочем столе ярлык для D:\USR\apache\bin\ApacheMonitor.exe и/или помещаем его в автозагрузку (для открытия окна автозагрузки в WIN8 необходимо нажать WIN+R, затем ввести shell:Startup и нажать ОК)
    9. Запускаем ApacheMonitor. В системном трее появится ярлык. Нажимаем на него левой кнопкой, выбираем Apache24 -> Start.
    10. В браузере заходим на http://localhost/ — должны увидеть It works!
    11. Если не увидели такой надписи, разбираемся, что пошло не так (читаем логи, гуглим, пытаемся самостоятельно разобраться с проблемой, раз уж решили разбираться в тонкостях работы веб-сервера)

    Установка PHP 5.6

    1. Загружаем последнюю версию VC11 x86 Thread Safe или VC11 x64 Thread Safe по ссылке http://windows.php.net/download/ . Обратите внимание, что нужен именно VC11 и именно Thread Safe . Разрядность должна быть как у Apache. Файл, который Вам нужен, скорее всего будет называться наподобие: php-5.6.11-Win32-VC11-x86.zip или php-5.6.11-Win32-VC11-x64.zip
    2. Извлекаем содержимое архива в D:\USR\php . Как в случае с Apache, инсталлировать ничего не требуется.
    3. В файл D:\USR\apache\conf\httpd.conf добавляем строки: LoadModule php5_module "d:/USR/php/php5apache2_4.dll" AddHandler application/x-httpd-php .php # Путь к файлу php.ini PHPIniDir "D:/USR/php"
    4. И изменяем значение DirectoryIndex на index.html index.php (строка 276 )
    5. Используя ApacheMonitor перезапускаем Apache (Apache24 -> Restart)
    6. Заходим браузером http://localhost/index.php и убеждаемся, что PHP работает.
    7. Делаем копию файла D:\USR\php\php.ini-development с именем D:\USR\php\php.ini
    8. Пользуясь поиском находим, раскомментируем и изменяем параметры: extension_dir = "D:/USR/php/ext" sys_temp_dir = "D:/USR/tmp" extension=php_mysql.dll extension=php_mysqli.dll extension=php_openssl.dll date.timezone = Europe/Zaporozhye
    9. Выполняем в командной строке php -m чтобы просмотреть список подключенных модулей.
    10. Перезапускаем Apache используя ApacheMonitor

    Виртуальные хосты в Apache

    1. Если на компьютере производится отладка нескольких проектов, то могут понадобиться виртуальные хосты (сайты). На примере будем рассматривать два виртуальных хоста: s1.localhost и s2.localhost . Для удобства будем создавать папки с такими же названиями, что совсем не обязательно в реальной системе.
    2. Следует учесть, что при использовании виртуальных хостов, параметр DocumentRoot конфигурационного файла Apache более не имеет смысла. Основным хостом сервера (который будет доступен по адресу http://localhost/) теперь является первый виртуальный хост в конфигурационном файле виртуальных хостов!
    3. Для начала необходимо добавить в файл c:\Windows\System32\drivers\etc\hosts строки: 127.0.0.1 s1.localhost 127.0.0.1 s2.localhost

      Делать это нужно от имени Администратора. Желательно после этого перезагрузиться, но на практике этого не требовалось. Если изменить файл не удается (права доступа), вы можете скопировать его на рабочий стол, изменить, а затем скопировать обратно.

    4. Создаем папки для виртуальных хостов D:\USR\www\s1.localhost и D:\USR\www\s2.localhost , в которых будут располагаться файлы. В каждой из папок создаем файл index.html с содержимым S1 и S2 соответственно (для контроля того, что все работает как нужно)
    5. Затем создаем папки для логов: D:\USR\log\s1.localhost и D:\USR\log\s2.localhost - тут будут храниться логи каждого из сайтов. Вообще-то, логи можно хранить в одной папке, но я привык делать так - мне так более удобно.
    6. Далее необходимо включить поддержку виртуальных хостов. В файле D:\USR\apache\conf\httpd.conf раскомментировать строку Include conf/extra/httpd-vhosts.conf
    7. Далее редактируем файл d:\USR\apache\conf\extra\httpd-vhosts.conf — он должен выглядеть так (каждому виртуальному хосту свой блок VirtualHost): ServerAdmin [email protected] DocumentRoot "D:/USR/www/s1.localhost" ServerName s1.localhost ServerAlias www.s1.localhost ErrorLog "D:/USR/log/s1.localhost/error.log" CustomLog "D:/USR/log/s1.localhost/access.log" common ServerAdmin [email protected] DocumentRoot "D:/USR/www/s2.localhost" ServerName s2.localhost ServerAlias www.s2.localhost ErrorLog "D:/USR/log/s2.localhost/error.log" CustomLog "D:/USR/log/s2.localhost/access.log" common
    8. Первый виртуальный хост s1.localhost теперь будет основным хостом системы, т.к. его блок следует первым в конфигурационном файле, т.е. будет доступен при входе на

    Ниже я написал инструкцию как на на локальном компьютере с Windows 7 — настроить сервер Apache и установить на него PHP, MySql и phpMyAdmin.

    Установка Apache

    Скачиваем дистрибутив с сервером Apache с сайта http://httpd.apache.org/download.cgi . Выбираем версию 2.2.22 и скачиваем установщик для windows. На домашнем компе вам вряд ли понадобится SSL, выбираем — «Win32 Binary without crypto (no mod_ssl) (MSI Installer) «.

    Перед установкой отключите скайп, или в настройках скайпа отключите использование 80-го порта, так как это будет помешать установке.

    Устанавливаем Apache запуская файл инсталяции. Все шаги при установке — стандартные.

    Нажимаем Next.

    Соглашаемся с лицензией.

    Воводим данные во все три текстовых поля. Можно ввести несуществующий домен типа test.test или example.com. Эти данные нужны для создания базового конфигурационного файла. Под текстовыми полями одна из самых важных настроек - установить Apache как службу или как обычную программу. Выбираем «for All Users, on port 80, as a Service - Recommended» - установить как службу.

    Выбираем Custom (выборочная установка).

    Выбор компонентов и места установки. Можно оставить все значения по умолчанию.

    Жмем Install.

    Завершаем установку.

    Установка завершена. В трее появится значок Apache, с помощью которого можно быстро остановить/запустить.

    Проверяем работоспособность. Зайдите в браузере по адресу http://localhost/ ю Если все сделано правильно вы увидите надпись «It Works!». Поздравляю, первый шаг закончен успешно.

    Примечание.

    Рекомендую сразу включить поддержку ЧПУ ссылок, для этого раскомментируйте строку LoadModule rewrite_module modules/mod_rewrite.so в файле httpd.conf . Он находится в папке conf в месте куда у вас установился Apache.

    Было так:
    {codecitation}#LoadModule rewrite_module modules/mod_rewrite.so{/codecitation}

    Должно стать так:
    {codecitation}LoadModule rewrite_module modules/mod_rewrite.so{/codecitation}

    Здесь и в дальнейшем, раскомментировать — значит убрать знак комментария — #, который находится в начале строки.

    Продолжение следует.

    Подготовка папок

    Я очень не люблю, чтобы у меня все валялось, где попало, так что для начала создадим папки, где у нас будут располагаться программы и сайты.
    Создадим на диске «C:\» (или где вам удобней) папку «Server»:
    C:\Server\
    В ней создадим 2 папки:
    C:\Server\web – это папка в которой у нас будут лежать программы
    C:\Server\domains – а в этой папке будут лежать наши сайты
    Итак, в папке \web\ мы создадим 3 папки для apache, php, mysql:
    C:\Server\web\apache\
    C:\Server\web\php\
    C:\Server\web\mysql\
    Далее перейдем в папку domains и создадим папку \localhost\
    C:\Server\domains\localhost\
    Внутри папки у нас будет 2 подпапки: public_html – для файлов сайта; logs – для текстовых файлов, в которых записывается «кто» получал доступ к сайту и какие ошибки в работе сайта появлялись.
    C:\Server\domains\localhost\public_html\
    C:\Server\domains\localhost\logs\
    На этом структура папок заканчивается, переходим к настройке Apache.

    Настройка Apache

    Для установки Apache нам понадобиться сам Apache (Кэп). Так как у нас Windows 8.1 x64, то устанавливать будем Apache x64.
    Для скачивания перейдем по ссылке:
    www.apachelounge.com/download/win64
    и скачиваем «httpd-2.4.6-win64.zip». Так же нам понадобиться для нормальной работы «Распространяемый пакет Microsoft Visual C++ 2010 (x64)». Для этого скачаем его по этой ссылке:
    www.microsoft.com/ru-ru/download/details.aspx?id=14632
    и устанавливаем.
    После того как скачался наш архив с Apache, откроем его. Открыв архив, мы увидим папку «Apache24», зайдем в нее. Появиться множество папок и файлов программы, все распаковываем в заготовленную ранее папку:
    C:\Server\web\apache\
    Должно получиться так:
    C:\Server\web\apache\bin\
    C:\Server\web\apache\cgi-bin\
    C:\Server\web\apache\conf\
    C:\Server\web\apache\error\
    C:\Server\web\apache\htdocs\
    C:\Server\web\apache\icons\
    C:\Server\web\apache\include\
    C:\Server\web\apache\lib\
    C:\Server\web\apache\logs\
    C:\Server\web\apache\manual\
    C:\Server\web\apache\modules\
    Папки, такие как \cgi-bin\, \htdocs\, \icons\ и \manual\ нам не нужны – можете их удалить.
    Перейдем в папку:
    C:\Server\web\apache\conf\
    И откроем файл конфигурации Apache – «httpd.conf» любым текстовым редактором. В этом файле каждая строка содержит директивы для настройки Apache, а строки, начинающиеся со знака # (решетка) – комментарий и пояснение. Приступим к настройке:

    Файл конфигурации Apache

    # директива Apache
    ServerRoot “C:/Server/web/apache”
    # Слушаем на локальном IP порт (80 по стандарту)
    Listen 127.0.0.1:80
    # далее подключим библиотеки расширений для Apache
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule php5_module "C:/Server/web/php/php5apache2_4.dll"
    # указываем Apache, что файлы с расширением php, нужно воспринимать как php-скрипты
    AddHandler application/x-httpd-php .php
    # укажем расположение файла настроек php
    PHPIniDir “C:/Server/web/php”
    # изменим имя сервера
    ServerName 127.0.0.1:80
    # изменим доступ к директории

    Options Includes Indexes FollowSymLinks
    AllowOverride All
    Allow from all


    # директория с нашими сайтами
    DocumentRoot “C:/Server/domains”
    # индексные файлы, по приоритету.

    DirectoryIndex index.php index.html index.htm index.shtml

    # папка для log-файлов
    ErrorLog “C:/Server/domains/logs/error.log”
    CustomLog “C:/Server/domains/logs/access.log”
    # добавим alias для phpMyAdmin, и поправим alias для cgi

    Alias /pma “C:/Server/domains/phpMyAdmin”
    ScriptAlias /cgi-bin/ “C:/Server/web/apache/cgi-bin/”

    # правим путь для cgi

    AllowOverride None
    Options None
    Require all granted

    # типы файлов


    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    # Другие конфиги:



    BrowserMatch "MSIE 10.0;" bad_DNT


    RequestHeader unset DNT env=bad_DNT

    На этом заканчивается настройка httpd.conf.
    В конфигурационном файле Apache httpd.conf были подключены дополнительные конфиги:
    Include conf/extra/httpd-mpm.conf
    Include conf/extra/httpd-autoindex.conf
    Include conf/extra/httpd-vhosts.conf
    Include conf/extra/httpd-manual.conf
    Include conf/extra/httpd-default.conf
    Откроем файл «C:\Server\web\apache\conf\extra\httpd-mpm.conf» и быстро пробежимся по нему.
    # указываем, где у нас будет храниться pid-файл:

    PidFile “C:/Server/web/apache/logs/httpd.pid”

    Остальные параметры оставляем без изменений. Откроем файл «httpd-autoindex.conf», изменим там только строки с путем:
    Alias /icons/ "c:/Server/web/apache/icons/"

    Options Indexes MultiViews
    AllowOverride None
    Require all granted

    Файл хостов Apache

    # на примере доменная localhost

    DocumentRoot "C:/Server/domains/localhost/public_html"
    ServerName localhost
    ErrorLog "C:/Server/domains/localhost/logs/error.log"
    CustomLog "C:/Server/domains/localhost/logs/access.log" common


    # добавим для будущего phpMyAdmin (не забываем создать папку)

    DocumentRoot "C:/Server/domains/phpmyadmin/public_html"
    ServerName localhost
    ErrorLog "C:/Server/domains/phpmyadmin/logs/error.log"
    CustomLog "C:/Server/domains/phpmyadmin/logs/access.log" common

    На этом редактирование файла заканчивается. Далее в оставшихся файлах правим только пути:
    Файл «httpd-manual.conf»:
    AliasMatch ^/manual(?:/(?:da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn))?(/.*)?$ "C:/Server/web/apache/manual$1"

    В файле «httpd-default.conf» никаких изменений не производиться. На этом настройка конфигурации Apache завершается.

    Настройка PHP

    Раз у нас Windows 8.1 x64 и Apache x64 установлен и настроен, то и php должно быть x64.
    Идем на сайт:

    и скачиваем архив php последней версии. Нам нужен php как модуль, т.е. для этого скачиваем Thread Safe. После того как архив скачался, открываем его и переносим содержимое в папку «C:\Server\web\php\». Создадим две пустые папки «tmp» и «upload». Далее в этой папке ищем файл «php.ini-development» и переименовываем его в «php.ini». Открываем файл в текстовом редакторе и изменяем директивы (комментирования строк в файле начинается с точки с запятой).

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

    short_open_tag = On
    zlib.output_compression = On
    post_max_size = 64M
    include_path = ".;С:\Server\web\php\includes"
    extension_dir = "C:/Server/web/php/ext"
    upload_tmp_dir = "C:/Server/web/php/upload"
    upload_max_filesize = 64M
    extension=php_bz2.dll
    extension=php_curl.dll
    extension=php_gd2.dll
    extension=php_mbstring.dll
    extension=php_mysql.dll
    extension=php_mysqli.dll
    extension=php_pdo_mysql.dll
    extension=php_sockets.dll
    extension=php_sqlite3.dll
    ; в секции указываем временную зону нашего сервера (http://php.net/date.timezone)
    date.timezone = "Asia/Yekaterinburg"
    session.save_path = "С:/Server/web/php/tmp/"


    На этом настройка php заканчивается.

    Настройка MySQL

    Ставим MySQL x64 как сокет под windows. Скачиваем архив с последней версией MySQL x64:
    dev.mysql.com/downloads/mysql
    В низу страницы находим Windows (x86, 64-bit), ZIP Archive и жмем на кнопку «Download». Вам перекинет на страницу регистрации на сайте. Нажимаем внизу страницы «No thanks, just start my download», запуститься скачивание архива MySQL. После того как скачался архив откроем его и перенесем все содержимое папки в «C:\Server\web\mysql\»
    Теперь открываем файл настроек MySQL – «C:\Server\web\mysql\my-default.ini». Удаляем все его содержимое и вносим туда свои данные.
    port=3306
    host=127.0.0.1
    port=3306
    bind-address=127.0.0.1
    enable-named-pipe
    basedir="C:/Server/web/mysql/"
    datadir="C:/Server/web/mysql/data/"
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    Вот и всё. В конфигурационном файле мы указали, что скрипты могут обращаться к серверу и по локальному IP, и по сокет-соединению.
    Осталось дело за малым. Добавим в системную переменную «PATH» пути к Apache и MySQL, для этого:
    1. Перетащите курсор мыши в правый нижний угол экрана
    2. Щелкните на значке «Поиск» и введите: панель управления
    3. Выберите System (Система)-> Advanced (Дополнительные параметры системы)
    4. Выберите Environment Variables (Переменные среды), в меню System Variables (Системные переменные), найдите переменную PATH и щелкните на ней.
    5. Пропишите пути к Apache и MySQL:
    ;C:\Server\web\apache\bin;C:\Server\web\mysql\bin
    Далее установим службы Apache и MySQL. Для этого воспользуемся сочетанием клавиш «Win+X», появиться выпадающее меню в левом нижнем углу. Выберем «Командная строка (администратор)».
    В командной строке вводим, для установки Apache:
    httpd –k install
    для установки MySQL:
    mysqld.exe --install MySQL --defaults-file=”C:\Server\web\mysql\my-default.ini”
    Установим пароль для MySQL-пользователя. Для этого запустим службу MySQL командой:
    NET start MySQL
    После того как служба запустилась, установим пароль:
    mysqladmin –u root password ВашПароль
    В файл «httpd-vhosts.conf» мы прописали два сайта, для того чтобы браузер мог их увидеть, названия сайтов нужно добавить в файла «hosts». Перейдем в папку:
    C:\Windows\System32\Drivers\etc\
    откроем файл «hosts» любым текстовым редактором (запустить от имени администратора) и в конец файла добавим:
    127.0.0.1 localhost
    127.0.0.1 phpmyadmin
    Сохраняем файл.
    Для удобства запуска и остановки служб Apache и MySQL создадим файлы start-server.bat и stop-server.bat.
    Для этого перейдем в папку «C:\Server\» и создадим два этих файла.
    Содержание «start-server.bat»:
    @echo off
    NET start Apache2.4
    NET start MySQL
    Содержание «stop-server.bat»:
    @echo off
    NET stop Apache2.4
    NET stop MySQL
    Настройка Apache, PHP и MySQL на этом закончена. Для того чтобы протестировать сервер, давайте в папке «C:\Server\domains\localhost\public_html» создадим файл «index.php» с содержимым:

    Далее запустим наш сервер, для этого запустите «start-server.bat» от имени администратора. После того как сервер запустился, откройте браузер и введите в адресной строке «localhost».
    Должна отобразиться страница с информацией о PHP.

    Подготовка папок

    Я очень не люблю, чтобы у меня все валялось, где попало, так что для начала создадим папки, где у нас будут располагаться программы и сайты.
    Создадим на диске «C:\» (или где вам удобней) папку «Server»:
    C:\Server\
    В ней создадим 2 папки:
    C:\Server\web – это папка в которой у нас будут лежать программы
    C:\Server\domains – а в этой папке будут лежать наши сайты
    Итак, в папке \web\ мы создадим 3 папки для apache, php, mysql:
    C:\Server\web\apache\
    C:\Server\web\php\
    C:\Server\web\mysql\
    Далее перейдем в папку domains и создадим папку \localhost\
    C:\Server\domains\localhost\
    Внутри папки у нас будет 2 подпапки: public_html – для файлов сайта; logs – для текстовых файлов, в которых записывается «кто» получал доступ к сайту и какие ошибки в работе сайта появлялись.
    C:\Server\domains\localhost\public_html\
    C:\Server\domains\localhost\logs\
    На этом структура папок заканчивается, переходим к настройке Apache.

    Настройка Apache

    Для установки Apache нам понадобиться сам Apache (Кэп). Так как у нас Windows 8.1 x64, то устанавливать будем Apache x64.
    Для скачивания перейдем по ссылке:
    www.apachelounge.com/download/win64
    и скачиваем «httpd-2.4.6-win64.zip». Так же нам понадобиться для нормальной работы «Распространяемый пакет Microsoft Visual C++ 2010 (x64)». Для этого скачаем его по этой ссылке:
    www.microsoft.com/ru-ru/download/details.aspx?id=14632
    и устанавливаем.
    После того как скачался наш архив с Apache, откроем его. Открыв архив, мы увидим папку «Apache24», зайдем в нее. Появиться множество папок и файлов программы, все распаковываем в заготовленную ранее папку:
    C:\Server\web\apache\
    Должно получиться так:
    C:\Server\web\apache\bin\
    C:\Server\web\apache\cgi-bin\
    C:\Server\web\apache\conf\
    C:\Server\web\apache\error\
    C:\Server\web\apache\htdocs\
    C:\Server\web\apache\icons\
    C:\Server\web\apache\include\
    C:\Server\web\apache\lib\
    C:\Server\web\apache\logs\
    C:\Server\web\apache\manual\
    C:\Server\web\apache\modules\
    Папки, такие как \cgi-bin\, \htdocs\, \icons\ и \manual\ нам не нужны – можете их удалить.
    Перейдем в папку:
    C:\Server\web\apache\conf\
    И откроем файл конфигурации Apache – «httpd.conf» любым текстовым редактором. В этом файле каждая строка содержит директивы для настройки Apache, а строки, начинающиеся со знака # (решетка) – комментарий и пояснение. Приступим к настройке:

    Файл конфигурации Apache

    # директива Apache
    ServerRoot “C:/Server/web/apache”
    # Слушаем на локальном IP порт (80 по стандарту)
    Listen 127.0.0.1:80
    # далее подключим библиотеки расширений для Apache
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule php5_module "C:/Server/web/php/php5apache2_4.dll"
    # указываем Apache, что файлы с расширением php, нужно воспринимать как php-скрипты
    AddHandler application/x-httpd-php .php
    # укажем расположение файла настроек php
    PHPIniDir “C:/Server/web/php”
    # изменим имя сервера
    ServerName 127.0.0.1:80
    # изменим доступ к директории

    Options Includes Indexes FollowSymLinks
    AllowOverride All
    Allow from all


    # директория с нашими сайтами
    DocumentRoot “C:/Server/domains”
    # индексные файлы, по приоритету.

    DirectoryIndex index.php index.html index.htm index.shtml

    # папка для log-файлов
    ErrorLog “C:/Server/domains/logs/error.log”
    CustomLog “C:/Server/domains/logs/access.log”
    # добавим alias для phpMyAdmin, и поправим alias для cgi

    Alias /pma “C:/Server/domains/phpMyAdmin”
    ScriptAlias /cgi-bin/ “C:/Server/web/apache/cgi-bin/”

    # правим путь для cgi

    AllowOverride None
    Options None
    Require all granted

    # типы файлов


    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    # Другие конфиги:



    BrowserMatch "MSIE 10.0;" bad_DNT


    RequestHeader unset DNT env=bad_DNT

    На этом заканчивается настройка httpd.conf.
    В конфигурационном файле Apache httpd.conf были подключены дополнительные конфиги:
    Include conf/extra/httpd-mpm.conf
    Include conf/extra/httpd-autoindex.conf
    Include conf/extra/httpd-vhosts.conf
    Include conf/extra/httpd-manual.conf
    Include conf/extra/httpd-default.conf
    Откроем файл «C:\Server\web\apache\conf\extra\httpd-mpm.conf» и быстро пробежимся по нему.
    # указываем, где у нас будет храниться pid-файл:

    PidFile “C:/Server/web/apache/logs/httpd.pid”

    Остальные параметры оставляем без изменений. Откроем файл «httpd-autoindex.conf», изменим там только строки с путем:
    Alias /icons/ "c:/Server/web/apache/icons/"

    Options Indexes MultiViews
    AllowOverride None
    Require all granted

    Файл хостов Apache

    # на примере доменная localhost

    DocumentRoot "C:/Server/domains/localhost/public_html"
    ServerName localhost
    ErrorLog "C:/Server/domains/localhost/logs/error.log"
    CustomLog "C:/Server/domains/localhost/logs/access.log" common


    # добавим для будущего phpMyAdmin (не забываем создать папку)

    DocumentRoot "C:/Server/domains/phpmyadmin/public_html"
    ServerName localhost
    ErrorLog "C:/Server/domains/phpmyadmin/logs/error.log"
    CustomLog "C:/Server/domains/phpmyadmin/logs/access.log" common

    На этом редактирование файла заканчивается. Далее в оставшихся файлах правим только пути:
    Файл «httpd-manual.conf»:
    AliasMatch ^/manual(?:/(?:da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn))?(/.*)?$ "C:/Server/web/apache/manual$1"

    В файле «httpd-default.conf» никаких изменений не производиться. На этом настройка конфигурации Apache завершается.

    Настройка PHP

    Раз у нас Windows 8.1 x64 и Apache x64 установлен и настроен, то и php должно быть x64.
    Идем на сайт:

    и скачиваем архив php последней версии. Нам нужен php как модуль, т.е. для этого скачиваем Thread Safe. После того как архив скачался, открываем его и переносим содержимое в папку «C:\Server\web\php\». Создадим две пустые папки «tmp» и «upload». Далее в этой папке ищем файл «php.ini-development» и переименовываем его в «php.ini». Открываем файл в текстовом редакторе и изменяем директивы (комментирования строк в файле начинается с точки с запятой).

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

    short_open_tag = On
    zlib.output_compression = On
    post_max_size = 64M
    include_path = ".;С:\Server\web\php\includes"
    extension_dir = "C:/Server/web/php/ext"
    upload_tmp_dir = "C:/Server/web/php/upload"
    upload_max_filesize = 64M
    extension=php_bz2.dll
    extension=php_curl.dll
    extension=php_gd2.dll
    extension=php_mbstring.dll
    extension=php_mysql.dll
    extension=php_mysqli.dll
    extension=php_pdo_mysql.dll
    extension=php_sockets.dll
    extension=php_sqlite3.dll
    ; в секции указываем временную зону нашего сервера (http://php.net/date.timezone)
    date.timezone = "Asia/Yekaterinburg"
    session.save_path = "С:/Server/web/php/tmp/"


    На этом настройка php заканчивается.

    Настройка MySQL

    Ставим MySQL x64 как сокет под windows. Скачиваем архив с последней версией MySQL x64:
    dev.mysql.com/downloads/mysql
    В низу страницы находим Windows (x86, 64-bit), ZIP Archive и жмем на кнопку «Download». Вам перекинет на страницу регистрации на сайте. Нажимаем внизу страницы «No thanks, just start my download», запуститься скачивание архива MySQL. После того как скачался архив откроем его и перенесем все содержимое папки в «C:\Server\web\mysql\»
    Теперь открываем файл настроек MySQL – «C:\Server\web\mysql\my-default.ini». Удаляем все его содержимое и вносим туда свои данные.
    port=3306
    host=127.0.0.1
    port=3306
    bind-address=127.0.0.1
    enable-named-pipe
    basedir="C:/Server/web/mysql/"
    datadir="C:/Server/web/mysql/data/"
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    Вот и всё. В конфигурационном файле мы указали, что скрипты могут обращаться к серверу и по локальному IP, и по сокет-соединению.
    Осталось дело за малым. Добавим в системную переменную «PATH» пути к Apache и MySQL, для этого:
    1. Перетащите курсор мыши в правый нижний угол экрана
    2. Щелкните на значке «Поиск» и введите: панель управления
    3. Выберите System (Система)-> Advanced (Дополнительные параметры системы)
    4. Выберите Environment Variables (Переменные среды), в меню System Variables (Системные переменные), найдите переменную PATH и щелкните на ней.
    5. Пропишите пути к Apache и MySQL:
    ;C:\Server\web\apache\bin;C:\Server\web\mysql\bin
    Далее установим службы Apache и MySQL. Для этого воспользуемся сочетанием клавиш «Win+X», появиться выпадающее меню в левом нижнем углу. Выберем «Командная строка (администратор)».
    В командной строке вводим, для установки Apache:
    httpd –k install
    для установки MySQL:
    mysqld.exe --install MySQL --defaults-file=”C:\Server\web\mysql\my-default.ini”
    Установим пароль для MySQL-пользователя. Для этого запустим службу MySQL командой:
    NET start MySQL
    После того как служба запустилась, установим пароль:
    mysqladmin –u root password ВашПароль
    В файл «httpd-vhosts.conf» мы прописали два сайта, для того чтобы браузер мог их увидеть, названия сайтов нужно добавить в файла «hosts». Перейдем в папку:
    C:\Windows\System32\Drivers\etc\
    откроем файл «hosts» любым текстовым редактором (запустить от имени администратора) и в конец файла добавим:
    127.0.0.1 localhost
    127.0.0.1 phpmyadmin
    Сохраняем файл.
    Для удобства запуска и остановки служб Apache и MySQL создадим файлы start-server.bat и stop-server.bat.
    Для этого перейдем в папку «C:\Server\» и создадим два этих файла.
    Содержание «start-server.bat»:
    @echo off
    NET start Apache2.4
    NET start MySQL
    Содержание «stop-server.bat»:
    @echo off
    NET stop Apache2.4
    NET stop MySQL
    Настройка Apache, PHP и MySQL на этом закончена. Для того чтобы протестировать сервер, давайте в папке «C:\Server\domains\localhost\public_html» создадим файл «index.php» с содержимым:

    Далее запустим наш сервер, для этого запустите «start-server.bat» от имени администратора. После того как сервер запустился, откройте браузер и введите в адресной строке «localhost».
    Должна отобразиться страница с информацией о PHP.

    Ну что ж, мы поговорили достаточно о веб-сервере, пришло время его нам установить и опробовать в деле. Существует сформировавшийся перечень наиболее распространенных веб-серверов, при выборе во внимание принимаются конкретные задачи, под которые он разворачивается. Остановим наш выбор на бесплатном веб-сервере Apache. Считаю его идеальным для сайтов начального и среднего уровня. Конечно, можно пойти легким путем - установить готовый комбайн Denwer, как это делает большинство новичков, но в нашем случае помимо результата важны также и теоретические знания. А после сегодняшнего урока ваш скилл повысится однозначно:)

    Идем на страницу загрузки проекта - http://httpd.apache.org/download.cgi и качаем последнюю стабильную версию под Windows в виде MSI инсталлятора (в моем случае это был apache_2.2.14-win32-x86-no_ssl.msi). Начнем установку. Первый диалог, который может ввести нас в заблуждение - это диалог ввода информации о сервере:

    Конфигурировать наш сервер мы будем после установки, а сейчас давайте не будем особо париться и впишем в поля "Network Domain" и "Server Name" localhost, а в поле "Administrator"s Email Address" ваш адрес электронной почты (о том, что такое localhost, речь пойдет позже). Нижние переключатели не трогаем. Жмем "Next", соглашаемся с типичной установкой, еще раз "Next". Инсталлятор предложит выбрать директорию, в которую будет установлен веб-сервер:

    На мой взгляд, путь слишком длинный, давайте сократим его до C:\Program Files\Apache . Продолжаем установку, дожидаемся ее окончания. После закрытия инсталлятора в трее появится значок Apache монитора:

    Данная утилита позволяет запустить, остановить, перезапустить наш веб-сервер, узнать его статус. Сам же Apache установился у нас как сервис, который будет автоматически стартовать при загрузке компьютера:

    Теперь давайте вспоминать то, о чем мы беседовали в статье . Как вы помните, у каждого компьютера, подключенного к сети, есть свой IP-адрес. Но даже если ваш компьютер не имеет ни одного сетевого подключения, у него есть как минимум один внутренний IP-адрес. Этот адрес - 127.0.0.1 . На всех компьютерах он одинаковый и указывает на сам компьютер. То есть, если сетевому клиентскому приложению указать адрес сервера 127.0.0.1, то клиент будет пытаться подключиться к серверу, расположенному на вашем же компьютере. Далее мы говорили о доменных именах, которые преобразуются в IP-адреса DNS-серверами. У внутреннего адреса 127.0.0.1 есть свое внутреннее доменное имя - localhost . При этом для преобразования этого имени в адрес компьютеру не нужно обращаться к DNS-серверу, так как это соответствие заложено в самом компьютере.

    Давайте запустим веб-браузер и введем в адресную строку домен localhost:

    Я надеюсь, вы понимаете, что произошло? Домен localhost преобразовался в IP-адрес 127.0.0.1, веб-браузер подключился к веб-серверу по этому адресу и 80 порту и запросил главную страницу с помощью протокола HTTP. То есть наш веб-сервер работает, он отправил браузеру страничку с надписью "It works" ("работает").

    Приступим к настройке нашего веб-сервера, которая сводится к редактированию конфигурационных файлов Apache. Для начала необходимо обзавестись удобным, практичным и в то же время простым текстовым редактором. Если у вас такой уже есть - мои поздравления, если же вы несчастный пользователь Блокнота, могу предложить редактор . Перейдите в папку C:\Program Files\Apache\conf и переименуйте файл httpd.conf в httpd.conf.bak , чтобы в случае чего иметь под рукой начальную конфигурацию. Создайте новый файл httpd.conf со следующим содержимым:

    ServerRoot "C:/Program Files/Apache" Listen 80 LoadModule actions_module modules/mod_actions.so LoadModule alias_module modules/mod_alias.so LoadModule asis_module modules/mod_asis.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule cgi_module modules/mod_cgi.so LoadModule dir_module modules/mod_dir.so LoadModule env_module modules/mod_env.so LoadModule include_module modules/mod_include.so LoadModule isapi_module modules/mod_isapi.so LoadModule log_config_module modules/mod_log_config.so LoadModule mime_module modules/mod_mime.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule setenvif_module modules/mod_setenvif.so ServerName localhost AccessFileName .htaccess ServerTokens prod LogLevel error ErrorLog "logs/error.log" DefaultType text/plain AddDefaultCharset UTF-8 DirectoryIndex index.html Order allow,deny Deny from all Satisfy All TypesConfig conf/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz LogFormat "\nclient=%h\ntime=%{%d.%m.%Y %H:%M:%S}t\npage=%U%q\nreferer=%{Referer}i\nreqmethod=%m\nhost=%{Host}i\nagent=%{User-agent}i\n\n" mylog

    Разбираемся. ServerRoot - путь, куда установлен наш веб-сервер. Обратите внимание на слеши. Listern - указывается номер порта, который будет "слушать" веб-сервер, а также, если необходимо, IP-адрес (если у вашего компьютера несколько подключений и нужно принимать соединения только по одному из них). Мы указали порт 80, который является стандартным для веб-серверов. LoadModule загружает модуль веб-сервера, модули позволяют получить дополнительные возможности. В нашем конфигурационном файле прописан перечень стандартных модулей. AddDefaultCharset - кодировка по умолчанию, выставили юникод (UTF-8). Остальное пока нас мало волнует.

    А теперь самое главное. Не забыли, для чего устанавливаем веб-сервер? Правильно, для работы над нашими будущими сайтами. Существует понятие корневой каталог - это каталог, где расположен контент сайта, то есть файлы, из которых он состоит. По умолчанию в нашем Apache корневым каталогом является каталог . Перейдя туда вы обнаружите там единственный файл под именем index.html . Это тот самый файл, который содержит главную страницу с надписью "It works" по адресу http://localhost . Дело в том, что если в запросе (который, кстати, называется url) отсутствует имя файла, то веб-сервер ищет файл с одним из стандартных имен. Эти имена (точнее, одно имя - index.html ) прописаны у нас в конфигурационном файле:

    DirectoryIndex index.html

    Таким образом, при запросе http://localhost веб-сервер будет искать файл C:\Program Files\Apache\htdocs\index.html , при запросе http://localhost/docs - C:\Program Files\Apache\htdocs\docs\index.html (в том случае, если docs - папка), при запросе http://localhost/news.html - C:\Program Files\Apache\htdocs\news.html и так далее.

    При веб-строительстве удобно иметь не один, а, скажем, три локальных (находящихся на локальной машине) домена, на которых можно независимо тестировать ваши сайты. Apache позволяет обслуживать несколько сайтов, то есть вам не придется для каждого домена устанавливать свою копию веб-сервера (к тому же, мы помним, что на компьютере может работать только одно серверное приложение на определенном порту). Несколько доменных имен могут ссылаться на один и тот-же IP-адрес. Apache, в свою очередь, может в зависимости от доменного имени, переданного в HTTP-запросе (вспоминаем параметр Host, статья "Принципы функционирования веб-сервера"), искать файлы в определенном корневом каталоге. Такая технология называется "виртуальный хост" .

    Итак, localhost соответствует адресу 127.0.0.1, давайте создадим еще три внутренних домена test-domain1, test-domain2 и test-domain3, которые будут соответствовать этому же адресу. Откройте в текстовом редакторе файл C:\WINDOWS\system32\drivers\etc\hosts . В этом файле можно задать соответствия доменных имен и IP-адресов. Здесь же мы обнаружим то самое соответствие localhost адресу 127.0.0.1. Добавьте в конец файла строки:

    127.0.0.1 test-domain1 127.0.0.1 test-domain2 127.0.0.1 test-domain3

    Перед обращением к DNS-серверу соответствие ищется в этом файле, и, если удачно, обращение отменяется и используется найденный адрес.

    Следующим шагом необходимо каждому доменному имени создать свой корневой каталог и сказать об этом нашему веб-серверу. Удаляем в папке C:\Program Files\Apache\htdocs файл index.html и создаем там три папки: test-domain1 , test-domain2 и test-domain3 , в каждой из этих папок папку log - для логов и папку www - собственно, корневой каталог для домена. В конце файла C:\Program Files\Apache\conf\httpd.conf дописываем следующее:

    NameVirtualHost *:80 ServerName test-domain1 DocumentRoot "C:/Program Files/Apache/htdocs/test-domain1/www" ErrorLog "C:/Program Files/Apache/htdocs/test-domain1/log/error.log" CustomLog "C:/Program Files/Apache/htdocs/test-domain1/log/access.log" mylog ServerName test-domain2 DocumentRoot "C:/Program Files/Apache/htdocs/test-domain2/www" ErrorLog "C:/Program Files/Apache/htdocs/test-domain2/log/error.log" CustomLog "C:/Program Files/Apache/htdocs/test-domain2/log/access.log" mylog AllowOverride All Options -Indexes ServerName test-domain3 DocumentRoot "C:/Program Files/Apache/htdocs/test-domain3/www" ErrorLog "C:/Program Files/Apache/htdocs/test-domain3/log/error.log" CustomLog "C:/Program Files/Apache/htdocs/test-domain3/log/access.log" mylog AllowOverride All Options -Indexes

    Три блока VirtualHost описывают наши три виртуальных хоста. Каждому задается свой корневой каталог - DocumentRoot , путь к логу ошибок - ErrorLog и логу доступа - CustomLog .

    В корневом каталоге каждого домена создайте по файлу index.html с содержимым "Hello from test-domain1", "Hello from test-domain2" и ""Hello from test-domain3". Чтобы изменения в конфигурации вступили в силу, необходимо перезапустить Apache (левой кнопкой мыши по значку Apache монитора -> Restart). Если ошибок не было допущено, должно все работать:

    Поздравляю, теперь у вас есть настроенный веб-сервер с тремя локальными хостами. Раздолье для веб-мастера:) Самое время приступить к изучению основ веб-строительства.