Как настроить php для apache windows

Установка для веб-сервера Apache 2.x в системах Windows

Раздел содержит примечания и подсказки, которые касаются установки PHP
для веб-сервера Apache 2.x в системах Microsoft Windows.

Замечание:

Сначала лучше прочитать пошаговую инструкцию
по ручной установке PHP.

Прежде чем продолжить чтение руководства, разработчики PHP настаивают на знакомстве
» с документацией к веб-серверу Apache,
чтобы получить базовое представление о сервере Apache 2.x,
и » примечаниями, которые касаются
установки веб-сервера Apache 2.x в системы Windows.

Загрузите последнюю версию веб-сервера
» Apache 2.x
и совместимую версию PHP. Следуйте
пошаговой инструкции по ручной установке PHP
и возвращайтесь, чтобы продолжить интеграцию PHP и Apache.

Для работы с веб-сервером Apache 2.x в операционных системах Windows
двоичные файлы PHP настраивают тремя способами. PHP запускают как обработчик —
Apache-модуль, через который веб-сервер обрабатывает файлы с PHP-кодом,
как CGI-программу или программу, которая работает через FastCGI-интерфейс.

Замечание:

Обратите внимание:
при указании путей в конфигурационных файлах веб-сервера Apache, который работает под ОС Windows,
обратные слеши в путях наподобие c:\directory\file.ext требуется заменить прямыми:
c:/directory/file.ext. Для путей с директориями также иногда требуется слеш в конце.

Установка PHP как Apache-обработчика PHP-файлов

Замечание:

При работе через обработчик apache2handler, который обслуживает запросы к SAPI-интерфейсу,
устанавливают потокобезопасные версии PHP (англ. TS, Thread Safe).

В файл конфигурации веб-сервера Apache httpd.conf вставляют
следующие строки, чтобы загрузить PHP-модуль для Apache 2.x:

Пример #1
Пример конфигурации для обработки PHP-файлов
модулем PHP в составе веб-сервера Apache 2.x

# До PHP 8.0.0 модуль назывался php7_module
LoadModule php_module "c:/php/php8apache2_4.dll"
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
# Настраиваем путь к файлу php.ini
PHPIniDir "C:/php"

Замечание:

В приведённых примерах вместо пути C:/php/
подставляют фактический путь к PHP. Убедитесь, что файл,
который указали в директиве LoadModule, лежит в заданном месте.
Для PHP 7 указывают файл php7apache2_4.dll
или файл php8apache2_4.dll для PHP 8.

Запуск PHP как CGI-программы

» Документация Apache к CGI-интерфейсу
даёт более полное понимание о запуске CGI-скриптов на веб-сервере Apache.

PHP-файлы, которые запускаются как CGI-скрипты, располагают в каталоге,
который через директиву ScriptAlias назначали как каталог CGI-скриптов,
чтобы запускать PHP-скрипты как программу, которая работает по протоколу CGI.

В PHP-файлы потребуется поместить строку #!,
которая указывает на расположение двоичного файла PHP:

Пример #2
Пример расположения двоичного файла PHP
и взаимодействие с веб-сервером Apache 2.x через CGI-интерфейс

#!C:/php/php.exe
<?php

phpinfo();

?>

Внимание

Сервер, который развернули в режиме CGI, открывается для ряда возможных уязвимостей.
Пожалуйста, прочитайте раздел «
О безопасности PHP в режиме CGI-программы
», который объясняет, как защититься от таких атак.

Запуск PHP для работы по протоколу FastCGI

Запуск программ на языке PHP в режиме FastCGI даёт ряд преимуществ
перед запуском PHP-программ в режиме CGI.
Настройка этого способа несложная:

Скачайте модуль mod_fcgid с сайта
» https://www.apachelounge.com.
Бинарные файлы Win32 доступны для загрузки с этого сайта. Установите модуль
по инструкции, которая идёт с файлами.

Настройте веб-сервер как в следующем примере, и внимательно
измените пути так, чтобы они соответствовали
установке веб-сервера в конкретной системе:

Пример #3 Настройка Apache для запуска PHP как FastCGI

LoadModule fcgid_module modules/mod_fcgid.so
# Где лежит файл php.ini?
FcgidInitialEnv PHPRC        "c:/php"
<FilesMatch \.php$>
    SetHandler fcgid-script
</FilesMatch>
FcgidWrapper "c:/php/php-cgi.exe" .php

Теперь файлы с расширением .php будет исполнять FastCGI-обёртка PHP.

Нашли ошибку?

wolfeh1994 at yahoo dot com

11 years ago

Please for the love of god, download the threaded version. I spent over an hour trying to figure out why php5apache2.dll could not be found, and while desperately looking through manuals I went into the php 5 structure and found that it doesn't exist in the non-threaded version.

This really could use a mention somewhere other than the PHP 5 structure, like the paragraph to the left of the homepage which talks about which PHP version to choose, or this part of the manual which covers Apache... Anywhere but structure, seriously. I would have never guessed to look there.

a user

9 years ago

If you are having issues getting the PHPIniDir or LoadModule directives to work and all the suggestions already given do not help, double-check if you are not using fancy quotes around your paths (‘ ’ “ ”).

This happened to me because I copied the statements from a random website. In my text editor the difference was barely noticeable, but to Apache it certainly is!

For example, this will not work:
PHPIniDir “C:/PHP7”

But this will work:
PHPIniDir "C:/PHP7"

a solution for simpletons like me

13 years ago

Installing Apache and PHP on Windows 7 Home Premium on a Gateway NV75S laptop with a quad AMD A6-3400M

All I need to do with these programs is to test my website out on my laptop. I have HTML and PHP files. I do not need MySQL as I use html5 storage.

Getting and installing Apache

1 In your browser go to h t t p : / / h t t p d . a p a c h e . o r g / d o w n l o a d . c g i
(without the spaces)
2 Click on httpd-2.2.22-win32-x86-no_ssl.msi
(this is a self-installing executable file without crypto ... no Secure Socket Layer)
(2.2.22 was the latest version on April 25, 2012)
3 Click on the httpd-2.2.22-win32-x86-no_ssl.msi file after it downloads
(single click on the file tab in Chrome or double click on the actual file in Downloads)
4 Click Next
5 Click I accept the terms in the license agreement
6 Click Next
7 Click Next
8 Type localhost in the top box
9 Type localhost in the middle box
10 Type admin@localhost.com in the bottom box
11 Click Next
12 Click Next
13 Click Next
14 Click Install and wait
15 Cick Yes to allow the program to make changes
16 Click Finish

Testing Apache

1 Type localhost in your browser location box (I use Chrome) or type h t t p : / / l o c a l h o s t
(without the spaces)
2 The message It works! should appear.

Getting and installing PHP

1 In your browser go to h t t p : / / w i n d o w s . p h p . n e t / d o w n l o a d /
(without the spaces)
2 Click on the Installer link under PHP 5.3 (5.3.10) VC9 x86 Thread Safe
(Ignore the Do NOT use VC9 version with apache.org binaries comment on the side panel)
3 Click on the php-5.3.10-Win32-VC9-x86.msi file after in downloads
(single click on the file tab in Chrome or double click on the actual file in Downloads)
4 Click Next
5 Click I accept the terms in the License Agreement
6 Click Next
7 Click Next
8 Click Apache 2.2.x Module
9 Click Next
10 Click Browse
11 Double click Apache Software Foundation
12 Double click Apache 2.2
13 Double click conf
14 Click OK
15 Click Next
16 Click Next
17 Click Install and wait
18 Cick Yes to allow the program to make changes
19 Click Finish

Testing PHP with Apache

1 Open Notepad
2 Type 'left bracket character'?php phpinfo(); ?'right bracket character'
3 Save the file to C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs as test.php
4 Type localhost/test.php in your browser location box (I use Chrome) or type h t t p : / / l o c a l h o s t / t e s t . p h p
5 A table with title PHP Version ... should appear

DONE

farinspace

14 years ago

Running PHP under FastCGI:

Besides the following in your httpd.conf

LoadModule fcgid_module modules/mod_fcgid.so
FcgidInitialEnv PHPRC "c:/php"
AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php

Remember to add the following to the default <Directory "C:/apache/htdocs"> block (or virtual host blocks):

Options ExecCGI

horica78 at yahoo dot com

11 months ago

This for the fastest architecture of Apache on Windows faster than as module for php

