Как запустить linux сервер на windows

Вопросы: Как включить функцию Windows Subsystem for Linux (WSL) на Windows Server 2019?

Вопросы: Как включить функцию Windows Subsystem for Linux (WSL) на Windows Server 2019?

Как использовать Linux на Windows Server 2019?

В этом руководстве показано, как включить функцию Windows Subsystem for Linux (WSL) на сервере Windows 2019 и запустить сервер Linux, например Ubuntu, внутри Windows Server.

В нашей последней статье мы рассмотрели запуск контейнеров Docker на Windows Server.

Как запустить Docker Containers на Windows Server 2019

Подсистема Windows для Linux позволяет вам запускать среду GNU / Linux, которая включает большинство инструментов, утилит и утилит командной строки Linux непосредственно в вашей системе Windows без каких-либо изменений или издержек в хост-системе.

Одна предварительная версия уже установлена Windows Server 2019.

Достаточно повезло,что у нас есть руководство по установке Windows Server 2019.

Как установить Windows Server 2019 шаг за шагом

И его обзор

Полный обзор Windows Server 2019 — что нового?

Шаг 1. Включите функцию Windows Subsystem для Linux (WSL) в Windows

Прежде чем вы сможете установить любой дистрибутив Linux для WSL, вы должны убедиться, что включена функция «Windows Subsystem for Linux»:

Откройте PowerShell от имени администратора и выполните следующую команду, чтобы включить функцию Windows Subsystem for Linux (WSL) в Windows.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Согласитесь и перезагрузите компьютер при появлении соответствующего запроса.

Вы можете сделать то же самое из Диспетчер серверов графического интерфейса Server Manager>Add roles and features>Select features

Шаг 2: Установите свой Linux

Существуют различные способы установки дистрибутивов WSL Linux через Microsoft Store.

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

Запустите PowerShell и загрузите дистрибутив с помощью командлета Invoke-WebRequest или curl.exe. Вот пример инструкции по загрузке Ubuntu 18.04.

curl.exe -L -o ubuntu-1804.appx https://aka.ms/wsl-ubuntu-1804

После загрузки распакуйте и установите дистрибутив Linux.

Rename-Item ubuntu-1804.appx ubuntu-1804.zip
Expand-Archive ubuntu-1804.zip ubuntu1804

Измените свой рабочий каталог на ubuntu1804 и запустите программу установки, чтобы завершить установку дистрибутива.

cd ubuntu1804
.ubuntu1804.exe

Программа установки предложит вам указать имя пользователя и пароль для создаваемого пользователя UNIX.

Команда sudo может использоваться для привилегированных операций.

sudo apt update && sudo apt upgrade
sudo apt install ansible

Образец вывода:

Добавьте свой путь к дистрибутиву в среду PATH среды Windows, используя Powershell:

$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + "C:UsersAdministratorubuntu1804", "User")

Это позволит вам запустить ваш дистрибутив с любого пути, набрав .exe загрузчик

Например, используя ubuntu1804.exe.

Обратите внимание, что для этого потребуется закрыть и перезапустить PowerShell.

ubuntu1804.exe

Наслаждайтесь использованием дистрибутива Linux на вашем Windows Server. Другие дистрибутивы Linux, которые вы можете запустить:

  • Ubuntu 18.04 ARM
  • Ubuntu 16.04
  • Debian GNU/Linux
  • Kali Linux
  • OpenSUSE
  • SLES

В этой статье рассмотрим процесс установки локального веб-сервера (Apache, MySQL и PHP) на подсистему Windows для Linux (Windows Subsystem Linux).

Microsoft Windows 10 имеет новую дополнительную функцию, которая называется «Подсистема Windows для Linux (WSL)». Она была добавлена в систему, начиная с обновления «Anniversary Update» и доступна только в 64-битных редакциях этой операционной системы.

WSL представляет собой подсистему для ОС Windows 10, через которую можно запускать Linux приложения. В этой статье рассмотрим, как на данной подсистеме можно настроить веб-сервер (Apache, MySQL, PHP) для локальной разработки веб-проектов.

