Установка PHP на Windows 10 с помощью подсистемы Ubuntu (WSL)

Если вы разрабатываете сайты, используя на своем компьютере операционную систему Windows 10, то данная статья будет вам очень полезна, в ней вы узнаете как сделать так, чтобы ваши локальные проекты работали на подсистеме Ubuntu и тоже время запускались в любом браузере Windows 10, также вы сможете использовать свою привычную IDE для написания кода. Не так давно в Microsoft Store появилось приложение Ubuntu, которое позволяет вам использовать терминал и запускать утилиты командной строки, следуя из этого, мы имеем возможность установить все необходимое для настройки веб-сервера на своем ПК.

Преимуществом такого подхода является скорость работы сайтов, удобство конфигурации сервера, а также, то что ваша локальная версия сайта будет работать на той же операционной системе что и основной, это избавит вас от неожиданностей которые появляются из за разницы поведения некоторых функций в PHP на различных ОС. Особенно разницу почувствуют Битрикс разработчики, так как на Виндовс, сайты данной cms работают очень медленно.

Теперь давайте приступим к установке подсистемы Ubuntu.

Первым делом нужно на панели задач в поиске набрать “Включение или отключение компонентов Windows”, кликнуть на нужный результат поиска и в появившемся окне отметить пункт “Подсистема Windows для Linux”, после перезагрузите компьютер


Далее запускаем программу Microsoft Store, затем в списке приложений ищем Ubuntu, устанавливаем и запускаем его. 

В открывшемся терминале задаем имя нового пользователя системы и пароль, к примеру пользователь web с паролем 123456 после этого можем приступать к настройке.
Обновим Ubuntu

sudo apt update
sudo apt upgrade

Скачиваем все необходимые модули

sudo apt install php libapache2-mod-php php-mysql php-xml php-curl php-gd php-mbstring php-zip php-tokenizer php-json php-common mysql-server sendmail

Запустим Apache и MySQL

sudo service apache2 start
sudo service mysql start

включим модуль mod rewrite

sudo a2enmod rewrite

Перейдем к настройке базы данных

Авторизуемся и изменим настройки аутентификации, эта настройка нужна если используете Битрикс, если нет, то пропустите

sudo mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
FLUSH PRIVILEGES;

После того как установили все необходимые модули нужно произвести настройку установленного софта и добавить сайт.

Файлы Ubuntu находятся примерно по этому пути
C:\Users\UserName\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
Первым делом настроим PHP, ниже приведен конфиг для оптимальный для 1С-Битрикс, если вы его не используете, не прописывайте значения для mbstring

\etc\php\7.2\apache2\php.ini

mbstring.func_overload = 2
mbstring.internal_encoding = UTF-8
short_open_tag = On
max_input_vars = 10000
memory_limit = 1000M
display_errors = On
date.timezone = Europe/Moscow
opcache.revalidate_freq=0
post_max_size = 10M
upload_max_filesize = 10M

Если вы используете битрикс, тогда необходимо изменить параметр sql_mode в конфиге MySQL
Добавьте следующие параметры в файл /etc/mysql/my.cnf

[mysqld]
sql_mode = ''

Зададим права доступа на этот файл настойки

sudo chmod 0644 /etc/mysql/my.cnf

Для удобства сделаем так, чтобы при открытии терминала запускались PHP и MySQl
Создадим скрипт запуска в файле /usr/bin/start_bash.sh
Добавим туда следующее содержимое, где 123456 это пароль от вашего пользователя Ubuntu, поменяйте его свой

#!/bin/bash

echo 123456 | sudo -S sudo service apache2 start
echo 123456 | sudo -S sudo service mysql start

Затем в конец файла \home\username\.bashrc подключим созданный нами bash скрипт
добавим строку в самый конец

/usr/bin/start_bash.sh
и пропишем в терминале права доступа
sudo chmod 777 /home/username/.bashrc

После того как все настройки веб-сервера выполнены, давайте создадим папку нашего сайта и добавим его на сервер.

К примеру положим его на диск D нашей Windows: D:\WebProjects\sample.loc\public_html

Создайте файл конфигурации для нашего проекта: /etc/apache2/sites-available/sample.loc.conf

<VirtualHost *:80>
    ServerAdmin mail@sample.loc
    ServerName sample.loc
    ServerAlias www.sample.loc
	DocumentRoot /mnt/d/WebProjects/sample.loc/public_html/
	<Directory /mnt/d/WebProjects/sample.loc/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>          
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Затем перейдем в терминал и включим сайт

sudo a2ensite sample.loc.conf

Так же необходимо добавить домен сайта в файл hosts
C:\Windows\System32\drivers\etc

127.0.0.1 sample.loc

Перезапустим веб-сервер apache и MySql

sudo service mysql restart
sudo service apache2 restart

После этих действий идем в свой любимый браузер и с адресной строки переходим на наш сайт http://sample.loc

Вот и все, только что мы подняли веб-окружение для быстрой и комфортной разработки на локальном компьютере

26.07.2020