Инструкция по установке веб-сервера Apache c PHP, MariaDB и phpMyAdmin в Windows.

  • Автор темы HHIDE_DUMP
  • Дата начала
  • Просмотры 620
  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

HHIDE_DUMP

Гость
H

HHIDE_DUMP

Гость
Веб-сервер на своём компьютере это очень удобный способ работы с веб-приложениями в любых целях:

  • тестирование новых CMS и других программ
  • написание и отладка PHP скриптов
  • организация своего собственного рабочего окружения (разные полезные программы запущенные на веб-сервере — органайзеры, агрегаторы)
  • организация ресурсов локальной сети (файловые обменники, чаты, потоковое видео и другие сервисы для всех устройств в квартире)
  • создание лаборатории (обучение тестированию на проникновение со специальными уязвимыми веб-приложениями)


Из чего состоит веб-сервер
В большинстве случаев сервер включает в себя четыре основные компонента:

  • Apache — это сам веб-сервер, который обрабатывает пришедшие от пользователей запросы и показывает страницы сайтов. Без дополнительных модулей Apache преимущественно предназначен для показа статичных страниц, в которых не происходит изменений на стороне сервера
  • PHP — это среда для работы PHP скриптов. PHP скрипты позволяют делать очень функциональные веб-сайты, динамичные веб-приложения, сохранять данные в базу данных и запрашивать данные оттуда
  • MariaDB — это система управления базами данных. Чтобы было проще понять — это и есть база данных, в которой хранится вся информация. До недавнего времени самой, пожалуй, популярной СУБД была MySQL. Что касается MariaDB, то она основана на MySQL, но с некоторыми доработками. Если для приложения в требованиях стоит MySQL, то MariaDB также подойдёт, так как они совместимы друг с другом
  • phpMyAdmin — это пример веб-приложения, которое работает на PHP. С помощью phpMyAdmin можно просматривать базы данных, создавать новые базы данных и таблицы, наполнять их и удалять, делать резервные копии баз данных и восстанавливать из бэкапов. phpMyAdmin очень популярно, поэтому многие считают его частью веб-сервера
Установку сервера я покажу на примере Windows 10.



Скачать веб-сервер под 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
СУБД является сетевой службой, что удобно, поскольку можно подключиться к MariaDB/MySQL с другого компьютера и выполнить разнообразные действия с базами данных. Для локальных процессов это тоже нормально — они подключаются к сетевой службе используя виртуальный сетевой интерфейс
Пожалуйста, Вход или Регистрация для просмотра содержимого 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 был доступен для всех в локальной сети, но не доступен в глобальной сети, то есть два варианта.

  • Первый :
Присвоить компьютеру с сервером статичный адрес, а затем прописать его с директивой Listen локальный_IP:80. Получится именно тот эффект, который нужен: веб сервер будет отвечать на запросы из локальной сети и будет игнорировать запросы из Интернета.

  • Также есть второй способ, более простой чем первый:
В папке C:\Server\data\htdocs\ (это наша корневая папка веб-документов), создайте файл .htaccess, и в него впишите:

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, ознакомились с основными принципами его работы. Также мы узнали что нужно сделать, чтобы сделать веб-сервер более безопасным для основной системы.
 

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя