В данной статье, мы рассмотрим вопрос установки и настройки 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
Качаем и устанавливаем 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
(в таком режиме, сервер работает только пока открыта консоль)
Чтобы запустить/остановить его в фоновом режиме, используйте команды:
./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/
Веб установлен и работает корректно :)
в) Пример установки модулей
Итак… самое интересное, деплой модулей. ServiceMix позволяет деплоить модули двух основных типов: .jar и .war
Wrap deployer предназначен для деплоя модулей типа .jar, он не требует установки и доступен по умолчанию. Проверить это можно следующей командой:
la|grep -i wrap
War deployer предназначен для деплоя модулей типа .war и его необходимо еще дополнительно установить. Сделаем это:
features:install -v war
В качестве установщика тут используется PAX-web deployer. Для установки. приложение должно содержать WEB-INF/web.xml
Проверим его работу:
la|grep -i war
Модули .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 из консоли 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
Чтобы инстанс 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! :)
Пожалуй, все. Удачи!