Windows 10, начиная с версии 2004 уже включает WSL 2.

Основные этапы настройки веб-сервера на WSL

Процесс установки веб-сервера на WSL можно разбить на следующие шаги:

  • включение через панель управления дополнительной функции Windows 10 «Подсистема Windows для Linux»;
  • установку «Ubuntu» или любого другого дистрибутива Linux из магазина приложений Microsoft Store;
  • установка программного обеспечения в ОС Linux и его настройка;
  • редактирование файла hosts в Windows 10;
  • создания bash скриптов для запуска и остановки веб-сервера;
  • проверки работоспособности веб-сервера, посредством установки на сайт, какой-нибудь CMS, например MODX Revolution.

Включение подсистемы Windows для Linux

Для включения компоненты «Подсистема Windows для Linux» в Windows 10 необходимо выполнить следующие действия:

  • открыть «Панель управления» (Пуск -> Служебные -> Windows -> Панель управления);
  • открыть окно «Компоненты Windows» (пункт «Программы» в «Панели управления» -> Включение и отключение компонентов Windows);
  • установить галочку напротив опции «Подсистема Windows для Linux» и нажать «ОК»;
  • перезагрузить операционную систему.

Windows 10 - Включение подсистемы Windows для Linux

Для использования WSL 2 вам необходимо дополнительно ещё включить в окне «Компоненты Windows» необязательный компонент «Платформа виртуальной машины».

Какую версию WSL выбрать

Чтобы определиться какая версия WSL вам нужна, нужно рассмотреть их различия.

WSL 2 в отличие от WSL 1 имеет полнофункциональное ядро Linux с полной совместимостью системных вызовов. Это позволяет использовать внутри WSL 2 целый ряд приложений (Docker и другие). Если вам нужна поддержка этих приложений, то тогда однозначно стоит остановится на 2 версии этой подсистемы. К сведению, ядро Linux для WSL 2 собранно компанией Microsoft и будет автоматически обновляться через центр обновления Windows.

WSL 1 рекомендуется использовать для проектов, файлы которого будут находиться в файловой системе Windows. В этом случае вы получите более высокую производительность, чем на WSL 2.

На мой взгляд, использовать вторую версию WSL пока не имеет особого смысла, только если вы не используете Docker или другое приложение, которому нужна полная совместимость системных вызовов Linux. Т.к. при использовании WSL 2 вам необходимо будет располагать проект в файловой системе Linux, иначе производительность файловых систем ОС при работе с этим проектом будет достаточно низкой. Но в любом случае вы можете переключить WSL для дистрибутива Linux как на первую версию, так и на вторую, и посмотреть какой вариант этой подсистемы для работы вам более подходит.

Работа с версиями WSL

Установку версии WSL, которую вы хотите использовать по умолчанию, осуществляется посредством выполнения в PowerShell следующей команды (например, WSL 2):

wsl --set-default-version 2

Эта команда установит по умолчанию в качестве версии WSL 2. Если нужно WSL 1, то в вместо 2, нужно указать соответственно 1.

Проверить WSL версию, назначенному каждому из установленных дистрибутивов Linux можно в PowerShell через следующую команду:

wsl -l -v

Для того чтобы изменить назначенную WSL версию дистрибутиву Linux на другую:

wsl --set-version <distribution name> <versionNumber>

Например, для того чтобы перевести Ubuntu-18.04 на WSL 2 необходимо выполнить команду:

wsl --set-version Ubuntu-18.04 2

Доступ к файловым системам ОС

Получить в Windows доступ к файлам WSL можно, например, через проводник, введя в его адресной строке путь \wsl$ или просто выполнив в Bash команду explorer.exe ..

В WSL получение доступа к файловой системе Windows выполняется через /mnt. Например, для того чтобы в Bash перейти на диск C: необходимо ввести cd /mnt/c, а на D:cd /mnt/d.

Установка приложения «Ubuntu»

Установку приложения «Ubuntu» на компьютер осуществим через магазин приложений Microsoft Store. Для этого необходимо открыть данный магазин приложений, найти приложение «Ubuntu» и установить его.

Windows 10 - Установка приложения Ubuntu

Установка программного обеспечения в ОС Ubuntu

Запустим операционную систему «Ubuntu».

Введём новое UNIX имя пользователя (username) и пароль (password).

Windows 10 - Создание учётной записи UNIX пользователя

Обновим локальный индекс apt пакетов в операционной системе Ubuntu:

sudo apt update

Обновим установленное программное обеспечение:

sudo apt upgrade

Установим Apache:

sudo apt install apache2

Установим MySQL сервер:

sudo apt install mysql-server

Установим php и другие пакеты, необходимые для веб-разработки:

sudo apt install php libapache2-mod-php php-mysql php-xml php-curl

Для установки какой-то определённой версии php, например 7.1.x, необходимо выполнить следующие команды:

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.1 libapache2-mod-php7.1 php7.1-mysql php7.1-xml php7.1-curl

Включим модуль Mod rewrite в Apache:

sudo a2enmod rewrite

Создание директории для веб-проекта

Создадим в Windows 10, например, с помощью проводника, директорию для сайта (проекта) test.ru:

d:Projectstest.rupublic_html

При использовании WSL 2 рекомендуется сохранять файлы в файловой системе Linux. Это необходимо для обеспечения максимальной производительности.

В этом случае директорию для проекта поместим сюда:

homemainprojectstest.rupublic_html

Для более удобного создания каталогов и работы с файловой системой Linux вы можете установить в Ubuntu, например, Midnight Commander:

sudo apt install mc

Запуск Midnight Commander осуществляется посредством ввода команды:

mc

Изменение метода аутентификации MySQL пользователя root

Для изменения метода аутентификации MySQL пользователя root выполним следующие действия:

1. Запустим службу mysql.

sudo service mysql start

2. Подключимся к серверу MySQL под стандартным пользователем root, который создаётся при установке MySQL на компьютер:

sudo mysql -uroot -p

3. Нажмём на Еnter, т.к. по умолчанию пользователь root, созданный при установке, не имеет пароля.

4. Проверим метод аутентификации, который используется для пользователя root.

SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user="root";

Если пользователь использует аутентификацию с помощью плагина auth_socket, то изменим эту настройку на использование пустого пароля. Для этого введём команду:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

Изменение метода аутентификации MySQL пользователя root

Выполним команду FLUSH PRIVILEGES, которая применит внесённые изменения:

FLUSH PRIVILEGES;

Создание базы данных

Создадим базу данных для веб-проекта test.ru. Для этого введем в командной строке MySQL введём следующую команду:

CREATE DATABASE testru;

Если в базу данных testru необходимо загрузить дамп некоторой базы, находящийся, например, в файле backup.sql, то можно воспользоваться следующими инструкциями:

use testru;
source backup.sql;

Для завершения работы с командной строкой MySQL выйдем из неё:

exit

Настройка виртуальных хостов в Apache

В Ubuntu файлы настроек виртуальных хостов Apache располагаются в /etc/apache2/sites-available/*.conf. По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле 000-default.conf. Данный файл будем использовать в качестве примера.

Создадим копию файла 000-default.conf:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.ru.conf

Отредактируем файл test.ru.conf, для этого можно воспользоваться, например, редактором nano:

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

Итоговое содержимое файла test.ru.conf:

<VirtualHost *:80>
    ServerAdmin webmaster@test.ru
    ServerName test.ru
    ServerAlias www.test.ru
  DocumentRoot /mnt/d/Projects/test.ru/public_html/
  <Directory /mnt/d/Projects/test.ru/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>

Настройка виртуальных хостов в Apache

Включим новый виртуальный хост с помощью утилиты a2ensite:

sudo a2ensite test.ru.conf

Перенаправление test.ru на локальный веб-сервер

Для того чтобы доменное имя test.ru было связано с локальным веб-сервером необходимо открыть файл hosts, расположенный по адресу C:WindowsSystem32driversetc и добавить в него строчку:

127.0.0.1 test.ru

Редактирование файла hosts

Команды для запуска и остановки веб-сервера

Для запуска Apache и MySQL необходимо ввести следующие команды:

sudo service apache2 start
sudo service mysql start

Для остановки веб-сервера:

sudo service apache2 stop
sudo service mysql stop

Для упрощения запуска и остановки веб-сервера можно создать bash скрипты start.sh и stop.sh.

Содержимое файла start.sh:

#!/bin/bash

echo password | sudo -S sudo service apache2 start
echo password | sudo -S sudo service mysql start
exit 0

Содержимое файла stop.sh:

#!/bin/bash

echo password | sudo -S sudo service apache2 stop
echo password | sudo -S sudo service mysql stop
exit 0

Вместо password необходимо ввести пароль, который установили для UNIX пользователя.

Запуск веб-сервера (./start.sh):

./start.sh

Запуск веб-сервера с помощью bash скрипта

Проверка работоспособности веб-сервера

Длы проверки работоспособности веб-сервера установим на test.ru систему управления контентом, например, MODX Revolution.

Для этого скачаем со страницы Download MODX Revolution архив системы и распакуем его в директорию d:Projectstest.rupublic_html.

Для установки системы необходимо открыть мастер. Осуществляется это посредством ввода в строку поиска браузера адреса http://test.ru/setup. После этого ответим на все вопросы мастера и нажмём на кнопку «Установить».

Дождёмся окончания процесса установки и получим отчет об установке CMS MODX Revolution.

Отчет об установке CMS MODX Revolution

Инструкция по установке phpMyAdmin

Пошаговые действия по установке phpMyAdmin в Ubuntu:

1. Установим пароль для MySQL пользователя root, если его нет (т.к. по умолчанию phpMyAdmin не разрешает войти, если у пользователя БД нет пароля).

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

2. Установим phpMyAdmin:

sudo apt-get install phpmyadmin

При установке мастер будет предлагать вам ответить на следующие вопросы:

  • на приглашение «настроить базу данных для phpmyadmin с помощью dbconfig-common» выберите Yes (Да);
  • в окне на сообщение «пожалуйста, выберите веб сервер, который следует автоматически настроить для запуска phpMyAdmin» выберите Apache (для этого нажмите на Пробел, Tab и Enter);
  • при запросе пароля для самого приложения phpMyAdmin введите, например, root.

Но установленная этим образом версия phpMyAdmin является устаревшей и содержит некоторые ошибки.

Для её обновления выполним ещё следующие действия:

  • cd /usr/share — переход в «usr/share»;
  • sudo rm -rf phpmyadmin — удаление в «usr/share» директории «phpmyadmin»;
  • sudo wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.5/phpMyAdmin-4.9.5-all-languages.zip" — загрузка последней версии (4.9.5) phpMyAdmin;
  • sudo unzip phpMyAdmin-4.9.5-all-languages.zip — распаковка её в текущий каталог;
  • sudo cp -r phpMyAdmin-4.9.5-all-languages phpmyadmin — копирование извлечённые файлы в папку «phpmyadmin»;
  • sudo rm -rf phpMyAdmin-4.9.5-all-languages — удаление папки «phpMyAdmin-4.9.5-all-languages».

Для входа в phpMyAdmin необходимо ввести в адресной строке браузера URL: http://localhost/phpmyadmin/. В поля «Пользователь» и «Пароль» введите root.

Дополнительные инструкции

1. Как в MySQL отключить режим ONLY_FULL_GROUP_BY?

Один из способов отключить режим ONLY_FULL_GROUP_BY это добавить в конец файла «mysql.cnf», расположенного в «/etc/mysql/» следующий код:

[mysqld]
# установка sql_mode
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
# настройка дефолтной кодировки
character-set-server = utf8

Открыть файл «mysql.cnf» для редактирования можно так:

sudo nano /etc/mysql/mysql.cnf

Используем подсистему Linux (WSL) в Windows 10 для разработки сайтов

Я постоянно использую терминал для работы с git и автоматизации сборки проектов (вёрстка/фронтенд: компиляция scss, обработка изображений, и т.д.). Раньше, для решения такого рода задач было не так много хороших и комфортных решений, либо использовать Ubuntu (либо другой linux дистрибутив) и наслаждаться комфортной работой, либо использовать Windows и устанавливать на него множество программ которые частично, или медленнее чем в linux решают задачи разработки, такие как GitBash для использования консольных команд bash для работы с git, OpenServer для создания локального сервера на вашей рабочей машине. Но в 2016г. Microsoft сделали большой шаг для разработчиков, представив подсистему Linux в Windows 10, но тогда, в 2016 году, её использование разочаровало: нельзя было запускать из bash-терминала программы Windows, подсистема не определяла изменение файла, если изменение было сделано из Windows. Сейчас эти проблемы решены.

Что такое подсистема Windows для Linux?

Microsoft Windows 10 имеет новую дополнительную функцию, которая называется «Подсистема Windows для Linux (WSL)». Данная функция была добавлена в систему, начиная с обновления «Anniversary Update» и доступна она только в 64-битных редакциях Windows 10.

WSL представляет собой подсистему для ОС Windows 10, через которую можно запускать Linux приложения. В этой статье рассмотрим, как на данной подсистеме можно настроить веб-сервер LAMP (Apache, MySQL, PHP) для локальной разработки веб-проектов.

Включение подсистемы Windows для Linux

Для включения компоненты «Подсистема Windows для Linux» в Windows 10 необходимо выполнить следующие действия:

Windows 10 - Включение подсистемы Windows для Linux

  1. Открыть «Панель управления» (Пуск -> Служебные -> Windows -> Панель управления).
  2. Открыть окно «Компоненты Windows» (пункт «Программы» в «Панели управления» -> Включение и отключение компонентов Windows).
  3. Установить галочку напротив опции «Подсистема Windows для Linux» и нажать «ОК»;
  4. Перезагрузить операционную систему.

Установка приложения «Ubuntu»

Для установки приложения «Ubuntu» заходим в магазин приложений Microsoft Store и в поле поиска вводим Ubuntu и устанавливаем данное приложение.

Windows 10 - Установка приложения Ubuntu

Создание директории для веб-проекта

Все веб-проекты предлагаю создавать в директории C:projects. Для примера создадим в ней новый тестовый проект с названием директории test, конечный путь будет иметь следующий вид: C:projectstest.

Установка программного обеспечения в ОС Ubuntu

Запускаем установленное приложение Ubuntu.

Откроется терминал, в котором при первом запуске нужно будет ввести новое UNIX имя пользователя (username) и пароль (password).

Обновим локальный индекс apt пакетов в операционной системе Ubuntu:

Обновим установленное программное обеспечение:

Установим Apache:

Установим MySQL сервер:

sudo apt install mysql-server

Установим php и другие пакеты, необходимые для веб-разработки:

sudo apt install php libapache2-mod-php php-mysql php-xml php-curl

Включим модуль Mod rewrite в Apache:

Также есть официальная инструкция с microsoft.com, если вдруг какой-то момент покажется непонятным или не будет работать.

Изменение метода аутентификации MySQL пользователя root

Для изменения метода аутентификации MySQL пользователя root выполним следующие действия:

  1. Запустим службу mysql.
  1. Подключимся к серверу MySQL под стандартным пользователем root, который создаётся при установке MySQL на компьютер:
  1. Нажмём на Enter, т.к. по умолчанию пользователь root, созданный при установке, не имеет пароля.

  2. Проверим метод аутентификации, который используется для пользователя root.

SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user="root";

Если пользователь использует аутентификацию с помощью плагина auth_socket, то изменим эту настройку на использование пустого пароля. Для этого введём команду:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

Выполним команду FLUSH PRIVILEGES, которая применит внесённые изменения:

Создание базы данных

Создадим базу данных для веб-проекта test. Для этого введем в командной строке MySQL введём следующую команду:

Если в базу данных test необходимо загрузить дамп некоторой базы, находящийся, например, в файле backup.sql, то можно воспользоваться следующими инструкциями:

use test;
source backup.sql;

Для завершения работы с командной строкой MySQL выйдем из неё:

Установка phpMyAdmin

Выполняем команду

sudo apt install phpmyadmin

Когда появится первое сообщение, нажмите пробел, Tab, а затем Enter, чтобы выбрать Apache.
Выберите Да, когда вас попросят использовать dbconfig-common для настройки базы данных.
Укажите пароль пользователя MySQL root
Выберите пароль для самого приложения phpMyAdmin

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

sudo phpenmod mcrypt
sudo php en mod mbstring

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

sudo service apache2 restart

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

Настройка виртуальных хостов в Apache

В Ubuntu файлы настроек виртуальных хостов Apache располагаются в /etc/apache2/sites-available/*.conf. По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле 000-default.conf. Данный файл будем использовать в качестве примера.

Создадим копию файла 000-default.conf:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.conf

Отредактируем файл test.conf, для этого можно воспользоваться, например, редактором nano:

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

В Ubuntu все локальные диски системы Windows находятся в директории /mnt, тоесть, если наш проект находится в директории C:projectstest, то в Ubuntu к ней нужно обращаться так /mnt/c/projects/test.

Итоговое содержимое файла test.conf:

<VirtualHost *:80>
    ServerAdmin webmaster@test.loc
    ServerName test.loc
    ServerAlias www.test.loc
    DocumentRoot /mnt/c/projects/test/
    <Directory /mnt/c/projects/test/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>          
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Включим новый виртуальный хост с помощью утилиты a2ensite:

Перенаправление test.loc на локальный веб-сервер

Для того чтобы доменное имя test.loc было связано с локальным веб-сервером необходимо открыть файл hosts, расположенный по адресу C:WindowsSystem32driversetc и добавить в него строчку:

Команды для запуска и остановки веб-сервера

Для запуска Apache и MySQL необходимо ввести следующие команды:

sudo service apache2 start
sudo service mysql start

Для остановки веб-сервера:

sudo service apache2 stop
sudo service mysql stop

Упрощение добавления нового проекта

Для того, чтобы каждый раз не выполнять множество этих команд, я написал bash скрипт для автоматизации данных задач, скрипт и инструкция по его установке находится в открытом доступе тут.

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

Разработка верстки сайта

Для разработки верстки сайта я пользуюсь npm с gulp и своим настроенным окружением для разработки фронтенд части сайта. Проект можете посмотреть здесь.

Замеченные баги в WSL

Работать с буфером обмена по умолчанию не комфортно (Ctrl + V, Shift + Insert не работают, приходится кликать (!!!) ПКМ по заголовку окна и выбирать Изменить → Вставить). Решается использованием терминала не самостоятельно, а внутри например Cmder или Terminus, я выбрал для себя Terminus.

После загрузки Windows иногда (было всего дважды) отказывается работать. Помогает перезагрузка (это же Windows).

Брандмауэр Windows по умолчанию не даёт зайти на запущенный внутри WSL сервер при запросе с другого устройства (запускаем сервер разработки на рабочем компе, открываем его страницы с телефона, находящегося в той же локальной сети). Как это лечить — не разобрался, приходится временно отключать брандмауэр.

Как заходить на сервер, запущенный в WSL, со сторонних устройств в одной локальной сети

Я пишу много html-страниц. В процессе работы у меня запущен локальный сервер, собирающий разметку, стили, javascript, спрайты и т.п. Бывает удобно запустить на основном компьютере сервер и зайти на него с помощью ноутбука, телефона, планшета (сервер доступен по IP, наподобие http://192.168.1.207:8080). Однако, встроенный в Windows 10 фаервол по умолчанию блокирует такие соединения.

Чтобы попасть на такой сервер, нужно добавить правило для брандмауэра:

  1. Найти с помощью поиска «Брандмауэр защитника Windows», открыть, нажать слева «Дополнительные параметры».
  2. В открывшемся окне Монитора брандмауэра выбрать (слева) «Правила для входящих…», нажать «Создать правило» (справа).
  3. Выбрать «Для порта», нажать «Далее».
  4. Выбрать «Определенные локальные порты», ввести номер порта (мой локальный сервер работает на порту 8080, его я и ввёл), нажать «Далее».
  5. Выбрать «Разрешить подключение», нажать «Далее», выбрать профили (я выбрал все), «Далее».
  6. Ввести какое-либо имя, нажать «Готово».

После этого получится зайти с любого устройства (в одной локальной сети) на запущенный в WSL на рабочем компьютере сервер.

Также можно использовать gulp + live-server и всё будет работать без дополнительных настроек.

Windows Subsystem for Linux (WSL) — подсистема ОС Windows 10, позволяющая разработчикам, тестировщикам запускать нативные приложения Linux, писать скрипты, выполнять команды непосредственно из Windows. В обновлённой Windows 10 (2004) появилась 2я версия WSL, в которой используется полноценное ядро Linux с возможностью запуска приложений и контейнеров Docker, реализована высокая скорость загрузки, небольшой объем потребляемых ресурсов, управление в фоновом режиме, обновление ядра. Таким образом вы сможете запускать ELF64 программы, которые могут получать доступ к файловой системе Windows без использования сторонних порто (таких как Cygwin).

Образ ядра Linux (версия ядра 4.19) в Windows 10 представляет собой легкую виртуальную машину, для запуска которой не нужно ставить полноценную роль Hyper-V. Системные вызовы Linux транслируются на лету в вызовы Windows без использования эмулятора (в отличии от WSL1).

Изначально компонент WSL отключен. Чтобы его включить, вам необходимо зайти в Пуск -> Панель управления -> Программы и компоненты -> Включение и отключение компонентов Windows (Control PanelAll Control Panel ItemsPrograms and FeaturesTurn Windows features on or off), активировать галочку Подсистема Windows для Linux (Windows Subsystem for Linux), нажать кнопку ОК, и перезагрузить компьютер.

установка Windows Subsystem for LInux 2 версия в windows 10

Вы можете включить компоненты WSL в Windows 10 с помощью dism:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

или PowerShell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

В Windows Server 2004 Semi-Annual Channel (SAC) для установки компонента WSL используется командлет Install-WindowsFeature:

Install-WindowsFeature -Name Microsoft-Windows-Subsystem-Linux

После этого также необходимо перезагрузить компьютер.

В настройка BIOS/UEFI компьютера должна быть включена поддержка аппаратной виртуализации: Intel VT (Intel Virtualization Technology) или AMD-V.

Теперь вам нужно выполнить обновление WSL до версии 2. Для этого требуется зайти на сайт https://docs.microsoft.com/ru-ru/windows/wsl/wsl2-kernel, скачать файл wsl_update_x64.msi, установить его. По завершении увидите картинку

windows subsyste for linux update setup

Чтобы сделать WSL2 архитектурой по умолчанию для новых дистрибутивов, в PowerShell выполните команду:

wsl --set-default-version 2

Далее вам необходимо открыть Microsoft Store, в поиске ввести слово “Linux”. В появившемся списке выберите нужный дистрибутив. Доступные Ubuntu, Debian, Kali Linux, Linux Cheatsheet, SUSE Linux Enterprise Server15, openSUSE Leap 15-1, Pengwin Enterprise, Fedora Remix for WSL или другие. В нашем примере мы будем использовать Ubuntu 20.04 LTS, нажмите кнопку Получить.

образы linux для wsl в microsoft store

Если у вас отключен Windows Store или вы хотите установить дистрибутив WSL в Core редакции Windows Server, вы можете скачать дистрибутив Ubuntu с помощью PowerShell командлета Invoke-WebRequest:

Invoke-WebRequest https://aka.ms/wslubuntu2004 -OutFile ubuntu-2004.zip –UseBasicParsing

Распакуйте архив:

Expand-Archive -Path .ubuntu-2004.zip

Запустите установку образа Linux с помощью файла Ubuntu.exe.

Также вы можете скачать образ в виде appx файла и установить его с помощью командлета Add-AppxPackage.

После установки можно проверить используемую версию WSL с помощью команды

wsl --list –-verbose

wsl --list –-verbose список доступных образов linux

Если у вашей среды Linux указана версия 1, нужно изменить ее на WSL2 командой:

wsl --set-version Ubuntu-20.04 2

Файл жёсткого диска с образом виртуальной машины ОС Linux Ubuntu 20.04 будет располагаться в профиле пользователя: C:Users234AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalState.

После установки дистрибутива в стартовом меню появляется ярлык на него. Для запуска Ubuntu зайдите в меню Пуск, нажмите на соответствующем ярлыке и получите в отдельном окне полноценную командную оболочку Bash. Запускать WSL можно и с помощью команды wsl. При первом запуске образа в командной строке Bash вам будет предложено создать пользователя и пароль (которые не должны совпадать с учётной записью Windows). Чтобы выполнять команды с правами root, необходимо использовать дополнительный ключ (префикс) sudo. В WSL есть общие команды для Bash и CMD, и тут нужно не забывать, что система Linux чувствительна к регистру.

Вы можете выполнить Linux-команды из CMD. Для этого необходимо вначале указать “WSL”. Например, для просмотра списка файлов и папок в каталоге Windows, выполните:

wsl
ls /mnt
ls/mnt/c

запуск команд linux в windows
dir | wsl grep Sa
wsl ls ‑la > 123.txt
wsl ls ‑la /proc/cpuinfo
wsl ls ‑la “/mnt/c/Program Files”

команды linux

Также вы можете открыть проводник командой explorer.exe, калькулятор – calc.exe, блокнот – notepad.exe, paint – mspaint.exe, календарь – cal, погоду – curl wttr.in

запуск команд linux в windows 10 subsystem for linux

Ещё один пример взаимосвязи 2х систем – вы можете открыть в Windows файл из WSL-дистрибутива по сетевому пути. Для этого в CMD наберите путь к файлу:

notepad \wsl$Ubuntu-20.04home1122.txt

Из окна консоли вы можете обновить список пакетов в Ubuntu с помощью команд:

sudo apt-get update
sudo apt-get upgrade

После обновления Ubuntu папка …/LocalState будет занимать 1.5 Гб.

Из командной строки Linux можно не только просмотреть Windows-файлы и каталоги, но и получить к ним доступ. Чтобы удобнее копировать файлы, просматривать директории и их содержимое, установите файловый менеджер Midnight Commander с помощью команды

sudo apt-get install mc

Вы можете запустить Midnight Commander как в командной оболочке Bash, так и внутри CMD. На скриншоте ниже показано, что в двух панелях MC показывается список файлов с обеих ОС.

Midnight Commander в windows 10 wsl2

Можно отобрахить сетевые настройки (IP адрес) IP-адрес Linux-системы:

ip addr | grep eth0

запуск команд linux из windows

В WSL не предусмотрена работа приложений с графическим интерфейсом. Тем не менее вы можете попробовать их установить и использовать. Чтобы запускать графические приложения в Linux, нужно скачать и установить в Windows программу VcXsrv Windows X Server (https://sourceforge.net/projects/vcxsrv/).

VcXsrv Windows X Server

С помощью пакетного менеджера apt-get установим несколько графических программ: например, браузер, текстовый редактор или что-то ещё:

sudo apt-get install gedit
sudo apt-get install firefox
sudo apt-get install x11-app

Затем создайте файл в директории root:

cd /~
vim .bash_login

впишите строку

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

сохраните запись

Esc -> :wr -> :q

Теперь можете запустить графические программы Linux через WSL командами:

firefox

или

gedit

запуск браузера firefox через WSL 2 в Windows 10

запуск графического редактора gedit в WSL

Вы можете установить в Windows 10 несколько дистрибутивов Linux и запускать одновременно в разных окнах WSL. Вывести весь перечень установленных дистрибутивов можете с помощью команды:

wsl --list –all

чтобы завершить работу всех запущенных дистрибутивов и ядра WSL 2, выполните команду:

wsl --shutdown

Like this post? Please share to your friends:
  • Как запустить linux с флешки на windows 10
  • Как запустить linux после установки windows 10
  • Как запустить lineage 2 на windows 10
  • Как запустить limbo на windows 7
  • Как запустить lenovo energy management на windows 10