Все программы, входящие в типичную установку веб-сервера, являются бесплатными, у всех у них открыт исходный код. Локальный веб-сервер потребляет минимум ресурсов и, на самом деле, его совсем нетрудно установить и настроить.
Эта инструкция о том, как установить локальный веб-сервер без использования готовых сборок. Этот способ имеет свои преимущества. Самыми важными из них являются: полный контроль на тем, что вы устанавливаете; возможность использовать самые последние версии программного обеспечения.
Подготовка (скачивание программ, входящих в сервер, создание структуры сервера). примечание: Официальный сайт разработчиков Apache это httpd.apache.org. Можно скачать Apache с этого сайта. Но официальная версия собирается с использованием старого компилятора, по этой причине она не работает с новыми версиями PHP. Авторы PHP рекомендуют Apache с сайта apachelounge.com/download. Поэтому для этой инструкции скачиваем Apache именно с сайта apachelounge.com/download.
Скачиваем
Если у вас 64-битная версия Windows, то вы можете выбрать как 64-битную, так и 32-битную версию компонентов. Главное правило — все компоненты должны быть одной битности. Если у вас 32-битная версия Windows, то все компоненты должны быть 32-битными. Это не относится к phpMyAdmin, который написан на языке PHP. Для PHP программ понятие битности неприменимо.
PHP 8 скачайте со страницы //windows.php.net/download/. Выберите версию Thread Safe, обратите внимание на битность.
Бесплатная версия MySQL называется MySQL Community Server. Её можно скачать на странице //dev.mysql.com/downloads/mysql/. На этой же странице есть установщик в виде исполнимого файла, но я рекомендую скачать ZIP-архив. На странице скачивания нам предлагают зарегистрироваться или войти в существующую учётную запись — но это делать необязательно. Достаточно нажать на ссылку «No thanks, just start my download». Обратите внимание на битность.
Сайт для скачивания phpMyAdmin phpmyadmin.net.
Ещё нам нужен файл Visual C++ Redistributable for Visual Studio 2015-2019, т.е. Распространяемый компонент Visual C++ для Visual Studio 2015-2019 (или любой другой более поздний), скачать его можно на официальном сайте Microsoft по ссылке:
прямая ссылка на скачивание 64-битной версии; прямая ссылка на скачивание 32-битной версии;Установка
Установите файл VC_redist.x64.exe
Создание структуры веб-сервера
примечание: Создадим структуру каталогов нашего сервера. Главная идея — разделить исполнимые файлы и файлы сайтов с базами данных. Это удобно для обслуживания сервера, в том числе для резервного копирования.
В корне диска C:\ создайте каталог Server
В этом каталоге создайте 2 подкаталога: bin (для исполнимых файлов) и data
C:\
C:\Server
C:\Server\bin
C:\Server\data
Перейдите в каталог data и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).
C:\Server\data
C:\Server\data\DB
C:\Server\data\htdocs
Перейдите в каталог C:\Server\data\DB\ и создайте там пустую папку data.
C:\Server\data\DB
C:\Server\data\DB\data
Установка Apache 2.4
C:\Server\bin
Apache24 —> C:\Server\binC:\Server\bin\Apache24
Перейдите в каталог C:\Server\bin\Apache24\conf\ и октройте файл httpd.conf любым текстовым редактором.C:\Server\bin\Apache24\conf\httpd.conf
В нём изменяем ряд строк.
Изменяем:
Define SRVROOT "c:/Apache24"
на—>
Define SRVROOT "c:/Server/bin/Apache24"
#ServerName www.example.com:80
на—>
ServerName localhost
DocumentRoot "${SRVROOT}/htdocs"
на—>
DocumentRoot "c:/Server/data/htdocs"
на—>
DirectoryIndex index.html
на—>
DirectoryIndex index.php index.html index.htm
на—>
#AllowOverride controls what directives may be placed in .htaccess files.#LoadModule rewrite_module modules/mod_rewrite.so
на—>
LoadModule rewrite_module modules/mod_rewrite.so
Сохраняем и закрываем файл. Всё, настройка Apache завершена!
Откройте командную строку (Win+X). Выберите там Командная строка (администратор) или Windows PowerShell (администратор) и скопируйте туда:c:\Server\bin\Apache24\bin\httpd.exe -k install
Нажмите ENTER
Затем скопируйте туда:c:\Server\bin\Apache24\bin\httpd.exe -k start
Нажмите ENTER
Apache работает
Для удобства дальнейшей работы с сервером переходим по адресу
C:\Server\bin\Apache24\bin\ApacheMonitor.exe
и запускаем ApacheMonitor.exe (+ создаем ярлык и помещаем в автозагрузку Windows)Установка и настройка MySQL 8.0
Переименовываем папку mysql-8.0.23-winx64 в mysql-8.0 (для краткости).
Заходим в эту папку (C:\Server\bin\mysql-8.0\) и создаём там файл my.iniТеперь открываем этот файл (my.ini) любым текстовым редактором.
Добавяем туда следующие строки:Настройка завершена, но нужно ещё выполнить инициализацию и установку, для этого открываем командную строку от имени администратора и последовательно вводим туда:
C:\Server\bin\mysql-8.0\bin\mysqld --initialize-insecure --user=rootПо окончанию этого процесса в каталоге C:\Server\data\DB\data\ должны появиться автоматически сгенерированные файлы:
C:\Server\data\DB\data\
Теперь служба MySQL будет запускаться при каждом запуске Windows.
C:\Server\bin\PHP
Перейдите в каталог C:\Server\bin\Apache24\conf\ и октройте файл httpd.conf любым текстовым редактором.В самый конец добавляем строчки
PHPIniDir "C:/Server/bin/PHP"c:\Server\bin\Apache24\bin\httpd.exe -k restart
В каталоге c:\Server\data\htdocs\ создаём файл с названием info.php
C:\Server\data\htdocs\info.php
Копируем в этот файл:phpinfo ();
В браузере откройте ссылку http://localhost/info.php. Если вы видите тоже самое, что на картинке, значит PHP работает:php.ini-development —> php.ini
Открываем файл php.ini любым текстовым редактором, ищем строчку
;extension_dir = "ext"
заменяем на—>
extension_dir = "C:\Server\bin\PHP\ext\"
на—>
extension=bz2на—>
extension=soapЭтими действиями мы включили расширения. Они могут понадобиться в разных ситуациях для разных скриптов. Сохраняем файл и перезапускаем Apache
PHP в настоящее время очень мощный, гибкий, удобный инструмент. На локальном компьютере с помощью него можно решать разнообразные задачи, совсем не обязательно связанные с генерацией Web-страниц. При решении неординарных задач можно упереться в ограничения, установленные в настройках. Эти настройки содержатся в файле php.ini (c:\Server\bin\PHP\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максимальное время выполнения одного скрипта
Полезно знать об этих настройках.Из всех имеющихся вариантов подключения виртуальных хостов Apache в Windows выбрал вариант — автоматического создания виртуальных хостов, т.к. считаю его наиболее удобным и практичным. Поэтому описание будет только для этого способа.
Начнём с небольшой подготовки. Создадим каталог, в котором будем размещать наши виртуальные хосты. Например, C:\Server\data\htdocs\virthosts\А в этом каталоге создадим три новых папки: localhost1, localhost2, localhost3. В каждой из них создайте по индексному файлу (index.html) с любым содержанием, который позволил бы идентифицировать, что вы попали в нужный хост.
local1
для второгоlocal2
для третьегоlocal3
В файле C:\Server\bin\Apache24\conf\httpd.conf найдите и раскоментируйте следующую строку:
Include conf/extra/httpd-vhosts.conf
В файле C:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf закомментируйте (или удалите) те строки, которые приведены по умолчанию.
В файле C:\Server\bin\Apache24\conf\httpd.conf найдите и раскоментируйте следующую строку:
LoadModule vhost_alias_module modules/mod_vhost_alias.so
В директории C:\Server\data\htdocs\virthosts\ создайте папку localhost (теперь именно её содержимое будет отображаться, когда вы в браузере набираете http://localhost).
В файл C:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf добавьте следующую строку:
VirtualDocumentRoot "C:/Server/data/htdocs/virthosts/%1/"
Перезапустите сервер Apache.
Теперь любая папка, созданная в C:\Server\data\htdocs\virthosts\ будет доступна по адресу вида:
http://имя_папки.localhost
В нашем случае,
при открытии http://localhost1.localhost мы увидим содержимое: local1
При открытии http://localhost2.localhost мы увидим содержимое: local2
При открытии http://localhost3.localhost мы увидим содержимое: local3
phpmyadmin —> C:\Server\data\htdocs\virthosts\
C:\Server\data\htdocs\virthosts\phpmyadminВ каталоге C:\Server\data\htdocs\virthosts\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'] = '';
?>
В браузере набираем http://phpmyadmin.localhost
В качестве имя пользователя вводим root. Поле пароля оставляем пустым. Если всё сделано правильно, то всё должно выглядеть так:
Новыми возможностями являются:
показ связей между (связанными) таблицами;
добавление информации о таблицах (начиная с версии 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 вы можете спрятать/показать пункты в навигационном дереве).
и другие
Активация дополнительных возможностей phpMyAdmin:
перейдите по ссылке http://phpmyadmin.localhost/chk_rel.php и кликните «Создать базу данных». После этого все новые функции будут активированы.
В каталоге 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\
Письма будут иметь расширение .eml и их можно открывать, например, программой Thunderbird. Либо обычным текстовым редактором.
Website description, contact form, mini map or anything else.
This editable area is visible on all pages.