Можете ли вы запустить apache2 на функциях wsl в Windows?

Вопрос или проблема

Можно ли запустить apache2 на функции wsl в Windows (Ubuntu 20.04 LTS)?

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

lokz@JACK-PC2:~$ sudo service apache2 start
 * Starting Apache httpd web server apache2
(20014)Internal error (specific information not available): 
AH00058: Error retrieving pid file envvars
AH00059: Remove it before continuing if it is corrupted.
Action 'start' failed.
The Apache error log may have more information.
 *

В журнале ошибок Apache может быть больше информации.

В журнале ничего нет.

Единственный другой ответ на этот вопрос на момент написания ответа больше не актуален, поэтому я добавляю эту информацию для тех, кто ищет в Google. С марта 2022 обе версии WSL хорошо работают с такими сервисами, как Apache и MySQL – я использую их постоянно. Их нужно сначала установить, так как они не поставляются с дистрибутивом Ubuntu по умолчанию, но простая команда

sudo apt install apache2 mysql-server

сделает это. После установки Apache можно перейти на http://localhost в браузере Windows и увидеть страницу по умолчанию.

Редакция: Спасибо Ruud Helderman

Если Apache2 не запускается сразу (у меня запустился), возможно, вам нужно будет запустить его вручную, используя

sudo service apache2 start

ПРЕДУПРЕЖДЕНИЕ: Я не пробовал использовать это для чего-либо, кроме локальной разработки. Для производственных серверов я бы определенно использовал полную установку Linux или нативный Windows-базированный веб-сервер, если ваша среда требует Windows.

Мой ответ разделен на несколько разделов, но каждый из них актуален, поэтому я настоятельно рекомендую прочитать все три. Если не хотите, то сосредоточьтесь на разделах “Удобство использования” и “Функциональность”.

  • Удобство использования (и настройки)
  • Безопасность
  • Функциональность

Удобство использования (и настройки)

WSL довольно прост в использовании, предоставляя вам Linux-среду внутри Windows, включая SystemD.

Вы можете легко установить Apache в среде WSL и использовать его как веб-сервер, выполняя следующие действия в работающей среде WSL:

sudo apt install apache2

После установки настройте Apache так, как вам нужно.

Несмотря на то, что SystemD поддерживается в WSL, есть вероятность, что он не запустится автоматически при открытии WSL, поэтому вам, возможно, придется запустить его с помощью:

sudo systemctl start apache2

Однако обратите внимание, что имеются некоторые проблемы с функциональностью, поэтому обратитесь к разделу “Функциональность”.


Безопасность

Хотя технически WSL2 работает в среде Hyper-V, данные на диске WSL доступны через папки \\wsl$\.... Поэтому, если вы используете среду Ubuntu 22.04.1, она отображается в \\wsl$\Ubuntu или аналогично и может быть доступна непосредственно из системы Windows. Хотя это не рекомендуется, это МОЖЕТ быть сделано, и вам нужно убедиться, что вы поддерживаете свою систему обновленной на уровне Windows, чтобы данные не могли быть скомпрометированы вредоносным ПО.

Следовательно, WSL2 настолько же безопасен, насколько безопасен его хост-узел Windows. Поэтому НЕ рекомендуется запускать что-либо в WSL2 в качестве производственного программного обеспечения из-за проблем с безопасностью и т.д.

Есть также проблема функциональности с WSL2.


Функциональность

WSL2 НЕ является постоянной средой. То есть, когда вы включаете компьютер в Windows и входите в систему, WSL не запускается автоматически. Пока WSL не запущен пользователем, среда Ubuntu не загружается, следовательно, вы не можете ‘автозапустить’ экземпляр Apache. И когда пользователь закрывает окно оболочки WSL, WSL завершает работу.

Это известное ограничение в WSL2, и поэтому оно не рекомендуется для производственных целей. Я потратил почти 3 дня, пытаясь заставить это работать, чтобы настроить экземпляр nginx в WSL для ‘обратного проксирования’ сервиса Windows, и это просто не сработало.

В настоящее время нет способа обойти это. Это означает, что хотя вы можете использовать WSL2 для запуска Apache, это ненадежное решение для постоянно работающих сайтов. Хорошо для нужд разработки, нехорошо для полного производственного использования.

Я видел этот вопрос 2 или 3 раза, и сама идея запуска Apache в WSL абсурдна.

Варианты

При разработке сайтов для серверов на базе Linux с использованием Windows как среды разработки есть 3 стандартных варианта:

  1. Установить Apache нативно в Windows – См. Использование Apache HTTP Server на Microsoft Windows
  2. Использовать ПО, такое как Vagrant, чтобы создать виртуальную машину, которая будет соответствовать требованиям фактического хоста. По умолчанию созданная ВМ не имеет головного интерфейса и требует SSH для входа, что имитирует удаленную разработку.
  3. Разрабатывать удаленно с использованием SSH на Web сервере.

Обратите внимание, что ответ @hippyjim дублирует пункт 2 выше без использования Vagrant. Простой поиск в Google показывает, что WSL2 – это очень кастомизированная версия Hyper-V. “Функции”, предоставляемые WSL2, служат для того, чтобы разработчики “оставались привязанными” к инструментам Windows, таким как vscode. Для получения дополнительной информации смотрите Часто задаваемые вопросы WSL, конкретно Можно ли использовать WSL для производственных сценариев?

WSL изначально был создан для быстрого доступа к командной строке Linux, находясь в Windows. Этот доступ лучше всего подходит для таких задач, как написание скриптов оболочки, а не для запуска веб-сервера, даже если веб-сервер локальный. Лично я считаю, что, как разработчик, вы должны попытаться имитировать настройки вашего клиента, а не бесполезно менять их окружение, чтобы оно соответствовало настройкам WSL, к которым вы привыкните.

Из Часто задаваемых вопросов WSL:

Могу ли я запускать ВСЕ Linux-приложения в WSL?

Нет! WSL – это инструмент, предназначенный для пользователей, которым нужно запускать Bash и основные инструменты командной строки Linux на Windows.

WSL не нацелен на поддержку GUI-десктопов или приложений (например, Gnome, KDE и т. д.)

Также, хотя вы сможете запускать многие популярные серверные приложения (например, Redis), мы не рекомендуем WSL для хостинга производственных сервисов – Microsoft предлагает различные решения для запуска производительных Linux-нагрузок в Azure, Hyper-V и Docker.


Хотя вы можете запустить Apache, приложив усилия и провев исследование, я считаю, что совет MS является обоснованным. Вам, возможно, не захочется запускать веб-сервер из приложения Windows Store на рабочем столе Windows. WSL просто не является подходящим инструментом для этой задачи.

.

Ответ или решение

WSL (Windows Subsystem for Linux) позволяет пользователям Windows запускать среду Linux непосредственно на их Windows машине. Однако важно рассмотреть целесообразность развертывания таких серверных приложений, как Apache2 в среде WSL. В данном ответе мы подробно рассмотрим эту возможность, принимая во внимание аспекты простоты использования, безопасности и функциональности.

Теория

WSL и Apache2: WSL дает возможность запускать Linux-командную строку, давая разработчикам свободу пользоваться инструментами Linux в Windows. Apache2 можно установить в WSL и использовать для разработки, но WSL имеет ограничения, которые важно учитывать.

Настройка и запуск Apache2: Apache2 можно установить в WSL с помощью команды sudo apt install apache2. После установки Apache2 может возникнуть ошибка, как та, что указана в вопросе: проблема с файлом PID, но это может быть решено путем ручного удаления поврежденного файла, как предлагает сообщение об ошибке.

Пример

Рассмотрим пример установки и настройки Apache2 в WSL. Представьте, что пользователь установил и настроил Apache2, и все работает как должно, за исключением ошибки на этапе старта. Решение может состоять в исправлении настроек или попытке перейти к альтернативным методам, таким как ручной запуск через sudo systemctl start apache2.

Безопасность: Поскольку WSL работает под управлением Windows и использует Hyper-V, вся безопасность WSL зависит от системы-хоста. Данные в /mnt доступны системе Windows, что означает, что информация уязвима для атак, потенциально доступных из Windows. Это делает использование WSL для веб-сервисов небезопасным для производственного применения, если должная защита не обеспечена.

Применение

На практике WSL удобно использовать для разработки и тестирования, но для полноценного производственного использования, увы, это не лучший выбор. Рассмотрим доступные альтернативы:

  1. Native Apache на Windows: Установка Apache непосредственно на Windows возможна, и это может быть более надежным решением для постоянного использования по сравнению с WSL. Это обеспечит более стабильную и безопасную работу сервера.

  2. Виртуальные машины или контейнеры: Применение Vagrant или Docker для создания более изолированной и целостной среды может дать лучшую интеграцию и безопасность, поддерживая полный контроль над системой.

  3. Удаленная разработка: Подключение к удаленному серверу через SSH также может быть вариантом, предоставляя полноценную среду Linux для разработки.

Заключение

Запуск Apache2 в WSL возможно реализовать, но это не рекомендуется для производственного использования. Это решение подходит для местной разработки и тестирования проектов, где критичность безопасности и доступности не является приоритетом. Для надежных решений лучше применить нативные или более защищенные подходы.

WSL дает отличные возможности для разработчиков, но ограничения в функциональности и безопасности делают его менее пригодным для ситуаций, когда требования соответствуют уровням хостинга веб-сервисов в реальном времени. Рассматривая планы развертывания веб-сервисов, лучше выбирать более надежные решения, подходящие для долгосрочного использования.

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

Капча загружается...