Как может приложение Django на Raspberry Pi безопасно вызвать обновление самого себя с помощью APT и SystemD?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как может приложение Django на Raspberry Pi безопасно вызвать обновление самого себя с помощью APT и SystemD?

Сообщение Anonymous »

Я распространяю веб -приложение Django/Python в качестве пакета Debian на Raspberry Pi. Я хотел бы внедрить кнопку «Обновление» в веб -интерфейсе, которая запускает обновление Sudo Apt && sudo apt -y установить my_app для обновления пакета приложений. Пробое:
Кнопка обновления отправляет сообщение в бэкэнд Django. SystemD Service и работает как пользователь, не являющийся root. Сервер работает и работает
[*] Обновление - сервер получил команду POST, чтобы запустить обновление
[*] 404/500 - Сервер в настоящее время перезагружается

Ошибки 404/500 попадают в интерфейс JS и интерпретируют, что сервер является «обратно». /> проблема: < /strong> < /p>
Этот подход работает только в первый раз после перезагрузки. При последующих попытках служба OneShot не работает снова. Несмотря на то, что в неудачном состоянии нет услуг, я попытался сбросить сервис, используя SystemCtl Reset-Failed , но это не решает проблему. /> Вопрос: < /strong> < /p>
Что является надежным шаблоном дизайна для того, чтобы приложение Django запустило свое собственное обновление через кнопку GUI, учитывая ограничения APT, SystemD и факт, что работающий код заменяется? Конфликты между перезагрузками SystemD и работающими службами < /li>
Разрешить повторяющиеся обновления без необходимости перезагрузки < /li>
Работайте чисто с упаковкой Debian и постоинстовыми сценариями < /li>
< /ul>
Я не собираюсь настаивать на использовании услуги OneShot, что просто подход. Файл службы моего устройства: < /p>
[Unit]
Description=Update specific ODIN16 GUI and collateral packages
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'apt update && apt-get install -y my_app'
StandardOutput=append:/var/log/gui-package-update.log
StandardError=append:/var/log/gui-package-update.log
User=root
Group=root
RemainAfterExit=no
Restart=no

[Install]
WantedBy=multi-user.target


Подробнее здесь: https://stackoverflow.com/questions/796 ... self-using
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»