Как установить веб-сервер (Apache, MySQL, PHP и phpMyAdmin) в Windows 11


Оглавление

1. Из чего состоит веб-сервер для Windows

2. Скачать веб-сервер (Apache, MySQL, PHP и phpMyAdmin) для Windows 11

3. Создание структуры веб-сервера

4. Установка Apache 2.4

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

6. Установка и настройка PHP 8

7. Установка и настройка phpMyAdmin

8. Использование сервера и бэкап данных

9. Дополнительная настройка PHP

10. Дополнительная настройка phpMyAdmin

11. Установка почтовой заглушки

12. Добавление PHP директории в PATH на Windows

13. Настройка cURL в веб-сервере Apache на Windows

14. Резервное копирование данных (сайты и базы данных) Apache в Windows

15. Обновление сервера

16. Дополнительный материал по настройке веб-сервера в Windows

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

Как защитить веб-сервер Apache от взлома в Windows


1. Из чего состоит веб-сервер для Windows

Веб-сервер как таковой, это Apache — он умеет обрабатывать запросы от пользователя и отправлять ему запрошенные файлы, например статичные HTML страницы, картинки, файлы с CSS и JavaScript. Поскольку этого функционала обычно недостаточно и большинству пользователей нужна поддержка динамически создаваемых страниц, то для этих целей к Apache подключается PHP в качестве модуля веб-сервера. Для хранения данных используется та или иная система управления базами данных (СУБД), обычно это MySQL или MariaDB. СУБД не является модулем Apache или PHP, это отдельная сетевая служба к которой могут подключаться различные программы, для нас важно то, что с MySQL может работать PHP.

Эти три компонента являются самыми типичными для того, что обычно называют «веб-сервер», хотя, повторюсь, в действительности веб-сервер это только Apache. Довольно часто к этим трём компонентам добавляют ещё и phpMyAdmin. По своей сути, phpMyAdmin — это набор скриптов, написанных на языке PHP и предназначенных для облегчения работы с базами данных. phpMyAdmin — это веб-интерфейс для работы с базами данных.


На самом деле, к веб-серверу можно добавить/подключить и другие скриптовые языки, например, Python, Perl, Ruby и другие — соответствующие ссылки будут даны в конце статьи.

Это пошаговая инструкция по установки веб-сервера в Windows. Здесь будет подробно показано как установить, настроить и запустить Apache, MySQL, PHP and phpMyAdmin не используя посторонних сборок. Такой подход позволит иметь самые последние версии компонентов и не беспокоиться о безопасности запускаемых программ. Поняв принципе работы и подключения модулей Apache, вы можете добавить любые необходимые вам компоненты, а также сделать настройку в точности под ваши потребности.

2. Скачать веб-сервер (Apache, MySQL, PHP и phpMyAdmin) для Windows 11

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

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

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

Ещё нам нужен файл Visual C++ Redistributable for Visual Studio 2015-2022, т.е. Распространяемый компонент Visual C++ для Visual Studio 2015-2022 (или любой другой более поздний), скачать его можно на официальном сайте Microsoft по ссылке (прямая ссылка на скачивание 64-битной версии; прямая ссылка на скачивание 32-битной версии).

Итак, у меня скачались следующие файлы:

  • httpd-2.4.51-win64-VS16.zip
  • php-8.1.0-Win32-vs16-x64.zip
  • mysql-8.0.27-winx64.zip
  • phpMyAdmin-5.1.1-all-languages.zip
  • VC_redist.x64.exe

Установите файл VC_redist.x64.exe.

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

Поэтому при создании файлов:

3. Создание структуры веб-сервера

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

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

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


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

Карта важных папок, которые упоминаются в данной инструкции:

C:.
└── Server
    ├── bin
    │   ├── Apache24
    │   │   └─── conf
    │   ├── mysql-8.0
    │   ├── PHP
    │   └── Sendmail
    ├── certs
    ├── data
    │   ├── DB
    │   │   └─── data
    │   └── htdocs
    │       └─── phpmyadmin
    └── manage

4. Установка Apache 2.4

Содержимое скаченного архива (точнее говоря, только каталог Apache24), распакуйте в C:\Server\bin\.

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

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

Меняем

Define SRVROOT "c:/Apache24"

