@Drottarutarnum
Любопытный любитель

Как правильно публиковать net core приложение на linux?

Собственно, сейчас публикация это просто удаление старых файлов в каталоге по ftp и заливка новых

Можно ли автоматизировать процесс?
1) Надо сначала остановить сервис через консоль
2) Публикация удалит старые файлы и зальет новые
3) Запустить сервис снова

Можно ли как-то в visual studio сделать чтобы перед публикацией она подключилась по SHH, вошла под root, остановила сервис, опубликовала файлы и вновь запустила сервис?

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

Или если сервис остановится в процессе выполнение участка коды, который нельзя прерывать

Как решаются такие проблемы?
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
Можно ли автоматизировать процесс?

Одно слово - systemd.
Загружаете файлы на сервер во временную папку
копируете их из временной папки в папку с екзешниками
systemctl ... restart

Можно ли как-то в visual studio сделать чтобы перед публикацией она подключилась по SHH, вошла под root, остановила сервис, опубликовала файлы и вновь запустила сервис?

Visual studio тут не нужна, как и FTP - всё можно сделать одним bash / powershell скриптом. Загружать файлы рекомендую через scp или через rsync.

И дополнительный вопрос, как сделать чтобы остановка сервиса не нарушила работу приложения?

Завести два сервера и делать сине-зелёный деплой.
Ну или два экземпляра сервиса.
Или если сервис остановится в процессе выполнение участка коды, который нельзя прерывать

У Generic host есть механизм graceful shutdown.
Если приходит сигнал на остановку - критичный сервис может это обработать и нормально доделать свои дела (ну или нормально отменить всё) перед выключением.

Для сложных сценариев деплоя есть ещё Octopus и всякие докеры/кубернетесы. (но если контейнеры не используются, или не хочется оверинжинирить с кубером - можно обойтись одним только октопусом)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы