Liferay с несколькими экземплярами сервера

Я работаю с несколькими проектами Liferay (разные порталы, плагины, пользователи и группы пользователей и т. д.) одновременно, и мне часто приходится переключаться между ними. Этот переключатель требует много шагов, таких как

  • Редактирование portal-ext.properties (для изменения базы данных Liferay и редактирования некоторых пользовательских свойств, специфичных для проекта) и редактирование «portal-setup-wizard.properties».
  • Добавляйте/удаляйте темы портлетов и перехватчики из экземпляра Eclipse Server, иногда очищайте папки Tomcat «data», «Webapps» и «work»
  • Перейдите в раздел «Панель управления/Сервер/Плагины Liferay» и переиндексируйте портлеты, такие как «Пользователи и организации» или «Документы и медиа».

Итак, я подумал, что создание нового экземпляра сервера для каждого проекта с новым tomcat и JRE было бы хорошей идеей. Когда мне нужно было сменить проект, я мог просто остановить старый сервер и запустить другой. Сначала я подумал (на самом деле мне посоветовали), что использование одного и того же SDK Liferay Plugins (6.1.0) должно быть приемлемым, если экземпляры сервера имеют одну и ту же версию.

Практически это не работает на 100% идеально. В то время как большая часть работы выполняется, тут и там возникают некоторые проблемы, например, тема не развертывается должным образом, хуки не применяются и т. д. Насколько я понимаю, есть некоторая привязка [Liferay SDK] к [Liferay Server] и это означает, что только 1 Сервер (первый созданный мной) будет полноценно работать. Например, исследуя [папку Liferay SDK]/bild.[имя пользователя].properties, я могу увидеть некоторые свойства, которые относятся к определенному местоположению сервера/JRE:

    app.server.portal.dir
app.server.lib.global.dir
app.server.deploy.dir
app.server.type
app.server.dir

Итак, мой вопрос: что мне делать, чтобы работать с несколькими проектами Liferay?

  1. Является ли многосерверная практика хорошим подходом к работе с несколькими проектами?
  2. Если да, следует ли создавать разные SDK для каждого сервера? Может быть, другое рабочее пространство Eclipse? Или есть способ использовать тот же SDK
  3. Как насчет работы с серверами разных версий Liferay?

person yannicuLar    schedule 23.04.2013    source источник


Ответы (4)


Лично я настраиваю каждый проект со своим исходным кодом, котом, базой данных и т. д., даже если это означает дублирование. В наши дни хранение дешево и делает это возможным. Конечно, ваш пробег может быть очень большим, но я решил поделиться с вами своей настройкой.

У меня есть каталог проектов со всеми моими проектами, который выглядит так:

/projects
    /foo-project
    /bar-project
    /my-project

Внутри проекта у меня есть

/my-project
    /tomcat
        /bin
        /conf
        ...
    /src
        /portal
            ... my portal source ...
        /plugins
            ... my plugin source ...
    /portal-ext.properties
  • Затем я настраиваю tomcat на использование разных портов (8080, 8081, 8082 и т. д.), чтобы я мог просто оставить их все работающими, если мне нужно или нужно.
  • Я настраиваю Liferay на использование разных баз данных для каждого экземпляра Liferay.
  • Я помещаю portal-ext.properties в каталог tomcat как одноуровневый элемент, и Liferay будет читать этот файл (при условии поведения по умолчанию). Это предлагает быстрое и простое редактирование, а также выяснение того, как вы настроили каждый проект.

Преимущества должны быть очевидны. Вы можете просто «уйти» из одного проекта в другой, не разбирая и не устанавливая. И когда вы вернетесь, все будет по-прежнему так, как вы его оставили. Переключение контекста также быстрее и удобнее, если вы хотите ответить на вопрос о проекте, над которым вы еще не работаете.

В зависимости от сложности каждого из ваших проектов мультиэкземпляры могут вам не подойти. Хуки и расширения могут конфликтовать друг с другом, и похоже, что это уже происходит с вашими проектами.

