Автор Тема: Установка Apache + PHP + MySQL на windows  (Прочитано 1143 раз)

SysBox

  • Администратор
  • Новичок
  • *****
  • Сообщений: 5
  • Администратор
    • Просмотр профиля
    • SysBox
Установка Apache + PHP + MySQL на windows
« : 05 Ноябрь 2017, 01:21:37 »
Создание среды разработки (локальный веб-сервер)



1. Локальный веб-сервер можно быстро установить автоматически

XAMPP
DENWER
OPEN-SERVER
и т.п. но понимания, как все работает, не будет.



2. Ниже инструкция как сделать локальный веб-сервер вручную

Устанавливаем и настраиваем Apache + PHP + MySql на Windows7 - Windows10.
По сути мы создадим домашний хостинг. Обычно используют его для разработки и тестирования. Использовать как боевой (вместо платного хостинга) можно но так никто не делает по причинам:

* нужно отдельно заниматься безопасностью
* 24 часа в сутки шумит компьютер
* не рациональный расход электричества
* железо изнашивается быстрее
* железо сломалось, нет электричества, нет интернета - сайты пропали на Х времени
* нужно организовывать резервирование данных
* желательно оплачивать постоянный IP адрес

Если хотите реальный хостинг, то купите его. Или купите виртуальный сервер DigitalOcean, IHOR, TimeWeb и поставьте туда VESTA.



3. Создаем папки

c:/server/apache/ - apache
c:/server/php/ - php
c:/server/php_error_log/ - логи

c:/www/ - Общая папка для всех сайтов
c:/www/test.ru/ - Папка конкретного сайта. На этом уровне располагают файлы которые не видны в интернете, например служебные, пароли, логи, статистика и т.д.
c:/www/test.ru/www/ - Здесь размещаются непосредственно файлы сайта (картинки, HTML, файлы для скачивания и т.д.) Грубо говоря, если в браузере набрать test.ru, то будет "видно"
 содержимое именно этой папки.
c:/www/test.ru/log/ - Логи конкретного сайта



4. Настройка Windows

Что бы при наборе в браузере определенных сайтов браузер искал их не в интернете, а на локальном компьютере,
в файл: C:\WINDOWS\system32\drivers\etc\hosts добавляем:

127.0.0.1 localhost
127.0.0.1 test.ru
127.0.0.1 www.test.ru


Тут запись "127.0.0.1 localhost" дает возможность обращаться к ПК и по IP и по названию localhost. Это избавит от проблем подключения к mysql, например.



5. Apache

Веб-сервер - это физический или виртуальный компьютер. На нем запущена и постоянно работает специальная программа Apache. Если к этому серверу послать запрос, например через браузер, именно Apache примет этот запрос, запустит на сервере нужные программы и выдаст обратно ответ. Браузер из этого ответа сформирует привычную нам страницу сайта и покажет ее пользователю.

Скачкивание
На официальном сайте НЕТ файлов для windows. Но там http://httpd.apache.org/docs/current/platform/windows.html сказано:
идите на https://www.apachelounge.com/download/ и там качайте файлы под windows.
Качаем, например: httpd-2.4.33-win64-VC15.zip

Установка
Копируем файлы из скачанного архива в папку
c:/server/apache
Вы можете выбрать любую папку, но тогда и настройки далее должны изменить соответствующим образом.

Запуск
Для запуска/перезапуска Apache используется файл:
c:/server/apache/bin/ApacheMonitor.exe
Желательно настроить его запуск от имени администратора (свойства файла > совместимость > запуск от имени админа)

Если при запуске "говорит", что необходим файл vcruntime140.dll, то нужно установить
Microsoft Visual C++ 2015
https://www.microsoft.com/ru-ru/download/details.aspx?id=53840
На момент написания статьи, сервера microsoft заблокированы. Для обхода устанавливаем любой плагин на браузер chrome типа "бесплатный прокси VPN". После скачивания нужных файлов microsoft обязательно выключите плагин - он может мешать работе нашего сайта (test.ru будет не виден).

Настройки
В файле c:/server/apache/conf/httpd.conf
Для применения изменений в этом файле нужно перезапускать Apache.

Заменяем все вхождения c:/Apache24 на c:/server/apache

Заменяем Listen 80 на Listen 127.0.0.1:80
Чтобы Apache принимал запросы только с локального компьютера, указываем его неизменный IP адрес и порт: 127.0.0.1:80
Т.е. скачать или запустить что-то на вашем хостинге cможете только Вы.

Создаем:
<Directory "C:/www">
   AllowOverride All
   Order allow,deny
   Allow from all
   Require all granted
   Options Indexes FollowSymLinks Includes
</Directory>

AllowOverride All - для авторизации через .htaccess
Order allow,deny - устанавливает порядок обработки директив "разрешить", "запретить"
Allow from all - разрешить доступ всем
Require all granted - разрешить доступ всем
Options Indexes - возвращает клиенту листинг каталога, если в нем нет индексных файлов
Options FollowSymLinks - Позволяет использовать символические ссылки (нужно для работы mod_rewrite)
Options Includes - Разрешает выполнение SSI директив в файлах

Убрать знак комментария "#":
LoadModule rewrite_module modules/mod_rewrite.so
Модуль mod_rewrite.so нужен для реализации человеку понятных адресов (ЧПУ)
Применяется для создания ссылок на страницы вида: test.ru/news/2055/03/

После кода:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
Изменяем AllowOverride None на AllowOverride All
Для того, что бы можно было использовать файлы .htaccess

После кода:
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
Вставить:
AddType text/html .shtml .html. .htm
AddOutputFilter INCLUDES .shtml .html .htm

Указываем расширения файлов для SSI

Заменяем DirectoryIndex index.html на DirectoryIndex index.html index.htm index.php
Тогда при наборе в браузере любой папки сервер сначала будет искать и пытаться запустить указанные тут файлы

Убрать знак комментария "#":
Include conf/extra/httpd-vhosts.conf
Присоединение к основному конфигурационному файлу, файла httpd-vhosts.conf
Тогда при запуске Apache прочитаются оба файла настроек.

Далее настройки в файле
httpd-vhosts.conf

Даем понять Apache, что:
Есть виртуальный хост, т.е. сайт.
Его файлы лежат здесь "DocumentRoot"
Показывать именно этот сайт если запрашивают домен "ServerName" или "ServerAlias"
Логи писать сюда "ErrorLog" и сюда "CustomLog"
 
Для этого удаляем старые записи
<virtualhost>
.......
</virtualhost>

и добавляем новые:

<VirtualHost *:80>
DocumentRoot c:/www/test.ru/www
ServerName test.ru
ServerAlias www.test.ru
ErrorLog c:/www/test.ru/log/error.log
CustomLog c:/www/test.ru/log/access.log common
</VirtualHost>


Все папки нужно создать. Если папок не будет, сервер Apache не запустится.

Устанавливаем Apache как службу windows.
До этого действия Apache должен без проблем запускаться, иначе установить службу не получится.
Находим в меню ПУСК "командная строка", правой кнопкой по ней и выбираем "запуск от имени администратора"
Откроется черное окошко - консоль. Тут набираем:
c:/server/apache/bin/httpd.exe -k install -n "Apache2.4"

Проверка работы Apache
1. Запускаем/перезагружаем Apache (кнопки старт/перезапуск должны стать рабочими после запуска службы)
2. Создаем файл c:/www/test.ru/www/apache.html с содержимым: Apache work!3. Заходим в браузере по адресу: http://test.ru/apache.html



6. Язык PHP

PHP - это популярный язык программирования применяемый для создания сайтов.

Скачивание
http://windows.php.net/download/
Например: VC15 x64 Thread Safe (php-7.2.4-Win32-VC15-x64.zip)
"Thread Safe" означает многопоточность. Если PHP ставится как модуль (мы так и будем делать) то ставим с Thread Safe.

Установка
Распаковываем архив в папку:
c:/server/php/
Вы можете выбрать любую папку, но тогда и настройки далее должны изменить соответствующим образом.

Запуск
Запускать его будет Apache.

Настройки
В файле c:/server/php/php.ini
Если его нет, то переименовываем c:/server/php/php.ini-development в c:/server/php/php.ini
Для применения изменений в этом файле нужно перезапускать Apache.

short_open_tag = On
позволит выполнять код PHP в контейнере <? ... ?>
по умолчанию кодом PHP считается все в контейнере <?php ... ?>

max_execution_time = 3600
максимальное время выполнения программы в секундах (по умолчанию 30)

max_input_time = 3600
максимальное время получения данных (например загрузки файла) в секундах (по умолчанию 60)

memory_limit = 256M
максимальный объем памяти который может занять Ваш PHP скрипт (по умолчанию 32)

display_errors = On
выводить на экран ошибки PHP (на реальных хостингах всегда OFF в целях безопасности)

display_startup_errors = On
выводить на экран ошибки в момент запуска PHP

post_max_size = 1000M
максимальный объем, который можно передать PHP скрипту методом POST (по умолчанию 4M)


upload_max_filesize = 1000M
максимальный объем файла, который можно передать PHP скрипту (по умолчанию 2M)

error_log="c:\server\php_error_log\php-errors.log"
Путь к файлу логов

date.timezone ="Europe/Moscow"
Требуется установка времени сервера иначе PHP постоянно будет выдавать предупреждения

Важно указать место расширений
extension_dir = "c:/server/php/ext"
Для всех нужных расширений заменяем соответствующие строчки по принципу:
;extension=gd2 на extension=php_gd2.dll
(т.е. убираем знак ; добавляем php_ и добавляем .dll)
Нужны библиотеки:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysqli.dll

extension=php_curl.dll - для чтения удаленных сайтов
extension=php_gd2.dll - для работы с изображениями
extension=php_mbstring.dll - для работы с многобайтовыми строками
extension=php_mysqli.dll - для подключения к базе данных mysqli

Донастраиваем Apache
в файле c:/server/apache/conf/httpd.conf

cоздаем:
LoadModule php7_module c:/server/php/php7apache2_4.dll
Для подключения PHP

cоздаем:
AddHandler application/x-httpd-php .php .htm .html
Файлы с такими расширениями будут обрабатываться как PHP программы

cоздаем:
PHPIniDir "c:/server/php"
Указываем месторасположение настроек PHP (php.ini)

Проверка работы PHP
1. Запускаем/перезагружаем Apache.
2. Создаем файл c:/www/test.ru/www/php.php с содержимым: <?php phpinfo(); ?>3. Заходим в браузере по адресу: http://test.ru/php.php


7. MySQL

MySQL - это база данных. Наличие базы данных почти всегда является необходимостью.

Скачивание
Качаем маленький файл-установщик (~15мб). Он даст выбор что качать и устанавливать далее.
https://dev.mysql.com/downloads/installer/
Попросят авторизоваться или зарегистрироваться нажмите ниже "No thanks, just start my download." (Нет, спасибо, начать скачку)

Установка
Может понадобится установить "Microsoft .NET Framework 4.5.2"
https://www.microsoft.com/ru-ru/download/confirmation.aspx?id=42642

Может понадобится установить "Visual C++ для Visual Studio 2013"
https://www.microsoft.com/ru-RU/download/details.aspx?id=40784

Инсталлятор предложит установить разные готовые наборы элементов Mysql. Выбираем "custom" т.е. настраиваемая.
Далее выбираем только 1 компонент - сам mysql 64 бит.
После установки будет настройка, там в основном жмем "Next" (далее), кроме 2 пунктов:
На этапе "Autentification Method" выбрать второй пункт "Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)".
На этапе "Account and Roles" указываем будущий логин/пароль администратора mysql.
Если нужно что-то поправить в установленном mysql, запускаем файл-инсталлятор заново.

