Запуск программы как службы Windows server

Ранее я загрузил и установил сервер (продукт) СУБД «MySQL» версии 8.0 (бесплатной, со словом «Community» в названии) к себе на компьютер. Об этом у меня есть три поста: часть 1, часть 2, часть 3. Во время установки сервера этой СУБД (при его настройке) я выбрал способ работы с исполняемым файлом сервера «mysqld.exe» как с программой, которую нужно запускать и останавливать вручную.

Более популярной альтернативой такой настройки является способ запуска и останова сервера «mysqld.exe» как службы (service) «Windows» (этот способ тоже может быть запуском соответствующей службы вручную или автоматическим, при начале работы операционной системы). В данном посте речь пойдет о том, как настроить СУБД «MySQL» для работы в качестве службы «Windows».

Такая настройка может быть выполнена по-разному, в зависимости от того, в какой ситуации находится пользователь: СУБД уже установлена для работы не в качестве службы «Windows» (мой случай), СУБД еще не установлена.

1. СУБД «MySQL» уже установлена для работы НЕ службой «Windows»

#14. Установка и настройка терминального сервера на Windows Server 2019.

В первую очередь я выполнил останов сервера «mysqld.exe», который у меня был запущен на данный момент как самостоятельная программа, а не как служба «Windows». Перед созданием запуска сервера в качестве службы «Windows» этот останов требуют сделать и в соответствующем разделе документации СУБД (про запуск и останов сервера как самостоятельной программы я писал в части 3 серии постов про установку этой СУБД).

Службы в операционных системах «Windows» можно создавать несколькими способами (например, с помощью командлета New-Service в языке «PowerShell» или с помощью утилиты «sc.exe»). Я выбрал способ, предоставляемый самим исполняемым файлом «mysqld.exe», с помощью параметра —install (создание службы с автоматическим запуском) или с помощью параметра —install-manual (создание службы с запуском вручную).

Важно: как я уже описывал ранее в другом посте, запускать сервер «mysqld.exe» следует от имени пользователя с административными правами, так как этот сервер пишет логи в папку C:ProgramDataMySQLMySQL Server 8.0Data , для чего ему нужны административные права. По крайней мере, так это работает у меня в системе.

Запуск «mysqld.exe» только с этим параметром, например, такой (из программы-оболочки «PowerShell»):

(админ) PS C:Program FilesMySQLMySQL Server 8.0bin> .mysqld —install-manual

у меня сообщает в консоль, что «Service successfully installed.» (служба успешно установлена).

Действительно, служба с названием «MySQL» (это название службы, создаваемой вышеприведенной командой по умолчанию, но в этой команде можно указать другое название) успешно появляется в списке служб «Windows». Этот список можно открыть из диспетчера задач (этот диспетчер можно вызвать сочетанием клавиш «Ctrl+Shift+Esc»), на вкладке «Службы» внизу, щелкнув мышью по ссылке «Открыть службы» (если этот список уже открыт, то может потребоваться его обновить).

Вышеприведенная команда не запускает службу, а только добавляет (устанавливает) ее в список служб. Добавленную службу можно запустить из списка служб (это только один из ряда способов запустить службу).

Службы удаленных рабочих столов (RDS) в Windows Server 2012

Запуск службы «MySQL», добавленной вышеприведенной командой, у меня приводит к следующей ошибке («Служба «MySQL» на «Локальный компьютер» была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами.»):

Служба, очевидно, остается не запущенной. Эта ошибка может быть вызвана разными причинами. В данном случае причина в том, что команда добавления (установки) службы является неполной (см. пояснения и правильный вариант ниже).

Читайте также:
Способы запуска программ в Windows 10

Чтобы ввести более полную команду, я удалил службу из списка служб с помощью следующей команды (из программы-оболочки «PowerShell»):

(админ) PS C:Program FilesMySQLMySQL Server 8.0bin> .mysqld —remove

Эта команда одинакова хоть для службы, добавленной ранее с параметром —install , хоть для службы, добавленной ранее с параметром —install-manual . Если название службы отличается от умолчательного «MySQL», то его следует указать в команде. Эта команда при успешном удалении службы выдает в консоль сообщение «Service successfully removed.».

Правильно будет (для нашего случая) задать при запуске добавления (установки) службы параметр —defaults-file с путем к файлу «my.ini», в котором содержатся настройки СУБД «MySQL», выполненные при установке этой СУБД программой-установщиком. Вот как у меня выглядит эта команда:

(админ) PS C:Program FilesMySQLMySQL Server 8.0bin> .mysqld —install-manual MySQL —defaults-file=»C:ProgramDataMySQLMySQL Server 8.0my.ini»

Эта команда у меня срабатывает успешно, служба добавляется в список служб. После этого я выполнил запуск службы и он прошел удачно. Служба «MySQL» запустилась, процесс сервера «mysqld.exe» появился в списке процессов и я смог начать работать в программе-клиенте «mysql.exe».

