HHIDE_DUMP
Гость
H
HHIDE_DUMP
Гость
Веб-сервер на своём компьютере это очень удобный способ работы с веб-приложениями в любых целях:
Из чего состоит веб-сервер
В большинстве случаев сервер включает в себя четыре основные компонента:
Скачать веб-сервер под Windows
Установите скаченный vc_redist — к нему больше не будет возвращаться.
Установка веб-сервера в Windows
Создадим структуру каталогов нашего сервера. Главная идея – разделить исполнимые файлы от файлов данных. Это удобно для обслуживания сервера, в том числе для резервного копирования.
В корне диска C:\ создайте каталог Server. В этом каталоге создайте два подкаталога: bin (для исполнимых файлов) и data.
Перейдите в каталог data и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).
Установка Apache 2.4 в Windows
Из архива со скаченным веб-сервером httpd-x.x.xx-win64-VC15.zip распакуйте папку Apache24 в C:\Server\bin\.
В папке C:\Server\bin\Apache24\conf\ откройте текстовым редактором файл httpd.conf. Это главный конфигурационный файл Apache — все настройки мы будем делать в нём. Строки, которые начинаются с # (решётки) — это комментарии и сервер не обращает на них внимание.
Для установки правильной корневой папки сервера строку
Define SRVROOT "c:/Apache24"
замените на
Define SRVROOT "c:/Server/bin/Apache24"
Пролистываем до списка модулей — это список всех доступных расширений (плагинов) сервера. Те, которые закомментированы — отключены. Для их включения уберите знак # в начале строки.
Для начала рекомендую включить только mod_rewrite, для этого строку
#LoadModule rewrite_module modules/mod_rewrite.so
замените на
LoadModule rewrite_module modules/mod_rewrite.so
Найдите строку
#ServerName
и поменяйте на
ServerName localhost
Этой директивой устанавливается имя сервера, которое ни на что не влияет. Но если не прописать это имя, то будет выводиться предупреждение (что имени нет) — некоторых пользователей это путает, так как они принимают это сообщение за ошибку.
Найдите идущие подряд строки
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
и замените их на
DocumentRoot "c:/Server/data/htdocs/"
<Directory "c:/Server/data/htdocs/">
Если коротко, то DocumentRoot — это основная директория, в которой будет размещены файлы всех виртуальных хостов и сайтом. А Directory в данном случае устанавливает настройки основного хоста (при необходимости можно создать несколько виртуальных хостов с разными настройками).
Чуть ниже найдите строки (комментарии приведены для ориентировки):
# 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
Этой настойкой мы включили поддержку файла .htaccess. Он нужен для работы mod_rewrite и других возможностей. С помощью файла .htaccess можно запрещать доступ к конкретной папке и менять некоторые настройки сервера на уровне папок.
Найдите строку
DirectoryIndex index.html
и поменяйте на
DirectoryIndex index.php index.html index.htm
Последней настройкой мы добавили варианты индексных файлов. Индексный файл — этот тот файл, который показывается, когда запрос делается без указания файла. Например, если вы открываете адрес
Сохраните файл конфигурации.
Теперь откройте командную строку Windows, для этого нажмите клавиши Win+x и выберите там Windows PowerShell (администратор):
В открывшееся окно скопируйте команды для установки и запуска Apache (после введения каждой команды нажмите ENTER):
c:\Server\bin\Apache24\bin\httpd.exe -k install
c:\Server\bin\Apache24\bin\httpd.exe -k start
Откройте в веб-браузере адрес
Веб-сервер работает, но в папке с документами нет ни одного файла.
Добавьте в папку C:\Server\data\htdocs\ HTML файлы, например файл hello.htm со следующим содержимым:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Мой первый файл на моём веб-сервере</title>
</head>
<body>
<p>Тест</p>
</body>
</html>
Вновь откройте
Думаю, принцип работы понятен — в папке C:\Server\data\htdocs\ размещайте ваши HTML файлы и сайты. В C:\Server\data\htdocs\ вы можете делать подпапки любого уровня вложенности, они будут доступны по адресам вида
Установка MariaDB в Windows
Далее мы настроим и запустим MariaDB. Начните с того, что содержимое архива mariadb-xx.x.x-winx64.zip распакуйте в папку C:\Server\bin\. Новую папку переименуйте в mariadb. Получится, что MariaDB размещена на диске в папке C:\Server\bin\mariadb\.
Переместите папку C:\Server\bin\mariadb\data\ в папку C:\Server\data\DB\.
В папке C:\Server\bin\mariadb\ создайте файл my.cnf и скопируйте в него:
[mysqld]
datadir="c:/Server/data/DB/data/"
bind-address = 127.0.0.1
Сохраните и закройте этот файл.
Для установки и запуска службы выполните команды:
C:\Server\bin\mariadb\bin\mysqld --install
net start mysql
Установка PHP в Windows
Для установки и подключения PHP к Apache в Windows, в папке c:\Server\bin\ создайте подпапку PHP и скопируйте в неё содержимое архива php-x.x.xx-Win32-VC15-x64.zip.
В каталоге C:\Server\bin\PHP\ найдите файл php.ini-development и переименуйте его в php.ini, затем откройте его текстовым редактором.
В этом файле найдите строку
;extension_dir = "ext"
и замените её на:
extension_dir = "C:\Server\bin\PHP\ext\"
Теперь найдите строки, которые начинаются на ;extension=:
;extension=bz2
;extension=curl
;extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
;extension=exif ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop
Раскомментируйте нужные вам расширения. Рекомендую активировать расширения, которые почти наверняка понадобятся (просто замените предыдущие строки в конфигурационном файле на следующие):
extension=bz2
;extension=curl
extension=fileinfo
extension=gd2
extension=gettext
extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
extension=mbstring
extension=exif ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
extension=odbc
extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop
Также раскомментируйте строки (кроме одной):
;extension=soap
;extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xmlrpc
;extension=xsl
Получится:
extension=soap
extension=sockets
;extension=sodium
extension=sqlite3
extension=tidy
extension=xmlrpc
extension=xsl
Сохраните и закройте этот файл.
Теперь нам нужно подключить PHP к Apache. Для этого в файле c:\Server\bin\Apache24\conf\httpd.conf в самый конец добавьте строчки:
PHPIniDir "C:/Server/bin/PHP"
AddHandler application/x-httpd-php .php
LoadModule php7_module "C:/Server/bin/PHP/php7apache2_4.dll"
Сохраните и закройте файл.
После этого в командной строке перезапустите Apache:
c:\Server\bin\Apache24\bin\httpd.exe -k restart
Для проверки, что PHP работает в Windows, в каталоге c:\Server\data\htdocs\ создадим файл с названием i.php
В этот файл скопируйте:
<?php
phpinfo ();
В браузере откройте ссылку
Установка phpMyAdmin в Windows
В каталог c:\Server\data\htdocs\ скопируйте содержимое архива phpMyAdmin-x.x.x-all-languages.zip. Переименуйте полученную папку в phpMyAdmin, получится, что 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]['extension'] = 'mysqli';
$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'] = '';
Сохраните и закройте этот файл.
Для входа в phpMyAdmin перейдите по ссылке
Внизу показано сообщение:
Хранилище конфигурации phpMyAdmin не полностью настроено, некоторые расширенные функции были отключены. Узнайте причину.
Или перейдите на вкладку 'Операции' любой базы данных, чтобы настроить хранилище в ней.
Чтобы узнать подробности, перейдите по ссылке
Там будет написано:
Конфигурация pmadb… Не готово
Основные возможности связей Недоступно
Создать базу данных с именем 'phpmyadmin' и настроить там хранение конфигурации phpMyAdmin.
Чтобы исправить проблему, достаточно создать требуемую базу данных, чтобы это сделать просто перейдите по ссылке
Как обезопасить веб-сервер на Windows
После запуска сервера не будет лишним позаботиться о его безопасности. Сетевая служба несёт повышенный риск, поскольку по своему определению (она же сетевая!) подразумевает, что к ней могут подключиться другие устройства и лица, в том числе злоумышленники. При определённых условиях, скомпрометирован может быть не только веб-сервер, но и весь компьютер целиком, на котором этот сервер запущен и даже другие устройства в локальной сети. Поскольку в Windows Apache работает с повышенными привилегиями, а права доступа на файлы не настроены должны образом, то веб-сервер с уязвимым скриптом может злоумышленнику предоставить доступ к любому файлу на компьютере.
Так вот, для MariaDB мы в файле настройки прописали:
bind-address = 127.0.0.1
Это означает, что она прослушивает только IP адрес 127.0.0.1, который относится к Loopback. Это, в свою очередь, означает, что никто из вне (вне компьютера, на котором работает веб-сервер), не сможет подключиться к MariaDB/MySQL. При этом сайты и другие приложения будут работать с базами данных как ни в чём не бывало — они как раз и используют такие соединения к адресу 127.0.0.1.
То есть MariaDB уже защищена.
Если вы используете сервер только для написания скриптов, тестирования сайтов и вам не нужно, чтобы к нему могли подключаться из вне, тогда в файле C:\Server\bin\Apache24\conf\httpd.conf найдите директиву Listen, по умолчанию её значение:
Listen 80
И замените его на
Listen 127.0.0.1:80
Чтобы изменения вступили в силу, перезапустите сервер:
c:\Server\bin\Apache24\bin\httpd.exe -k restart
После этого никакое устройство ни в глобальной, ни в локальной сети не сможет подключиться к вашему веб-серверу. Но вы как и раньше без проблем сможете открывать его содержимое в веб-браузере используя адрес
Если вы хотите сделать так, чтобы сервер Apache был доступен для всех в локальной сети, но не доступен в глобальной сети, то есть два варианта.
Require ip 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 127.0.0.0/8 ::1/128
Этой строкой мы разрешили для доступа к серверу устройствам с IP из всех локальных диапазонов, а также петлевым адресам, для всех остальных при попытке подключиться к серверу будет выводиться сообщение:
Forbidden
You don't have permission to access / on this server.
Вы можете отредактировать приведённую выше строку под ваши нужды, например, можно убрать диапазоны 10.0.0.0/8 и 172.16.0.0/12, если они не используются в вашей локальной сети. IP адреса из 10.0.0.0/8 могут использоваться Интернет-провайдером для NAT, а 172.16.0.0/12 могут использоваться для локальных сетей на уровне города (такие есть/были у некоторых провайдеров). Следовательно, если вы оставите диапазоны 10.0.0.0/8 и 172.16.0.0/12, то при стечении ряда обстоятельств (кабель Интернет-провайдера напрямую подключён к компьютеру без роутера, а Интернет-провайдер использует диапазоны 10.0.0.0/8 и 172.16.0.0/12) пользователи этих локальных сетей смогут подключиться к вашему серверу при этих настройках.
Поэтому также попробуйте
Require ip 192.168.0.0/16 127.0.0.0/8 ::1/128
Если всё работает и проблем нет, то остановитесь именно на втором варианте.
Для этого откройте командную строку, в неё введите:
cd C:\Server\bin\mariadb\bin\
.\mysql -u root
Внутри MySQL:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
exit;
Замените новый_пароль на ваш пароль.
Заключение
В этой инструкции мы научились устанавливать и настраивать веб-сервер на Windows, ознакомились с основными принципами его работы. Также мы узнали что нужно сделать, чтобы сделать веб-сервер более безопасным для основной системы.
- тестирование новых CMS и других программ
- написание и отладка PHP скриптов
- организация своего собственного рабочего окружения (разные полезные программы запущенные на веб-сервере — органайзеры, агрегаторы)
- организация ресурсов локальной сети (файловые обменники, чаты, потоковое видео и другие сервисы для всех устройств в квартире)
- создание лаборатории (обучение тестированию на проникновение со специальными уязвимыми веб-приложениями)
Из чего состоит веб-сервер
В большинстве случаев сервер включает в себя четыре основные компонента:
- Apache — это сам веб-сервер, который обрабатывает пришедшие от пользователей запросы и показывает страницы сайтов. Без дополнительных модулей Apache преимущественно предназначен для показа статичных страниц, в которых не происходит изменений на стороне сервера
- PHP — это среда для работы PHP скриптов. PHP скрипты позволяют делать очень функциональные веб-сайты, динамичные веб-приложения, сохранять данные в базу данных и запрашивать данные оттуда
- MariaDB — это система управления базами данных. Чтобы было проще понять — это и есть база данных, в которой хранится вся информация. До недавнего времени самой, пожалуй, популярной СУБД была MySQL. Что касается MariaDB, то она основана на MySQL, но с некоторыми доработками. Если для приложения в требованиях стоит MySQL, то MariaDB также подойдёт, так как они совместимы друг с другом
- phpMyAdmin — это пример веб-приложения, которое работает на PHP. С помощью phpMyAdmin можно просматривать базы данных, создавать новые базы данных и таблицы, наполнять их и удалять, делать резервные копии баз данных и восстанавливать из бэкапов. phpMyAdmin очень популярно, поэтому многие считают его частью веб-сервера
Скачать веб-сервер под Windows
Скачать Apache
Чтобы скачать Apache для Windows перейдите на страницу: Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. Выберите Win64 или Win32 версию (первая — для 64-битных систем, а вторая для 32-битных). На этой же странице скачайте C++ Redistributable Visual Studio 2017: vc_redist_x64 или vc_redist_x86. Этот распространяемый C++ пакет Visual Studio 2017 содержит необходимые для работы веб-сервера библиотеки, поскольку Apache для Windows скомпилирован в Visual Studio 2017. Кстати, C++ Redistributable Visual Studio 2017 также нужен и для работы PHP интерпретатора и MariaDB.Установите скаченный vc_redist — к нему больше не будет возвращаться.
Скачать PHP
Чтобы скачать PHP для Windows перейдите на страницу Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. Там выберите файл VC15 x64 Thread Safe или VC15 x86 Thread Safe — они различаются битностью. Причём нужно скачивать файл Zip (а не Debug Pack).Скачать MariaDB
Для скачивания MariaDB под Windows перейдите на страницу Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. Там нажмите на зелёную кнопку последнего выпуска. На открывшейся странице найдите файл, имеющий вид mariadb-xx.x.xx-winx64.zip или mariadb-xx.x.xx-win32.zip — они также различаются битностью. При клике на файл, откроется другая страница, там просто найдите и нажмите кнопку с надписью «No thanks, just take me to the download».Скачать phpMyAdmin
Скачайте phpMyAdmin со страницы Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. Там найдите кнопку со словом Download.Установка веб-сервера в Windows
Создадим структуру каталогов нашего сервера. Главная идея – разделить исполнимые файлы от файлов данных. Это удобно для обслуживания сервера, в том числе для резервного копирования.
В корне диска C:\ создайте каталог Server. В этом каталоге создайте два подкаталога: bin (для исполнимых файлов) и data.
Перейдите в каталог data и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).
Установка Apache 2.4 в Windows
Из архива со скаченным веб-сервером httpd-x.x.xx-win64-VC15.zip распакуйте папку Apache24 в C:\Server\bin\.
В папке C:\Server\bin\Apache24\conf\ откройте текстовым редактором файл httpd.conf. Это главный конфигурационный файл Apache — все настройки мы будем делать в нём. Строки, которые начинаются с # (решётки) — это комментарии и сервер не обращает на них внимание.
Для установки правильной корневой папки сервера строку
Define SRVROOT "c:/Apache24"
замените на
Define SRVROOT "c:/Server/bin/Apache24"
Пролистываем до списка модулей — это список всех доступных расширений (плагинов) сервера. Те, которые закомментированы — отключены. Для их включения уберите знак # в начале строки.
Для начала рекомендую включить только mod_rewrite, для этого строку
#LoadModule rewrite_module modules/mod_rewrite.so
замените на
LoadModule rewrite_module modules/mod_rewrite.so
Найдите строку
#ServerName
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
и поменяйте на
ServerName localhost
Этой директивой устанавливается имя сервера, которое ни на что не влияет. Но если не прописать это имя, то будет выводиться предупреждение (что имени нет) — некоторых пользователей это путает, так как они принимают это сообщение за ошибку.
Найдите идущие подряд строки
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
и замените их на
DocumentRoot "c:/Server/data/htdocs/"
<Directory "c:/Server/data/htdocs/">
Если коротко, то DocumentRoot — это основная директория, в которой будет размещены файлы всех виртуальных хостов и сайтом. А Directory в данном случае устанавливает настройки основного хоста (при необходимости можно создать несколько виртуальных хостов с разными настройками).
Чуть ниже найдите строки (комментарии приведены для ориентировки):
# 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
Этой настойкой мы включили поддержку файла .htaccess. Он нужен для работы mod_rewrite и других возможностей. С помощью файла .htaccess можно запрещать доступ к конкретной папке и менять некоторые настройки сервера на уровне папок.
Найдите строку
DirectoryIndex index.html
и поменяйте на
DirectoryIndex index.php index.html index.htm
Последней настройкой мы добавили варианты индексных файлов. Индексный файл — этот тот файл, который показывается, когда запрос делается без указания файла. Например, если вы открываете адрес
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
, то не указываете, какой именно файл вы хотите увидеть. Поэтому сервер показывает вам индексный файл. Если указать конкретный файл, например, Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
, то будет показан именно он (если он существует). В дополнении к имеющемуся индексному файлу index.html, мы добавили ещё два: index.php (обычно веб-приложения на PHP используют этот файл) и index.htm (тоже популярный вариант).Сохраните файл конфигурации.
Теперь откройте командную строку Windows, для этого нажмите клавиши Win+x и выберите там Windows PowerShell (администратор):
В открывшееся окно скопируйте команды для установки и запуска Apache (после введения каждой команды нажмите ENTER):
c:\Server\bin\Apache24\bin\httpd.exe -k install
c:\Server\bin\Apache24\bin\httpd.exe -k start
Откройте в веб-браузере адрес
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
.Веб-сервер работает, но в папке с документами нет ни одного файла.
Добавьте в папку C:\Server\data\htdocs\ HTML файлы, например файл hello.htm со следующим содержимым:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Мой первый файл на моём веб-сервере</title>
</head>
<body>
<p>Тест</p>
</body>
</html>
Вновь откройте
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
и вы увидите ваш файл:Думаю, принцип работы понятен — в папке C:\Server\data\htdocs\ размещайте ваши HTML файлы и сайты. В C:\Server\data\htdocs\ вы можете делать подпапки любого уровня вложенности, они будут доступны по адресам вида
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
.Установка MariaDB в Windows
Далее мы настроим и запустим MariaDB. Начните с того, что содержимое архива mariadb-xx.x.x-winx64.zip распакуйте в папку C:\Server\bin\. Новую папку переименуйте в mariadb. Получится, что MariaDB размещена на диске в папке C:\Server\bin\mariadb\.
Переместите папку C:\Server\bin\mariadb\data\ в папку C:\Server\data\DB\.
В папке C:\Server\bin\mariadb\ создайте файл my.cnf и скопируйте в него:
[mysqld]
datadir="c:/Server/data/DB/data/"
bind-address = 127.0.0.1
Сохраните и закройте этот файл.
Для установки и запуска службы выполните команды:
C:\Server\bin\mariadb\bin\mysqld --install
net start mysql
Установка PHP в Windows
Для установки и подключения PHP к Apache в Windows, в папке c:\Server\bin\ создайте подпапку PHP и скопируйте в неё содержимое архива php-x.x.xx-Win32-VC15-x64.zip.
В каталоге C:\Server\bin\PHP\ найдите файл php.ini-development и переименуйте его в php.ini, затем откройте его текстовым редактором.
В этом файле найдите строку
;extension_dir = "ext"
и замените её на:
extension_dir = "C:\Server\bin\PHP\ext\"
Теперь найдите строки, которые начинаются на ;extension=:
;extension=bz2
;extension=curl
;extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
;extension=exif ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop
Раскомментируйте нужные вам расширения. Рекомендую активировать расширения, которые почти наверняка понадобятся (просто замените предыдущие строки в конфигурационном файле на следующие):
extension=bz2
;extension=curl
extension=fileinfo
extension=gd2
extension=gettext
extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
extension=mbstring
extension=exif ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
extension=odbc
extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop
Также раскомментируйте строки (кроме одной):
;extension=soap
;extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xmlrpc
;extension=xsl
Получится:
extension=soap
extension=sockets
;extension=sodium
extension=sqlite3
extension=tidy
extension=xmlrpc
extension=xsl
Сохраните и закройте этот файл.
Теперь нам нужно подключить PHP к Apache. Для этого в файле c:\Server\bin\Apache24\conf\httpd.conf в самый конец добавьте строчки:
PHPIniDir "C:/Server/bin/PHP"
AddHandler application/x-httpd-php .php
LoadModule php7_module "C:/Server/bin/PHP/php7apache2_4.dll"
Сохраните и закройте файл.
После этого в командной строке перезапустите Apache:
c:\Server\bin\Apache24\bin\httpd.exe -k restart
Для проверки, что PHP работает в Windows, в каталоге c:\Server\data\htdocs\ создадим файл с названием i.php
В этот файл скопируйте:
<?php
phpinfo ();
В браузере откройте ссылку
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. Если вы увидите похожую страницу, это значит, что PHP правильно настроен и успешно работает с Apache в Windows:Установка phpMyAdmin в Windows
В каталог c:\Server\data\htdocs\ скопируйте содержимое архива phpMyAdmin-x.x.x-all-languages.zip. Переименуйте полученную папку в phpMyAdmin, получится, что 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]['extension'] = 'mysqli';
$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'] = '';
Сохраните и закройте этот файл.
Для входа в phpMyAdmin перейдите по ссылке
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
, в качестве имени пользователя введите root, поле пароля оставьте пустым:Внизу показано сообщение:
Хранилище конфигурации phpMyAdmin не полностью настроено, некоторые расширенные функции были отключены. Узнайте причину.
Или перейдите на вкладку 'Операции' любой базы данных, чтобы настроить хранилище в ней.
Чтобы узнать подробности, перейдите по ссылке
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
:Там будет написано:
Конфигурация pmadb… Не готово
Основные возможности связей Недоступно
Создать базу данных с именем 'phpmyadmin' и настроить там хранение конфигурации phpMyAdmin.
Чтобы исправить проблему, достаточно создать требуемую базу данных, чтобы это сделать просто перейдите по ссылке
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Как обезопасить веб-сервер на Windows
После запуска сервера не будет лишним позаботиться о его безопасности. Сетевая служба несёт повышенный риск, поскольку по своему определению (она же сетевая!) подразумевает, что к ней могут подключиться другие устройства и лица, в том числе злоумышленники. При определённых условиях, скомпрометирован может быть не только веб-сервер, но и весь компьютер целиком, на котором этот сервер запущен и даже другие устройства в локальной сети. Поскольку в Windows Apache работает с повышенными привилегиями, а права доступа на файлы не настроены должны образом, то веб-сервер с уязвимым скриптом может злоумышленнику предоставить доступ к любому файлу на компьютере.
Запрет доступа из вне к MariaDB/MySQL
Стандартный веб-сервер, в том числе тот, который мы только что установили, имеет две сетевые службы:- сам веб-сервер, который прослушивает 80 порт (при включении HTTPS, то ещё прослушивается и 443 порт)
- сетевая служба системы управления базами данных, то есть MariaDB или MySQL, которая прослушивает порт 3306
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
(можно перевести как «возвратная петля»). Если не вдаваться в дебри, это такой способ подключиться к сетевой службе, которая работает на этом же компьютере. То есть мы как будто делаем запрос в сеть, а сетевая служба видит эти пакеты как будто бы они пришли из сети. То есть клиент сетевой службы и сама сетевая служба работают как надо, но трафик на самом деле с компьютера никуда не уходит.Так вот, для MariaDB мы в файле настройки прописали:
bind-address = 127.0.0.1
Это означает, что она прослушивает только IP адрес 127.0.0.1, который относится к Loopback. Это, в свою очередь, означает, что никто из вне (вне компьютера, на котором работает веб-сервер), не сможет подключиться к MariaDB/MySQL. При этом сайты и другие приложения будут работать с базами данных как ни в чём не бывало — они как раз и используют такие соединения к адресу 127.0.0.1.
То есть MariaDB уже защищена.
Запрет доступа из вне к Apache
Что касается веб-сервера, то здесь настройка зависит от ваших нужд — для чего именно нужен сервер?Если вы используете сервер только для написания скриптов, тестирования сайтов и вам не нужно, чтобы к нему могли подключаться из вне, тогда в файле C:\Server\bin\Apache24\conf\httpd.conf найдите директиву Listen, по умолчанию её значение:
Listen 80
И замените его на
Listen 127.0.0.1:80
Чтобы изменения вступили в силу, перезапустите сервер:
c:\Server\bin\Apache24\bin\httpd.exe -k restart
После этого никакое устройство ни в глобальной, ни в локальной сети не сможет подключиться к вашему веб-серверу. Но вы как и раньше без проблем сможете открывать его содержимое в веб-браузере используя адрес
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Если вы хотите сделать так, чтобы сервер Apache был доступен для всех в локальной сети, но не доступен в глобальной сети, то есть два варианта.
- Первый :
- Также есть второй способ, более простой чем первый:
Require ip 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 127.0.0.0/8 ::1/128
Этой строкой мы разрешили для доступа к серверу устройствам с IP из всех локальных диапазонов, а также петлевым адресам, для всех остальных при попытке подключиться к серверу будет выводиться сообщение:
Forbidden
You don't have permission to access / on this server.
Вы можете отредактировать приведённую выше строку под ваши нужды, например, можно убрать диапазоны 10.0.0.0/8 и 172.16.0.0/12, если они не используются в вашей локальной сети. IP адреса из 10.0.0.0/8 могут использоваться Интернет-провайдером для NAT, а 172.16.0.0/12 могут использоваться для локальных сетей на уровне города (такие есть/были у некоторых провайдеров). Следовательно, если вы оставите диапазоны 10.0.0.0/8 и 172.16.0.0/12, то при стечении ряда обстоятельств (кабель Интернет-провайдера напрямую подключён к компьютеру без роутера, а Интернет-провайдер использует диапазоны 10.0.0.0/8 и 172.16.0.0/12) пользователи этих локальных сетей смогут подключиться к вашему серверу при этих настройках.
Поэтому также попробуйте
Require ip 192.168.0.0/16 127.0.0.0/8 ::1/128
Если всё работает и проблем нет, то остановитесь именно на втором варианте.
Установка пароля на MariaDB/MySQL
По умолчанию у пользователя root пустой пароль. Поскольку мы отключили доступ к серверу MariaDB/MySQL из вне, то это не так опасно. Тем не менее, остаётся угроза, что злоумышленник найдёт уязвимость в веб-приложении и сможет выполнить подключение через него. Поэтому при желании для дополнительного усиления сервера можно установить пароль для пользователя root в MariaDB/MySQL.Для этого откройте командную строку, в неё введите:
cd C:\Server\bin\mariadb\bin\
.\mysql -u root
Внутри MySQL:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
exit;
Замените новый_пароль на ваш пароль.
Заключение
В этой инструкции мы научились устанавливать и настраивать веб-сервер на Windows, ознакомились с основными принципами его работы. Также мы узнали что нужно сделать, чтобы сделать веб-сервер более безопасным для основной системы.