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

Материал из PODS Wiki
Перейти к: навигация, поиск
(Отмена правки 789, сделанной участником Wikiadmin (обс.))
Строка 1: Строка 1:
 +
== Прямая выгрузка из PrintOnDemandSolution AzureBlob ==
 +
 
В рамках техпроцесса выгрузки готовых к печати заказов выполняются две группы операций -  
 
В рамках техпроцесса выгрузки готовых к печати заказов выполняются две группы операций -  
  
* №1 рендеринг проекта пользователя в печатный формат (PDF/JPEG/XML/etc...)  
+
* №1 рендеринг проекта пользователя в печатный формат (PDF/JPEG/etc...)  
 
* №2 выгрузка файлов для печати на сервер печатного дома.
 
* №2 выгрузка файлов для печати на сервер печатного дома.
  
 
Операция №2 - т.е. выгрузка файлов на сервер, в стандартном исполнении происходит с использованием FTP протокола. Это классический, надежный протокол, однако при выгрузке большого количества заказов/файлов, общая скорость выгрузки может быть недостаточно быстрой. Для крупных печатных домов, с большим количеством обрабатываемых заказов, предложено кросс-платформенное решение для прямой выгрузки файлов из облачного хранилища PrintOnDemandSolution AzureBlob.
 
Операция №2 - т.е. выгрузка файлов на сервер, в стандартном исполнении происходит с использованием FTP протокола. Это классический, надежный протокол, однако при выгрузке большого количества заказов/файлов, общая скорость выгрузки может быть недостаточно быстрой. Для крупных печатных домов, с большим количеством обрабатываемых заказов, предложено кросс-платформенное решение для прямой выгрузки файлов из облачного хранилища PrintOnDemandSolution AzureBlob.
  
Для настройки выгрузки из AzureBlob нужно выполнить следующие действия:
+
== Установка и настройка ПО ==
  
* На сервере печатного дома необходимо установить следующее программное обеспечение  
+
Для настройки выгрузки из AzureBlob на сервере печатного дома необходимо установить следующее программное обеспечение:
** .NET Core Runtime. Инструкция по установке для разных ОС https://www.microsoft.com/net/download/core
+
** PrintOnDemandSolution AzureBlob Downloader [ссылка] для загрузки файлов из Azure.  
+
* .NET Core Runtime. Инструкция по установке для разных ОС https://www.microsoft.com/net/download/core
 +
* PrintOnDemandSolution AzureBlob Downloader [ссылка] для загрузки файлов из Azure.  
  
 
Порядок установки PrintOnDemandSolution AzureBlob Downloader:
 
Порядок установки PrintOnDemandSolution AzureBlob Downloader:
  
*** Распаковать архив в директорию на сервере печатного  
+
* Распаковать архив в директорию на сервере печатного  
*** В файле settings.json нужно прописать:
+
* В файле settings.json нужно прописать:
**** DownloadPath - директория в которую будут загружаться скачанные файлы (должна быть доступна на запись пользователю от имени которого работает web-сервер)
+
** DownloadPath - директория в которую будут загружаться скачанные файлы (должна быть доступна на запись пользователю от имени которого работает web-сервер)
**** DownloadLimit - максимальное количество потоков загрузки  
+
** DownloadLimit - максимальное количество потоков загрузки  
**** PodsUrl - ссылка на титульную страницу PODS-сайта WL  
+
** PodsUrl - ссылка на титульную страницу PODS-сайта WL  
**** SecretKey - секретный ключ для входящих запросов
+
** SecretKey - секретный ключ для входящих запросов
**** В файле NLog.config нужно прописать путь, куда будут сохранятся логи загрузчика. Level на этапе отладки лучше оставить на уровне Debug, потом можно будет поменять на Error, чтобы не засорять сильно сервер.  
+
** В файле NLog.config нужно прописать путь, куда будут сохранятся логи загрузчика. Level на этапе отладки лучше оставить на уровне Debug, потом можно будет поменять на Error.
 
+
Скрипт для работы с API PODS
+
 
+
** На веб-сервер печатного дома необходимо разместить скрипт, который будет обрабатывать уведомления платформы PODS о завершении рендеринга. [[API#Уведомление о завершении рендеринга проекта (для выгрузки из Blob Azure)]]
+
** Для старта выгрузки, надо передавать приложению ID заказа в качестве параметра. Команда для запуска "dotnet PodsDownloader.dll {orderId}".
+
 
+
Пример скрипта
+
 
+
<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");
+
proc_close($pcs);
+
</pre>
+
  
 +
== Скрипт для работы с API PODS ==
  
 +
* На веб-сервер печатного дома необходимо разместить скрипт, который будет обрабатывать уведомления платформы PODS о завершении рендеринга. [[API#Уведомление о завершении рендеринга проекта (для выгрузки из Blob Azure)]]
 +
* Для старта выгрузки, надо передавать приложению ID заказа в качестве параметра. Команда для запуска "dotnet PodsDownloader.dll {orderId}".
  
 +
Пример скрипта в приложении (pods.php)
  
Настройка выгрузки в панели управления PODS
+
== Настройка выгрузки в панели управления PODS ==
  
** В разделе панели управления Справочник FTP создать новую запись, выбрать тип выгрузке "AzureBlob", задать произвольное название для данного сервера выгрузки.
+
* В разделе панели управления Справочник FTP создать новую запись, выбрать тип выгрузке "AzureBlob", задать произвольное название для данного сервера выгрузки.
** В разделе панели управления Настройки - Интеграция - в поле "Адрес API для уведомления об успешном рендеринге" прописать  
+
* В разделе панели управления Настройки - Интеграция - в поле "Адрес API для уведомления об успешном рендеринге" прописать ссылку для вызова скрипта для работы с API PODS
** В настройках продуктов/форматов книг указать созданный ранее AzureBlob сервер выгрузки.
+
* В настройках продуктов/форматов книг указать созданный ранее AzureBlob сервер выгрузки.

Версия 15:13, 23 августа 2017

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

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

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

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

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

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

  • .NET Core Runtime. Инструкция по установке для разных ОС https://www.microsoft.com/net/download/core
  • PrintOnDemandSolution AzureBlob Downloader [ссылка] для загрузки файлов из Azure.

Порядок установки PrintOnDemandSolution AzureBlob Downloader:

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

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

Пример скрипта в приложении (pods.php)

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

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