Установка Apache, PHP, MySQL и phpMyAdmin в Windows
Разберём, как установить веб-сервер Apache, препроцессор PHP, СУБД MySQL и инструмент взаимодействия с MySQL – phpMyAdmin.
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 строк комментариев, их можно удалить):
Разберём, из чего эти блоки состоят:
- Части
<VirtualHost *:80>
и</VirtualHost>
отвечают за один виртуальный хост и описывают его. То есть это открывающий и закрывающий теги блока.
Комбинация символов астериска-двоеточия-цифр (*:80
) в данном контексте определяет, что Apache будет обрабатывать этим виртуальным хостом запросы, пришедшие на любой IP-адрес этого компьютера по 80 порту. - DocumentRoot – директория, из которой веб-сервер будет брать файлы при обращении к определённому виртуальному хосту.
- ServerName – основное имя домена, на который будет срабатывать виртуальный хост.
- ServerAlias – альтернативные имена домена, на которые будет срабатывать виртуальный хост. Может быть несколько, перечисленных через запятую. Для работы этой директивы необходимо подключить модуль mod_vhost_alias.so.
- ServerAdmin – электронная почта администратора сервера. Используется в основном при запросах с сервисов Whois.
- ErrorLog – путь к файлу лога ошибок при обращении к конкретно этому виртуальному хосту.
- CustomLog – путь к файлу пользовательских логов.
Давайте разберём небольшой простенький пример конфигурации виртуальных хостов:
- Первый виртуальный хост будет "заглушкой". Всё, что он будет делать – это загружать каталог C:\WebServer\sites\dummy в том случае, если клиент обращается к нашему веб-серверу, но на веб-сервере отсутствует виртуальный хост с таким именем (ServerName или ServerAlias).
- Второй виртуальный хост будет загружать каталог C:\WebServer\sites\example.com\www в том случае, если пользователь заходит по адресам http://example.com/ (ServerName) или http://www.example.com/ (ServerAlias).
- Третий виртуальный хост будет загружать каталок 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-адреса: PC1 - 192.168.1.101, PC2 - 192.168.1.102, PC3 - 192.168.1.103.
В этом случае есть два варианта:
- Простой вариант. На всех компьютерах клиентов (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
- Сложный вариант. В пределах локальной сети развернуть 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.
В данном случае ваш алгоритм действий будет примерно следующим:
- Арендовать "белый" IP-адрес у провайдера
- Арендовать домен у регистратора доменных имён
- Запустить веб-сервер на компьютере в локальной сети, сконфигурировать виртуальные хосты. Одна из возможных реализаций файла виртуальных хостов:
- Настроить переадресацию портов на шлюзе, чтобы запросы, приходящие на шлюз, например на 80 порт, перенаправлялись на "серый" IP-адрес машины, на котором запущен веб-сервер
- У регистратора доменных имён изменить 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) в пределах веб-сервера, выполните следующие действия:
- В каталоге C:\WebServer\sites создайте папку mysite.ru, внутри неё – папку www.
- В файле виртуальных хостов C:\WebServer\core\apache\conf\extra\httpd-vhosts.conf создайте следующий блок виртуального хоста:
<VirtualHost *:80> DocumentRoot "${SITES}\mysite.ru\www" ServerName mysite.ru ServerAlias www.mysite.ru </VirtualHost>
- В файл C:\Windows\System32\drivers\etc\hosts добавьте строки:
127.0.0.1 mysite.ru 127.0.0.1 www.mysite.ru
- Перезапустите службу Apache, например командой в Командной строке (от имени администратора):
net stop Apache2.4 & net start Apache2.4
- Поместите необходимые файлы сайта (например CMS) в созданный каталог: C:\WebServer\sites\mysite.ru\www
- Теперь вы можете открыть в любом браузере ссылку http://mysite.ru/ и ваш сайт откроется.
- Комментарии