на

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

меняем

#LoadModule rewrite_module modules/mod_rewrite.so

на

LoadModule rewrite_module modules/mod_rewrite.so

меняем

#ServerName www.example.com:80

на

ServerName localhost

меняем

    # 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

меняем

DocumentRoot "${SRVROOT}/htdocs"

на


DocumentRoot "c:/Server/data/htdocs"

меняем

<Directory "${SRVROOT}/htdocs">

на

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

и меняем

DirectoryIndex index.html

на

DirectoryIndex index.php index.html index.htm

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

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

и скопируйте туда:

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

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

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

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

и нажмите Enter.

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

Это означает две вещи:

  • Apache работает
  • в каталоге c:\Server\data\htdocs\ нет ни одного файла.

Можете поиграться — добавить в каталог любые html-файлы — полноценный веб-сервер работает.

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

В каталог bin распаковываем файлы MySQL (из архива mysql-8.0.27-winx64.zip). Переименовываем папку mysql-8.0.27-winx64 в mysql-8.0 (для краткости). Кстати, распакованная папка mysql-8.0 занимает более 800 мегабайт!

Заходим в эту папку и создаём там файл 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.

6. Установка и настройка PHP 8

В папке c:\Server\bin\ создайте каталог PHP и скопируйте в него содержимое архива php-8.1.1-Win32-vs16-x64.zip.

В файле 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=oci8_19  ; Use with Oracle Database 19 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=oci8_19  ; Use with Oracle Database 19 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.

7. Установка и настройка phpMyAdmin

В каталог c:\Server\data\htdocs\ копируем содержимое архива phpMyAdmin-5.1.1-all-languages.zip. Переименовываем phpMyAdmin-5.1.1-all-languages в 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. Поле пароля оставляем пустым. Если всё сделано правильно, то всё должно выглядеть так:

8. Использование сервера и бэкап данных

В каталоге c:\Server\data\htdocs\ создавайте папки и файлы, например:

  • c:\Server\data\htdocs\test\ajax.php – этот файл, соответственно, будет доступен по адресу http://localhost/test/ajax.php и т.д.

Для создания полного бэкапа всех сайтов и баз данных достаточно скопировать каталог C:\Server\data\.

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

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

  • c:\Server\bin\Apache24\conf\httpd.conf
  • c:\Server\bin\mysql-8.0\my.ini
  • c:\Server\bin\PHP\php.ini
  • c:\Server\data\htdocs\\phpmyadmin\config.inc.php

В них и хранятся все настройки.

9. Дополнительная настройка PHP

PHP в настоящее время очень мощный, гибкий, удобный язык программирования и инструмент. На локальном компьютере с помощью него можно решать разнообразные задачи, совсем не обязательно связанные с генерацией Web-страниц. При решении неординарных задач можно упереться в ограничения, установленные в настройках. Эти настройки содержаться в файле php.ini (c:\Server\bin\PHP\php.ini) Рассмотрим некоторые из них:

memory_limit = 128M

устанавливает максимальное количество памяти, которое может использовать скрипт

post_max_size = 8M

устанавливает максимальное количество данных, которые будут приняты при отправке методом POST

;default_charset = "UTF-8"

устанавливает кодировку (по умолчанию, строка закомментирована)

upload_max_filesize = 2M

максимальный размер загружаемого на сервер файла. Изначально установлен очень маленький размер – только два мегабайта. Например, при загрузке базы данных в phpMyAdmin, не получится загрузить файл больше 2 мегабайт до тех пор, пока не будет изменён этот пункт настройки.

max_file_uploads = 20

максимальное количество файлов для загрузки за один раз

max_execution_time = 30

максимальное время выполнения одного скрипта

Менять эти настройки совершенно необязательно, но полезно о них знать.

10. Дополнительная настройка phpMyAdmin

Мы уже настроили phpMyAdmin и большинству из нас вполне достаточно базового функционала. Тем не менее, на стартовой странице phpMyAdmin есть надпись: «Хранилище конфигурации phpMyAdmin не полностью настроено, некоторые расширенные функции были отключены. Узнайте причину. Или перейдите на вкладку 'Операции' любой базы данных, чтобы настроить хранилище в ней.».