Запуск
Запускается в коде программ PHP

Настройка
В файле c:\ProgramData\MySQL\MySQL Server 5.7\my.ini
Для применения настроек нужно перезагрузить службу windows.
Как посмотреть службы Windows: нажмите клавиши Win + R на клавиатуре и введите команду services.msc. Служба будет иметь название например "MySQL80". Для перезагрузки кликните правой кнопкой и выберите "перезагрузить".
Перезагружать Apache НЕ нужно.

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

Задает кодировку по умолчанию. utf8mb4 - рекомендуемая кодировка.

max_allowed_packet=100M (по умолчанию 4M)
позволяет выполнять большие по размеру команды SQL, что бывает необходимо для копирования/восстановления копий баз данных

join_buffer_size=8M (по умолчанию 256K)
Буфер объединения таблиц

sort_buffer_size=8M (по умолчанию 256K)
Буфер сортировки таблиц

default-storage-engine=MyISAM (по умолчанию INNODB)
по умолчанию таблицы будут создаваться с типом MyIsam
Для новчиков лучше myisam - работают быстрее и более устойчивы к пломкам, например при отключении электричества

Проверка работы MySQL из PHP
1. Запускаем/перезагружаем службу mysql.
2. Создаем файл c:/www/test.ru/www/mysql.php с содержимым: <?php 
if (mysqli_connect('localhost''логин''пароль')) {
echo 'MySQL work!';
} else {
echo 'Ошибка подключения к MySQL: '.mysqli_connect_error();
?>
3. Заходим в браузере по адресу: http://test.ru/mysql.php


8. phpMyAdmin

phpMyAdmin - это программа для администрирования базы данных MySQL.
Написана на языке PHP, работает через браузер.
Примечательна тем, что на большинстве реальных хостингах она установлена и рекомендуется для работы с базой данных.

Скачивание
https://www.phpmyadmin.net/downloads/

Установка
Распаковываем все файлы в какую-нибудь папку на сайте, например в "c:/www/test.ru/www/pma/"

Запуск
Набираем в браузере http://test.ru/pma/

Настройка
Создаем в корне файл "config.inc.php" с содержимым:

<?php
/* Servers configuration */
$i 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['only_db'] = '';
$cfg['Servers'][$i]['hide_db'] = '';

/* End of servers configuration */
$cfg['blowfish_secret'] = 'secret';
$cfg['Export']['compression'] = 'zip';
$cfg['Export']['charset'] = 'utf-8';
$cfg['Export']['sql_drop_table'] = true;
$cfg['FirstLevelNavigationItems'] = 200;
$cfg['MaxNavigationItems'] = 500;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
$cfg['LoginCookieValidity'] = 43200;
$cfg['TablePrimaryKeyOrder'] = 'DESC';
$cfg['DefaultLang'] = 'ru';
$cfg['ServerDefault'] = 1;
$cfg['QueryHistoryDB'] = true;
$cfg['QueryHistoryMax'] = 500;
?>

9. Программы

Программы для работы с MySQL
Написан на PHP, работает через браузер
https://www.phpmyadmin.net/downloads/
Windows приложение:
https://www.heidisql.com/download.php

Текстовый редактор
https://notepad-plus-plus.org/

Средство разработки (платное)
Это один из лидеров средств разработки веб-ПО вместо обычного текстового редактора.
Ставить не обязательно, но желательно.
Универсальный, под разные языки:
http://www.jetbrains.com/idea/
Изначально настроен под PHP:
http://www.jetbrains.com/phpstorm/

Виртуальная машина VirtualBox
https://www.virtualbox.org/
Дает возможность не захломлять свой ПК, а экспериментировать на виртуальном windows.

« Последнее редактирование: 22 Апрель 2018, 22:07:56 от SysBox »