Skip to content

8 Ноябрь 2011

207

Windows Apache + PHP + Настройка

windows-apache

Установить апач и пхп? Разве кто-то еще не умеет это делать? Это задача для школоло!  :neutral: Так то оно так…но каждый раз, если вдруг нужно установить все это добро по windows — я иду к гуглу, иначе придется задумываться над тем что делаешь, так как нюансы все-таки есть.  :roll:

Повествование будет у учетом того, что вы не новичок. Разжовывательных статей хватает и без этой :smile:  Я пишу просто краткий мануал, с разбором основных проблем.

:!: Скачать Apache:

http://httpd.apache.org/download.cgi

:!: Скачать PHP:

http://windows.php.net/download/

:!: Установка Apache:

  • Network Domain — localhost
  • Server Name — localhost
  • Email — admin@localhost

:!: Установка PHP:

  • Устанавливаем PHP как модуль к Apache
  • Выбираем папку с конфигом Apache, у меня это C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\

:!: Настройка:

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

  • D:\www — папка для сайтов
  • D:\www\site.ru — общая папка для сайта, его логов и прочего хлама
  • D:\www\site.ru\htdocs — непосредственно корень сайта, тут уже исполняемые .php или .html файлы.
:!:
  1. Переходим в папку с конфигом апача (C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\), открываем httpd.conf на редактирование. Переходим в конец файла. Итак, первый баг винды — переменные PHPIniDir и LoadModule php5_module на некоторых wondows распознаются неправильно! Проверьте, чтобы они были заданы именно так:
    PHPIniDir "C:\\Program Files (x86)\\PHP\\php.ini"
    LoadModule php5_module "C:\\Program Files (x86)\\PHP\\php5apache2_2.dll"
  2. Раскомментируем строку:
    #Include conf/extra/httpd-vhosts.conf
  3. Найдем код:
    <Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>

    После него добавим:

    <Directory "D:/www">
        AllowOverride All
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>
  4.  Раскомментируем строку:
    #LoadModule rewrite_module modules/mod_rewrite.so
  5. Найдем строку:
    DirectoryIndex index.html

    Заменим ее на:

    DirectoryIndex index.html index.php
  6.  Открываем следующий конфигурационный файл: C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf
  7. Стираем все виртуальные хосты и создаем 2 новых, по такому шаблону:
    <VirtualHost *:80>
    	DocumentRoot "D:/www/default/htdocs"
    	ErrorLog "D:/www/default/error.log"
    	CustomLog "D:/www/default/access.log" common
    </VirtualHost>
    
    <VirtualHost *:80>
    	ServerName site.ru
    	DocumentRoot "D:/www/site.ru/htdocs"
    	ErrorLog "D:/www/site.ru/error.log"
    	CustomLog "D:/www/site.ru/access.log" common
    </VirtualHost>
  8. В ../default/htdocs кладем index.html, примерно с таким содержимым:
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset='utf-8'>
      </head>
    <div style="text-align: center; font-size: 72px; font-weight: bolder; margin-top: 50px">
    It Works!
    </div>
    </html>
  9. В ../site.ru/htdocs кладем index.php со следующим содержимым:
    <?php
    phpinfo();
    ?>
  10. Открываем 80 и 443 порт на фаерволе, для апача.
  11. Перезапускаем службу apache и держим кулачки чтобы все заработало. Если служба отказывается перезапускаться:
    • Еще раз обращаем внимание на пункт 1
    • Открываем на редактирование C:\Program Files (x86)\PHP\php.ini, спускаемся вниз, видим строчки с подключением расширений:
      [PHP_BZ2]
      extension=php_bz2.dll
      [PHP_CURL]
      extension=php_curl.dll
      ...
      ...

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

  12. Заходим на сайт site.ru и смотрим что получилось. Если вы видите информацию о установленной версии php- значит все прошло успешно. Если видите текст:
    <?php
    phpinfo();
    ?>

    значит php не присосался к апачу. Обратите внимание на пункт 1 и попробуйте переустановить php и заново провести все настройки. Если не видите вообще ничего — значит не работает apache. Пробуйте установить все заново.

 

:?:  Ну и напоследок хочу сообщить, что IIS + PHP (fast CGI) работает  МЕДЛЕННЕЕ чем Apache + PHP, не смотря на то, что Apache изначально не Windows-like. Можно читать много холиваров на эту тему, но я убедился в этом на своем личном опыте. Вроде бы ставить Apache на Windows Server с бесплатным IIS — извращение…я тоже так думал, пока ради интереса не попробовал Apache.

Обсуждение закрыто.