Liferay
Прочел о subj
Решил поставить Community Edition на FreeBSD в Jail на FreeNAS.
Скачал для Tomcat. http://www.liferay.com/downloads/liferay-portal/available-releases
Инструкция по установке нашлась здесь: http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Quick%20Installation%20Instructions
Для убунты предлагает ставить sun-java6-jdk, но в описании говорится, что под виндой пойдет на ура, т.к. там уже есть Java6 JRE
В портах нашел java/openjdk6-jre. Оно притащило зависимость в виде CUPS, ZIP и UNZIP. Хрен с нем. Согласен.
Куча байды в виде libX11 и его депенденсов типа xtrans, kbproto, inputproto, xf86bigfontproto, libXau, xproto,
libXdmcp, libxcb, libcheck, xcb-proto, python2-2_3, libpthread-stubs, libxslt, libgcrypt, libgpg-error,
libXext, libXi, libXfixes, fixesproto, libXt, libSM, libICE, libXtst, recordproto, libXpm,
freetype2, open-motif, autoconf, m4, help2man, gmake-lite, automake, libtool, libXaw, printproto,
libXmu, libXp, xbitmaps, libXft, libXrender, renderproto, fontconfig, png, cmake, py27-sphinx, py27-Jinja2,
py27-setuptools27, py27-MarkupSafe, py27-Babel, py27-docutils, py27-pygments, libarchive, lzo2, cmake-modules,
jpeg, javavmwrapper, dejavu, mkfontdir, mkfontscale, libfontenc
Разобрался: лучше ставить OpenJDK8-jre. Ее аппетиты по памяти урезонить несложно, но глючит много меньше.
Тестовая установка
Prerequisites
Во FreeBSD при установке sun-java6-jdk, оно сообщает, что для нормального запуска Java нужно будет подключить procfs и fdescfs
Во FreeNAS 9.1 и выше procfs и fdescfs подключены и работают “из коробки”
По инструкции для чайников
Создал каталог /usr/local/liferay/
Туда разархивировал liferay-portal-6.2-ce-ga3
Запустил, как сказано в инструкции:
mkdir /usr/local/liferay
cd /usr/local/liferay
unzip /media/liferay-portal-tomcat-6.2-ce-ga3-20150103155803016.zip
cd liferay-portal-6.2-ce-ga3/tomcat-7.0.42/bin/
./startup.sh
Оно завелось. Зашел браузером на порт 8080, прописал 5 слов для Basic Config, оно сообщило, что настройки будут лежать по адресу
/usr/local/liferay/liferay-portal-6.2-ce-ga3/portal-setup-wizard.properties
И перешел в портал:
http://192.168.5.29:8080
После того, как я согласился с Terms of Use, оно предложило мне создать новый пароль. Создал.
Выстраданные шаги
Настроек очень дофига.
Чтобы оно работало как сайт для групповой работы (персональные расшариваемые календари, приватные сообщения, задачи, почта),
надо настраивать в следующем порядке:
Создать пользователей (Admin → Control Panel → Users and Organizations):
После ввода экранного имени, емейла и имени, появляется возможность сохранить
Пароль ставим элементарный; юзеру все равно прийдется его изменить
Сохраняем юзера
Повторяем процедуру для всех известных нам юзеров.
Можно предоставить возможность юзерам регистрироваться самостоятельно (на этом этапе мы пока еще не запрещали самостоятельную регистрацию), но потом придется добавлять юзеров в социальный офис по мере их появления, а это нудно.
Установить модули (Admin → Control Panel → Apps → Store):
Social Office CE
Mail CE
Перейти в раздел Control Panel → Apps → Purchased и нажать кнопку Install у этих модулей
Перейти в раздел Control Panel → Configuration → Social Office Configurations;
Поставить галки юзерам, чтобы они могли использовать Social Office;
Сохранить
У юзеров, которым позволено “Социальничать” на предыдущем этапе, появилась сверху чОрная строка с шариками слева ;)
Чтобы добавить почту одному юзеру, надо выполнять не совсем явный порядок действий:
Тыркаем в “шарики” на чОрной строке вверху;
В верхней части окна под чОрной строкой появилась шестерня. Тыркаем в нее;
Слева вверху вылезут Плюсик, Экран, Редактор и жОлтая фигня “Эдит Контролс”; жмем Плюс
Слева открылась панель добавления “Add”; выбираем Page, называем ее “Почта”, ниже выбираем, чтобы оно было в одну колонку. Жмем “Add Page”
Маленьким крестиком сверху справа панели добавления закрываем ее
Тыркаем мышью на слово “Почта” - оно откроет страничку, на которой почты пока нет;
Тыркаем в шестерню сверху справа;
Жмем Плюс сверху слева, там выбираем “Applications” и в нем находим раздел Collaboration, после раскрытия которого мы можем кликнуть на Add, который появляется при наведении курсора на строку “Mail”; жмем Add
Маленьким крестиком сверху справа панели добавления закрываем ее
Тыркаем в шестерню сверху справа и закрываем Плюс, Экран и т.д.
Теперь мы можем настраивать аккаунт почты, персональный для юзера.
Аналогичным образом добавляем Календарь
Однако, можно вносить изменения в темплейт Социал Офиса, и измененные страницы стразу станут доступными для юзеров, которым дозволено социальничать. Например, можно всем сразу добавить Почту (настраивать аккаунт будут сами); там же можно русифицировать и спрятать любые части меню. Я спрятал Welcome и Dashboard и добавил Wiki.
Это делается в Admin → Control Panel → Sites → Site Templates → Social Office User Home. Добавляем странички “Почта” и “Календарь”. Сохраняем.
О пять идем Admin → Control Panel → Sites → Site Templates; только теперь в строке Social Office User Home выбираем Actions → View Pages. Оно откроет в новом окне шаблон “Social Office User Home”
Там описанным ранее способом (п.п. 6.VII - 6.X) изменяем страничку “Почта”, добавляя туда программу “Mail” и страничку Календарь, добавив туда календарь.
Теперь у юзеров, для которых страницы “почта” и “календарь” отсутствовали, таковые появятся. Будут появляться и у новых юзеров.
В продакшн
Худо-бедно оно запустилось. Однако, установленная по дефолту база Гиперсоник годится только для тестов. Даже вики с ней тупит.
Так что надо ускорять: давать Джаве память и ставить MySQL базу данных.
Чтиво:
Автостарт
Поскольку автостарт сделан полностью “по понятиям”, оно требует свою строку в /etc/rc.conf
Дадим ее:
sysrc liferay_enable="YES"
Далее, по понятиям, в /usr/local/etc/rc.d/liferay записан скрипт для запуска. Вот он:
- liferay
#!/bin/sh
# PROVIDE: liferay
# KEYWORD: shutdown
#
# Add the following to /etc/rc.conf[.local] to enable this service
#
# liferay_enable="YES"
. /etc/rc.subr
: ${liferay_enable="NO"}
name=liferay
rcvar="liferay_enable"
pidfile="/var/run/${name}.pid"
command=/usr/local/liferay/liferay-portal/tomcat-7.0.42/bin/startup.sh
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
start_cmd="liferay_start"
stop_cmd=liferay_stop
liferay_start()
{
if ! checkyesno liferay_enable ; then
return 0
fi
echo "Starting ${name}..."
/bin/sh /usr/local/liferay/liferay-portal/tomcat-7.0.42/bin/startup.sh
sleep 4
echo `ps aux | grep 'jav[a]' | awk '{print $2}'` > ${pidfile}
}
liferay_stop()
{
if ! checkyesno liferay_enable; then
return;
fi
if [ ! -e "$pidfile" ] ; then
echo "No $pidfile, is $name running?"
return;
fi
echo "Stopping ${name}..."
/bin/sh /usr/local/liferay/liferay-portal/tomcat-7.0.42/bin/shutdown.sh
rm "${pidfile}"
}
load_rc_config ${name}
run_rc_command "$1"
Чуток оптимизируем Java
Чтобы оно работало чуток побыстрее, надо увеличить доступную для Джавы память.
Для этого в файл
/usr/local/liferay/liferay-portal/tomcat-7.0.42/bin/setenv.sh
вместо
-Duser.timezone=GMT -Xms1024m -XX:MaxPermSize=256m
вписывается
-Duser.timezone=GMT+3 -Xms3072m -Xmx3072m -XX:MaxPermSize=1024m -XX:ParallelGCThreads=8
Как вариант, в файле, упомянутом выше, вымарывается
-Xms1024m -XX:MaxPermSize=256m, а в файл
/usr/local/liferay/liferay-portal/tomcat-7.0.42/bin/catalina.sh
ставится
JAVA_OPTS="$JAVA_OPTS -XX:NewSize=700m -XX:MaxNewSize=700m \
-Xms3072m -Xmx3072m -XX:MaxPermSize=1024m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC \
-XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=25 -XX:ParallelGCThreads=8"
Ставим базу MySQL
Настройки
Настройки лежат в файле
/usr/local/liferay/liferay-portal/tomcat-7.0.42/webapps/ROOT/WEB-INF/classes/portal-ext.properties
Его изначально не было, пришлось создать с нуля.
Содержимое вставлено, согласно мануалу, такое:
jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=portal_connector
jdbc.default.password=Portal_Passwd
Пользователь MySQL обозван portal_connector, ему (здесь в примере) поставлен пароль Portal_Password
Создаем базу
Название базы - lportal, разжевано здесь: MySQL - создаем_базу:
create database if not exists `lportal` character set utf8 COLLATE utf8_general_ci;
use lportal;
GRANT ALL PRIVILEGES ON `lportal`.* TO portal_connector IDENTIFIED BY 'Portal_Passwd'
Запускаем
После запуска оно в первый раз думало минуты полторы, потом отозвалось.
Вошел браузером. Для входа использовал:
Username: test@liferay.com
Password: test
bruno@7cogs.com - не подошло
Твикаем
Устанавливаем порт 80
Настройка делается в файле
/usr/local/liferay/liferay-portal/tomcat-7.0.42/conf/server.xml
Находим строку 70:
<Connector port="8080" protocol="HTTP/1.1"
Меняем на
<Connector port="80" protocol="HTTP/1.1"
Перезапускаем портал и имеем счастье.
Устанавливаем SSL на Tomcat (Java)
Настройка делается в файле
/usr/local/liferay/liferay-portal/tomcat-7.0.42/conf/server.xml
Убираем значки комментирования (<!—-
и —- >
) из строк 84 и 88
В “освобожденный” блок (например, перед строкой 87) вставляем строчки, указывающие на наш сертификат, запакованный в файл .keystore, а также пароль для .keystore.
У меня выглядит как
keystoreFile="/usr/local/liferay/.keystore"
keystorePass="987654"
Файл .keystore был получен с помощью следующей команды:
keytool -genkey -v -alias tomcat -keyalg RSA \
-validity 3650 -keysize 2048 \
-keystore /usr/local/liferay/.keystore \
-storepass [My strong password] -keypass [SAME strong password]
Теперь оно работает с шифрованием на порту 8443
Теоретически, этот .keystore можно превратить в несамоаподписной:
keytool -certreq -alias mydomain -keystore /usr/local/liferay/.keystore -file mydomain.csr
Скормив csr какому-нибудь startssl, получим честный серт. Этот серт втыкаем обратно в кейстор:
keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore /usr/local/liferay/.keystore
Если предыдущая команда не сработала и что с этими сертами делать дальше, читай про Сертификаты и Java
Cert Auth
Как мне кажется:
clientAuth="false" sslProtocol="TLSv1.2" />
и меняем ее на
clientAuth="wanted" sslProtocol="TLSv1.2" />
Возможное значение clientAuth=“true” превращает процесс входа в бесконечный квест на подсовывание сертификата, пока не угадаешь нужный (особенно весело, если его нет).
<login-config>
<auth-method>FORM</auth-method>
<realm-name>PortalRealm</realm-name>
<form-login-config>
<form-login-page>/c/portal/j_login</form-login-page>
<form-error-page>/c/portal/j_login_error</form-error-page>
</form-login-config>
</login-config>
и меняем его на
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
Теоретически, оноо должно проглотить “подходящие” серты. Какие такие подходящие - тут я впадаю в ступор, ибо либо изданные тем же CA, либо надо читать.
Чтать тут
Что надо иметь в виду при настройке контента через GUI
Каждую свистелку ставить и проверять, работает ли. После успешного добавления и настройки опции - дублировать каталог liferay-portal-6.2-ce-ga3 - сохранит много времени (многие фичи несовместимы между собой и кривят интерфейс невообразимо. Например, Social Office на русском языке после накатывания любой темы интерфейса, не поддерживающей рус. яз. Откатиться возможно только через полную замену папки.
Остановился на следующем наборе:
С доброй половиной этого набора Russian Translation глючит. А то бы (пока не вышла 6.2 CE GA-4 с объявленной поддержкой Русского) поставил… К счастью, теперь русский есть “из коробки”. Глючный немного, но…
Есть мысль протестировать Social Office с Mail CE и красивыми темплейтами типа Beveled; если такая связка глючить не будет, оставлю ее.
Если не ставить SocialOffice, то страничку с почтой надо делать в приватной части шаблона, тогда она дает каждому делать свои настройки логина/пароля.