Enable mod_proxy and mod_proxy_fcgi in httpd.conf and run
setx PHP_FCGI_CHILDREN "15" /m
setx PHP_FCGI_MAX_REQUESTS "1000" /m
and download
RunHiddenConsole.exe and start php with c:\hidden\RunHiddenConsole.exe C:\PHP\php-cgi.exe -b 127.0.0.1:9000 and set on VirtualHost :
<Files ~ "\.(php|phtml)$">
SetHandler "proxy:fcgi://127.0.0.1:9000#"
ProxyFCGIBackendType GENERIC
ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "C:%{reqenv:SCRIPT_FILENAME}"
</Files>
retar the Apache service and have fun. Cheers from one huge fan of

Последнее обновление: 25.11.2023

Для работы с PHP нам потребуется веб-сервер. Обычно в связке с PHP применяется веб-сервер Apache. Официальный
сайт проекта — https://httpd.apache.org/. Там же можно найти всю подробную информацию о релизах, скачать исходный код.
Однако официальный сайт не предоставляет готовых сборок для ОС Windows.

Перед установкой Apache следует отметить, что если наша ОС Windows, то в системе должны быть установлен пакет для C++, который можно найти по адресу
для 64-битной и для 32-битной.

Итак, если нашей ОС является Windows, перейдем на сайт http://www.apachelounge.com/, который предоставляет дистрибутивы Apache для Windows:

Загрузка веб-сервера Apache

В разделе Apache 2.4 binaries VS17 выберем последнюю версию дистрибутива сервера. На странице загрузок мы можем
найти две версии пакета Apache — для 64-битных систем и для 32-битных.

После загрузки пакета Apache распакуем загруженный архив. В нем найдем папку непосредственно с файлами веб-сервера — каталог Apache24.
Переместим данный каталог на диск C, чтобы полный путь к каталогу составлял C:/Apache24.

Запуск Apache

В распакованном архиве в папке bin найдем файл httpd.exe

Запуск веб-сервера Apache

Это исполняемый файл сервера. Запустим его. Нам должна открыться следующая консоль:

веб-сервер Apache httpd.exe

Пока работает это приложение, мы можем обращаться к серверу. Для его тестирования введем в веб-браузере адрес
http://localhost. После этого веб-браузер должен отобразить следующую страницу:

it works в веб-сервере Apache

Эта страница символизирует, что наш веб-сервер работает, и мы можем с ним работать.

Конфигурация веб-сервера

Теперь проведем конфигурацию сервера, чтобы связать его с ранее установленным интерпретатором PHP.. Для этого найдем в папке веб-сервера
в каталоге conf (то есть C:\Apache24\conf ) файл httpd.conf

конфигурация веб-сервера Apache и связь с PHP

Откроем этот файл в текстовом редакторе. httpd.conf настраивает поведение веб-сервера.
Мы не будем подобно затрагивать его описания, а только лишь произведем небольшие изменения, которые потребуются нам для работы с PHP.

Прежде всего подключим PHP. Для этого нам надо подключить модуль php, предназначенный для работы с apache. В частности, в папке
php мы можем найти файл php8apache2_4.dll:

php8apache2_4.dll и веб-сервер Apache и связь с PHP

Для подключения php найдем в файле httpd.conf конец блока загрузки модулей LoadModule

//......................
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule watchdog_module modules/mod_watchdog.so
#LoadModule xml2enc_module modules/mod_xml2enc.so

И в конце этого блока добавим строчки

LoadModule php_module "C:/php/php8apache2_4.dll"
PHPIniDir "C:/php"

Далее укажем место, где у нас будут храниться сайты. Для этого создадим, например, на диске С каталог localhost. Затем найдем в файле httpd.conf
строку

DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">

По умолчанию в качестве хранилища документов используется каталог «c:/Apache24/htdocs». Заменим эту строку на следующую:

DocumentRoot "c:/localhost"
<Directory "c:/localhost">

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

ErrorLog "logs/error.log"

И заменим ее на

ErrorLog "c:/localhost/error.log"

Далее найдем строку

CustomLog "logs/access.log" common

И заменим ее на

CustomLog "c:/localhost/access.log" common

Таким образом, файл error.log, в который записываются ошибки, и файл access.log, в который заносятся все
данные о посещении веб-сайта, будут располагаться в папке c:/localhost.

Затем найдем строчку:

#ServerName www.example.com:80

И заменим ее на

ServerName localhost

Далее найдем блок <IfModule mime_module>:

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig conf/mime.types

И под строкой <IfModule mime_module> добавим две строчки:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

То есть должно получиться:

<IfModule mime_module>
	AddType application/x-httpd-php .php
	AddType application/x-httpd-php-source .phps
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig conf/mime.types

В данном случае мы добавили поддержку для файлов с расширением .php и .phps.

И в конце найдем блок <IfModule dir_module>:

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

И заменим его на следующий:

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

В данном случае мы определяем файлы, которые будут выполняться при обращении к корню файла или каталога. То есть по сути определяем главные страницы
веб-сайта: index.html и index.php.

Это минимально необходимая конфигурация, которая нужна для работы с PHP.

Теперь наша задача — убедиться, что php подключен и работает правильно. Для этого перейдем в папку c:/localhost, которую мы создали для хранения
файлов веб-сервера, и добавим в нее обычный текстовый файл. Переименуем его в index.php и внесем в него следующее содержание:

<?php
phpinfo();
?>

В данном случае мы создали простейший скрипт, который выводит общую информацию о PHP.

Теперь заново запустим файл httpd.exe и обратимся к этому скрипту, набрав в строке браузера
адрес http://localhost/index.php

phpinfo

Что тут произошло? При обращении к сайту на локальной машине в качестве адреса указывается http://localhost.
Затем указывается имя ресурса, к которому идет обращение. В данном случае в качестве ресурса используется файл
index.php. И так как в файле httpd.conf в качестве хранилища документов веб-сервера указан каталог C:\localhost, то именно в этом каталоге и будет
веб-сервер будет производить поиск нужных файлов.

И поскольку выше при конфигурировании мы указали, что в качестве главной страницы может использоваться файл index.php, то мы можем также обратиться к
этому ресурсу просто http://localhost/

Таким образом, теперь мы можем создавать свои сайты на php.

Установка веб-сервера в качестве службы

Если мы часто работаем с веб-сервером, в том числе для программиррования на PHP, то постоянно запускать таким образом сервер,
может быть утомительно. И в качестве альтернативы мы можем установить Apache в качестве службы Windows.
Для этого запустим командную строку Windows от имени администратора и установим Apache в качестве службы с помощью команды:

C:\Apache24\bin\httpd.exe -k install

Установка Apache и PHP

То есть в данном случае прописываем полный путь к файлу httpd.exe (C:\Apache24\bin\httpd.exe) и далее указываем команду на установку службы -k install.

Если установка завершится удачно, то в командная строка отобразит сообщение «The Apache2.4 service is successfully installed». Также будет проведено тестирование сервера.

После установки службы убедимся, что она запущена

Установка Apache и PHP в качестве службы Windows

Оглавление

1. Веб-сервер на Windows

2. Как установить Apache на Windows

3. Как установить PHP на Windows

4. Настройка PHP 8

5. Как установить MySQL в Windows

6. Как установить phpMyAdmin в Windows

Заключение


Веб-сервер — это программа, которая предназначена для обработки запросов к сайтам и отправки пользователям страниц веб-сайтов. Самый популярный пример веб-сервера это Apache.

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

MySQL — это система управления базами данных (СУБД). Это также самостоятельная программа, она используется для хранения данных, поиска по базам данных, для изменения и удаления данных. Веб-приложения нуждаются в постоянном хранилище, поэтому для веб-сервера дополнительно устанавливается и СУБД. Кстати, вполне возможно, что вы слышали про MariaDB — это тоже СУБД. Первой появилась MySQL, а затем от неё ответвилась MariaDB. Для веб-приложений обе эти СУБД являются взаимозаменяемыми, то есть никакой разницы нет. В этой инструкции я буду показывать установку на примере MySQL, тем не менее если вы хотите попробовать новую MariaDB, то смотрите статью «Инструкция по установке веб-сервера Apache c PHP, MariaDB и phpMyAdmin в Windows».

Что касается phpMyAdmin, то это просто скрипт на PHP, который предназначен для работы с базами данных — наглядно выводит их содержимое, позволяет выполнять в графическом интерфейсе такие задачи как создавать базы данных, создавать таблицы, добавлять, изменять и удалять информацию и т. д. По этой причине phpMyAdmin довольно популярен, хотя и не является обязательной частью веб-сервера.