Новыми возможностями являются:

  • показ связей между (связанными) таблицами;
  • добавление информации о таблицах (начиная с версии 2.3.0 вы можете описывать в специальной таблице ‘table_info’ какая колонка будет показана во всплывающей подсказке при движении курсором над связанным ключом);
  • создание PDF-схемы (начиная с версии 2.3.0 вы можете в phpMyAdmin создавать PDF страницы, показывающие связи между вашими таблицами);
  • отображать комментарии столбцов (начиная с версии 2.3.0 вы можете делать комментарий с описанием каждого столбца для каждой таблицы. И они будут видны в «предварительном просмотре для печати». Начиная с версии 2.5.0, комментарии используются на собственных страницах таблиц и в режиме просмотра, показываясь как всплывающие подсказки над колонками (таблицы свойств) или встроены в заголовок таблицы в режиме просмотра. Они также могут быть показаны в дампе таблицы);
  • создавать закладки (начиная с версии 2.2.0, phpMyAdmin позволяет пользователям делать закладки на запросы. Это может быть полезно для часто используемых запросов);
  • история SQL-запросов (начиная с версии 2.5.0 вы можете сохранять вашу историю всех SQL запросов, которые были сделаны через интерфейс phpMyAdmin);
  • дизайнер (начиная с версии 2.10.0, доступен инструмент Дизайнер; он позволяет визуально управлять связями между таблицами);
  • информация о недавно использованных таблицах;
  • настройка интерфейса часто используемых таблиц;
  • слежение (начиная с версии 3.3.x доступен механизм слежения. Он помогает вам проследить каждую SQL команду, которая была выполнена phpMyAdmin’ом. Поддерживается запись работы с данными и запись команд. После включения, вы сможете делать версии таблиц);
  • пользовательские настройки (начиная с версии 3.4.x, phpMyAdmin позволяет пользователям задавать большинство настроек и сохранять их в базе данных);
  • настраиваемые меню (начиная с версии 4.1.0 вы можете создавать группы пользователей, которым будут доступны только назначенные пункты меню. Пользователь может быть определён в группу и будет видеть только пункты меню, доступные для его группы);
  • спрятать/показать пункты навигации (начиная с версии 4.1.0 вы можете спрятать/показать пункты в навигационном дереве).
  • и другие

Сейчас мы настроим эти дополнительные возможности в полной мере. Перейдите по ссылке http://localhost/phpmyadmin/index.php?route=/check-relations и кликните «Создать базу данных с именем 'phpmyadmin' и настроить там хранение конфигурации phpMyAdmin». 

После этого все новые функции будут активированы.

Несколько скриншотов новых функций:

1) Дизайнер

2) Слежение

11. Установка почтовой заглушки

В каталоге C:\Server\bin\ создайте новый каталог с названием Sendmail. Теперь в этом каталоге создайте файл sendmail.php со следующим содержимым:

#!/usr/bin/env php
 
<?php
/*  PHP.INI
 *  [mail function]
 *  ;SMTP = localhost
 *  ;smtp_port = 25
 *  ;sendmail_from = me@example.com
 *  sendmail_path = php.exe sendmail.php --dir C:\mail --open
 */
 
$is_windows = stristr(PHP_OS, 'WIN');
$options = getopt("", ['open', 'prepend', 'file:', 'dir:']);
$is_open = isset($options['open']);
$is_prepend = isset($options['prepend']);
$is_onefile = isset($options['file']);
$mail_dir = isset($options['dir']) ? $options['dir'] : sys_get_temp_dir() . '/mail';
$file_name = isset($options['file']) ? $options['file'] : mkname();
$file_path = $mail_dir . '/' . $file_name;
 
if (!is_dir($mail_dir)) {
    mkdir($mail_dir, 0777, TRUE);
    if (!is_dir($mail_dir)) {
        die('Mail folder [' . $mail_dir . '] not created');
    }
}
 
$stream = $is_onefile ? PHP_EOL . str_repeat("-=", 10) . date('Y-m-d H:i:s') . str_repeat("-=", 10) . PHP_EOL : '';
while (false !== ($line = fgets(STDIN))) {
    //$stream .= ($is_windows ? str_replace("\n", PHP_EOL, $line) : $line);
    $stream .= $line;
}
 
