Приложение Laravel к Phar

У меня есть проект laravel. Я развертываю его на сервере Apache, копируя файлы на сервер. Есть ли альтернатива использованию phar, которая работает как файлы jar?

Если вы хотите упаковать приложение в .phar только для его развертывания, значит, вы не в курсе последних практик. Почему не простой git pull на сервере?

N.B. 19.07.2018 15:01

@ N.B. Я использую ant для создания своего приложения на сервере Jenkins. Я не могу просто запустить команду git pull на сервере.

Munavir Chavody 19.07.2018 15:08

Вы можете использовать ant для упаковки вашего приложения в файл .phar и его развертывания, но рекомендуется затем извлечь файл на сервер, чтобы вы могли вместо этого заархивировать его. Не оставляйте его как phar, потому что а) веб-серверу для работы нужен распакованный индексный файл и б) существует много накладных расходов при извлечении архива, которое будет происходить при каждом запросе.

apokryfos 19.07.2018 15:30

Я согласен с @apokryfos, если вам нужна простота развертывания, вам может потребоваться подходящий инструмент развертывания, например capistrano. Ant должен быть сборкой, а не развертыванием, вы как бы растягиваете его

Magus 19.07.2018 16:09

@Magus Я не использую ant. Я создал приложение с помощью ant и придумал идеи по его развертыванию. Если бы вы могли что-то подсказать, я вам помогу. Спасибо.

Munavir Chavody 20.07.2018 08:25

@MunavirChavody ответит, потому что он слишком длинный

Magus 20.07.2018 16:25

«там много накладных расходов» - это неправильно. Файлы .phar могут быть распакованы, а файлы .phar кэшируются php. Я проверил это некоторое время назад: cweiske.de/tagebuch/php-phar-files.htm#benchmark

cweiske 27.09.2018 09:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
1 087
1

Ответы 1

Самый простой способ - выполнить синхронизацию файлов с сервером. Один немного более сложный, но отлично сработанный, - это использование 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 развертываний для отката, при развертывании в шестой раз самая старая папка удаляется

  • это предотвращает появление белого экрана смерти, который возникает, когда nginx / apache / php не может получить доступ к файлу, который в настоящее время обновляется сценарием развертывания
  • он позволяет вам создать образ этой машины, скажем, на aws, и поместить его в группу автомасштабирования, и как только эта машина будет запущена, она обновится, загрузив последний zip-архив с s3 без вмешательства Дженкинса, вы просто нужно настроить сценарий инициализации автомасштабирования, чтобы запустить развертывание на любом выбранном вами провайдере.
  • у вас очень четкая граница между сборкой и развертыванием

надеюсь, это поможет!

Другие вопросы по теме