Особенность Apache и других компонентов веб-сервера в том, что их корни уходят в Linux. И эти программы применяют в своей работе основные концепции этой операционной системы. Например, программы очень гибки в настройке — можно выполнить установку в любую папку, сайты также можно разместить в любой папке, в том числе на другом диске, не на том, где установлен сам веб-сервер. Даже файлы журналов можно вынести на третий диск и так далее. У веб-сервера много встроенных модулей — можно включить или отключить их в любом сочетании, можно подключить внешние модули. Можно создать много сайтов на одном веб-сервере и для каждого из них установить персональные настройки. Но эта гибкая настройка выполняется через текстовые файлы — именно такой подход (без графического интерфейса) позволяет описать любые конфигурации

Не нужно этого боятся — я расскажу, какие файлы нужно редактировать и что именно в них писать.

Мы не будем делать какие-то комплексные настройки — наша цель, просто установить веб-сервер на Windows. Тем не менее было бы странно совсем не использовать такую мощь в настройке. Мы разделим сервер на две директории: в первой будут исполнимые файлы, а во второй — данные (файлы сайтов и баз данных). В будущем, когда возникнет необходимость делать резервные копии информации или обновлять веб-сервер, вы поймёте, насколько удобен этот подход!

Мы установим сервер в отдельную директорию. Для этого в корне диска C:\ создайте каталог Server. В этом каталоге создайте 2 подкаталога: bin (для исполнимых файлов) и data (для сайтов и баз данных).

Перейдите в каталог data и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).

Перейдите в каталог C:\Server\data\DB\ и создайте там пустую папку data.

Для работы всех компонентов веб-сервера необходим файл «Visual C++ Redistributable for Visual Studio 2015-2019» — это официальный файл от Microsoft. Чтобы его скачать перейдите по ссылке. После скачивания, запустите этот файл и выполните установку.

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

Как установить Apache на Windows

Перейдите на сайт apachelounge.com/download и скачайте .zip архив с веб-сервером:

Распакуйте папку Apache24 из этого архива в C:\Server\bin\.

Перейдите в каталог C:\Server\bin\Apache24\conf\ и откройте файл httpd.conf любым текстовым редактором.

В нём нам нужно заменить ряд строк.

Меняем

Define SRVROOT "c:/Apache24"

на

Define SRVROOT "c:/Server/bin/Apache24"

меняем

#ServerName www.example.com:80

на

ServerName localhost

меняем

DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">

на

DocumentRoot "c:/Server/data/htdocs"
<Directory "c:/Server/data/htdocs">

меняем

DirectoryIndex index.html

на

DirectoryIndex index.php index.html index.htm

меняем

    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

на

    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All

и меняем

#LoadModule rewrite_module modules/mod_rewrite.so

на

LoadModule rewrite_module modules/mod_rewrite.so

Сохраняем и закрываем файл. Всё, настройка Apache завершена! Описание каждой изменённой директивы вы найдёте на этой странице.

Откройте командную строку (это можно сделать нажав одновременно клавиши Win+x).

Выберите там Windows PowerShell (администратор) и скопируйте туда:

c:\Server\bin\Apache24\bin\httpd.exe -k install

Если поступит запрос от файервола в отношение Apache, то нажмите Разрешить доступ.

Теперь вводим в командную строку:

c:\Server\bin\Apache24\bin\httpd.exe -k start

И нажмите Enter.

Теперь в браузере набираем http://localhost/ и видим следующее:

Это означает, что веб-сервер работает. Чтобы увидеть там файлы, добавьте их в каталог c:\Server\data\htdocs\ — это главная папка для данных сервера, где будут размещаться все сайты.

Как установить PHP на Windows

PHP 8 скачайте со страницы windows.php.net/download/. Выберите версию Thread Safe, обратите внимание на битность. Если вы затрудняетесь, какой именно файл скачать, то посмотрите эту заметку.

В папке c:\Server\bin\ создаём каталог PHP и копируем в него содержимое только что скаченного архива.

В файле c:\Server\bin\Apache24\conf\httpd.conf в самый конец добавляем строчки:

PHPIniDir "C:/Server/bin/PHP"
AddHandler application/x-httpd-php .php
LoadModule php_module "C:/Server/bin/php/php8apache2_4.dll"

И перезапускаем Apache:

c:\Server\bin\Apache24\bin\httpd.exe -k restart

В каталоге c:\Server\data\htdocs\ создаём файл с названием i.php, копируем в этот файл:

<?php
phpinfo ();

В браузере откройте ссылку http://localhost/i.php. Если вы видите что-то похожее, значит PHP работает:

Настройка PHP 8

Настройка PHP происходит в файле php.ini. В zip-архивах, предназначенных для ручной установки и для обновлений, php.ini нет (это сделано специально, чтобы при обновлении случайно не удалить ваш файл с настройками). Зато есть два других, которые называются php.ini-development и php.ini-production. Любой из них, при ручной установке, можно переименовать в php.ini и настраивать дальше. На локалхосте мы будем использовать php.ini-development.

Открываем файл php.ini любым текстовым редактором, ищем строчку

;extension_dir = "ext"

и заменяем её на

extension_dir = "C:\Server\bin\PHP\ext\"

Теперь найдите группу строк:

;extension=bz2
;extension=curl
;extension=ffi
;extension=ftp
;extension=fileinfo
;extension=gd
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=ldap
;extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop

и замените её на:

extension=bz2
extension=curl
extension=ffi
extension=ftp
extension=fileinfo
extension=gd
extension=gettext
extension=gmp
extension=intl
extension=imap
extension=ldap
extension=mbstring
extension=exif      ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
extension=odbc
extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite
extension=pgsql
extension=shmop

теперь раскомментируйте эту группу строк:

;extension=soap
;extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xsl

должно получиться:

extension=soap
extension=sockets
extension=sodium
extension=sqlite3
extension=tidy
extension=xsl

Этими действиями мы включили расширения. Они могут понадобиться в разных ситуациях для разных скриптов. Сохраняем файл и перезапускаем Apache.

c:\Server\bin\Apache24\bin\httpd.exe -k restart

Настоятельно рекомендуется добавить путь до PHP в переменную окружения PATH в Windows.

Также рекомендуется ознакомиться со статьями Что делать если PHP скрипту не хватает времени и памяти. Почему большой файл не загружается на сайт или в phpMyAdmin и Как увеличить память и время для PHP скриптов.

Материалы по дополнительной настройке, в том числе подключение поддержки PERL, Ruby, Python в Apache (только для тех, кому это нужно):

  • Как тестировать отправку писем в PHP на Windows
  • Настройка веб-сервера Apache для запуска программ Ruby на Windows
  • Настройка веб-сервера Apache для запуска программ Perl на Windows
  • Как настроить веб-сервер Apache на запуск Python в Windows

Как установить MySQL в Windows

Бесплатная версия MySQL называется MySQL Community Server. Её можно скачать на странице https://dev.mysql.com/downloads/mysql/. На этой же странице есть установщик в виде исполнимого файла, но я рекомендую скачать ZIP-архив.

На странице скачивания нам предлагают зарегистрироваться или войти в существующую учётную запись — но это делать необязательно. Достаточно нажать на ссылку «No thanks, just start my download».

В каталог c:\Server\bin\ распаковываем файлы из только что скаченного архива. Распакованная папка будет называться примерно mysql-8.0.17-winx64 (зависит от версии), переименуйте её в mysql-8.0.

Заходим в эту папку и создаём там файл my.ini. Теперь открываем этот файл любым текстовым редактором и добавьте туда следующие строки:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
datadir="c:/Server/data/DB/data/"
default_authentication_plugin=mysql_native_password

Сохраните и закройте его.

Настройка завершена, но нужно ещё выполнить инициализацию и установку, для этого открываем командную строку от имени администратора и последовательно вводим туда:

C:\Server\bin\mysql-8.0\bin\mysqld --initialize-insecure --user=root
C:\Server\bin\mysql-8.0\bin\mysqld --install
net start mysql

По окончанию этого процесса в каталоге C:\Server\data\DB\data\ должны появиться автоматически сгенерированные файлы.

Теперь служба MySQL будет запускаться при каждом запуске Windows.

Как установить phpMyAdmin в Windows

Сайт для скачивания phpMyAdmin: phpmyadmin.net.

Прямая ссылка на самую последнюю версию: phpMyAdmin-latest-all-languages.zip.

В каталог c:\Server\data\htdocs\ копируем содержимое только что скаченного архива. Переименовываем эту папку в phpmyadmin.

В каталоге c:\Server\data\htdocs\phpmyadmin\ создаём файл config.inc.php и копируем туда:

<?php
 
/* Servers configuration */
$i = 0;
 
/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['nopassword'] = true;
$cfg['Servers'][$i]['AllowNoPassword'] = true;
 
/* End of servers configuration */
 
$cfg['blowfish_secret'] = 'kjLGJ8g;Hj3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V';
$cfg['DefaultLang'] = 'ru';
$cfg['ServerDefault'] = 1;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
 
?>

В браузере набираем http://localhost/phpmyadmin/

В качестве имя пользователя вводим root. Поле пароля оставляем пустым.

Заключение

Вот и всё — теперь у вас есть свой персональный локальный веб-сервер на своём домашнем компьютере.

Если вдруг у вас что-то не получилось, то скорее всего вы пропустили какой-то шаг или сделали его неправильно — попробуйте всё сделать в точности по инструкции. Если проблема осталась, то ознакомьтесь со справочным материалом «Ошибки при настройке и установке Apache, PHP, MySQL/MariaDB, phpMyAdmin» и если даже он не помог, то напишите о своей ошибке в комментарии.

Большое количество материалов по Apache на русском языке специально для Windows вы найдёте на этой странице.

Примеры материалов, которые могут вам пригодиться в первую очередь:

  • Как защитить веб-сервер Apache от взлома в Windows
  • Несколько сайтов на Apache
  • Apache Forwarding — проброска портов веб-сервера
  • Как сделать резервную копию баз данных MySQL (MariaDB) в Windows без phpMyAdmin
  • Почему в логах ошибок Apache не сохраняются записи об ошибке 404
  • Как в Windows поменять сообщения ошибок Apache
  • Как настроить PHP для работы с get_browser (browscap.ini) в Windows
  • Файл .htaccess в Apache
  • Как обновить Apache на Windows
  • Как обновить PHP
  • Как обновить MySQL
  • Как обновить phpMyAdmin

Связанные статьи:

  • Ошибки при настройке и установке Apache, PHP, MySQL/MariaDB, phpMyAdmin (98%)
  • Установка Apache, PHP, MySQL и phpMyAdmin на Windows XP (60.6%)
  • Готовая сборка Apache для Windows XP (60.6%)
  • Что делать если PHP скрипту не хватает времени и памяти. Почему большой файл не загружается на сайт или в phpMyAdmin (58.3%)
  • Ошибка «Composer detected issues in your platform: Your Composer dependencies require the following PHP extensions to be installed: mysqli, openssl» (РЕШЕНО) (58.3%)
  • Apache Forwarding — проброска портов веб-сервера (RANDOM — 51%)

This post explains how to install and configure Apache and PHP on Windows. Sure, there are convenient options like: Bitnami WAMP Stack, WampServer or XAMPP. But over the years I found that installing each stack separately is more reliable and provides greater flexibility. You will probably also want MariaDB for a database which you can download and install from here: https://mariadb.org. The database itself doesn’t have to be configured directly with either Apache or PHP so there are no steps provided here for the database. You only need to enable a line in PHP ini for PHP to provide the database functions.

Versions

  • Windows 10, 64-bit
  • PHP 7.4.x
  • Apache 2.4.x

Download PHP from the php.net Windows download page. We will use PHP as an Apache module, so make sure to get the Thread Safe version.

After downloading the zip file, unzip it to a convenient location on your hard drive. I usually keep all my stand-alone programs that I use under ~/bin folder. So the location of my unzipped PHP folder is: C:\Users\sanji\bin\php-7.4.27-Win32-vc15-x64

Copy the file php.ini-development and rename it to php.ini, then edit it:

# The default input vars, upload and post sizes are small 
# so I make sure they are big enough
max_input_vars = 5000
post_max_size = 100M
upload_max_filesize = 100M
max_file_uploads = 50
# Only for local development machine, I set the max execution time at 120 seconds
# instead of the default 30 seconds, because some PHP application updates fail 
# locally without a high enough timeout threshold
max_execution_time = 120

# I usually set the full-path because sometimes just specify "ext" doesn't work
extension_dir = "C:\Users\sanji\bin\php-7.4.27-Win32-vc15-x64\ext"

# I have the following extensions enabled which 
# is also good for WordPress development
extension=bz2
extension=curl
extension=fileinfo
extension=gd2
extension=mbstring
extension=exif      ; Must be after mbstring as it depends on it
extension=mysqli
extension=openssl
extension=pdo_mysql

I also added the location “C:\Users\sanji\bin\php-7.4.27-Win32-vc15-x64” to the Path in my Windows Environment Variables under System Properties.

Nothing more needs to be configured for PHP. Let’s get Apache installed and configured.

Apache

Apache binaries are not provided by the official Apache HTTPD project. You can can get either from ApacheHaus or Apache Lounge. Here is the download page screenshot of the binary for Apache 2.4.52 x64 on ApacheHaus:

After downloading the zip file, unzip it at a convenient location on your drive. The full path on my machine is: C:\Users\sanji\bin\Apache24. For convenience, I also added to the environment Path variable “C:\Users\sanji\bin\Apache24\bin” via Windows System Properties.

The file “Apache24\conf\httpd.conf” needs to be edited.

# Change the following to the location where you 
# unzipped the downloaded Apache zip file
Define SRVROOT "/Users/sanji/bin/Apache24"

# I use port 8080 instead of the default port 80
Listen 8080

# I use virtual hosts, so following needs to be enabled 
# and the httpd-vhosts.conf file included
LoadModule vhost_alias_module modules/mod_vhost_alias.so
Include conf/extra/httpd-vhosts.conf

# The following modules are also enabled
LoadModule rewrite_module modules/mod_rewrite.so

# The following settings enable PHP
LoadModule php7_module "/Users/sanji/bin/php-7.4.27-Win32-vc15-x64/php7apache2_4.dll"
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
PHPIniDir "/Users/sanji/bin/php-7.4.27-Win32-vc15-x64"

# I also had to add the following line to get curl working with PHP 
# (aside from enabling curl in php.ini)
LoadFile "/Users/sanji/bin/php-7.4.27-Win32-vc15-x64/libssh2.dll"

ApacheHaus uses “extra/httpd-ahssl.conf” for SSL configuration. I use the port 4430. Here is my “Apache24\conf\extra\httpd-ahssl.conf” change:

# I changed the default port 443 to 4430
Listen 4430 https

Finally here is my vhosts configuration file (located in Apache24\conf\extra\httpd-vhosts.conf).

# I serve all my sites from the folder "C:\Users\sanji\pdn"
# So the following entry affects all my development sites
<Directory "/Users/sanji/pdn">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
    DirectoryIndex index.html index.php
</Directory>

# I use port 4430 for SSL
# Here are settings for a site called viaye.san, you can create your own by 
# editing the C:\Windows\System32\drivers\etc\hosts file
# To generate and self-sign SSL certificates, please see 
# https://oak.dev/2021/02/03/create-a-self-signed-certificate-on-windows-for-local-development/
# I like to keep my docroot under "www" and the 
# access and error logs under the "logs" folder
<VirtualHost *:4430>
    SSLEngine on
    ServerName viaye.san
    DocumentRoot "/Users/sanji/pdn/viaye/www"
    ErrorLog "/Users/sanji/pdn/viaye/logs/error.log"
    CustomLog "/Users/sanji/pdn/viaye/logs/access.log" common
    SSLCertificateFile "/Users/sanji/_pepper/_ssl_local/viaye.san/cert.pem"
    SSLCertificateKeyFile "/Users/sanji/_pepper/_ssl_local/viaye.san/server.key"
</VirtualHost>

That’s it for configuration. The final step is to add httpd as a Windows service. Head over to C:\Users\sanji\bin\Apache24\bin and run:

httpd -k install

You can now start, restart the Apache HTTPD server from the Windows Services panel as seen below:

The following video shows how to install Apache, PHP and MariaDB on Windows using the steps above.