if ($is_prepend && file_exists($file_path)) {
    $file_contents = file_get_contents($file_path);
    $stream .= $file_contents;
}
 
file_put_contents($file_path, $stream, $is_prepend ? 0 : FILE_APPEND);
 
if ($is_open && $is_windows) {
    pclose(popen("start /B notepad " . $file_path, "r"));
}
 
function mkname($i = 0) {
    global $mail_dir;
    $fn = 'mail_' . date('Y-m-d_H-i-s_') . $i . '.eml';
    return file_exists($mail_dir . '/' . $fn) ? mkname( ++$i) : $fn;
}

Откройте конфигурационный файл PHP, он размещён здесь C:\Server\bin\PHP\php.ini. И добавьте туда одну строчку:

sendmail_path = "C:\Server\bin\PHP\php.exe C:\Server\bin\Sendmail\sendmail.php --dir C:\Server\bin\Sendmail\emails"

Сохраните файл и перезапустите сервер. Отлично, теперь все отправленные письма будут сохраняться в каталоге C:\Server\bin\Sendmail\emails\

054

Письма будут иметь расширение .eml и их можно открывать, например, программой Thunderbird. Либо обычным текстовым редактором.

12. Добавление PHP директории в PATH на Windows

Если этого не сделать, то могут быть проблемы с некоторыми модулями PHP, в том числе с php_curl.dll, php_intl.dll, php_ldap.dll, php_pdo_pgsql.dll и php_pgsql.dll. По крайней мере, при запуске сервера каждый раз в логах появляется следующее:

PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' (tried: C:\\Server\\bin\\PHP\\ext\\curl (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c), C:\\Server\\bin\\PHP\\ext\\php_curl.dll (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'intl' (tried: C:\\Server\\bin\\PHP\\ext\\intl (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c), C:\\Server\\bin\\PHP\\ext\\php_intl.dll (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'ldap' (tried: C:\\Server\\bin\\PHP\\ext\\ldap (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c), C:\\Server\\bin\\PHP\\ext\\php_ldap.dll (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: C:\\Server\\bin\\PHP\\ext\\pdo_pgsql (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c), C:\\Server\\bin\\PHP\\ext\\php_pdo_pgsql.dll (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: C:\\Server\\bin\\PHP\\ext\\pdo_sqlite (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c), C:\\Server\\bin\\PHP\\ext\\php_pdo_sqlite.dll (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'pgsql' (tried: C:\\Server\\bin\\PHP\\ext\\pgsql (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c), C:\\Server\\bin\\PHP\\ext\\php_pgsql.dll (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'sodium' (tried: C:\\Server\\bin\\PHP\\ext\\sodium (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c), C:\\Server\\bin\\PHP\\ext\\php_sodium.dll (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'sqlite3' (tried: C:\\Server\\bin\\PHP\\ext\\sqlite3 (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c), C:\\Server\\bin\\PHP\\ext\\php_sqlite3.dll (\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd \xd1\x83\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xbe\xd0\xb4\xd1\x83\xd0\xbb\xd1\x8c)) in Unknown on line 0

Чтобы избежать этих предупреждений, нужно добавить в системные переменные среды путь до PHP.

Нажмите кнопку Пуск, начните набирать «Изменение системных переменных среды»

и откройте соответствующее окно настроек.

Там нажмите «Переменные среды».

В окне «Системные переменные» найдите и кликните на Path, потом нажмите «Изменить»:

Далее «Создать» 

и впишите туда «C:\Server\bin\PHP\»:

Поднимите запись в самый вверх:

Закройте все окна с сохранением сделанных изменений.

Перезапустите сервер.

13. Настройка cURL в веб-сервере Apache на Windows

Если вы не знаете, что такое cURL, значит это вам не нужно. Т.е. смело пропускайте этот шаг.

cURL – это консольная утилита, которая позволяет обмениваться данными с удалёнными серверами, используя очень большое количество протоколов. cURL может использовать кукиз и поддерживает аутентификацию. Если для веб-приложения требуется cURL, то это должно быть указано в зависимостях. Для многих популярных приложений cURL не требуется, например, для phpMyAdmin и WordPress нет необходимости настраивать cURL.

Если cURL настроена неправильно, то вы будете получать ошибки:

Fatal error: Call to undefined function curl_multi_init() in …

Или:

Ошибка curl: SSL certificate problem: unable to get local issuer certificate

Чтобы cURL работала в Apache на Windows вам нужно:

1) Обязательно добавить PHP директорию в PATH (системные переменные среды). Как это сделать сказано чуть выше: https://hackware.ru/?p=17793#12

2) В файле C:\Server\bin\PHP\php.ini должна быть раскомментирована строка extension=curl

3) Необходимо скачать файл https://curl.haxx.se/ca/cacert.pem, затем в папке C:\Server\ создать новую папку с именем certs и в эту новую папку (C:\Server\certs\) переместите скаченный файл.

4) В файле C:\Server\bin\PHP\php.ini найдите строку

;curl.cainfo =

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

curl.cainfo = C:\Server\certs\cacert.pem

5) Перезапустите сервер.

14. Резервное копирование данных (сайты и базы данных) Apache в Windows

Вся значимая информация, т.е. файлы сайтов и их базы данных хранятся в папке C:\Server\data\. Резервную копию на тот случай, если первоначальные данные испортились, можно делать двумя способами.

Первый способ заключается в том, что мы просто делаем копию всех файлов (сайты+базы данных) в безопасное место. Это простой метод и для большинства он будет самым удобным.

Нужно начать с того, что остановить MySQL, поскольку пока она не остановлена, некоторые файлы баз данных открыты и не могут быть правильно скопированы:

net stop mysql

Теперь просто скопируйте в любое надёжное место папку C:\Server\data\. Она уже содержит и базы данных (подпапка C:\Server\data\DB\) и все сайты (подпапка C:\Server\data\htdocs\). Когда копирование будет завершено, вновь запустите службу MySQL:

net start mysql

Если вам понадобиться восстановить все сайты, либо отдельные сайты, либо только отдельные файлы сайта, то это можно делать без остановки веб-сервера.

Если нужно будет восстановить базы данных, то вновь нужно будет остановить MySQL и вернуть исходные файлы C:\Server\data\DB\.

Обратите внимание, что если вы полностью возвращаете исходную папку C:\Server\data\, то происходит полный откат всех данных, т.е. все изменения, сделанные после создания резервной копии, исчезнут!

Второй метод резервного копирования заключается в экспорте баз данных (это делается при запущенной службе MySQL) и создании бэкапа только папки сайтов C:\Server\data\htdocs\. Этот способ чуть сложнее, но вы можете контролировать, какие именно базы данных вы желаете экспортировать. Также в таком виде (базы данных в виде файлов .SQL и файлы сайтов) удобно переносить сайты на другой веб-сервер или хостинг. Подробности о том, как выполнять экспорт баз данных здесь.

Обычно это не требуется, но при желании вы можете сделать резервную копию бинарных (исполнимых) файлов сервера. Все эти файлы находятся в папке C:\Server\bin\. Это Apache, MySQL и PHP – т.е. программы, которые отвечают за работу сервера, но которые мы в любой момент можем скачать с официальных сайтов и вновь настроить.

Если вы хотите сделать их резервную копию (например, перед обновлением сервера), то остановите службы:

c:\Server\bin\Apache24\bin\httpd.exe -k stop
net stop mysql

И скопируйте в безопасное место папку C:\Server\bin\.

Кстати, вы можете скопировать весь сервер целиком, т.е. папку C:\Server\ - в этом случае одновременно получиться резервная копия и исполняемых файлов, и данных (базы данных, сайты).

Когда копирование завершено, вновь запустите службы:

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

15. Обновление сервера

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

Обновление Apache

Скачайте архив с новой версией Apache.

Скопируйте в безопасное место файл c:\Server\bin\Apache24\conf\httpd.conf.

Остановите и удалите службу Apache:

c:\Server\bin\Apache24\bin\httpd.exe -k stop
c:\Server\bin\Apache24\bin\httpd.exe -k uninstall

Удалите папку C:\Server\bin\Apache24\ (это не затронет ваши сайты и базы данных).

Распакуйте новый архив в C:\Server\bin\. Скопируйте сохранённый ранее файл httpd.conf в c:\Server\bin\Apache24\conf\httpd.conf.

Запустите службу Apache:

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

Обновление PHP