Если вы можете позволить себе место (которое невелико), это будет самый быстрый способ, который я нашел как разработчик Liferay.

person rp.    schedule 27.04.2013
comment
Спасибо, что поделились, и за очень подробный ответ. Примерно такая же схема у меня. Итак, вы используете только один SDK плагинов Lifreray для всех экземпляров Liferay (Tomcat)? Все ли ваши инстансы одной и той же версии Liferay? хотелось бы больше информации по этой части - person yannicuLar; 27.04.2013
comment
привет @yannicuLar, на самом деле у меня есть 1 портал src и 1 плагин SDK для каждого проекта. А так в зависимости от проекта они могут быть разными. Для меня каждый проект — это обычно отдельная версия Liferay. - person rp.; 27.04.2013
comment
ой, извините, я вас неправильно понял, так как я полностью пропустил папку «плагины» - person yannicuLar; 28.04.2013
comment
Пока я предпочитаю этот ответ, он охватывает большинство моих вопросов и отвечает большинству моих требований, поскольку позволяет работать с разными версиями и иметь разные серверы в одном рабочем пространстве Eclipse. На мой взгляд, это может быть наиболее удобным решением. Я просто подожду, прежде чем дать награду, на случай, если я получу новые ответы. Еще раз спасибо! - person yannicuLar; 29.04.2013
comment
В качестве дополнительного бонуса, если вы установите свои свойства как относительные ссылки, вы просто продублируете папку и получите новый проект. - person rp.; 29.04.2013
comment
Только один вопрос, если не слишком много: то, как вы создаете плагины (проект/src/плагины), возможно ли использовать один и тот же портлет в нескольких проектах? Вы рекомендуете использовать для этой цели общую папку в рабочей области Eclipse? - person yannicuLar; 30.04.2013
comment
Я полагаю, это зависит от того, что вы подразумеваете под одним и тем же портлетом. Поскольку наш код находится в репозитории Git, каждая из этих отдельных папок проекта содержит один и тот же репозиторий (по версии). Таким образом, мы можем развернуть один и тот же плагин, пока он зарегистрирован. Но для перекрестного развертывания плагина потребуется немного больше работы. - person rp.; 30.04.2013
comment
Для перекрестного развертывания просто запустите ant war в нужном плагине, и WAR-файл будет находиться в каталоге dist SDK. Перетащите этот файл в папку deploy любого портала, на котором вы хотите его развернуть. - person rp.; 30.04.2013

Если мы начинаем работу над новым проектом Liferay в нашей компании, мы настраиваем:

  • новая схема базы данных,
  • новый, чистый сервер Liferay, подключенный к этой схеме, и
  • новое рабочее пространство Eclipse с
  • чистый проект SDK

Только так вы гарантированно получите чисто отдельные проекты. Чтобы переключиться на другой проект, просто выключите текущий сервер Liferay, запустите новый и переключитесь на нужное рабочее пространство в Eclipse. Все это занимает не более 2 минут, намного меньше, чем выполнение всех действий по очистке, которые вы должны выполнить, если вы делите рабочую область и сервер.

На мой взгляд, это подход большинства команд разработчиков.

person p.mesotten    schedule 26.04.2013
comment
Честно говоря, я надеялся не получить решение для другого рабочего пространства Eclipse, но если переключение проекта может занять всего 2 минуты, это может быть лучшим решением в конце концов. И похоже, что только так можно работать с порталами Liferay разных версий. Мне придется немного подождать, прежде чем принять ваш ответ, ожидая других решений, если они доступны. Спасибо ! - person yannicuLar; 26.04.2013
comment
Хотя я не принял этот ответ в то время, спустя 2 года я думаю, что это, вероятно, лучшая стратегия: новое рабочее пространство, SDK, портал и БД. Единственным недостатком является то, что вам нужно переключать рабочее пространство каждый раз, когда вы хотите проверить что-то из другого проекта. Но, кажется, это самый аккуратный способ работы, особенно если вы работаете с разными версиями Liferay для каждого проекта. - person yannicuLar; 30.05.2015