Навигация по статье:

  1. Подготовка
  2. Apache
    1. Что такое Apache?
    2. Скачивание
    3. Установка
    4. Виртуальные хосты
    5. Примеры работы с виртуальными хостами
      1. Пример 1 – сервер для локальной разработки
      2. Пример 2 – сервер в локальной сети
      3. Пример 3 – сервер, доступный из глобальной сети
    6. Поиск ошибок в конфигурации Apache
  3. PHP
    1. Что такое PHP?
    2. Скачивание
    3. Установка
    4. Расширения
    5. Проверка корректной установки
  4. MySQL
    1. Что такое MySQL?
    2. Скачивание
    3. Установка
      1. Защищённая инициализация
      2. Незащищённая инициализация
    4. Смена пароля пользователя root
      1. Авторизация в защищённом режиме
      2. Авторизация в незащищённом режиме
      3. Смена пароля
      4. Смена пароля в старых версиях MySQL
    5. Восстановление пароля MySQL
  5. phpMyAdmin
    1. Что такое phpMyAdmin?
    2. Скачивание
    3. Установка
      1. Установка без виртуальных хостов Apache
      2. Установка с виртуальными хостами Apache
  6. Добавление нового сайта

1. Подготовка

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

В корне системного локального диска (диск C: ), создайте папку WebServer. Сюда мы засунем всё, что будет относиться к веб-серверу.

Внутри папки WebServer создайте две папки: core и sites. Внутри core мы будем хранить основные компоненты веб-сервера (Apache, PHP, MySQL, phpMyAdmin), а внутри sites – непосредственно Web-сайты (Apache поддерживает возможность разместить несколько веб-сайтов на одном веб-сервере).

Далее в папке core создайте четыре папки: apache, php, mysql и pma. Каждая из папок будет отвечать за свой компонент.

Таким образом мы получим следующее дерево папок:

2. Apache

2.1. Что такое Apache?

Apache HTTP Server, или просто Apache – это свободно распространяемый веб-сервер, который может быть установлен на различных операционных системах, включая Windows, macOS и Linux. Apache является одним из самых популярных веб-серверов в мире и используется для хостинга миллионов веб-сайтов.

Apache предоставляет возможность обрабатывать запросы от клиентов, которые могут быть отправлены через Интернет или через локальную сеть. При получении запроса Apache ищет соответствующий файл на сервере и отправляет его обратно клиенту.

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

2.2. Скачивание

Скачать Apache можно с сайта Apache Lounge. Перейдите на данный сайт и нажмите в меню слева «Downloads»:

Здесь требуется определиться, какую версию Apache вы будете использовать. Выбирать версию Apache необходимо в зависимости от того, на какой операционной системе вы будете запускать Apache. Список версий и совместимых версий Windows приведён ниже.

VC10 VC11 VC14 VC15 VS16 VS17 Примечание
Windows XP +
Windows Vista + + + + + + Требуется SP2
Windows 7 + + + + + + Требуется SP1
Windows 8 + + + + + +
Windows 8.1 + + + + + +
Windows 10 + + + + + +
Windows 11 ~ ~ ~ + + +
Windows Server 2003 +
Windows Server 2008 + + + + + + Требуется SP2 или R2 SP1
Windows Server 2012 + + + + + +
Windows Server 2016 + + + + + +
Windows Server 2019 ~ ~ + + + +
Windows Server 2022 ~ ~ ~ + + +

«–» – не поддерживается
«+» – поддерживается
«~» – поддержка официально не заявлена

И так, вы выбрали подходящую вам версию. Смело нажимайте на ссылку, которая начинается с «httpd-…» (1). Ссылок может быть две: для 32-разрядных систем и для 64-разрядных.

32-разрядный веб-сервер Apache запустится и на 32-разрядной системе, и на 64-разрядной (с ограничением используемой ОЗУ), а 64-разрядный запустится только на 64-разрядной системе.

Также обратите внимание: для работы Apache, вам необходимо установить библиотеки Visual C++. Ссылка на библиотеки нужной версии располагаются в верхней части той же страницы (2).

Если у вас установлена операционная система с 32-битной разрядностью, скачать необходимо только 32-разрядные библиотеки (обозначаются как x86 или 32bit), а если система 64-разрядная, то желательно скачать обе версии библиотек: и 32-бит, и 64-бит.

2.3. Установка

Откройте скачанный архив с Apache любым архиватором, например 7-Zip. Внутри вы увидите папку «Apache24». Скопируйте всё содержимое папки «Apache24» из архива в папку C:\WebServer\core\apache. Убедитесь в том, что вы скопировали не всю папку Apache24 целиком в папку apache, а лишь её содержимое.

Далее, чтобы избежать ошибки при установке Apache, откройте файл C:/WebServer/core/apache/conf/httpd.conf любым текстовым редактором (можно стандартным Блокнотом, но мы рекомендуем что-нибудь более продвинутое, например Notepad++, так как стандартный блокнот сохраняет файлы в кодировке Windows-1251, а файлы конфигурации по умолчанию в кодировке UTF-8, и их изменение в блокноте может привести к неожиданным ошибкам) и найдите строку, в которой аргументом будет стандартный путь к папке Apache:

"c:/Apache24" 

Замените этот путь на путь, где вы разместили Apache. В нашем случае новый путь будет таков:

"C:/WebServer/core/apache" 

Далее запустите командную строку от имени администратора и введите следующую команду:

C:\WebServer\core\apache\bin\httpd -k install

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

Как можно заметить, при установке Apache как сервиса, возникло замечание проверки конфигурационного файла. Представленное замечание не критично и лишь говорит о том, что в конфигурационном файле не указана директива ServerName, которая не является обязательной.

Вернитесь в окно командной строки (запущенной от имени администратора) и введите команду, которая запустит сервис Apache:

net start Apache2.4 

Вы должны получить сообщение о том, что служба успешно запущена или служба уже была запущена ранее:

После этого перейдите в браузере по адресу http://127.0.0.1/. Если всё установлено корректно, перед вами должна открыться страница с надписью «It works!»:

Данная страница означает, что веб-сервер успешно запустился и отобразил файл C:\WebServer\core\apache\htdocs\index.html. Для проверки, вы можете открыть данный файл текстовым редактором, что-нибудь написать, сохранить файл и перезагрузить страницу.

В принципе, вы уже можете пользоваться веб-сервером Apache, размещая необходимые вам файлы в каталоге C:\WebServer\core\apache\htdocs, однако это позволит развернуть лишь один сайт на веб-сервере. Если же вы хотите развернуть несколько сайтов – необходимы виртуальные хосты.

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

Виртуальные хосты позволяют развернуть на веб-сервере несколько сайтов. Это полезно, если вы хотите работать с несколькими проектами на одном компьютере, или же собираетесь «хостить» несколько сайтов на одном сервере.

Для включения виртуальных хостов, откройте в текстовом редакторе файл C:\WebServer\core\apache\conf\httpd.conf.

В этом файле найдите блок кода, отвечающий за подключение файла виртуальных хостов. Он выглядит так: «#Include conf/extra/httpd-vhosts.conf». Раскомментируйте данную строку, убрав из её начала символ «#».

Также найдите строку: «#LoadModule vhost_alias_module modules/mod_vhost_alias.so» и раскомментируйте её – это модуль псевдонимов для доменных имён виртуальных хостов, он нам пригодится:

В самом начале файла, где вы указывали путь к папке с Apache, вставьте следующую строку, заменив путь на каталог к папке с сайтами. Мы будем использовать эту переменную SITES для подстановки в пути в виртуальные хосты:

Define SITES "c:/WebServer/sites" 

Также в этом же файле нужно найти строку DocumentRoot, закомментировать её и следующей за ней блок Directory:

А также нужно найти блок <Directory /></Directory> и тоже его закомментировать:

Также по желанию вы можете закомментировать строку ServerAdmin, поскольку она не влияет на работоспособность сервера:

На этом мы закончили с файлом httpd.conf. Далее откройте в текстовом редакторе файл с виртуальными хостами: C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf

В этом файле вы увидите два стандартных блока виртуальных хостов (в начале файла будет около 20 строк комментариев, их можно удалить):

Разберём, из чего эти блоки состоят:

  1. Части <VirtualHost *:80> и </VirtualHost> отвечают за один виртуальный хост и описывают его. То есть это открывающий и закрывающий теги блока.
    Комбинация символов астериска-двоеточия-цифр (*:80) в данном контексте определяет, что Apache будет обрабатывать этим виртуальным хостом запросы, пришедшие на любой IP-адрес этого компьютера по 80 порту.
  2. DocumentRoot – директория, из которой веб-сервер будет брать файлы при обращении к определённому виртуальному хосту.
  3. ServerName – основное имя домена, на который будет срабатывать виртуальный хост.
  4. ServerAlias – альтернативные имена домена, на которые будет срабатывать виртуальный хост. Может быть несколько, перечисленных через запятую. Для работы этой директивы необходимо подключить модуль mod_vhost_alias.so.
  5. ServerAdmin – электронная почта администратора сервера. Используется в основном при запросах с сервисов Whois.
  6. ErrorLog – путь к файлу лога ошибок при обращении к конкретно этому виртуальному хосту.
  7. CustomLog – путь к файлу пользовательских логов.

