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 подключены и работают “из коробки”

По инструкции для чайников

  1. Создал каталог /usr/local/liferay/
  2. Туда разархивировал liferay-portal-6.2-ce-ga3
  3. Запустил, как сказано в инструкции:
    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, оно предложило мне создать новый пароль. Создал.

Выстраданные шаги

Настроек очень дофига. Чтобы оно работало как сайт для групповой работы (персональные расшариваемые календари, приватные сообщения, задачи, почта), надо настраивать в следующем порядке:

  1. Создать пользователей (Admin → Control Panel → Users and Organizations):
    1. После ввода экранного имени, емейла и имени, появляется возможность сохранить
    2. Пароль ставим элементарный; юзеру все равно прийдется его изменить
    3. Сохраняем юзера
    4. Повторяем процедуру для всех известных нам юзеров.
    5. Можно предоставить возможность юзерам регистрироваться самостоятельно (на этом этапе мы пока еще не запрещали самостоятельную регистрацию), но потом придется добавлять юзеров в социальный офис по мере их появления, а это нудно.
  2. Установить модули (Admin → Control Panel → Apps → Store):
    1. Social Office CE
    2. Mail CE
  3. Перейти в раздел Control Panel → Apps → Purchased и нажать кнопку Install у этих модулей
  4. Перейти в раздел Control Panel → Configuration → Social Office Configurations;
    1. Поставить галки юзерам, чтобы они могли использовать Social Office;
    2. Сохранить
  5. У юзеров, которым позволено “Социальничать” на предыдущем этапе, появилась сверху чОрная строка с шариками слева ;)
  6. Чтобы добавить почту одному юзеру, надо выполнять не совсем явный порядок действий:
    1. Тыркаем в “шарики” на чОрной строке вверху;
    2. В верхней части окна под чОрной строкой появилась шестерня. Тыркаем в нее;
    3. Слева вверху вылезут Плюсик, Экран, Редактор и жОлтая фигня “Эдит Контролс”; жмем Плюс
    4. Слева открылась панель добавления “Add”; выбираем Page, называем ее “Почта”, ниже выбираем, чтобы оно было в одну колонку. Жмем “Add Page”
    5. Маленьким крестиком сверху справа панели добавления закрываем ее
    6. Тыркаем мышью на слово “Почта” - оно откроет страничку, на которой почты пока нет;
    7. Тыркаем в шестерню сверху справа;
    8. Жмем Плюс сверху слева, там выбираем “Applications” и в нем находим раздел Collaboration, после раскрытия которого мы можем кликнуть на Add, который появляется при наведении курсора на строку “Mail”; жмем Add
    9. Маленьким крестиком сверху справа панели добавления закрываем ее
    10. Тыркаем в шестерню сверху справа и закрываем Плюс, Экран и т.д.
  7. Теперь мы можем настраивать аккаунт почты, персональный для юзера.
  8. Аналогичным образом добавляем Календарь
  9. Однако, можно вносить изменения в темплейт Социал Офиса, и измененные страницы стразу станут доступными для юзеров, которым дозволено социальничать. Например, можно всем сразу добавить Почту (настраивать аккаунт будут сами); там же можно русифицировать и спрятать любые части меню. Я спрятал Welcome и Dashboard и добавил Wiki.
    1. Это делается в Admin → Control Panel → Sites → Site Templates → Social Office User Home. Добавляем странички “Почта” и “Календарь”. Сохраняем.
    2. О пять идем Admin → Control Panel → Sites → Site Templates; только теперь в строке Social Office User Home выбираем Actions → View Pages. Оно откроет в новом окне шаблон “Social Office User Home”
    3. Там описанным ранее способом (п.п. 6.VII - 6.X) изменяем страничку “Почта”, добавляя туда программу “Mail” и страничку Календарь, добавив туда календарь.
    4. Теперь у юзеров, для которых страницы “почта” и “календарь” отсутствовали, таковые появятся. Будут появляться и у новых юзеров.

В продакшн

Худо-бедно оно запустилось. Однако, установленная по дефолту база Гиперсоник годится только для тестов. Даже вики с ней тупит.

Так что надо ускорять: давать Джаве память и ставить 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

  1. Чтобы оно работало чуток побыстрее, надо увеличить доступную для Джавы память.
  2. Для этого в файл /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

  3. Как вариант, в файле, упомянутом выше, вымарывается -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

  • Как сказано http://www.liferay.com/community/wiki/-/wiki/Main/HTTPS , надо сделать улучшения:
  • В файле /usr/local/liferay/liferay-portal/tomcat-7.0.42/webapps/ROOT/WEB-INF/web.xml в разделе <security-constraint> найти подраздел <user-data-constraint>. Там выставить значение гарантированного транспорта (было NONE)
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>

  • Лезем в файл (создаем, если еще не делали связь с базой SQL) /usr/local/liferay/liferay-portal/tomcat-7.0.42/webapps/ROOT/WEB-INF/classes/portal-ext.properties и там вписываем строку

    company.security.auth.requires.https=true

    Оно заставляет браузер использовать HTTPS вне зависимости от используемого порта.

  • Отрубить работу на нешифрованном порту (8080 по дефолту) в файле /usr/local/liferay/liferay-portal/tomcat-7.0.42/conf/server.xml (строки 70-72 комментируем)

Cert Auth

Как мне кажется:

  • В любимом файле /usr/local/liferay/liferay-portal/tomcat-7.0.42/conf/server.xml находим (примерно 88-89) строку
clientAuth="false" sslProtocol="TLSv1.2" />

и меняем ее на

clientAuth="wanted" sslProtocol="TLSv1.2" />

Возможное значение clientAuth=“true” превращает процесс входа в бесконечный квест на подсовывание сертификата, пока не угадаешь нужный (особенно весело, если его нет).

  • В файле /usr/local/liferay/liferay-portal/tomcat-7.0.42/webapps/ROOT/WEB-INF/web.xml находим блок
        <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, то страничку с почтой надо делать в приватной части шаблона, тогда она дает каждому делать свои настройки логина/пароля.

unix/liferay.txt · Last modified: 2016/05/15 21:40 by rybario
About this template
CC Attribution-Share Alike 4.0 International
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5