Зачем возиться со всеми этими сложностями на одном компьютере? Я использую Oracle VirtualBox и настраиваю отдельную виртуальную машину для каждого проекта. Несмотря на то, что я работаю на ноутбуке, у него 8 ядер, и я увеличил объем памяти до 16 ГБ и установил на каждую машину по 4 ГБ ОЗУ.

Я могу запустить несколько виртуальных машин одновременно и установить все активные проекты в качестве домашних страниц в Chrome. Используя мостовую сеть, каждая виртуальная машина имеет свой собственный IP-адрес, и все они прослушивают 8080.

Еще одним преимуществом является то, что, хотя мой основной проект разрабатывается с использованием Eclipse Indigo и LR 6.1 CE GA1, у меня есть еще один, использующий Eclipse Juno, его специальный подключаемый модуль IDE и LR 6.1.1 CE GA2. Так что он также работает как тестер новой версии.

Виртуалбокс бесплатен. Память дешевая. И помните, что вы можете перевести виртуальную машину в спящий режим, не выключая ее. Это занимает около 10-20 секунд, а повторное пробуждение занимает 30-60 секунд.

person Jerry Rubin    schedule 30.04.2013
comment
Привет, спасибо за подсказку. Если я правильно понимаю, вам нужно настроить для каждой виртуальной машины новый Eclipse со всеми его плагинами, JAVA, ant и т. д.? Если это так, я вижу это как хорошее решение в нескольких случаях, но для большинства задач разработки я бы предпочел иметь хотя бы обычное рабочее пространство Eclipse. - person yannicuLar; 30.04.2013
comment
Как ни странно, быстрее разбудить виртуальную машину, чем запустить некоторые серверы приложений. Я определенно делаю это при тестировании чего-то, кроме Tomcat. Хорошее предложение - person rp.; 30.04.2013

Самым простым решением будет:

Создайте 3 разных пользователей, файл bundle.properties Liferay SDK будет отдельным для каждого пользователя. Итак, скажем, если вы хотите запустить 3 сервера с одним и тем же SDK. Создайте 3 файла, например

комплект.пользователь1.свойства комплект.пользователь2.свойства комплект.пользователь3.свойства

Теперь, когда вы хотите развернуть что-то для сервера 1, войдите на сервер с помощью пользователя user1 и попробуйте развернуть портлет, это будет считать bundle.user1.properties и развернет портлет/перехватчик в указанном месте.

Надеюсь, это решит вашу проблему с развертыванием.

Кроме того, когда у вас есть 3 пользователя, вы можете запустить 3 разных сервера вместе с разными учетными записями пользователей, таким образом, они будут в безопасности, и никто, кроме администратора, не сможет их отключить.

Надеюсь это поможет!

person Felix Christy    schedule 29.04.2013
comment
привет Феликс, спасибо за ответ. Я предполагаю, что это должно работать только для порталов той же версии. - person yannicuLar; 29.04.2013
comment
Привет, на самом деле в bundle.properties есть свойство под названием lp.version, я не пробовал, но я думаю, что мы также можем это контролировать! - person Felix Christy; 29.04.2013
comment
Я предполагаю, что вместо того, чтобы вести журнал с разными пользователями, я мог бы также сохранить разные версии пакета. Это правильно ? Если да, считаете ли вы, что ведение журнала под другим пользователем было бы более удобным? - person yannicuLar; 30.04.2013
comment
Это будет зависеть от вас! Liferay подбирает свойства пакета на основе вошедшего в систему пользователя для той цели, о которой я сказал! , если переименовать проще, чем создавать/обслуживать пользователей для сервера, лучше переименовать! - person Felix Christy; 30.04.2013