Назад | Перейти на главную страницу

Как лучше всего развернуть приложение на удаленном сервере, доступном только через scp?

Есть веб-приложение, которое нужно развернуть на удаленном сервере. Есть scp доступ к этому серверу, но без рабочей оболочки, так что не может просто ssh там.

Возник вопрос, как там приложение развернуть? Развернуть, как запустить подготовленный сценарий, который выполняет некоторые задачи, такие как обновление схемы БД, перезапуск сервера, очистка кешей и т. Д.?

Одна вещь, которая пришла мне в голову, это скопировать все файлы через scp, затем проверьте связь с URL-адресом на конечном компьютере (например, http://production.site.com/deploy - или любые случайные символы там), которые запустили бы сценарий развертывания там. Для этого, вероятно, потребуются некоторые ограничения на основе IP, просто чтобы не каждый, кто вводит этот URL, запускал сценарий развертывания (во избежание возможных атак DOS).

Другой способ - поставить простую проверку в cron целевой машины и запускать ее каждые 1 минуту. В этом случае процесс развертывания будет выглядеть так:

Что вы думаете об этих двух идеях? Есть еще идеи по этому поводу? Я хотел бы найти лучший (максимально безопасный для возможных ошибок и каким-либо образом DOSing производственный сервер) способ его развертывания ...

Мы делаем что-то похожее на ваше первое предложение

Мы заархивируем все, скопируем и затем пингуем защищенный паролем веб-сайт, доступный только для внутренней распаковки поверх старого сайта. Мы запускаем sql-скрипты после zip-копии, но перед распаковкой.

В любом случае, вы предложили, похоже, они будут работать, но, как вы упомянули, если у вас есть внешний доступный URL-адрес развертывания, вам лучше убедиться, что он достаточно безопасен.

Ваша первая идея заключается в том, чтобы учетная запись пользователя веб-сервера имела достаточные привилегии для выполнения задачи развертывания и чтобы веб-сервер не был привязан к корневому каталогу. Если эти требования соблюдены, я думаю, неплохо, если скрипт будет удален по завершении.