Давайте разберём небольшой простенький пример конфигурации виртуальных хостов:

  1. Первый виртуальный хост будет «заглушкой». Всё, что он будет делать – это загружать каталог C:\WebServer\sites\dummy в том случае, если клиент обращается к нашему веб-серверу, но на веб-сервере отсутствует виртуальный хост с таким именем (ServerName или ServerAlias).
  2. Второй виртуальный хост будет загружать каталог C:\WebServer\sites\example.com\www в том случае, если пользователь заходит по адресам http://example.com/ (ServerName) или http://www.example.com/ (ServerAlias).
  3. Третий виртуальный хост будет загружать каталок C:\WebServer\sites\example.com\second при обращении к адресу http://second.example.com/ 

Обратите внимание: обработка адресов виртуальных хостов (ServerName, ServerAlias) возможна только в том случае, если запрос от клиента приходит именно на наш сервер. Переадресация запросов с имени домена на ваш сервер возможна только в случае, если DNS-сервер, используемый клиентом, ассоциирует имя домена с IP-адресом вашего сервера.

Алярма!

Изменения, внесённые в конфигурационные файлы Apache и PHP, вступают в силу только после перезапуска службы Apache!

Для перезапуска можно использовать команду в командной строке:

net stop Apache2.4 & net start Apache2.4 

2.5. Примеры работы с виртуальными хостами

2.5.1. Пример 1 – сервер для локальной разработки

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

Предположим, что вы хотите развернуть три локальных сайта: mysite.com, client.mysite.com и myanothersite.com. В этом случае конфигурация виртуальных хостов будет представлять из себя что-то вроде:

При этом, должны существовать каталоги:

  • C:\WebServer\sites\mysite.com\www – для mysite.com и www.mysite.com
  • C:\WebServer\sites\mysite.com\client – для client.mysite.com
  • C:\WebServer\sites\myanothersite.com\www – для myanothersite.com и www.myanothesite.com

Также вам нужно ассоциировать перечисленные адреса именно с вашим компьютером. То есть компьютер должен понимать: «Если я обращаюсь к домену mysite.com – значит я должен обратиться к своему же IP-адресу».

Если вы используете эти сайты именно для локальной разработки, то есть не обязательно, чтобы эти сайты работали из локальной или глобальной сети, вы можете использовать для этого файл C:\Windows\System32\drivers\etc\hosts.

Файл hosts играет роль простенького «DNS-сервера» (очень утрированно, но всё же). При обращении к любому доменному имени, система сначала проверяет, присутствует ли запись об этом доменном имени в файле hosts. Если такая запись присутствует – все запросы к этому доменному имени в будущем направляются на указанный в этом файле IP-адрес. В случае, если доменное имя в этом файле не указано, то отправляется запрос на DNS-сервер в локальной сети (если таковой существует), а далее – на глобальный DNS-сервер.

В контексте нашего примера, содержимое файла hosts будет представлять из себя следующее:

IP-адреса в диапазоне 127.X.X.X (кроме 127.0.0.0 и 127.255.255.255) всегда ссылается на текущий компьютер.

В случае, если вы внесли изменения и в файл виртуальных хостов, и в hosts, а также создали перечисленные папки, все перечисленные сайты откроются:

2.5.2. Пример 2 – сервер в локальной сети

Предположим, что вы хотите развернуть все те же самые сайты, что и в примере 1, но чтобы они были доступны в пределах локальной сети. Такое полезно, например, для организации веб-платформ внутри предприятия.

В этом случае конфигурация виртуальных хостов в Apache не изменится, однако необходимо каким-либо образом дать понять другим компьютерам в пределах локальной сети, что при обращении к mysite.com, они должны будут не искать этот домен на глобальных DNS-серверах, а отправляться на сервер внутри локальной сети.

Предположим, что Apache развёрнут на компьютере с именем Server и статическим IP-адресом 192.168.1.100. Остальные компьютеры в организации имеют имена и IP-адреса: PC1192.168.1.101, PC2192.168.1.102, PC3192.168.1.103.

В этом случае есть два варианта:

  1. Простой вариант. На всех компьютерах клиентов (PC1, PC2 и PC3) в файл hosts добавить строки, которые будут перенаправлять запросы к необходимым нам сайтам на IP-адрес 192.168.1.100 (IP-адрес сервера):
    192.168.1.100 mysite.com 192.168.1.100 www.mysite.com 192.168.1.100 client.mysite.com 192.168.1.100 myanothersite.com 192.168.1.100 www.myanothersite.com
  2. Сложный вариант. В пределах локальной сети развернуть DNS-сервер, который будет ассоциировать имена необходимых вам доменов с IP-адресом сервера (а не перечисленные адреса перенаправлять на какой-либо глобальный DNS-сервер), и либо вручную задать данный DNS-сервер на каждом компьютере, либо дополнительно поднять DHCP-сервер, который будет сообщать об адресе локального DNS-сервера компьютерам при их подключении к сети.
    Данный вариант сложный и объёмный по своей информационной нагрузке, поэтому в деталях в рамках этой статьи мы его разбирать не будем.

Также существует обходной, несколько «костыльный» вариант, не требующий редактирования файла hosts на клиентах, а также не требующий поднятия DNS-сервера. Однако данный вариант не позволяет использовать доменные имена. Доступ к сайтам в этом случае будет происходить по IP-адресам.

Для данного варианта необходимо задать сетевому адаптеру сервера несколько статических IP-адресов, например 192.168.1.10, 192.168.1.11, 192.168.1.12 (количество IP-адресов должно быть больше или равно количеству сайтов).

Конфигурацию виртуальных хостов же следует переделать, придав ей вид наподобие:

В этом случае, любой из клиентов, который зайдёт по адресу http://192.168.1.10/ попадёт в каталог C:\WebServer\sites\mysite.com\www, при входе на http://192.168.1.11/ – в каталог C:\WebServer\sites\mysite.com\client, а при входе на http://192.168.1.12/ – в каталог C:\WebServer\sites\myanothersite.com\www.

2.5.3. Пример 3 – сервер, доступный из глобальной сети

Предположим, что вы хотите, чтобы сайт был доступен из глобальной сети (пожалуй, самое популярное использование веб-серверов в принципе).

В этом случае вам необходимо приобрести домен у регистратора доменных имён. Регистраторов существует огромное множество, например: nic.ru, reg.ru, 2domains.ru, beget.com, timeweb.com и прочие. Вы можете приобрести у регистратора любой домен при условии, что данный домен свободен и доступен для покупки. Цена варьируется в зависимости от доменной зоны (.ru, .com, .net и пр.), а также от востребованности домена: например домен a.travel будет стоить значительно дороже, чем какой-нибудь HelloIAmVasyaPupkinThisIsMyFirstWebSite.ru.

Также необходимо, чтобы шлюз, через который сервер получает доступ к интернету, имел статический «белый» IP-адрес. Арендовать статический публичный IP-адрес можно у интернет-провайдера, который предоставляет доступ к интернету. Цены варьируются в зависимости от провайдера, региона и вашего юридического статуса (физическое или юридическое лицо). Кроме того, некоторые (в частности местечковые) провайдеры не предоставляют возможность аренды «белого» IP-адреса физическим лицам из-за ограниченного количества таких адресов «в наличии» – учитывайте это.

Предположим, вы хотите приобрести доменное имя mycompany.ru, и хотите, чтобы у вас работали непосредственно сам домен, а также поддомены: cabinet.mycompany.ru, landing.mycompany.ru и help.mycompany.ru.

В данном случае ваш алгоритм действий будет примерно следующим:

  1. Арендовать «белый» IP-адрес у провайдера
  2. Арендовать домен у регистратора доменных имён
  3. Запустить веб-сервер на компьютере в локальной сети, сконфигурировать виртуальные хосты. Одна из возможных реализаций файла виртуальных хостов:

  4. Настроить переадресацию портов на шлюзе, чтобы запросы, приходящие на шлюз, например на 80 порт, перенаправлялись на «серый» IP-адрес машины, на котором запущен веб-сервер
  5. У регистратора доменных имён изменить DNS-записи вашего домена, заменив/добавив DNS-записи типа A, ссылающиеся на «белый» IP-адрес, который вам выдал провайдер:
    Имя Тип Значение
    @ A IP-адрес от провайдера
    cabinet A IP-адрес от провайдера
    landing A IP-адрес от провайдера
    help A IP-адрес от провайдера