В вышеприведенной команде отмечу два момента. Во-первых, порядок параметров важен. Если параметр —defaults-file будет идти в команде раньше параметра —install-manual , то будет произведена попытка запуска сервера СУБД, а не добавление (установка) службы в список служб. Во-вторых, важно обязательно указать название службы, даже если оно является умолчательным «MySQL», как в данном случае. Без этого у меня запуск вышеприведенной команды выдает ошибку и служба не добавляется в список служб.

Еще одно важное замечание. При добавлении (установке) службы в список служб имеет значение, от имени какой учетной записи операционной системы будет производиться вход в систему (запуск) данной службы. После добавления службы в список служб это можно посмотреть, открыв свойства данной службы. Вот как эти свойства выглядят у меня (вкладка «Вход в систему» окна свойств):

Под «системной учетной записью» у меня в данном случае подразумевается учетная запись «Локальная система», она же просто «СИСТЕМА».

Учетная запись, от имени которой запускается служба, должна обладать определенным набором прав и разрешений, иначе служба не будет запущена успешно. В нашем случае учетная запись должна обладать правом запуска служб, а также разрешением на запуск исполняемого файла «mysqld.exe», разрешением на полный доступ к папке логов и данных C:ProgramDataMySQLMySQL Server 8.0Data , разрешением на чтение файла с настройками C:ProgramDataMySQLMySQL Server 8.0my.ini (пути приведены для моего компьютера, вообще они могут отличаться от указанных).

Учетная запись «СИСТЕМА» обладает всеми нужными правами и разрешениями, поэтому в данном случае мне не пришлось заниматься настройкой этих прав и разрешений.

Перенастройка (Reconfigure). Я пытался выполнить перенастройку установленной у меня на компьютере СУБД «MySQL» через программу-установщик «MySQL Installer — Community». В программе-установщике есть такая возможность. Но на шаге перенастройки, касающемся запуска сервера СУБД как службы «Windows» после указания новых настроек не получается продвинуться дальше: кнопка «Next» остается неактивной. Если не пытаться выполнить эту перенастройку, а просто полностью удалить установку СУБД «MySQL» (вместе с папкой данных) через эту же программу-установщик, а затем установить СУБД «MySQL» заново, но теперь выбрав способ работы сервера СУБД в качестве службы «Windows» (с запуском вручную или с автоматическим запуском при запуске операционной системы), то всё получается успешно.

2. Установка СУБД «MySQL» для работы службой «Windows» изначально

Про установку этой СУБД я уже рассказывал подробно и пошагово ранее в трех постах (часть 1, часть 2, часть 3). Но там я на шаге выбора способа работы сервера «mysqld.exe» выбирал способ работы с сервером как с самостоятельной программой, а не в качестве службы «Windows». Теперь вернемся к установке СУБД «MySQL», но на этом шаге выберем вариант работы в качестве службы «Windows»:

Читайте также:
Программа отключение экрана Windows

Как видно на иллюстрации выше, теперь я оставил установленной галку «Configure MySQL Server as a Windows Service» (в прошлый раз я ее снимал).

Также я снял галку «Start the MySQL Server at System Startup»; это значит, что служба, добавляемая в список служб, будет с запуском вручную (если эту галку оставить установленной, то служба будет с автоматическим запуском при запуске операционной системы). Мне не нужно, чтобы процесс сервера «mysqld.exe» постоянно болтался запущенным в списке процессов, отъедая ресурсы моего компьютера. Я устанавливаю СУБД «MySQL» для изучения и экспериментов, а не для постоянной работы (production).

В первой половине этого поста я показывал, как добавить службу с названием «MySQL» (название по умолчанию) в список служб. В данном случае программа-установщик, как видно на иллюстрации выше, предлагает назвать службу «MySQL80». Ничего не имею против, я оставил эту настройку как есть.

Как видно на иллюстрации выше, я оставил учетную запись, от имени которой будет запускаться наша служба, по умолчанию: «Standard System Account». В соответствующем разделе документации СУБД, однако, сказано, что в данном случае под этой фразой подразумевается учетная запись «Network Service» (у меня в компьютере имя этой учетной записи написано большими буквами: «NETWORK SERVICE», еще ее называют «Сетевой службой»), цитата:

When Standard System Account is selected (default), the service logs on as Network Service.

Установку СУБД «MySQL» я закончил успешно (остальные шаги установки и настройки выполняются так же, как было описано в предыдущих постах). Служба «MySQL80» (с запуском вручную) запускается и останавливается успешно, можно работать с сервером СУБД.

Вот как выглядит вкладка «Вход в систему» окна свойств службы «MySQL80», добавленной программой-установщиком в список служб:

На иллюстрации выше видно, что выбрана учетная запись «Сетевая служба», о чем было сказано ранее. Этот пароль я не вводил, в этом окне всё настроено программой-установщиком. Учетная запись «NETWORK SERVICE» получила полный доступ к папке данных (это тоже настроено программой-установщиком).

Источник: ilyachalov.livejournal.com

Настройка серверного приложения COM+ как приложения-службы

Серверное приложение COM+ можно создать как службу для автоматического запуска системы или вручную с помощью активаций. Если служба не запускается, параметр обработки ошибок указывает серьезность ошибки и определяет выполняемое действие. Также доступен параметр настройки службы для запуска от имени локальной системной учетной записи, а также возможность назначить определенную учетную запись пользователя, для которой будет выполняться серверное приложение COM+. Зависимости также можно выбрать из списка служб, зарегистрированных на компьютере с помощью служб компонентов. Это позволит определить, какие службы должны выполняться перед запуском этой службы.

