У меня есть проект laravel. Я развертываю его на сервере Apache, копируя файлы на сервер. Есть ли альтернатива использованию phar, которая работает как файлы jar?
@ N.B. Я использую ant для создания своего приложения на сервере Jenkins. Я не могу просто запустить команду git pull на сервере.
Вы можете использовать ant для упаковки вашего приложения в файл .phar и его развертывания, но рекомендуется затем извлечь файл на сервер, чтобы вы могли вместо этого заархивировать его. Не оставляйте его как phar, потому что а) веб-серверу для работы нужен распакованный индексный файл и б) существует много накладных расходов при извлечении архива, которое будет происходить при каждом запросе.
Я согласен с @apokryfos, если вам нужна простота развертывания, вам может потребоваться подходящий инструмент развертывания, например capistrano. Ant должен быть сборкой, а не развертыванием, вы как бы растягиваете его
@Magus Я не использую ant. Я создал приложение с помощью ant и придумал идеи по его развертыванию. Если бы вы могли что-то подсказать, я вам помогу. Спасибо.
@MunavirChavody ответит, потому что он слишком длинный
«там много накладных расходов» - это неправильно. Файлы .phar могут быть распакованы, а файлы .phar кэшируются php. Я проверил это некоторое время назад: cweiske.de/tagebuch/php-phar-files.htm#benchmark






Самый простой способ - выполнить синхронизацию файлов с сервером. Один немного более сложный, но отлично сработанный, - это использование capistrano на желаемых серверах, сценарий развертывания от jenkins загружал файл сборки в s3 и ssh на сервер и запускал
bundle exec cap deploy
на желаемых серверах.
Таким образом, серверы развернутся сами по себе, в случае, если я его использовал, capistrano на машинах выполнял сборку и развертывание с использованием архива git, но вы могли разделить этап сборки и этап развертывания.
По сути, у вас будет личное ведро s3 для загрузки ваших сборок, они всегда будут называться application-latest.zip.
Ваш сервер jenkins всегда будет создавать, загружать и запускать развертывание
На ваших серверах приложений capistrano загрузит zip-архив, разархивирует его и "развернет".
Почему я так часто упоминаю капистрано? Потому что это избавляет вас от многих проблем с развертыванием, например: - он выполнит указанные шаги в папке с именем application-timestamp - эта папка хранится вместе с другими папками, содержащими ваши предыдущие развертывания - есть символическая ссылка под названием release, которая указывает на ваше последнее развертывание - как только capistrano завершает ваши шаги, он изменяет символическую ссылку, чтобы указать на вашу недавно развернутую папку
Преимущества этого подхода и выбора технологий:
вы можете выбрать сохранение последних развертываний 'x', что позволит вам мгновенно откатить развертывание, потому что это всего лишь изменение символической ссылки с вашего текущего развертывания на развертывание current-1
который также контролирует, сколько места на диске занимают ваши активы, очищая самые старые папки, если вы выбрали сохранить 5 развертываний для отката, при развертывании в шестой раз самая старая папка удаляется
надеюсь, это поможет!
Если вы хотите упаковать приложение в .phar только для его развертывания, значит, вы не в курсе последних практик. Почему не простой
git pullна сервере?