- Вопрос или проблема
- Ответ или решение
- Как запустить WSL на Windows 11 в качестве службы для PostgreSQL на Debian
- Шаг 1: Установка Debian и PostgreSQL
- Шаг 2: Настройка автозапуска PostgreSQL через /etc/wsl.conf
- Шаг 3: Использование Task Scheduler
- Шаг 4: Использование NSSM для запуска процесса
- Заключение
- Рекомендации по генерации контента
Вопрос или проблема
Сервер Postgres на Debian должен запускаться при загрузке Windows 11.
Debian был установлен с помощью
wsl --install Debian
Postgres в Debian устанавливается с помощью
sudo apt install postgresql-12
Создан /etc/wsl.conf
как описано в этом ответе:
[boot]
command="service postgresql start"
Создана задача в планировщике задач, которая запускается при старте. Попробовал выполнить команды из нее
wsl
и
wsl -u root
Я пробовал запустить VB скрипт из здесь:
set object = createobject("wscript.shell")
object.run "wsl.exe", 0
Тем не менее WSL и Postgres не запускаются, если Windows перезагружается.
Решения в этом ответе кажутся устаревшими, поскольку /etc/wsl.conf
должен использоваться для запуска демонов в WSL.
Если VBS скрипт запускается из командной строки, сервер Postgres запускается.
Как запустить Debian/Postgres как службу в загрузке Windows 11? Должны ли использоваться SrvAny, NSSM или Планируемая задача при старте?
wsl --version
возвращает
Версия WSL: 1.0.3.0
Версия ядра: 5.15.79.1
Версия WSLg: 1.0.47
Версия MSRDC: 1.2.3575
Версия Direct3D: 1.606.4
Версия DXCore: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Версия Windows: 10.0.22621.1105
Кажется, что Microsoft нарушила возможность запуска WSL как службы или запланированной задачи, когда она была перенесена в их магазин, потому что она больше не будет работать в сессии 0.
Эти выводы можно сделать из обсуждений с командами Windows Subsystem for Linux от Microsoft, найденными здесь на github.
Это, безусловно, делает его менее полезным. Единственная информация от MS состоит в том, что они работают над этим. Останется увидеть, действительно ли они работают над этим.
Вы можете создать пакетный файл, например, startWsl2Services.bat
в папке shell:startup (Win-R, введите shell:startup
):
@echo off
echo "Запуск Ubuntu-22.04..."
wsl -d Ubuntu-22.04 -u root service dbus start
echo "Готово"
или любую другую дистрибуцию (в вашем случае Debian
) и службу, которую вы хотите запустить после входа пользователя
Автозапуск WSL при загрузке может поддерживать его работоспособность в фоновом режиме с помощью nssm. Ознакомьтесь с комментарием в теме проблем WSL.
-
установите NSSM
-
запустите
nssm install wsl
и введите следующие данные:
-
перейдите к входу в систему и выберите “этот аккаунт”, получите свое имя пользователя, введя
whoami
в другом терминале, если вы не знаете свое правильное имя пользователя, и введите свой пароль, который вы используете для входа. -
нажмите кнопку сохранения, а затем выполните
nssm start wsl
Ответ или решение
Как запустить WSL на Windows 11 в качестве службы для PostgreSQL на Debian
Запуск WSL (Windows Subsystem for Linux) на Windows 11 при загрузке системы — это задача, которая часто возникает у пользователей, желающих интегрировать Linux-окружение в свои рабочие процессы. В частности, установка PostgreSQL на Debian через WSL требует немного больше усилий, чтобы обеспечить его автоматический запуск при загрузке Windows 11.
В данной статье мы подробно рассмотрим шаги, необходимые для настройки автоматического запуска PostgreSQL в WSL, включая установку системы и конфигурацию различных инструментов.
Шаг 1: Установка Debian и PostgreSQL
Для начала убедитесь, что вы установили Debian в WSL и настроили PostgreSQL. Если вы этого еще не сделали, откройте командную строку и выполните следующие команды:
wsl --install Debian
После установки Debian, перейдите в него и установите PostgreSQL:
sudo apt update
sudo apt install postgresql-12
Шаг 2: Настройка автозапуска PostgreSQL через /etc/wsl.conf
Чтобы попытаться запустить PostgreSQL при загрузке WSL, создайте или отредактируйте файл /etc/wsl.conf
, добавив следующие строки:
[boot]
command="service postgresql start"
Этот способ должен был обеспечить запуск PostgreSQL при старте WSL, но, как вы отметили, он не всегда работает из-за ограничений, связанных с самой архитектурой WSL и её функционалом на уровне служб.
Шаг 3: Использование Task Scheduler
Одним из доступных решений является использование планировщика задач в Windows. Создайте задачу, которая будет запускать WSL при входе в систему.
- Откройте Task Scheduler.
- Создайте новую задачу, выбрав "Create Basic Task".
- Установите триггер на "When I log on".
- В разделе "Action" выберите "Start a program" и введите следующий путь к WSL:
C:\Windows\System32\wsl.exe
Вы также можете указать дополнительные параметры, например, -d Debian
для конкретного дистрибутива.
Однако, как вы заметили, простой запуск WSL через Task Scheduler может не инициировать запуск PostgreSQL, так как WSL будет запущен в сессии, где могут отсутствовать некоторые элементы интерфейса и необходимые права.
Шаг 4: Использование NSSM для запуска процесса
Наиболее надежным способом будет использование инструмента NSSM (Non-Sucking Service Manager), который может помочь создать службу Windows для управления WSL.
- Установите NSSM: Загрузите его с официального сайта и распакуйте в удобное место.
- Установите службу: Откройте командную строку от администратора и выполните:
nssm install WSLService
-
В появившемся интерфейсе NSSM укажите:
- Path:
C:\Windows\System32\wsl.exe
- Startup directory: Укажите папку, если это необходимо.
- Arguments: Добавьте
-d Debian service postgresql start
- Path:
-
Перейдите на вкладку Log On и укажите свою учетную запись, чтобы служба могла запускаться с вашими правами.
-
Нажмите кнопку Install service.
-
Для запуска службы используйте команду:
nssm start WSLService
Этот подход должен гарантировать, что PostgreSQL будет запущен автоматически, когда Windows начинает свою работу.
Заключение
Запуск PostgreSQL на Debian под WSL при загрузке Windows 11 требует некоторой настройки, но с помощью перечисленных шагов и использования NSSM это можно сделать эффективно. Важно следить за обновлениями WSL и учитывать возможные изменения в функциональности, чтобы ваша система оставалась актуальной и работоспособной.
Рекомендации по генерации контента
- Убедитесь, что используете соответствующие ключевые слова, такие как "WSL", "автозапуск PostgreSQL", "Debian", и "Windows 11".
- Форматируйте текст в легко читаемом виде с подзаголовками и списками для лучшего восприятия.
- Избегайте использования избитых фраз и шаблонных формулировок.
Применяя данные рекомендации, вы сможете улучшить видимость и полезность вашего контента для читателей.