Кросс-платформенное решение для прямой выгрузки заказов из облачного хранилища S3 — различия между версиями

Материал из PODS Wiki
Перейти к: навигация, поиск
(Настройка выгрузки в панели управления PODS)
м (Wikiadmin переименовал страницу Кросс-платформенное решение для прямой выгрузки заказов из облачного хранилища Azure в [[Кросс-платформенное…)
 
(не показано 14 промежуточных версий этого же участника)
Строка 1: Строка 1:
== Прямая выгрузка из PrintOnDemandSolution AzureBlob ==
+
== Прямая выгрузка из PrintOnDemandSolution S3 ==
  
 
В рамках техпроцесса выгрузки готовых к печати заказов выполняются две группы операций -  
 
В рамках техпроцесса выгрузки готовых к печати заказов выполняются две группы операций -  
Строка 7: Строка 7:
  
 
Операция №2 - т.е. выгрузка файлов на сервер, в стандартном исполнении происходит с использованием FTP протокола. Это классический, надежный протокол, однако при выгрузке большого количества заказов/файлов, общая скорость выгрузки может быть недостаточно быстрой. Для крупных печатных домов, с большим количеством обрабатываемых заказов, предложено кросс-платформенное решение для прямой выгрузки файлов из облачного хранилища PrintOnDemandSolution AzureBlob.
 
Операция №2 - т.е. выгрузка файлов на сервер, в стандартном исполнении происходит с использованием FTP протокола. Это классический, надежный протокол, однако при выгрузке большого количества заказов/файлов, общая скорость выгрузки может быть недостаточно быстрой. Для крупных печатных домов, с большим количеством обрабатываемых заказов, предложено кросс-платформенное решение для прямой выгрузки файлов из облачного хранилища PrintOnDemandSolution AzureBlob.
 +
 +
== Требования к оборудованию ==
 +
 +
* Процессор                      1 ГГц
 +
* ОЗУ                            512 Мб
 +
* Дисковое пространство          минимум 4,5 ГБ
  
 
== Установка и настройка ПО ==
 
== Установка и настройка ПО ==
Строка 13: Строка 19:
 
   
 
   
 
* .NET Core Runtime. Инструкция по установке для разных ОС https://www.microsoft.com/net/download/core
 
* .NET Core Runtime. Инструкция по установке для разных ОС https://www.microsoft.com/net/download/core
* PrintOnDemandSolution AzureBlob Downloader [ссылка] для загрузки файлов из Azure.  
+
* PrintOnDemandSolution AzureBlob Downloader для загрузки файлов из Azure http://pods.printondemandsolution.ru/static/PODSDownloader.rar
  
Порядок установки PrintOnDemandSolution AzureBlob Downloader:
+
=== Установка PrintOnDemandSolution AzureBlob Downloader ===
  
* Распаковать архив в директорию на сервере печатного  
+
* Распаковать архив в директорию на сервере печатного дома
 
* В файле settings.json нужно прописать:
 
* В файле settings.json нужно прописать:
 
** DownloadPath - директория в которую будут загружаться скачанные файлы (должна быть доступна на запись пользователю от имени которого работает web-сервер)
 
** DownloadPath - директория в которую будут загружаться скачанные файлы (должна быть доступна на запись пользователю от имени которого работает web-сервер)
Строка 25: Строка 31:
 
** В файле NLog.config нужно прописать путь, куда будут сохранятся логи загрузчика. Level на этапе отладки лучше оставить на уровне Debug, потом можно будет поменять на Error.
 
** В файле NLog.config нужно прописать путь, куда будут сохранятся логи загрузчика. Level на этапе отладки лучше оставить на уровне Debug, потом можно будет поменять на Error.
  
== Скрипт для работы с API PODS ==
+
=== Запуск скрипта для работы с API PODS ===
  
 
* На веб-сервер печатного дома необходимо разместить скрипт, который будет обрабатывать уведомления платформы PODS о завершении рендеринга. [[API#Уведомление о завершении рендеринга проекта (для выгрузки из Blob Azure)]]  
 
* На веб-сервер печатного дома необходимо разместить скрипт, который будет обрабатывать уведомления платформы PODS о завершении рендеринга. [[API#Уведомление о завершении рендеринга проекта (для выгрузки из Blob Azure)]]  
 
* Для старта выгрузки, надо передавать приложению ID заказа в качестве параметра. Команда для запуска "dotnet PodsDownloader.dll {orderId}".
 
* Для старта выгрузки, надо передавать приложению ID заказа в качестве параметра. Команда для запуска "dotnet PodsDownloader.dll {orderId}".
  
Пример скрипта в приложении (pods.php)
 
  
== Настройка выгрузки в панели управления PODS ==
+
 
 +
Пример скрипта
 +
 
 +
<pre>
 +
<?php
 +
 
 +
error_reporting(0);
 +
 
 +
$orderId = $_POST['order_id'];
 +
$token = $_POST['token'];
 +
$sekret = 'aaaa';
 +
$downloaderPath = 'E:\\PodsDownloader';
 +
 
 +
// validate request
 +
if($token != md5($orderId.$sekret)) {
 +
echo "error";
 +
file_put_contents(dirname(__FILE__).'/pods.log', 'MD5 error');
 +
exit;
 +
}
 +
 
 +
chdir($downloaderPath);
 +
$pcs = popen(sprintf("dotnet PodsDownloader.dll %d", $orderId),"r");
 +
pclose($pcs);;
 +
</pre>
 +
 
 +
=== Настройка выгрузки в панели управления PODS ===
  
 
* В разделе панели управления Справочник FTP создать новую запись, выбрать тип выгрузке "AzureBlob", задать произвольное название для данного сервера выгрузки.
 
* В разделе панели управления Справочник FTP создать новую запись, выбрать тип выгрузке "AzureBlob", задать произвольное название для данного сервера выгрузки.
 
* В разделе панели управления Настройки - Интеграция - в поле "Адрес API для уведомления об успешном рендеринге" прописать ссылку для вызова скрипта для работы с API PODS
 
* В разделе панели управления Настройки - Интеграция - в поле "Адрес API для уведомления об успешном рендеринге" прописать ссылку для вызова скрипта для работы с API PODS
 
* В настройках продуктов/форматов книг указать созданный ранее AzureBlob сервер выгрузки.
 
* В настройках продуктов/форматов книг указать созданный ранее AzureBlob сервер выгрузки.
 +
 +
== Рекомендации по включению нового вида загрузки ==
 +
 +
* Для проверки работы новой схемы создайте отдельную запись в справочнике FTP.
 +
* Выберите сначала только 1-2 продукта для проверки выгрузки, например пару форматов фотокниг. В их настройках укажите новый целевой сервер, который вы создали в предыдущем пункте. В момент изменения типа выгрузки убедитесь, что в очереди нет выгружающихся заказов с указанными продуктами. Если смена вида выгрузки произойдет в момент работы старой выгрузки, то это не страшно - очередь PODS автоматически обработает ошибки выгрузки. Но для экономии времени, лучше действовать последовательно - старую выгрузку остановить, изменить тип выгрузки, запустить выгрузку заказов.
 +
* После проведения успешных проверок на выбранных продуктах можно изменить тип выгрузки для остальных продуктов, например изменив настройки на основном сервере в справочнике FTP.

Текущая версия на 11:46, 10 апреля 2024

Прямая выгрузка из PrintOnDemandSolution S3

В рамках техпроцесса выгрузки готовых к печати заказов выполняются две группы операций -

  • №1 рендеринг проекта пользователя в печатный формат (PDF/JPEG/etc...)
  • №2 выгрузка файлов для печати на сервер печатного дома.

Операция №2 - т.е. выгрузка файлов на сервер, в стандартном исполнении происходит с использованием FTP протокола. Это классический, надежный протокол, однако при выгрузке большого количества заказов/файлов, общая скорость выгрузки может быть недостаточно быстрой. Для крупных печатных домов, с большим количеством обрабатываемых заказов, предложено кросс-платформенное решение для прямой выгрузки файлов из облачного хранилища PrintOnDemandSolution AzureBlob.

Требования к оборудованию

  • Процессор 1 ГГц
  • ОЗУ 512 Мб
  • Дисковое пространство минимум 4,5 ГБ

Установка и настройка ПО

Для настройки выгрузки из AzureBlob на сервере печатного дома необходимо установить следующее программное обеспечение:

Установка PrintOnDemandSolution AzureBlob Downloader

  • Распаковать архив в директорию на сервере печатного дома
  • В файле settings.json нужно прописать:
    • DownloadPath - директория в которую будут загружаться скачанные файлы (должна быть доступна на запись пользователю от имени которого работает web-сервер)
    • DownloadLimit - максимальное количество потоков загрузки
    • PodsUrl - ссылка на титульную страницу PODS-сайта WL
    • SecretKey - секретный ключ для входящих запросов
    • В файле NLog.config нужно прописать путь, куда будут сохранятся логи загрузчика. Level на этапе отладки лучше оставить на уровне Debug, потом можно будет поменять на Error.

Запуск скрипта для работы с API PODS


Пример скрипта

<?php

error_reporting(0);

$orderId = $_POST['order_id'];
$token = $_POST['token'];
$sekret = 'aaaa';
$downloaderPath = 'E:\\PodsDownloader';

// validate request
if($token != md5($orderId.$sekret)) {
	echo "error";
	file_put_contents(dirname(__FILE__).'/pods.log', 'MD5 error');
	exit;	
}

chdir($downloaderPath);
$pcs = popen(sprintf("dotnet PodsDownloader.dll %d", $orderId),"r");
pclose($pcs);;

Настройка выгрузки в панели управления PODS

  • В разделе панели управления Справочник FTP создать новую запись, выбрать тип выгрузке "AzureBlob", задать произвольное название для данного сервера выгрузки.
  • В разделе панели управления Настройки - Интеграция - в поле "Адрес API для уведомления об успешном рендеринге" прописать ссылку для вызова скрипта для работы с API PODS
  • В настройках продуктов/форматов книг указать созданный ранее AzureBlob сервер выгрузки.

Рекомендации по включению нового вида загрузки

  • Для проверки работы новой схемы создайте отдельную запись в справочнике FTP.
  • Выберите сначала только 1-2 продукта для проверки выгрузки, например пару форматов фотокниг. В их настройках укажите новый целевой сервер, который вы создали в предыдущем пункте. В момент изменения типа выгрузки убедитесь, что в очереди нет выгружающихся заказов с указанными продуктами. Если смена вида выгрузки произойдет в момент работы старой выгрузки, то это не страшно - очередь PODS автоматически обработает ошибки выгрузки. Но для экономии времени, лучше действовать последовательно - старую выгрузку остановить, изменить тип выгрузки, запустить выгрузку заказов.
  • После проведения успешных проверок на выбранных продуктах можно изменить тип выгрузки для остальных продуктов, например изменив настройки на основном сервере в справочнике FTP.