Установка, настройка и запуск Apache ServiceMix 4.5.3 на CentOS 7

CentOS_Servicemix

В данной статье, мы рассмотрим вопрос установки и настройки Apache ServiceMix 4.5.3 на CentOS 7. Установка других версий, в общем то, ничем не отличается от текущего мануала. Достаточно только изменить номер версии.

Итак, поехали!

 

1) Подготовка и настройка ОС

В нашей работе мы будем использовать новую CentOS 7. На удивление, но «из коробки» ее нужно нехило так допилить до рабочего состояния, так что будьте к этому готовы. Итак, устанавливаем минимальную версию без графики и поехали. Через интерфейс — настройте сразу сеть, чтобы был интернет… это значительно облегчит вашу участь :)

 

Установим базовое ПО… которого почему-то нет в поставке:

yum install net-tools nano wget

 

Теперь проверим наш hostname и поправим hosts (поправьте как вам нравится):

nano /etc/hostname
nano /etc/hosts

 

Далее, проверяем название нашего сетевого интерфейса (обычно будет что-то вроде ens32):

ifconfig -a

 

Чтобы это исправить, надо сначала поправить немного grub:

nano /etc/default/grub

 

В конце строки «GRUB_CMDLINE_LINUX» нужно добавить «net.ifnames=0 biosdevname=0«. Получится что-то типа такого (не обязательно 1 в 1):

GRUB_CMDLINE_LINUX="rd.lvm.lv=rootvg/usrlv rd.lvm.lv=rootvg/swaplv crashkernel=auto vconsole.keymap=usrd.lvm.lv=rootvg/rootlv vconsole.font=latarcyrheb-sun16 rhgb quiet net.ifnames=0 biosdevname=0"

 

Создаем новый конфиг и сохраняем результат:

grub2-mkconfig -o /boot/grub2/grub.cfg

 

Переименовываем наш сетевой интерфейс на нормальный, классический «eth0» и ребутимся:

mv /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-eth0
reboot

 

Настраиваем сеть:

nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO=static
IPADDR=1.1.4.185
NETMASK=255.255.248.0
GATEWAY=1.1.1.9
DNS1=1.1.1.10
DNS2=1.1.1.90

 

Отключаем лишний Network manager и ребутимся:

systemctl stop NetworkManager
systemctl disable NetworkManager
reboot

 

Проверяем, обозначен ли в системе как-нить IPv6:

lsmod | grep -i ipv6

 

Если сообщения будет иметь упоминания об IPv6, а оно будет, то переходим к его отключению:

nano /etc/default/grub

 

В начале строки «GRUB_CMDLINE_LINUX» нужно добавить «ipv6.disable=1«. Получится что-то типа такого:

GRUB_CMDLINE_LINUX="ipv6.disable=1 rd.lvm.lv=rootvg/usrlv...

 

Создаем новый конфиг и сохраняем результат:

grub2-mkconfig -o /boot/grub2/grub.cfg

 

Перезагружаемся:

reboot

 

Проверяем еще раз и убеждаемся, что все красиво:

lsmod | grep -i ipv6

 

Добавляем в систему EPEL (всякие «отягощенные» лицензиями пакеты) репозиторий для CentOS 7:

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
rpm -ivh epel-release-7-2.noarch.rpm
yum repolist

 

Новая ОС использует «главного» демона, управляющего другими демонами. Это systemd, который ввели вместо устаревших скриптов инициализации init.d. Также используется новый фаервол, firewalld вместо iptables. Проверим его работу и откроем нужные нам порты (9080 и 9443):

systemctl status firewalld
firewall-cmd --permanent --zone=public --add-port=9080/tcp
firewall-cmd --permanent --zone=public --add-port=9443/tcp
systemctl restart firewalld

 

Собственно говоря, на этом настройка ОС заканчивается и мы переходим непосредственно к установке Apache ServiceMix 4.5.3

 

2) Установка ServiceMix

Тут мы рассмотрим непосредственную установку ServiceMix, который будет работать на Java OpenSDK. Согласно официальным докам, для корректной работы с osgi нам необходимо будет также дополнительно установить Maven и настроить его. Поехали…

 

Установка Java OpenJDK:

yum -y install java-1.7.0-openjdk-devel

 

Установка Maven:

wget http://apache-mirror.rbc.ru/pub/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
tar xvf apache-maven-3.2.3-bin.tar.gz
mv apache-maven-3.2.3 /usr/local/apache-maven

 

Задаем переменные:

nano .bashrc
export JAVA_HOME=/usr/lib/jvm/java/
export JRE_HOME=/usr/lib/jvm/java/jre/
export M2_HOME=/usr/local/apache-maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

 

Ребут:

reboot

 

Проверяем, корректно ли установлен Maven:

mvn -version

maven

 

Качаем и устанавливаем ServiceMix 4.5.3:

wget http://archive.apache.org/dist/servicemix/servicemix-4/4.5.3/apache-servicemix-4.5.3.tar.gz
tar xvf apache-servicemix-4.5.3.tar.gz
mkdir /usr/local/apache-servicemix
mv apache-servicemix-4.5.3 /usr/local/apache-servicemix

 

Сделаем их исполняемыми:

chmod 755 -R /usr/local/apache-servicemix/apache-servicemix-4.5.3

 

3) Настройка ServiceMix

Здесь мы рассмотрим настройку этого сервера приложений. Запуск, отладка, основные команды…

 

а) Запуск ServiceMix

cd /usr/local/apache-servicemix/apache-servicemix-4.5.3/bin
./servicemix

smx_launch(в таком режиме, сервер работает только пока открыта консоль)

Чтобы запустить/остановить его в фоновом режиме, используйте команды:

./start
./stop

 

Для подключения по SSH (пароль smx):

ssh -p 8101 smx@localhost

 

б) Полезные команды ServiceMix

Далее пойдет перечисление ряда полезных команд… итак:
Вывести список всех установленных модулей:

osgi:list

 

Найти и определить, запущен ли некий определенный модуль (к примеру, camel):

osgi:list | grep camel

 

Демонстрация установленных и не установленных дополнений:

features:list

 

Для примера, установим дополнение «веб-интерфейс» для упрощения процесса администрирования;

features:install webconsole

 

Проверяем, что он запустился (порт для него мы уже открыли ранее — 8181):

features:list | grep webconsole

 

Заходим в веб-интерфейс (smx/smx), который находится по адресу:

http://1.1.4.192:8181/system/console/

karaf Веб установлен и работает корректно :)

 

в) Пример установки модулей

Итак… самое интересное, деплой модулей. ServiceMix позволяет деплоить модули двух основных типов: .jar и .war
Wrap deployer предназначен для деплоя модулей типа .jar, он не требует установки и доступен по умолчанию. Проверить это можно следующей командой:

la|grep -i wrap

wrap

 

War deployer предназначен для деплоя модулей типа .war и его необходимо еще дополнительно установить. Сделаем это:

features:install -v war

warВ качестве установщика тут используется PAX-web deployer. Для установки. приложение должно содержать WEB-INF/web.xml

Проверим его работу:

la|grep -i war

war_ch

 

Модули .jar

Чтобы установить модуль в режиме «hot» ^_^ достаточно его закинуть в папку deploy, т.е. сюда: /usr/local/apache-servicemix/apache-servicemix-4.5.3/deploy

Для примера, закинем туда модуль moduleX.jar  Проверим, видит ли его ServiceMix (как это продемонстрировано выше):

la|grep -i moduleX
osgi:headers его номер

Все! Модуль установлен.

 

Модули .war

А вот с ними повеселее. Чтобы установить модуль в режиме «hot» :) его тоже достаточно его закинуть в папку deploy, т.е. сюда: /usr/local/apache-servicemix/apache-servicemix-4.5.3/deploy

Для примера, закинем туда модуль moduleX.war  Проверим, видит ли его ServiceMix:

la|grep -i moduleX
osgi:headers его номер

Усе :)

 

4) Инстанцирование

ServiceMix позволяет создавать свои внутренние, изолированные друг от друга контейнеры (инстансы) — для одновременной работы множества серверов приложений.

 

Создадим инстанс C1 (он будет создан тут: /usr/local/apache-servicemix/apache-servicemix-4.5.3/instances/C1):

admin:create C1

 

Просмотрим список работающих инстансов:

admin:list

C1

Запуск, остановка и подключение к инстансу C1 из консоли ServiceMix:

admin:start C1
admin:stop C1
admin:connect C1

 

Чтобы подключится к инстансу С1 по SSH (пароль karaf):

ssh -p 8102 karaf@localhost

 

Установка и проверка веб-интерфейса на инстансе C1:

features:install webconsole
features:list | grep webconsole

C2

Чтобы инстанс C1 работал на своем порту, этот порт необходимо указать. Создаем файл org.ops4j.pax.web.cfg и добавляем в него строку с портом:

nano /usr/local/apache-servicemix/apache-servicemix-4.5.3/instances/C1/etc/org.ops4j.pax.web.cfg

 

Вставить в него:

org.osgi.service.http.port=8182

 

Объясняем фаерволлу, что это свои:

firewall-cmd --permanent --zone=public --add-port=8182/tcp
systemctl restart firewalld

 

Перезапускаем инстанс на всякий:

admin:stop C1
admin:start C1
admin:connect C1

Вуаля! Тут будет доступен веб-интерфейс инстанса C1 (karaf/karaf): http://1.1.4.192:8182/system/console/
А тут папка, для закидывания модулей: /usr/local/apache-servicemix/apache-servicemix-4.5.3/instances/C1/deploy

 

Закидываем туда наш модуль moduleX.war  Проверяем:

la|grep -i moduleX
osgi:headers его номер

Тестовый модуль запущен на инстансе C1! :)

Пожалуй, все. Удачи!

Добавить комментарий