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

Материал из PODS Wiki
Перейти к: навигация, поиск
(Настройка выгрузки в панели управления PODS)
Строка 1: Строка 1:
== Прямая выгрузка из PrintOnDemandSolution AzureBlob ==
 
 
 
В рамках техпроцесса выгрузки готовых к печати заказов выполняются две группы операций -  
 
В рамках техпроцесса выгрузки готовых к печати заказов выполняются две группы операций -  
  
* №1 рендеринг проекта пользователя в печатный формат (PDF/JPEG/etc...)  
+
* №1 рендеринг проекта пользователя в печатный формат (PDF/JPEG/XML/etc...)  
 
* №2 выгрузка файлов для печати на сервер печатного дома.
 
* №2 выгрузка файлов для печати на сервер печатного дома.
  
 
Операция №2 - т.е. выгрузка файлов на сервер, в стандартном исполнении происходит с использованием FTP протокола. Это классический, надежный протокол, однако при выгрузке большого количества заказов/файлов, общая скорость выгрузки может быть недостаточно быстрой. Для крупных печатных домов, с большим количеством обрабатываемых заказов, предложено кросс-платформенное решение для прямой выгрузки файлов из облачного хранилища PrintOnDemandSolution AzureBlob.
 
Операция №2 - т.е. выгрузка файлов на сервер, в стандартном исполнении происходит с использованием FTP протокола. Это классический, надежный протокол, однако при выгрузке большого количества заказов/файлов, общая скорость выгрузки может быть недостаточно быстрой. Для крупных печатных домов, с большим количеством обрабатываемых заказов, предложено кросс-платформенное решение для прямой выгрузки файлов из облачного хранилища PrintOnDemandSolution AzureBlob.
  
== Установка и настройка ПО ==
+
Для настройки выгрузки из AzureBlob нужно выполнить следующие действия:
  
Для настройки выгрузки из AzureBlob на сервере печатного дома необходимо установить следующее программное обеспечение:
+
* На сервере печатного дома необходимо установить следующее программное обеспечение  
+
** .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.  
+
  
 
Порядок установки 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 PODS
+
** В разделе панели управления Настройки - Интеграция - в поле "Адрес API для уведомления об успешном рендеринге" прописать  
* В настройках продуктов/форматов книг указать созданный ранее AzureBlob сервер выгрузки.
+
** В настройках продуктов/форматов книг указать созданный ранее AzureBlob сервер выгрузки.

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

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

  • №1 рендеринг проекта пользователя в печатный формат (PDF/JPEG/XML/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

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

<?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);



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

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