Скачайте архив с новой версией PHP.

Скопируйте в безопасное место файл c:\Server\bin\PHP\php.ini.

Удалите папку C:\Server\bin\PHP\.

Распакуйте новый архив в C:\Server\bin\PHP.

Скопируйте сохранённый ранее файл php.ini в c:\Server\bin\PHP\php.ini.

Перезапустите службу Apache:

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

Обновление MySQL

Скачайте архив с новой версией MySQL.

Скопируйте в безопасное место файл c:\Server\bin\mysql-8.0\my.ini.

Остановите и удалите службу MySQL:

net stop mysql
c:\Server\bin\mysql-8.0\bin\mysqld --remove

Удалите папку C:\Server\bin\mysql-8.0\ (это не затронет ваши сайты и базы данных).

Распакуйте новый архив в C:\Server\bin\. Переименуйте папку в mysql-8.0.

Скопируйте сохранённый ранее файл my.ini в c:\Server\bin\mysql-8.0\my.ini.

Запустите службу MySQL:

C:\Server\bin\mysql-8.0\bin\mysqld --install
net start mysql

Обновление phpMyAdmin

Скачайте архив с новой версией phpMyAdmin.

Скопируйте в безопасное место файл c:\Server\data\htdocs\phpMyAdmin\config.inc.php.

Удалите папку C:\Server\bin\phpMyAdmin\ (это не затронет ваши сайты и базы данных).

Распакуйте новый архив в C:\Server\data\htdocs\. Переименуйте папку в phpMyAdmin.

Скопируйте сохранённый ранее файл config.inc.php в c:\Server\data\htdocs\phpMyAdmin\config.inc.php.

16. Дополнительный материал по настройке веб-сервера в Windows:

Разнообразная информация об Apache в Windows, о настройках и использовании на apache-windows.ru

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

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

c:\Server\bin\Apache24\bin\httpd.exe -k stop
c:\Server\bin\Apache24\bin\httpd.exe -k uninstall
net stop mysql
c:\Server\bin\mysql-8.0\bin\mysqld --remove

Удалите файлы сервера, для этого удалите папку C:\Server\Внимание, это удалит все базы данных и ваши сайты.

Как защитить веб-сервер Apache от взлома в Windows

Смотрите статью «Как защитить веб-сервер Apache от взлома в Windows».


Хостинг

Хороший хостинг с PHP (с выбором версий), с MySQL и phpMyAdmin. Данный сайт размещён именно на нём: отзывчивая и квалифицированная техническая поддержка, установка WordPress и других веб-приложений в одни клик, домены в подарок при оплате за год, бесплатный перенос сайта. При заказе хостинга по этой ссылке + 1 месяц бесплатно (промокод b33e0e2f).


Рекомендуется Вам:

4 комментария to Как установить веб-сервер (Apache, MySQL, PHP и phpMyAdmin) в Windows 11

  1. Спасибо большое за переработанный материал!

    Столкнулся с 10-ю ошибками в phpMyAdmin после установки и конфигурирования. Всё отлично, только вот была проблема с ошибками. Установил версию 5.2, переконфигурировал и заработало. Видимо разработчики phpMyAdmin внесли изменения в новую версию (на 4 января 2022 года для разработчиков. Релизная пока 5.1.1).

    Потратил на поиски и устранение ошибок 1.5 дня. 

  2. екатерина:

    Здравствуйте, в чем может быть проблема, если при установке MySQL C:\Server\data\DB\data\ 
    В ЭТОЙ ПАПКЕ НЕ ОТОБРАЗИЛОСЬ НИЧЕГО? ВСЕ ПЕРЕПРОБОВАДА

    • Alexey:

      Приветствую! Если при запуске команды инициализации базы данных возникает ошибка, значит дело в этой ошибке (напишите, какая именно). Если ошибки нет, значит не применяются настройки из файла my.ini, например, по причине того, что вместо него вы создали файл my.ini.txt.

  3. Владимир:

    Хочу выпазить огромную благодарность автору за такое оформление статьи, за подробнейшее описание статьи. Я прям вижу много часов потраченных на это дело. Потратив несколько часов своего времени на данную статью, вы помогли не потратить десятки часов другим людям на решения данного вопроса. Спасибо !

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *