Вследствие того, что разработчики чаще всего используют готовые бандлы Liferay на базе различных серверов приложений, установка и запуск которых достаточно тривиальны, при развёртывнии портала в продакшн-окружение на существующий домен сервера приложений у них могут возникнуть определённые трудности. В этой заметке я решил привести пошаговую инстукцию (с картинками), как развернуть последнюю на данный момент версию Liferay (6.1.1) в домене на базе сервера приложений GlassFish (версии 3.1.2.2). Почти 3 года назад я уже написал заметку на похожую тему, но там акцент был сделан на сборке портала из исходников, а не на развёртывании его на сервере приложений, да и разработчики Liferay и GlassFish с тех пор успели неоднократно выпустить новые версии своих продуктов, так что пришло время написать новый howto.
Предусловия
Итак, начальные условия - у нас есть свежесозданный домен на GlassFish 3.1.2.2 с дефолтными параметрами и созданная в какой-нибудь СУБД база данных (в моём примере будет использоваться PostgreSQL). Для того, чтобы начать установку, нам понадобится скачать следующие файлы:
После загрузки файлов можно начинать процесс установки и конфигурации портала.
Конфигурация домена
Начнём с конфигурации домена GlassFish. Для того, чтобы портал мог успешно работать, виртуальной машине должен быть выделен достаточный для работы портала объём памяти (не менее 768 МБ, рекомендуется 1 ГБ и больше). Делается это следующим образом:
-
Если домен не был запущен, запускаем его. Открываем консоль администратора, выбираем пункт меню "Configurations" -> "server-config" и кликаем по пункту "JVM Settings":
-
На появившейся панели выбираем вкладку "JVM Options", изменяем значение опции "-Xmx512m" на "-Xmx1024m" и кликаем "Save":
Если планируется много и / или часто развёртывать на портале дополнительные портлеты и другие плагины, то рекомендуется увеличить объём памяти, выделяемой под PermGen - к примеру, до 384 МБ вместо стандартных 192. В этом случае заменяем ещё одну опцию - со значения "-XX:MaxPermSize=192m" на "-XX:MaxPermSize=384m".
После задания новых параметров JVM останавливаем домен.
Установка библиотек и конфигурационных файлов портала
Теперь нам надо установить библиотеки и конфигурационные файлы, необходимые для работы портала. Делается это так:
-
Распаковываем архив с библиотеками портала (файл liferay-portal-dependencies.zip) и копируем извлечённые из него jar-файлы в каталог с библиотеками домена (по умолчанию это $GLASSFISH_HOME/glassfish/domains/$DOMAIN_NAME/lib, где $GLASSFISH_HOME - это каталог, в который установлен сервер приложений, а $DOMAIN_NAME - имя нашего домена).
-
В тот же каталог копируем JDBC-драйвер используемой СУБД.
-
В каталоге $DOMAIN_NAME/config создаём текстовый файл portal-ext.properties, в который добавляем следующую строчку:
jdbc.default.jndi.name=jdbc/LiferayPool
После того, как все библиотеки скопированы и конфигурационный файл создан, можно снова запустить домен.
Создание пула соединений с БД
На предыдущем шаге мы указали порталу, что для доступа к базе данных он должен использовать пул соединений, созданный на сервере приложений. Теперь нам нужно создать этот пул:
-
После того, как домен успешно запустится, снова открываем консоль администатора. Выбираем пункт меню "Resources" -> "JDBC" -> "JDBC Connection Pools":
-
Кликаем кнопку "New", вводим имя создаваемого пула - LiferayPool, выбираем тип ресурса (javax.sql.ConnectionPoolDatasource) и используемую СУБД (в нашем случае PostgreSQL):
-
Кликаем "Next", в появившейся форме вводим параметры соединения с нашей БД, кликаем "Finish":
-
[Опционально] проверяем, правильно ли мы задали настройки соединения с БД. Для этого снова открываем созданный на предыдущем шаге пул соединений и кликаем кнопку "ping". Если выводится сообщение "Ping Succeeded", то настройки соединения верные - серверу приложений удалось подключиться к нашей базе:
-
Открываем пункт меню "Resources" -> "JDBC" -> "JDBC Resources", кликаем "New":
-
Задаём параметры ресурса - JNDI Name - "jdbc/LiferayPool" (оно обязательно должно совпадать с именем, которое мы задали в portal-ext.properties), из списка пулов выбираем наш LiferayPool. Кликаем "OK":
Установка Liferay
Собственно, с конфигурацией всё! Теперь осталось только развернуть сам портал. Для этого копируем war-файл портала в каталог $DOMAIN_NAME/autodeploy и ждём несколько минут, пока приложение развернётся. Проверяем, всё ли хорошо:
Ура! Всё работает: