Как настроить среду разработки PHP в подсистеме Windows для Linux (WSL)

1656671413 kak nastroit sredu razrabotki php v podsisteme windows dlya

Андраша Мадьяра

dA4WtFC4g9L24ECSvxLO2wovQkm6FXIsZbhU

Разработка PHP в Windows имеет некоторые недостатки. Но теперь Microsoft предлагает отличный вариант для разработчиков PHP, работающих в Windows: подсистема Windows для Linux (WSL). WSL — это уровень совместимости для запуска исполняемых двоичных файлов Linux (в формате ELF) в Windows 10. Microsoft говорит:

«Это в первую очередь инструмент для разработчиков – особенно веб-разработчиков и работающих над проектами с открытым кодом».

Мы можем запускать среду Linux непосредственно на Windows без затрат на виртуальную машину.

Примечание: Эта статья предназначена не только для инсайдеров Windows. Эти методы будут также работать на последних стабильных версиях Windows 10.

В этом руководстве мы настроим стек LAMP (Ubuntu 16.04, Apache, PHP 7.1, MariaDB) на WSL для разработки. Вы можете настроить другие стеки (например, стек LEMP) схожими методами.

предпосылки

Прежде чем начать это руководство, вам понадобится следующее:

Шаг 1: установка bash в Windows

Во-первых, на вашем компьютере необходимо установить WSL.

Вы можете установить больше дистрибутивов Linux из Microsoft Store (Ubuntu, openSUSE, SUSE Linux Enterprise Server 12). Но в этом руководстве мы настроим стек LAMP в Ubuntu, поэтому вам нужно выбрать Ubuntu.

Корпорация Майкрософт имеет отличное руководство по установке WSL, следуйте инструкциям в статье.

Если вы успешно установили Bash на Ubuntu в Windows, давайте установим и настроим простой стек LAMP для разработки.

Шаг 2: установка HTTP-сервера Apache

Мы хотим установить последнюю стабильную версию Apache, но официальные репозитории Ubuntu не содержат последнюю версию.

Нам нужно добавить PPA для пакетов Apache. Персональный архив пакетов (PPA) — это хранилище, позволяющее посторонним разработчикам создавать и распространять пакеты для Ubuntu. PPA Ондржея Сури предлагает новейшие пакеты Apache/PHP для Ubuntu.

Чтобы добавить PPA, выполните следующую команду в WSL bash:

sudo add-apt-repository ppa:ondrej/apache2

После настройки PPA обновите локальный индекс пакета:

sudo apt-get update

Установить Apache:

sudo apt-get install apache2

Создайте папку проекта для веб-приложений. Эта папка должна быть вне файловой системы WSL. Рекомендую использовать папку «Документы».

Следующая команда создаст папку сервера в каталоге документов. Пожалуйста, замените ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ WINDOWS с вашим именем пользователя Windows.

sudo mkdir /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server

Создайте символическую ссылку на выбранную папку.

sudo ln -s /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server /var/www/devroot

Откройте файл конфигурации виртуального хоста Apache по умолчанию:

sudo nano /etc/apache2/sites-enabled/000-default.conf

Измените корневую папку документа на “/var/www/devroot”, которая указывает папку вашего проекта вне файловой системы WSL. установить ServerName к localhost (если порт 80 зарезервирован Windows, замените 80 на неиспользованный порт):

<VirtualHost *:80>        ServerName localhost        ServerAdmin webmaster@localhost        DocumentRoot  /var/www/devroot      <Directory /var/www/>        Options Indexes FollowSymLinks        AllowOverride All        Require all granted      </Directory>        ErrorLog ${APACHE_LOG_DIR}/error.log        CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>

Когда вы закончите, сохраните файл, нажав Ctrl-O, и нажмите Enter для подтверждения. Выйдите с помощью Ctrl-X.

Откройте любимый редактор Windows/IDE и создайте файл «index.html» в папке проекта (C:\Users\ ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ WINDOWS\Documents\server) с таким содержимым:

<!DOCTYPE html><html lang="en"><head>  <meta charset="utf-8">  <title>It works!</title></head>&lt;body>  <h1>It works!</h1></body></html>

Запустите HTTP-сервер Apache:

sudo service apache2 start

Откройте в своем браузере и вы увидите заголовок «Это работает».

Не забудьте включить нужные вам модули Apache. К примеру, вы можете включить mod_rewrite:

sudo a2enmod rewritesudo service apache2 restart

Шаг 3: установка сервера MariaDB

Добавьте репо, содержащее новейшие пакеты MariaDB:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el]  xenial main'

Установить MariaDB:

sudo apt-get updatesudo apt-get install mariadb-server

При установке вам будет предложено создать пароль root. Выберите безопасный пароль и запомните его, потому что он вам понадобится позже.

Запустите MariaDB:

sudo service mysql start

Запустите следующий сценарий (это изменяет некоторые из менее безопасных параметров по умолчанию):

mysql_secure_installation

Шаг 4: установка PHP

Добавьте PPA для последней версии PHP:

sudo add-apt-repository ppa:ondrej/phpsudo apt-get update

Установите пакеты PHP 7.1:

sudo apt-get install php7.1 libapache2-mod-php7.1 php7.1-mcrypt php7.1-mysql php7.1-mbstring php7.1-gettext php7.1-xml php7.1-json php7.1-curl php7.1-zip

Надо перезапустить Apache:

sudo service apache2 restart

Создайте в папке проекта файл info.php с таким содержимым:

<?phpphpinfo();

Откройте info.php в своем браузере. Если PHP работает правильно, вы должны увидеть следующее:

1q-zAJXFIrM9FsQmnkgSLwfMJgVTolUpKY0Y

Шаг 5: установка phpMyAdmin

phpMyAdmin – это бесплатный инструмент администрирования с открытым кодом для MySQL и MariaDB.

С помощью phpMyAdmin вы можете легко создавать и управлять базами данных с помощью веб-интерфейса.

sudo apt-get install phpmyadmin
  • Когда появится первая подсказка, нажмите пробел, Tab и Enter, чтобы выбрать Apache.
  • Выберите, когда будет предложено использовать dbconfig-common для настройки базы данных.
  • Введите пароль пользователя MariaDB
  • Выберите пароль для самой программы phpMyAdmin

Включите необходимые расширения PHP:

sudo phpenmod mcryptsudo phpenmod mbstring

Перезапустите Apache:

sudo service apache2 restart

Теперь вы можете получить доступ к phpMyAdmin по следующему URL-адресу: phpmyadmin/
Вы можете войти, используя имя пользователя и пароль root, установленные при установке MariaDB.

Шаг 6: установка Composer

Composer – это менеджер пакетов для PHP. Это позволяет установить/обновлять библиотеки, от которых зависит ваш проект. Если вы разработчик PHP, вы, вероятно, используете композитор.

Посетите страницу загрузки Composer и следуйте инструкциям в разделе установки командной строки. После успешной установки Composer вы можете установить его глобально:

sudo mv composer.phar /usr/local/bin/composer

Теперь его можно запустить из любого места, введя:

composer
eRZmxz7jyQxXn1Z7RlegrHDn1M4E6kgB6Gml

Шаг 7: установка Git:

Git – это система контроля версий, которая в основном используется для управления исходным кодом. Узнайте больше о Git здесь.

Вы можете установить его, выполнив следующую команду:

sudo apt-get install git

Прежде чем использовать Git (и если вы не знакомы с ним), прочтите раздел «Как настроить Git» в руководстве «Как установить Git на Ubuntu 16.04».

Шаг 8: автоматически запустите LAMP на WSL (необязательно)

Фоновые задачи не поддерживаются на WSL. Когда вы закрываете Bash, ваши службы (Apache и MariaDB) прекращаются.

Примечание для инсайдеров Windows: Фоновые задачи теперь поддерживаются WSL, начиная с Windows Insider Build 17046 (чтобы узнать больше, вы можете прочитать следующую публикацию в блоге: Поддержка фоновых заданий в WSL), но автоматический запуск служб все еще недоступен.

К сожалению, автоматически запустить ваши службы немного сложно.

Настроим автозапуск!

Нам нужно запускать службы без ввода пароля.

Прежде чем начать с этогопросмотрите следующий учебник «Как редактировать файл Sudoers на Ubuntu и CentOS».

Выполните следующую команду:

sudo visudo -f /etc/sudoers.d/services

Скопируйте и вставьте следующее в редактор, а затем сохраните:

%sudo ALL=(root) NOPASSWD: /usr/sbin/service *%wheel ALL=(root) NOPASSWD: /usr/sbin/service *

Это позволяет запускать службы (например, Apache и MariaDB) без использования пароля.

Запустите командную строку (не bash) от имени администратора и выполните:

SchTasks /Create /SC ONLOGON /TN "Start WSL LAMP" /TR "c:\Windows\System32\bash.exe -c 'sudo service apache2 start; sudo service mysql start; cd ~; bash'"

Приведенная выше команда создает задачу, которая запускается автоматически при входе в Windows. Он делает следующее:

  • Запускает Apache
  • Запускает MariaDB
  • Изменение каталога на ваш домашний каталог

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

Шаг 9: добавьте тестовые домены (необязательно)

Когда вы работаете над большим количеством веб-приложений, несколько тестовых доменов будут полезны. К примеру, если вы работаете на myapp.com, вы можете получить доступ к локальной версии разработки вместо myapp.

Далее вы можете заменить «myapp» названием веб-приложения.
Создайте папку в каталоге проектов для вашей веб-приложения:

sudo mkdir /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server/myapp

Добавьте файл виртуального хоста к Apache:

sudo nano /etc/apache2/sites-available/myapp.test.conf

Сохраните следующую конфигурацию в новом файле (не забудьте заменить myapp названием приложения).

<VirtualHost *:80>
ServerName myapp.test
ServerAdmin webmaster@localhost DocumentRoot /var/www/devroot/myapp
<Directory /var/www/> 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 myapp.test

Перезапустите Apache:

sudo service apache2 restart

Наконец, запустите Блокнот или ваш любимый редактор/IDE в Windows с правами администратора (Запустить от имени администратора) и откройте хозяева файл. Находится в с c:\windows\system32\drivers\etc папку.

Добавьте следующую строку в конец файла и сохраните его:

127.0.0.1 myapp.test

Теперь вы можете получить доступ к вашему веб-приложению в домене.
Вы также можете добавить больше тестовых доменов с помощью того же метода.

Вывод

WSL не заменяет Vagrant или Docker и является экспериментальным. Автоматический запуск служб пока не поддерживается на WSL, и это одна из самых больших проблем на данный момент. Однако подсистема Windows для Linux является отличным вариантом для разработчиков использовать родную оболочку Linux в Windows. Я думаю, вам следует попробовать!

Добавить комментарий

Ваш адрес email не будет опубликован.