Установка системы Flute — различия между версиями

Материал из Course Orchestra
Перейти к: навигация, поиск
 
Строка 1: Строка 1:
 
__FORCETOC__
 
__FORCETOC__
 
{{Flute}}
 
{{Flute}}
 +
 +
На текущий момент имеются два наиболее удобных и надёжных способа установки Flute:
 +
* Для Windows — с помощью инсталлятора,
 +
* Для Linux — с помощью Ansible-роли [https://galaxy.ansible.com/CourseOrchestra/flute/ CourseOrchestra.flute].
  
 
==Дистритутив==
 
==Дистритутив==
Строка 29: Строка 33:
 
Дальнейший процесс установки при помощи инсталлятора стандартен и не должен представлять трудностей.
 
Дальнейший процесс установки при помощи инсталлятора стандартен и не должен представлять трудностей.
  
== Запуск Flute в Docker-контейнере==
 
Наиболее удобным способом запуска системы Flute на ОС Linux является старт в Docker-контейнере
 
 
Для скачивания Flute необходимо использовать команду
 
 
<syntaxhighlight lang="bash">
 
docker pull curs/flute
 
</syntaxhighlight>
 
 
Для запуска Flute6 требуется настроечный файл flute.xml  и папка score, которые подключаются как volumes. Если этот файл и эта папка находятся в текущей директории, то запустить можно следующим образом:
 
  
<syntaxhighlight lang="bash">
 
docker run -d -v $(pwd)/flute.xml:/opt/flute/flute.xml -v $(pwd)/score:/var/opt/flute/score curs/flute
 
</syntaxhighlight>
 
  
При этом в файле flute.xml необходимо в параметрах указывать определённые пути, содержащиеся в контейнере. Шаблон файла flute.xml для Docker-образа:
+
== Установка Flute на Ubuntu Linux при помощи Ansible-роли ==
 
 
 
 
<syntaxhighlight lang="xml">
 
<?xml version="1.0" encoding="utf-8"?>
 
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
    xsi:noNamespaceSchemaLocation="http://corchestra.ru/schema/fluteconfig.xsd">
 
        <dbconnstring>your:db:here</dbconnstring>
 
        <dbuser>postgres</dbuser>
 
        <dbpassword>your:pwd:here</dbpassword>
 
        <neverstop>true</neverstop>
 
        <retrywait>50000</retrywait>
 
        <scorepath>/var/opt/flute/score</scorepath>
 
        <pylibpath>/opt/jython/Lib:/opt/jython/Lib/site-packages</pylibpath>
 
        <javalibpath>/opt/flute/lib</javalibpath>
 
        <skipdbupdate>true</skipdbupdate>
 
        <scheduledtask>
 
                <schedule>* * * * *</schedule>
 
                <script>parsem.hello.run</script>
 
                <params>DOCKER ROCKS!</params>
 
        </scheduledtask>
 
</config>
 
 
</syntaxhighlight>
 
  
 +
Это предпочитительный способ установки Flute. Следуйте инструкциям для стандартной роли [https://galaxy.ansible.com/CourseOrchestra/flute/ CourseOrchestra.flute].
  
 
== Установка Flute вручную на Ubuntu Linux ==
 
== Установка Flute вручную на Ubuntu Linux ==
  
Установить Flute можно как сервис, выполняющийся в [https://commons.apache.org/proper/commons-daemon/ Apache Commons Daemon (jsvc)], выполнив следующие шаги:
+
Если по какой-либо причиние воспользоваться Ansible не получается, установить Flute можно как сервис, выполняющийся в [https://commons.apache.org/proper/commons-daemon/ Apache Commons Daemon (jsvc)], выполнив следующие шаги:
  
 
1. Установите Oracle Java 8.
 
1. Установите Oracle Java 8.
Строка 199: Строка 168:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Установка Flute на Ubuntu Linux при помощи Ansible ==
 
  
Описанный в предыдущем разделе процесс автоматизируется при помощи [https://www.ansible.com/ Ansible] следующими шагами (предполагается, что в переменной flute_tarball_url задан архив, в котором находятся .jar-файлы Flute и сопутствующих библиотек, а в папке /files находится flute.xml и скрипт запуска сервиса из предыдущего раздела):
+
== Запуск Flute в Docker-контейнере==
 +
 
 +
Удобным способом запуска системы Flute на ОС Linux является старт в Docker-контейнере
 +
 
 +
Для скачивания Flute необходимо использовать команду
 +
 
 +
<syntaxhighlight lang="bash">
 +
docker pull curs/flute
 +
</syntaxhighlight>
 +
 
 +
Для запуска Flute6 требуется настроечный файл flute.xml  и папка score, которые подключаются как volumes. Если этот файл и эта папка находятся в текущей директории, то запустить можно следующим образом:
 +
 
 +
<syntaxhighlight lang="bash">
 +
docker run -d -v $(pwd)/flute.xml:/opt/flute/flute.xml -v $(pwd)/score:/var/opt/flute/score curs/flute
 +
</syntaxhighlight>
 +
 
 +
При этом в файле flute.xml необходимо в параметрах указывать определённые пути, содержащиеся в контейнере. Шаблон файла flute.xml для Docker-образа:
  
<syntaxhighlight lang="YAML">
 
  roles:
 
    - role: ansiblebit.oracle-java
 
      oracle_java_version: 8
 
      oracle_java_version_update: 131
 
  
  tasks:
+
<syntaxhighlight lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +
    xsi:noNamespaceSchemaLocation="http://corchestra.ru/schema/fluteconfig.xsd">
 +
        <dbconnstring>your:db:here</dbconnstring>
 +
        <dbuser>postgres</dbuser>
 +
        <dbpassword>your:pwd:here</dbpassword>
 +
        <neverstop>true</neverstop>
 +
        <retrywait>50000</retrywait>
 +
        <scorepath>/var/opt/flute/score</scorepath>
 +
        <pylibpath>/opt/jython/Lib:/opt/jython/Lib/site-packages</pylibpath>
 +
        <javalibpath>/opt/flute/lib</javalibpath>
 +
        <skipdbupdate>true</skipdbupdate>
 +
        <scheduledtask>
 +
                <schedule>* * * * *</schedule>
 +
                <script>parsem.hello.run</script>
 +
                <params>DOCKER ROCKS!</params>
 +
        </scheduledtask>
 +
</config>
 
   
 
   
    - name: install needed packages
 
      apt:
 
        update_cache: yes
 
        name: [jsvc, sysv-rc-conf]
 
   
 
    - name: install jython
 
      shell: >
 
        wget -O installer.jar http://search.maven.org/remotecontent?filepath=org/python/jython-installer/2.7.1b3/jython-installer-2.7.1b3.jar
 
        && java -jar installer.jar -s -d /opt/jython
 
        && rm installer.jar
 
 
    - name: flute3 group
 
      group:
 
        name: flute3
 
        state: present
 
       
 
    - name: flute3 user
 
      user:
 
        name: flute3
 
        group: flute3
 
       
 
    - name: mkdir for flute
 
      file:
 
        dest: "{{ item }}"
 
        state: directory
 
        mode: 0777
 
        owner: flute3
 
      with_items:
 
          - /var/opt/flute
 
          - /var/opt/flute/score
 
          - /var/log/flute
 
   
 
    - name: get and unarchive flute tarball
 
      unarchive:
 
        src: "{{ flute_tarball_url }}"
 
        dest: /opt
 
        remote_src: True
 
       
 
    - name: copy flute config files
 
      copy:
 
        src: "{{ item.src }}"
 
        dest: "{{ item.dst }}"
 
        mode: "{{ item.mode }}"
 
      with_items:
 
        - src: files/flute.xml
 
          dst: /opt/flute
 
          mode: "0655"
 
        - src: files/flute
 
          dst: /etc/init.d
 
          mode: "0755"
 
   
 
    - name: Register Flute service
 
      command: sysv-rc-conf flute on
 
     
 
    - name: Start flute service
 
      service:
 
        name: flute
 
        state: started
 
 
</syntaxhighlight>
 
</syntaxhighlight>

Текущая версия на 04:02, 20 апреля 2018

На текущий момент имеются два наиболее удобных и надёжных способа установки Flute:

  • Для Windows — с помощью инсталлятора,
  • Для Linux — с помощью Ansible-роли CourseOrchestra.flute.

Дистритутив

Скачивать актуальную версию дистрибутива Flute следует с сервера artifactory.corchestra.ru:

Загрузить дистрибутив платформы Course Orchestra
Download.png
Стабильные сборки

Дистрибутив содержит файлы:

  • flute-setup.exe — установщик сервиса Windows.
  • flute.jar — актуальную версию собственно Flute.

Установка Flute на Windows

Для функционирования системы Flute на машине должна быть установлена Java версии не ниже 1.8. Достаточно установки JRE Java SE (Standard Edition). Проверить версию Java можно, например, выполнив команду java -version из командной строки.

Установка производится автоматическим инсталлятором. Имя инсталлятора — flute-setup-[номер версии].exe, где [номер версии] — полный номер версии и сборки продукта Flute.

Flute3.png

На втором экране инсталлятора предлагается выбрать следующие параметры:

  • папку, в которую на машину установлена Java версии 8. Если нужная версия Java установлена, то по умолчанию нужная папка тут уже будет указана. Подставить сюда «неподходящую» папку инсталлятор не позволит.
  • папку Celesta Score Path, в которой будет размещена гранула flute. Если здесь указать не существующую папку, папка будет создана. Для данной папки не рекомендуется использовать поддиректорию Program Files, так как это повлечёт для вас трудности при редактировании текстовых скриптов в этой папке (будут постоянно требоваться права администратора)
  • имя Windows-сервиса, под которым будет работать система Flute. Если вы устанавливаете первую и, предположительно, единственную систему Flute на компьютер, то имеет смысл оставить значение по умолчанию (Flute2). Если вы планируете иметь несколько систем Flute на одной машине (не рекомендуется, лучше и удобнее использовать разные источники задач для одного сервиса Flute!) - необходимо выбрать уникальное имя сервиса для каждой установки.

Дальнейший процесс установки при помощи инсталлятора стандартен и не должен представлять трудностей.


Установка Flute на Ubuntu Linux при помощи Ansible-роли

Это предпочитительный способ установки Flute. Следуйте инструкциям для стандартной роли CourseOrchestra.flute.

Установка Flute вручную на Ubuntu Linux

Если по какой-либо причиние воспользоваться Ansible не получается, установить Flute можно как сервис, выполняющийся в Apache Commons Daemon (jsvc), выполнив следующие шаги:

1. Установите Oracle Java 8.

2. Установите jsvc через sudo apt-get install jsvc. jsvc используется для запуска java приложения в качестве демона. Демоны могут запускаться во время загрузки системы. Поэтому может потребоваться перезагрузить сервер после установки jsvc.

3. Установите jython командой

wget -O installer.jar http://search.maven.org/remotecontent?filepath=org/python/jython-installer/2.7.1b3/jython-installer-2.7.1b3.jar 
        && java -jar installer.jar -s -d /opt/jython 
        && rm installer.jar

4. Создайте пользователя flute3 и группу flute3, от имени которых будет работать сервис.

5. Создайте директории

  • /var/opt/flute/score — директория для размещения score
  • /var/log/flute — директория для размещения логов

и дайте необходимые права: как минимум, полный доступ для пользователя flute3.

5. Cкопируйте flute.jar и все сопутствующие библиотеки (папки lib и pyLib) на Linux машину в папку /opt/flute. Папка lib доступна для скачивания в виде zip архива на Artifactory.

6. Скопируйте или создайте настроечный файл flute.xml в той же папке /opt/flute, не забудьте про права для пользователя flute3.

7. Создайте файл flute в /etc/init.d. Будьте внимательны, если файл был отредактирован в ОС Windows. Необходимо удалить символы возврата каретки. Это можно сделать следующей командой (ниже пример самого файла).

sed -i -e 's/\r//g' /etc/init.d/flute
#!/bin/sh
# chkconfig: 2345 20 80
### BEGIN INIT INFO
# Provides:          flute3
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Short-Description: Starts the MyDaemon service
# Description:       This file is used to start the daemon
#                    and should be placed in /etc/init.d
### END INIT INFO

NAME="flute3"
DESC="Flute3 service"

# The path to Jsvc
EXEC="/usr/bin/jsvc"

# The path to the folder containing flute.jar
FILE_PATH="/opt/flute"

# The path to the folder containing the java runtime
JAVA_HOME="/usr/lib/jvm/java-8-oracle"

# Our classpath including our jar file
CLASS_PATH="/usr/share/java/commons-daemon-1.0.15.jar:$FILE_PATH/flute.jar"

# The fully qualified name of the class to execute
CLASS="ru.curs.flute.Main"

#The user to run the daemon as
USER="flute3"

# The file that will contain our process identification number (pid) for other scripts/programs that need to access it.
PID="/tmp/$NAME.pid"

# System.out writes to this file...
LOG_OUT="/var/log/flute/std.out"

# System.err writes to this file...
LOG_ERR="/var/log/flute/std.err"

JAVA_OPTS=""

jsvc_exec()
{
    cd $FILE_PATH
    $EXEC -home $JAVA_HOME -cp $CLASS_PATH -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $JAVA_OPTS $CLASS
}

case "$1" in
    start)
        echo "Starting the $DESC..."
        # Start the service
        jsvc_exec
	#if [ -f "$PID" ]; then
		echo "The $DESC has started."
	#fi
    ;;
    stop)
        echo "Stopping the $DESC..."
        # Stop the service
        jsvc_exec "-stop"
        echo "The $DESC has stopped."
    ;;
    restart)
        if [ -f "$PID" ]; then
            echo "Restarting the $DESC..."
            # Stop the service
            jsvc_exec "-stop"
            # Start the service
            jsvc_exec
            echo "The $DESC has restarted."
        else
            echo "Daemon not running, no action taken"
            exit 1
        fi
            ;;
    *)
    echo "Usage: /etc/init.d/$NAME {start|stop|restart}" >&2
    exit 3
    ;;
esac

8. Добавьте сервис в автозапуск командой

sysv-rc-conf flute on

(для этого может понадобиться установить пакет apt-get install sysv-rc-conf)

9. запустите службу

service flute start


Запуск Flute в Docker-контейнере

Удобным способом запуска системы Flute на ОС Linux является старт в Docker-контейнере

Для скачивания Flute необходимо использовать команду

docker pull curs/flute

Для запуска Flute6 требуется настроечный файл flute.xml и папка score, которые подключаются как volumes. Если этот файл и эта папка находятся в текущей директории, то запустить можно следующим образом:

docker run -d -v $(pwd)/flute.xml:/opt/flute/flute.xml -v $(pwd)/score:/var/opt/flute/score curs/flute

При этом в файле flute.xml необходимо в параметрах указывать определённые пути, содержащиеся в контейнере. Шаблон файла flute.xml для Docker-образа:


<?xml version="1.0" encoding="utf-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://corchestra.ru/schema/fluteconfig.xsd">
        <dbconnstring>your:db:here</dbconnstring>
        <dbuser>postgres</dbuser>
        <dbpassword>your:pwd:here</dbpassword>
        <neverstop>true</neverstop>
        <retrywait>50000</retrywait>
        <scorepath>/var/opt/flute/score</scorepath>
        <pylibpath>/opt/jython/Lib:/opt/jython/Lib/site-packages</pylibpath>
        <javalibpath>/opt/flute/lib</javalibpath>
        <skipdbupdate>true</skipdbupdate>
        <scheduledtask>
                <schedule>* * * * *</schedule>
                <script>parsem.hello.run</script>
                <params>DOCKER ROCKS!</params>
        </scheduledtask>
</config>