Конструктор приложений
========================================================================


Введение
--------------------------

Конструктор приложений ARTA SYNERGY - отдельный модуль платформы, позволяющий разработчику SYNERGY создавать и настраивать 
произвольные приложения на основе компонентов платформы.
Использование основных возможностей Конструктора не требует от разработчика SYNERGY навыков написания кода на JavaScript, Java и других языках программирования. 
При этом, в случае необходимости кастомизации приложений (использования дополнительного скриптинга или настройки стилей), 
такая возможность представлена и не потребует больших усилий разработчика. 

Установка пакета
--------------------------

Пакет Конструктора ``arta-synergy-apps-constructor`` устанавливается из репозитория 

``deb http://deb.arta.kz/tengri constructor-2.2 main contrib non-free``. 

При этом необходимо, чтобы на сервере уже был установлен пакет ``arta-synergy-synergy`` из репозитория ``minsky``. 


Процедура установки
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Для установки пакета необходимо выполнить команды (в консоли сервера): 

*   установить или обновить пакет ``arta-synergy-synergy``;
*   открыть список репозиториев:

    .. code-block:: html 

	# nano /etc/apt/sources.list

    
*   добавить в список строку 

    .. code-block:: html 

	deb http://deb.arta.kz/tengri constructor-2.2 main contrib non-free
    

   .. figure:: resources/img/constructor_img2.png
   
*   обновить репозитории:

    .. code-block:: html 

	# aptitude update

    
*   установить пакет ``arta-synergy-apps-constructor``: 


    .. code-block:: html 

	# aptitude install arta-synergy-apps-constructor
	
	

После установки
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

После установки необходимо в Административном приложении ``/SynergyAdmin`` выполнить: 

*   Обновление БД
*   Добавить пользователю, который будет использовать Конструктор, роль “Конструктор web-клиента”: 

   .. figure:: resources/img/constructor_img1.png
   
Приложение Конструктора доступно по адресу: ``http[s]://<host>:<port>/constructor``. 
Это приложение требует авторизации от имени пользователя с ролью “Конструктор web-клиента”. 

Обновление пакета
--------------------------


Для обновления уже установленного Конструктора приложений до актуальной версии необходимо: 

*  убедиться, что нужная ветка указана в ``sources.list``
*  обновить репозитории: 

    .. code-block:: html 

	# aptitude update

*   установить пакет ``arta-synergy-apps-constructor``: 

    .. code-block:: html 

	# aptitude install arta-synergy-apps-constructor
    
*   в Административном приложении ``/SynergyAdmin`` выполнить обновление БД. 

Настройка nginx при использовании DNS-имени на стенде
------------------------------------------------------------------------------

Конструктор приложений версии 2.2 работает с web-сокетами. Если к стенду с Конструктором обращаться по IP, то, как правило, проблем при работе с приложениями не возникает. Однако если дать стенду DNS-имя (например, ``demostand.arta.pro``), то страницы приложения могут не открываться. 
Для исправления этой проблемы необходимо на стенде, где настроено DNS-имя для стенда (как правило, это ``192.168.1.1``), прописать в конфигурационные файлы настройки для работы сокетов. 

В ``nginx.conf`` в ``http`` прописать: 

    .. code-block:: html 

	map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;} 
        upstream websocket {
        server 127.0.0.1:8080;
        }




В ``synergy.base``: 

    .. code-block:: html 

	location /constructor/websocket {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        } 
        


В случае добавления ``ws`` для нескольких серверов на ``DNS``-сервере запись ``upstream`` в ``nginx.conf`` может выглядеть так:

    .. code-block:: html 

	upstream websocket {
     server 192.168.3.1:8080;
     server 192.168.3.2:8080;
     }


