Установка Apache + PHP + MySQL на Windows

Установим так сказать базовый пакет -разработчика на локальную машину под управлением Microsoft . Не станем использовать готовые сборки наподобие Denwer, XAMP, OpenServer и им подобных и будем устанавливать всё вручную и по отдельности.

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

Web сервер

Далее ставим Apache. Сделать это можно либо через инсталятор, либо просто скопировать в какую-нибудь папку данные из архива. Во втором случае всё конфигурировть придётся руками. Для начала нужно будет установить Apache как службу. Делается это через командую строку (консоль) Windows. Запускаем её от имени администратора и пишем следующее:

httpd.exe -k install

Вызывать эту команду надо естественно из папки где непосредственно находится файл httpd.exe, или же писать полный путь к нему, ну в общем здесь я думаю всё понятно. После чего служба Apache установится и можно продолжить. Если возникнут ошибки то внимательно читайте их и выполняйте все требования. Помимо чтения информации в окне консоли рекомендую заглядывать в логи, которые находятся в папке с сервером в директории logs.

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

Описание виртуальных хостов (сайтов) описывается обычно в файле «conf/extra/httpd-vhosts.conf». Не забываем подключить этот файл в главном файле «httpd.conf», что бы работали как положено виртуальные хосты. Иначе будет выводится просто надпись «It works!» Подключение данного файла уже есть в httpd.conf, но строку подключения надо разкомментировать.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

PHP

Теперь таким же образом разархивируем PHP файлы в какую-нибудь папку для дальнейшей работы. В этой папке не забудьте посмотреть, что бы был файл конфигурации php, который так и называется php.ini. Он обычно всегда лежит в корне а к его расширению дописаны слова. Таких файлов там может быть два. Вам надо взять один из них и переименовать (убрать дополнительное слово в расширении) так, что бы у вас получился файл php.ini в корне папки PHP файлов. Когда папка PHP создана открываем конфигурационный файл сервера Apache, который называется httpd.conf и для подключения к нему модуля PHP дописываем туда следующие строки:

LoadModule php5_module "C:/Program Files (x86)/PHP/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/Program Files (x86)/PHP"

Лично в моём случае это выглядело так:

LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/Program Files/PHP"

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

После чего сохраняем, закрываем и перезагружаем сервер. Первой строкой мы подключаем сам PHP, т.е. загружаем модуль, точно так же как подключаются и все остальные модули Apache. Название его может быть разным, в данном случае php5apache2_4.dll это для Apache2.4, если же у вас другая версия то подключайте другой файл для вашей версии сервера Apache. Такие файлы должны лежать в корне папки PHP, если там нет нужного файла то значит ваша версия PHP и Apache не совместимы и стоит подобрать (скачать) другие. Внимательно следите за путями к файлам, у вас они будут, естественно, свои, поэтому не забудьте поменять. Второй строкой мы добавляем заголовок php для файлов, т.е. говорим Апачу, что бы он открывал файлы с расширениями .php этим самым модулем PHP. Третий строкой мы указываем расположение файла конфигурации самого PHP.

Все дальнейшие конфигурации с php делаем в его файле настроек, который так и называется, php.ini. Для Апача все настройки хранятся в httpd.conf.

Кусок конфигурационного файла php.ini

 Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.
;
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
;extension=php_.dll
;extension=php_mysqli.dll
;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll

Здесь мы видим, что все подключения динамических библиотек расширений PHP закомментированы символом ; (точка с запятой) т.е. они не подключаются. Что бы их подключить просто убираем точку с запятой там где это необходимо и сохраняем файл конфигурации. Таким образом для работы с СУБД MySQL необходимо что бы эта строка выглядела так:

extension=php_mysql.dll

Для более детальной настройки PHP в файл php.ini необходимо внести несколько изменений:

  • Найти опцию extension_dir (директория расширений php) и изменить путь к папке ext (именно в этой папке располагаются все расширения php) в соответствии с путем установки PHP. Выглядит это примерно так: extension_dir = «c:\program files\php\ext»
  • Найти опцию upload_tmp_dir (временная директория загружаемых файлов). Здесь надо указать путь к временной папке, к примеру так: c:\windows\temp. Всё вместе: upload_tmp_dir = «c:\windows\temp»
  • Найти опцию session.save_path (папка хранения файлов сессий). Здесь также требуется указать какой-нибудь путь, например так: session.save_path = «c:\windows\temp»
  • Перейдите к разделу Dynamic Extensions (динамический расширения). Тут необходимо раскомментировать строки (убрать ; в начале), соответствующие модулям PHP, которые вам нужны для работы.

СУБД MySQL

Далее просто ставим сервер MySQL и всё должно работать. Что бы PHP мог работать с MySQL проследите, что бы в его конфигурационном файле было подключено расширение mysql, оно так вроде и называется. Тоже самое касается и других СУБД относительно PHP. Эти расширения идут в комплекте с самим PHP в папке ext т.к. они очень нужные всем. Недостающие расширения всегда можно скачать на официальном сайте PHP из репозитория PECL.

Для подключения к СУБД МySQL при помощи PHP, с сервера установленного на той же машине, необходимо в качестве адреса сервера баз данных MySQL вместо localhost использовать именно локальный адрес 127.0.0.1 иначе PHP не будет подключаться к MySQL.

phpMyAdmin

phpMyAdmin это вообще обычный сайт и поэтому там ничего сложного нет. Просто в общей папке всех сайтов создаёте отельный сайт и в него копируете файлы phpMyAdmin. Для создания виртуальных хостов (сайтов) редактируйте файл httpd-vhosts.conf, который находится в папке extra в каталоге с сервером Apache. Так же не забудьте посмотреть, что бы этот файл был подключен в основном файле httpd.conf т.к. по умолчанию его подключение закомментировано. Должно выглядеть так:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

К слову сказать подбие этого файла в Apache2 для UNIX подобных ОС представляет собой отдельную директорию под названием sites-enabled в которой располагаются файлы виртуальных хостов для сайтов. Так вот, вернёмся к Windows и файлу httpd-vhosts.conf, я создал себе 2 виртуальных хоста и у меня файл httpd-vhosts.conf выглядит примерно так:

# Virtualhosts BEGIN
# Установка глобальных настроек для папки sites в которой находятся все сайты
<Directory "e:/webserver/sites">
AllowOverride All
Options None
Order allow,deny
Allow from all
</Directory>

# Create new virtualhost for site localdomain.loc
<VirtualHost *:80>
ServerAdmin admin@localdomain.loc
DocumentRoot "e:/webserver/sites/localdomain.loc/www"
ServerName localdomain.loc
ServerAlias www.localdomain.loc
ErrorLog "e:/webserver/sites/localdomain.loc/logs/.log"
CustomLog "e:/webserver/sites/localdomain.loc/logs/access.log" common
</VirtualHost>

# Virtualhost for phpmyadmin
<VirtualHost *:80>
DocumentRoot "e:/webserver/sites/phpmyadmin/www"
ServerName phpmyadmin
ServerAlias www.phpmyadmin
ErrorLog "e:/webserver/sites/phpmyadmin/logs/.log"
CustomLog "e:/webserver/sites/phpmyadmin/logs/access.log" common
</VirtualHost>
# Virtualhosts END

Как видно все сайты у меня лежат в директории e:/webserver/sites. Там созданы папки сайтов и в каждой папке ещё по 2 папки: www, там располагаются все файлы текущего сайта и папка logs, где находятся логи сервера для текущего сайта.

В заключении

Все необходимые модули для php подключаются в файле конфигурации php.ini и располагаются в папке ext директории PHP. Возможно придется настраивать доступ к этой папке в директиве extension_dir в главном файле конфигурации PHP.

Для сервера Apache так же может понадобится настройка директив ServerName, DocumentRoot и ServerRoot. Для первой достаточно просто написать localhost:80 или localhost, для второй и третьей надо указать полный путь до папки с сервером Apache. Выглядеть это может примерно следующим образом:

# Указываем "корень сервера" т.е. фактическое расположение самого сервера apache
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"
...
# Тут пишем "имя сервера и сетевой порт" можно написать DNS имя или IP адрес, в данном случае просто локальный хост
ServerName localhost:80
...
# Здесь задаём "корень документа" т.е. стандартную коренную папку для всех веб документов (веб сайтов), естественно в дальнейшем легче определять сайты отдельно через файл vhosts 
DocumentRoot "d:/webserver/server/apache/htdocs"

Для открытия по умолчанию файлов index.php как главных файлов сайтов так же рекомендую дописать следующим образом директиву DirectoryIndex всё в том же конфигурационном файле Apache:

<IfModule dir_module>
    DirectoryIndex index.html index.php index.htm
</IfModule>

Эти настройки управляют работой модуля Apache под названием dir_module. Он по умолчанию подгружается, но всё же стоит проверить это. Все подключения модулей прописаны в том же файле конфигурации сервера.

Логи и события ОС

Всегда следите за логами и если, что то не работает исправляйте по мере необходимости. Для большей понятности хочу подчеркнуть, что сервер Apache и СУБД MySQL в Microsoft Windows являются службами, которые работают в фоновом режиме, поэтому и управлять ими надо как службами. В тоже  время PHP просто консольная программа работающая когда её вызывают. В Unix подобных ОС всё точно так же только Апач и MySQL там являются демонами (от англ. daemon).

Так же на этапе настроек вам могут понадобится журналы событий операционной системы MS Windows. Туда записываются все ошибки в процессе запуска службы Apache сервера. Посмотреть эти журналы можно по следующему адресу Пуск -> Панель управления -> Производительность и обслуживание (вид по категориям) или Администрирование (классический вид) -> Просмотр событий. Или просто сразу откройте консоль MMC, содержащую оснастку просмотра событий. В дереве консоли разверните узел Окно просмотра событий и выберите журнал, событие из которого требуется просмотреть, в данном случае «Приложение». События программ и сервисов записываются в журнал «Приложение». Там легко сориентироваться и понять в чём проблема.

Работа с локальными сайтами, файл hosts

Перед работой всегда запускайте службы Apache и MySQL. Если вы работаете с локальными сайтами то для того, что бы попадать именно на них нужно перенаправлять http запросы на локальный сервер. Делается это при помощи файла hosts, которой представляет из себя как локальный DNS сервер. При обращении к внешним DNS операционная система всегда в первую очередь смотрит правила прописанные в hosts и если там ничего подходящего нет, то запрос отправляется в сеть. Файл находится по адресу: c:\WINDOWS\system32\drivers\etc\. Открываем его любым текстовым редактором и в конец дописываем туда свои локальные сайты. В моём случае файл выглядит примерно следующим образом:

127.0.0.1       localdomain.loc
127.0.0.1       phpmyadmin

127.0.0.1 это адрес локальной машины, т.е. вашего компьютера. Таким образом при наборе адреса сайта localdomain.loc запрос будет направляться на локальную машину где его будет принимать веб сервер Apache и в зависимости от своих правил виртуальных хостов будет отдавать необходимые страницы сайта.

Так же не забывайте правильно конфигурировать ваш web сервер после первоначальной настройки. А именно включите все нужные вам модули Apache во всё том же файле конфигурации. В частности включите, так всем нужный, mod_rewrite просто раскомментировав (убрав знак # перед строкой подключения модуля) строку.

Удаление веб сервера

Для удаления Apache надо удалить саму службу Apache и папку. Для удаления PHP достаточно удалить только папку. Для удаления СУБД MySQL воспользуйтесь встроенными утилитами для удаления программ в ОС.

На этом всё, спасибо за внимание.

Обучающие видео по теме.

Поделиться!
Tags: , , , , , , , , , , , , , , , , ,

49.79MB | MySQL:54 | 0,357sec