Через несколько часов после внесения DNS-записей, сайт заработает.

2.6. Поиск ошибок в конфигурации Apache

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

C:\WebServer\core\apache\bin\httpd -t

Данная команда произведёт проверку используемого файла конфигурации и всех подключаемых файлов и оповестит вас о всех найденных ошибках и замечаниях. Если ошибок и замечаний нет, команда проверки конфигурации выдаст лишь сообщение «Syntax OK»:

Разберём устранение ошибки на примере замечания о том, что в конфигурационном файле не указана директива ServerName. Данное замечание не является критичным и не мешает работе Apache, но дабы оно не мозолило глаза, исправим его.

Дело в том, что по умолчанию директива ServerName просто-напросто закомментирована. Вы можете раскомментировать её в конфигурационном файле C:\WebServer\core\apache\conf\httpd.conf – убрать символ «#» в начале строки и изменить www.example.com, например, на test.local, после чего ошибка пропадёт.

Обратите внимание: после любых изменений конфигурационных файлов Apache или PHP, требуется перезапустить Apache, так как изменения применятся только при следующем запуске веб-сервера.

Перезапустить веб-сервер можно командами в командной строке:

net stop Apache2.4 net start Apache2.4 

На этом с установкой Apache мы закончили. Перейдём к установке PHP.

3. PHP

3.1. Что такое PHP?

PHP — это язык программирования, который используется для создания веб-приложений и динамических сайтов. Он был создан в 1995 году Расмусом Лердорфом и с тех пор стал одним из наиболее популярных языков программирования для веб-разработки.

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

Существует множество крупных веб-сайтов, которые используют PHP в своей основе, таких как Facebook, Wikipedia и WordPress. Он также поддерживается на большинстве серверов и операционных систем, что делает его доступным для широкого круга разработчиков.

3.2. Скачивание

Для скачивание препроцессора PHP перейдите на сайт в раздел Downloads на Windows.PHP.net

В этом разделе вам необходимо найти версию PHP, подходящую к версии Apache. Например, если вы скачали Apache VS17, то необходимо использовать и PHP для версии VS17.

На момент публикации этой статьи, PHP VS17 ещё не вышла, поэтому мы используем VS16 (они совместимы).

Найдите раздел под разрядность вашей системы с припиской «Thread Safe» и скачайте Zip-архив:

Разархивируйте содержимое архива в папку C:\WebServer\core\php:

3.3. Установка

В каталоге с распакованным PHP переименуйте файл php.ini-development в php.ini:

Далее откройте файл конфигурации Apache – C:\WebServer\core\apache\conf\httpd.conf и вставьте в конец файла следующий текст:

LoadModule php_module "C:/WebServer/core/php/php8apache2_4.dll" PHPIniDir "C:/WebServer/core/php" AddHandler application/x-httpd-php .php 

  • LoadModule – загружает модуль с названием «php_module» из DLL-файла, находящегося по пути C:/WebServer/core/php/php8apache2_4.dll.
  • PHPIniDir – указывает, в каком каталоге располагается файл php.ini. Если в данном каталоге нет файла php.ini (например вы забыли его переименовать из php.ini-development в php.ini), то PHP использует стандартные настройки.
  • AddHandler – указывает веб-серверу Apache, что файлы с расширением *.php будут обрабатываться препроцессором PHP.

В случае со старыми версиями PHP (до PHP 7 включительно), первая строка может отличаться: вместо «LoadModule php_module» должно быть «LoadModule php7_module», где цифра 7 – версия PHP. Также для версии PHP 5: «LoadModule php5_module»

Также в этом же файле найдите строку: «DirectoryIndex index.html» и замените её на «DirectoryIndex index.php index.html».

Данная строка отвечает за то, чтобы при открытии пути-директории, без имени файла, открывать перечисленные файлы. То есть, если пользователь зайдёт по адресу http://example.com/ , Apache попытается найти файл http://example.com/index.php, и если он существует – он откроется без изменения URL. Если файла index.php в этом каталоге нет, будет произведён поиск файла index.html. Если он есть – он откроется, а если его нет – будет либо выдан список файлов в этой директории, либо ошибка «403 Forbidden» (в зависимости от настроек Apache).

3.4. Расширения

Большинство сайтов используют не только «голый» функционал PHP, но и дополнительные функции, идущие в комплекте расширений для PHP. По умолчанию все расширения PHP отключены, и было бы полезно включить некоторые из них, чтобы впоследствии не столкнуться с ошибками при работе с сайтами.

Откройте файл C:\WebServer\core\php\php.ini и найдите строку «;extension_dir = «ext»». Раскомментируйте её, убрав точку с запятой из начала строки, и укажите верный путь к папке расширений PHP (C:\WebServer\core\php\ext):

Сами расширения можно включить в этом же файле, найдя и раскомментируя строку «extension=ИМЯ_РАСШИРЕНИЯ» (или добавив свою строку того же формата, разместив расширение в папке php/ext):

Наиболее часто используемыми дополнениями являются: gd, mbstring, exif, mysqli, pdo_mysql. Можете их сразу раскомментировать, чтобы в будущем не сталкиваться с ошибкой отсутствия этих расширений. 

3.5. Проверка корректной установки

После внесения изменений в httpd.conf и php.ini, необходимо перезапустить Apache:

net stop Apache2.4 & net start Apache2.4

Теперь вы можете создать файл в любой директории, указанной в созданном виртуальном хосте (или в C:\WebServer\core\apache\htdocs, если не создавали виртуальные хосты), например index.php, и добавить в него следующий текст:

<?php phpinfo(); ?> 

Если всё настроено правильно, при входе на страницу с адресом этого файла, вы увидите стандартную страницу с информацией о PHP, которая выводится функцией phpinfo():

4. MySQL

4.1. Что такое MySQL?

MySQL — это система управления реляционной базой данных (СУБД), которая широко используется для создания и управления различными типами веб-приложений. Она является одной из самых популярных СУБД в мире благодаря своей простоте, надежности и гибкости.

Работа с MySQL поддерживается множеством языков программирования, включая PHP, Python, Ruby, Java и другими.

4.2. Скачивание

Перейдите на сайт MySQL.com в раздел Downloads:

Внизу страницы перейдите по ссылке «MySQL Community (GPL) Downloads»:

На этой странице нажмите по ссылке «MySQL Community Server»:

На этой странице можно скачать MySQL в двух форматах: установщик (1) и ZIP-архив (2). Поскольку установщик – это слишком просто (¯\_(ツ)_/¯), разберём ручную установку из ZIP-архива.

После перехода по ссылке для скачивания архива, входить/регистрироваться не обязательно. Просто нажмите «No thanks, just start my download»:

После скачивания, откройте архив, перейдите внутри архива в папку «mysql-версия-разрядность» и распакуйте всё содержимое папки в C:\WebServer\core\mysql:

4.3. Установка

Для установки MySQL, в первую очередь необходимо установить сервис MySQL. Сделать это можно следующей командой:

C:\WebServer\core\mysql\bin\mysqld --install 

Результатом данной команды должно быть сообщение о том, что сервис успешно установлен:

Теперь нужно создать пустую базу данных. Данный процесс в рамках MySQL называется «инициализация».

Инициализировать базу данных можно двумя способами:

  • В защищённом режиме
  • В незащищённом режиме

В защищённом режиме, при инициализации, пользователю root – основному пользователю базы с полными правами на управление базой задастся случайный пароль. В незащищённом режиме – пароль будет пустым.

Oracle, владельцы MySQL, всегда рекомендуют использовать только защищённый режим инициализации, поскольку пароль задан буквально с создания базы, и недоброжелатель не сможет «достучаться» до базы в промежуток времени между незащищённой инициализацией и заданием пароля для рута.

4.3.1. Защищённая инициализация

Для защищённой инициализации введите в командной строке следующую команду:

C:\WebServer\core\mysql\bin\mysqld --initialize 

После выполнения этой команды, в папке C:\WebServer\core\mysql появится папка data: в этой папке и хранится база данных.

Как мы уже упомянули, при защищённой инициализации, MySQL создаёт случайный пароль для пользователя root. Данный пароль можно узнать в файле лога ошибок, который создаётся в каталоге созданной базы.

Найдите в папке C:\WebServer\core\mysql\data файл с расширением .err. Его название также генерируется случайным образом и при каждой инициализации будет разным.

