Я разработал собственное решение, которое предоставляет функции для генерации, проверки и установки пакетов обновлений.
По сути, оно использует функции PHP OpenSSL для шифрования с открытым ключом (RSA) ключа для симметричного шифрования., mcrypt для симметричного шифрования (AES) и ZIP в качестве формата контейнера.Эти строительные блоки используются для создания компактных пакетов обновлений и обеспечения целостности и подлинности данных.
Можно также использовать openssl_pkcs7_sign()
и openssl_pkcs7_encrypt()
и их аналоги дляMIME-совместимое шифрование, однако, похоже, что эти функции используют 7-битное кодирование и, следовательно, делают архивы довольно большими.
Веб-приложение должно иметь все свои файлы и независимые от системы данные в одном каталоге приложения, который можно заменить.для обновления приложения.
Обновление выполняется следующим образом:
Извлечение содержимого архива ZIP во временную папку
- Выполнение сценария предварительного обновления
- Переместите новый каталог приложения в нужное место, используя временное имя
- Переместите старый каталог приложения в другое место или переименуйте его
- Переименуйте новый каталог приложения в его ожидаемое имя
- Запустите сценарий пост-обновления
- Если что-то пойдет не так, попробуйте откат -
Системы управления версиями / исходниками, такие как git, хороши, когда вы единолично управляете всеми целевыми системами, но в остальном я думаю, что вам не следует требовать от клиента установки и эксплуатации стороннего программного обеспечения, для которого вам придетсятакже предоставьте поддержку, а скорее предоставьте пользовательский интерфейс для обновлений программного обеспечения, который хорошо интегрируется с остальным программным обеспечением.