Настройка приложения COM+ для запуска от имени службы

  1. В дереве консоли средства администрирования служб компонентов найдите серверное приложение COM+, которое вы хотите запустить как службу.
  2. Щелкните правой кнопкой мыши серверное приложение COM+ и выберите пункт «Свойства».
  3. В диалоговом окне «Свойства» перейдите на вкладку «Активация «.
  4. В поле «Тип активации» установите флажок «Запуск приложения от имени службы NT «.

Примечание Флажок «Запуск приложения от имени службы NT » включен только для серверных приложений и отключен для приложений библиотеки.

  1. Пропуск. Программа запуска регистрирует ошибку, но продолжает операцию запуска.
  2. Обычный. Ошибка регистрируется, отображается окно сообщения, и программа запуска продолжает операцию запуска.
  3. Тяжелый. Ошибка регистрируется и система перезапускается с последней известной хорошей конфигурацией. Если это последняя известная хорошая конфигурация, которая запускается при регистрации ошибки, операция запуска продолжается.
  4. Критическое — Ошибка регистрируется и система перезапускается с последней известной хорошей конфигурацией. Если это последняя известная хорошая конфигурация, которая запускается при регистрации ошибки, операция запуска завершается сбоем.
  1. На вкладке «Удостоверение » выберите «Этот пользователь».
  2. Чтобы выбрать пользователя, введите имя пользователя в поле «Пользователь» или нажмите кнопку «Обзор «.
  3. Введите пароль для учетной записи пользователя в поле «Пароль «.
  4. Введите тот же пароль в поле подтверждения пароля .
Читайте также:
Как включить программу выполнить на Виндовс 10

Источник: learn.microsoft.com

Запуск программы как службы windows server

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7

Последнее обновление: 12.06.2018

ASP.NET Core можно развертывать в виде обычной службы Windows без каких-либо веб-серверов, в частности, IIS.

Создадим новый проект ASP.NET Core 2.1 любого типа. Прежде всего, нам надо добавить в проект через Nuget пакет Microsoft.AspNetCore.Hosting.WindowsServices .

После создания проекта обратимся к файлу Program.cs , который во всех проектах выглядит идентично:

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; namespace ServiceHostingApp < public class Program < public static void Main(string[] args) < CreateWebHostBuilder(args).Build().Run(); >public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup(); > >

Изменим его следующим образом:

using System.Diagnostics; using System.IO; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting.WindowsServices; namespace ServiceHostingApp < public class Program < public static void Main(string[] args) < // получаем путь к файлу var pathToExe = Process.GetCurrentProcess().MainModule.FileName; // путь к каталогу проекта var pathToContentRoot = Path.GetDirectoryName(pathToExe); // создаем хост var host = WebHost.CreateDefaultBuilder(args) .UseContentRoot(pathToContentRoot) .UseStartup() .Build(); // запускаем в виде службы host.RunAsService(); > > >

Чтобы запустить приложение в виде службы у объекта IWebHost вызывается метод RunAsService() .

Публикация

Теперь нам надо опубликовать приложение в файловой системе. Мы можем это сделать через консоль с помощью команды dotnet publish . Для этого вначале в командной строке/терминале надо перейти к папке проекта и из нее запустить команду:

dotnet publish —configuration Release —runtime win10-x64 —output c:myapp

Поскольку приложение будет устанавливаться в виде службы Windows и должно иметь исполняемый файл, то указывается параметр —runtime . В данном случае служба будет устанавливаться на Windows 10 с 64-битной архитектурой. Поэтому для этого параметра указано значение win10-x64 .

Параметр —output указывает, где будет опубликовано приложение — то есть в данном случае в папке c:myapp .

ASP.NET Core app as a Windows Service

Также можно поизвести публикацию с помощью графических средств в Visual Studio.

Создание службы

После публикации с помощью консольной утилиты sc.exe создадим службу:

sc create НАЗВАНИЕ_СЛУЖБЫ binPath= «ПУТЬ К ИСПОЛНЯЕМОМУ ФАЙЛУ EXE»

После команды create указывается имя службы. Службу можно назвать как угодно.

Параметр binPath указывает на путь к исполняемому файлу (в том числе имя самого файла). Причем между знаком равно и путем к файлу в кавычках должен идти пробел.

Например, ранее приложение было опубликовано в папке c:myapp. Как правило, название исполняемого файла соответствует названию проекта, то есть в моем случае в папке c:myapp после публикации находится исполняемый файл ServiceHostingApp.exe . И, допустим, служба буде называться MyAspService. В этом случае команда на создание службы будет выглядеть следующим образом:

sc create MyAspService binPath= «c:myappservicehostingapp.exe»

Установка приложения ASP NET Core в виде службы

Запуск службы

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

sc start MyAspService

Команде start передается имя ранее установленной службы — в моем случае это MyAspService.

Источник: metanit.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru