Разработка 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) аналогичными методами.
Предпосылки
Прежде чем приступить к работе с этим руководством, вам понадобится следующее:
- 64-разрядная версия Windows 10 с Creators Update или новее.
- знакомство с Linux / bash (если вы хотите познакомиться с командной строкой, вы можете прочитать это руководство по DigitalOcean).
Шаг 1: установка bash в Windows
Во-первых, вам необходимо установить WSL на ваш компьютер.
Вы можете установить другие дистрибутивы Linux из Microsoft Store (Ubuntu, openSUSE, SUSE Linux Enterprise Server 12). Но в этом руководстве мы настроим стек LAMP в Ubuntu, поэтому вам нужно выбрать Ubuntu.
У Microsoft есть отличное руководство по установке 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>
<body>
<h1>It works!</h1>
</body>
</html>
Запустите HTTP-сервер Apache:
sudo service apache2 start
Откройте http: // localhost / в своем браузере, и вы должны увидеть заголовок Это работает.
Не забудьте включить необходимые вам модули Apache. Например, вы можете включить mod_rewrite:
sudo a2enmod rewrite sudo 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] https://ams2.mirrors.digitalocean.com/mariadb/repo/10.2/ubuntu xenial main'
Установите MariaDB:
sudo apt-get update sudo apt-get install mariadb-server
Вам будет предложено создать пароль root во время установки. Выберите надежный пароль и запомните его, потому что он вам понадобится позже.
Запустите MariaDB:
sudo service mysql start
Запустите следующий сценарий (это изменяет некоторые из менее безопасных параметров по умолчанию):
mysql_secure_installation
Шаг 4: установка PHP
Добавьте PPA для последней версии PHP:
sudo add-apt-repository ppa:ondrej/php sudo 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 в папке вашего проекта со следующим содержимым:
<?php
phpinfo();
Откройте в браузере http: //localhost/info.php. Если PHP работает правильно, вы должны увидеть следующее:
Шаг 5: установка phpMyAdmin
phpMyAdmin - это бесплатный инструмент с открытым исходным кодом для администрирования MySQL и MariaDB.
С помощью phpMyAdmin вы можете легко создавать / управлять своими базами данных с помощью веб-интерфейса.
sudo apt-get install phpmyadmin
- Когда появится первое приглашение, нажмите Пробел, Tab, а затем Enter, чтобы выбрать Apache.
- Выберите «Да», когда вас попросят использовать dbconfig-common для настройки базы данных.
- Введите пароль root для MariaDB
- Выберите пароль для самого приложения phpMyAdmin
Включите необходимые расширения PHP:
sudo phpenmod mcrypt sudo phpenmod mbstring
Перезагрузите Apache:
sudo service apache2 restart
Теперь вы можете получить доступ к phpMyAdmin по следующему URL-адресу: http: // localhost / phpmyadmin /
Вы можете войти в систему, используя имя пользователя root и пароль root, который вы установили во время установки MariaDB.
Шаг 6: установка Composer
Composer - это менеджер пакетов для PHP. Он позволяет вам устанавливать / обновлять библиотеки, от которых зависит ваш проект. Если вы разработчик PHP, вы, вероятно, используете composer.
Посетите страницу загрузки Composer и следуйте инструкциям в разделе установки из командной строки. После успешной установки Composer вы можете установить его глобально:
sudo mv composer.phar /usr/local/bin/composer
Теперь его можно запустить из любого места, набрав:
composer
Шаг 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, вы можете получить доступ к локальной версии для разработки на http: //myapp.t est / вместо http: // localhost / 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 с правами администратора (Запуск от имени администратора) и откройте файл hosts. Он находится в папке c: \ windows \ system32 \ drivers \ etc.
Добавьте следующую строку в конец файла и сохраните ее:
127.0.0.1 myapp.test
Теперь вы можете получить доступ к своему веб-приложению в домене http: //myapp.test/.
Вы также можете добавить дополнительные тестовые домены с помощью того же метода.
Заключение
WSL не заменяет Vagrant или Docker и носит экспериментальный характер. В настоящее время WSL не поддерживает автоматический запуск служб, и на данный момент это одна из самых больших проблем. Однако подсистема Windows для Linux - отличный вариант для разработчиков использовать собственную оболочку Linux в Windows. Я думаю, тебе стоит попробовать!