Откройте данный файл с помощью блокнота. В нём вы найдёте строку: «A temporary password is generated for root@localhost: …» – это и есть случайный пароль пользователя root.

4.3.2. Незащищённая инициализация

Для защищённой инициализации введите в командной строке следующую команду:

C:\WebServer\core\mysql\bin\mysqld --initialize-insecure 

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

Не забудьте запустить службу

После инициализации базы данных, необходимо запустить службу MySQL, так как она не запускается после установки.

Запустить службу MySQL можно следующей командой:

net start MySQL

В принципе, установка MySQL на этом окончена. Однако, вам может потребоваться изменить пароль пользователя root, поскольку, например, phpMyAdmin не позволяет авторизоваться в БД, если для авторизации используется пустой пароль (если вы использовали незащищённую авторизацию --initialize-insecure).

4.4. Смена пароля пользователя root

После инициализации, вне зависимости от её типа (защищённая, незащищённая) вам может потребоваться изменение пароля пользователя root.

Для смены пароля рута (да и любого пользователя), необходимо подключиться к базе данных. Убедитесь, что вы запустили службу MySQL, иначе получите ошибку: «Can’t connect to MySQL server on…»:

Для подключения к базе данных, нам необходим файл mysql.exe из папки C:\WebServer\core\mysql\bin.

Заметьте: утилита mysqld.exe (которую мы использовали для установки сервиса и инициализации БД) – отвечает за сервер MySQL, а mysql.exe – это клиент подключения к БД. Не путайте их.

4.4.1. Авторизация в защищённом режиме

Если вы инициализировали базу в защищённом режиме (аргументом --initialize), вам необходимо авторизоваться в базе данных с использованием пароля. Воспользуйтесь следующей командой для подключения к БД:

C:\WebServer\core\mysql\bin\mysql -u root -p 

После ввода команды, MySQL запросит пароль от пользователя root (как уже упоминалось, найти его вы можете в файле с расширением .err в каталоге с базой данных – папке data).

После ввода команды нажмите Enter. MySQL спросит пароль для пользователя root, введите его.

В случае успешной авторизации, вы увидите приветственное сообщение: «Welcome to the MySQL monitor».

Аргумент -u root в данном контексте обозначает, что мы будем авторизоваться от имени пользователя root, а аргумент -p означает, что для входа в базу данных будет использован пароль. Без этого аргумента, MySQL выдаст ошибку: «Access denied for user…».

4.4.2. Авторизация в незащищённом режиме

Данный вариант возможен только в случае, если вы инициализировали базу данных в незащищённом режиме (аргументом --initialize-insecure).

Для авторизации используйте команду:

C:\WebServer\core\mysql\bin\mysql -u root 

После этого вы сразу же попадёте в монитор MySQL, без необходимости вводить пароль.

Использование аргумента -p, как в случае с авторизацией в защищённом режиме, здесь наоборот не нужно, так как пользователь root в данном случае – беспарольный, и попытка выполнить вход с любым паролем выдаст ту же ошибку «Access denied for user…»:

4.4.3. Смена пароля

Для смены пароля пользователя root введите следующую команду:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'НОВЫЙ_ПАРОЛЬ';

Результатом выполнения данной операции должен быть ответ: «Query OK». После смены пароля, вы можете выйти из базы командой quit, после чего попробовать вновь авторизоваться с использованием нового пароля:

C:\WebServer\core\mysql\bin\mysql -u root -p 

4.4.4. Смена пароля в старых версиях MySQL

MySQL до версии 5.7.5 включительно и MariaDB (базированная на MySQL) до 10.1.20 включительно не поддерживают команду ALTER USER. Для этих версий необходимо использовать иной синтаксис команды:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('НОВЫЙ_ПАРОЛЬ');

После изменения пароля перезагрузите привилегии командой:

FLUSH PRIVILEGES;

4.5. Восстановление пароля MySQL

Данный способ поможет вам в случае, если вы по какой-то причине потеряли пароль пользователя root, а соответственно и доступ к MySQL.

Узнать установленный пароль MySQL, к сожалению, нельзя. Однако можно установить новый пароль для пользователя.

Для этого в корне диска C: создайте текстовый файл init.txt. Внутрь данного файла напишите команду изменения пароля, например:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-root-password'; 

Далее завершите службу MySQL командой:

net stop MySQL 

Теперь запустите сервер MySQL с указанием пути к файлу инициализации и включении консольного вывода:

C:\WebServer\core\mysql\bin\mysqld --init-file=C:\init.txt --console 

Когда в выводе увидите строку вида: «C:\WebServer\core\mysql\bin\mysqld: ready for connections. Version:…», нажмите сочетание клавиш Ctrl+C – это завершит сервер MySQL.

После этого вновь запустите сервер MySQL командой:

net start MySQL 

Готово. Теперь вы можете авторизоваться по паролю, который установили в команде в файле init.txt. Не забудьте удалить файл init.txt чтобы избежать компрометации пароля.

5. phpMyAdmin

5.1. Что такое phpMyAdmin?

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

Кроме того, phpMyAdmin предоставляет множество функций для работы с данными, таких как импорт и экспорт данных, выполнение SQL-запросов, создание отчетов и диаграмм и многое другое. Он широко используется веб-разработчиками и администраторами баз данных для управления своими базами данных MySQL.

Кроме того, phpMyAdmin работает скорее как веб-проект (например как тот же WordPress), а не как отдельный компонент, требующий установки (как Apache, PHP и MySQL).

5.2. Скачивание

Для скачивания phpMyAdmin перейдите на сайт phpMyAdmin.net и нажмите кнопку «Download».

Откройте скачанный архив. Внутри вы увидите папку phpMyAdmin-версия-языки, перейдите в неё.

5.3. Установка

5.3.1. Если вы не используете виртуальные хосты в Apache

Создайте в папке C:\WebServer\core\apache\htdocs папку pma. Скопируйте всё содержимое из папки phpMyAdmin-версия-языки из архива в папку pma.

Теперь вы можете войти по адресу http://127.0.0.1/pma/ и попасть в интерфейс phpMyAdmin.

5.3.2. Если вы используете виртуальные хосты Apache

Распакуйте из папки phpMyAdmin-версия-языки из архива в папку C:\WebServer\core\pma.

Далее откройте файл конфигурации виртуальных хостов в Apache: C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf. Добавьте новый виртуальный хост:

<VirtualHost *:80> ServerName pma.localhost DocumentRoot "c:/WebServer/core/pma" </VirtualHost> 

В файл C:\Windows\system32\drivers\etc\hosts добавьте следующую строку:

127.0.0.1 pma.localhost 

В файле C:\WebServer\core\php\php.ini убедитесь, что строка подключения расширения mysqli раскомментирована:

Перезапустите веб-сервер Apache командой:

net stop Apache2.4 & net start Apache2.4 

После этого зайдите через любой браузер по адресу http://pma.localhost/. У вас должна открыться страница авторизации phpMyAdmin. Для авторизации используйте логин-пароль от MySQL.

На этом установка Apache, PHP, MySQL и phpMyAdmin окончена.

При возникновении вопросов, вы можете задать их в комментариях к статье. Мы постараемся ответить на все вопросы, а так же, при необходимости – дополним статью ответами на эти вопросы.

6. Добавление нового сайта

Для создания нового сайта (например mysite.ru) в пределах веб-сервера, выполните следующие действия:

  1. В каталоге C:\WebServer\sites создайте папку mysite.ru, внутри неё – папку www.
  2. В файле виртуальных хостов C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf создайте следующий блок виртуального хоста:
    <VirtualHost *:80> DocumentRoot "${SITES}\mysite.ru\www" ServerName mysite.ru ServerAlias www.mysite.ru </VirtualHost>
  3. В файл C:\Windows\System32\drivers\etc\hosts добавьте строки:
    127.0.0.1 mysite.ru 127.0.0.1 www.mysite.ru
  4. Перезапустите службу Apache, например командой в Командной строке (от имени администратора):
    net stop Apache2.4 & net start Apache2.4
  5. Поместите необходимые файлы сайта (например CMS) в созданный каталог: C:\WebServer\sites\mysite.ru\www
  6. Теперь вы можете открыть в любом браузере ссылку http://mysite.ru/ и ваш сайт откроется.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как добавить себя в администраторы в windows 10
  • Windows 10 do not ask for password
  • Как вернуть старую панель задач в windows 11
  • Драйвер для принтера canon mp260 для windows 10
  • Windows defender как включить защиту