Как установить веб-сервер (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:.
├───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).


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

3 комментария 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.

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

Ваш адрес email не будет опубликован.