Ранее я загрузил и установил сервер (продукт) СУБД «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» на «Локальный компьютер» была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами.»):
Служба, очевидно, остается не запущенной. Эта ошибка может быть вызвана разными причинами. В данном случае причина в том, что команда добавления (установки) службы является неполной (см. пояснения и правильный вариант ниже).
Чтобы ввести более полную команду, я удалил службу из списка служб с помощью следующей команды (из программы-оболочки «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»:
Как видно на иллюстрации выше, теперь я оставил установленной галку «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+ для запуска от имени службы
- В дереве консоли средства администрирования служб компонентов найдите серверное приложение COM+, которое вы хотите запустить как службу.
- Щелкните правой кнопкой мыши серверное приложение COM+ и выберите пункт «Свойства».
- В диалоговом окне «Свойства» перейдите на вкладку «Активация «.
- В поле «Тип активации» установите флажок «Запуск приложения от имени службы NT «.
Примечание Флажок «Запуск приложения от имени службы NT » включен только для серверных приложений и отключен для приложений библиотеки.
- Пропуск. Программа запуска регистрирует ошибку, но продолжает операцию запуска.
- Обычный. Ошибка регистрируется, отображается окно сообщения, и программа запуска продолжает операцию запуска.
- Тяжелый. Ошибка регистрируется и система перезапускается с последней известной хорошей конфигурацией. Если это последняя известная хорошая конфигурация, которая запускается при регистрации ошибки, операция запуска продолжается.
- Критическое — Ошибка регистрируется и система перезапускается с последней известной хорошей конфигурацией. Если это последняя известная хорошая конфигурация, которая запускается при регистрации ошибки, операция запуска завершается сбоем.
- На вкладке «Удостоверение » выберите «Этот пользователь».
- Чтобы выбрать пользователя, введите имя пользователя в поле «Пользователь» или нажмите кнопку «Обзор «.
- Введите пароль для учетной записи пользователя в поле «Пароль «.
- Введите тот же пароль в поле подтверждения пароля .
Источник: 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 .
Также можно поизвести публикацию с помощью графических средств в Visual Studio.
Создание службы
После публикации с помощью консольной утилиты sc.exe создадим службу:
sc create НАЗВАНИЕ_СЛУЖБЫ binPath= «ПУТЬ К ИСПОЛНЯЕМОМУ ФАЙЛУ EXE»
После команды create указывается имя службы. Службу можно назвать как угодно.
Параметр binPath указывает на путь к исполняемому файлу (в том числе имя самого файла). Причем между знаком равно и путем к файлу в кавычках должен идти пробел.
Например, ранее приложение было опубликовано в папке c:myapp. Как правило, название исполняемого файла соответствует названию проекта, то есть в моем случае в папке c:myapp после публикации находится исполняемый файл ServiceHostingApp.exe . И, допустим, служба буде называться MyAspService. В этом случае команда на создание службы будет выглядеть следующим образом:
sc create MyAspService binPath= «c:myappservicehostingapp.exe»
Запуск службы
После установки службы запустим ее с помощью команды:
sc start MyAspService
Команде start передается имя ранее установленной службы — в моем случае это MyAspService.
Источник: metanit.com