Comunidade

Como instalar o Liferay 7.4 Community Edition

Guia completo de instalação do bundle Liferay 7.4 CE com Tomcat em servidor Linux — do download ao modo de produção.
SEA Tecnologia · Equipe de Infraestrutura

Este artigo descreve a instalação do Liferay 7.4 Community Edition (CE GA) a partir do bundle oficial empacotado com o Apache Tomcat 9, em um servidor Linux. O procedimento segue os padrões da SEA Tecnologia: instalação em /opt/liferay, configuração via portal-ext.properties e execução sob um usuário de serviço dedicado.


Índice
  • Pré-requisitos
  • Instalando o Java (JDK)
  • Criando o usuário e a estrutura de diretórios
  • Baixando e extraindo o bundle
  • Criando o banco de dados
  • Configurando o portal-ext.properties
  • Ajustando memória da JVM (setenv.sh)
  • Configurando o Elasticsearch
  • Primeira inicialização
  • Configurando como serviço (systemd)
  • Colocando em modo de produção
  • Verificação e troubleshooting
  • Referências



1. Pré-requisitos
  • Sistema Operacional: Linux 64 bits (Ubuntu 20.04+ / RHEL 8+ / Oracle Linux)
  • Java (JDK): JDK 11 (LTS). O 7.4 também suporta JDK 8, mas padronize no JDK 11.
  • Memória RAM: 8 GB recomendado (mín. 4 G — heap da JVM separado do Elasticsearch.
  • Disco: 20 GB+ livres (bundle + data + logs + índices).
  • Banco de Dados: MySQL 8 / MariaDB 10.x / PostgreSQL 13+ / Oracle 19c.
  • Search Engine: Elasticsearch 7.17.x (sidecar embutido para dev ou standalone para produção).

Atenção ao banco padrão: ao iniciar sem configuração, o Liferay sobe com o HSQLDB (banco em memória/arquivo). Ele serve apenas para testes — nunca use em produção. Configure o banco real ANTES da primeira inicialização (passo 6).



2. Instalando o Java (JDK)
Instale o JDK 11. Em distribuições Debian/Ubuntu:
1
sudo apt update
2
sudo apt install -y openjdk-11-jdk
3
java -version

Em RHEL / Oracle Linux / Rocky:
1
sudo dnf install -y java-11-openjdk-devel
2
java -version

Defina a variável JAVA_HOME de forma persistente (ajuste o caminho ao retorno de readlink -f $(which java)):
1
# Exemplo em /etc/profile.d/java.sh
2
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
3
export PATH=$JAVA_HOME/bin:$PATH



3. Criando o usuário e a estrutura de diretórios
Por segurança, o Liferay não deve rodar como root. Crie um usuário de serviço dedicado:
1
sudo useradd -r -m -d /opt/liferay -s /bin/bash liferay
2
sudo mkdir -p /opt/liferay
3
sudo chown -R liferay:liferay /opt/liferay

Padrão SEA: a base de instalação é sempre /opt/liferay, com o Tomcat em /opt/liferay/tomcat-9.0.x. Manter esse padrão facilita scripts, backups e monitoramento.



4. Baixando e extraindo o bundle
Baixe o bundle Liferay CE Portal 7.4 GA + Tomcat em liferay.com/downloads-community e copie o link do arquivo .tar.gz (Tomcat bundle).
1
# Como usuário liferay
2
sudo su - liferay
3
cd /opt/liferay
4

5
# Exemplo (ajuste a URL/versão para a release escolhida)
6
wget https://releases-cdn.liferay.com/portal/7.4.x-ga/liferay-ce-portal-tomcat-7.4.x-gaXX.tar.gz
7

8
# Extrair
9
tar -xzf liferay-ce-portal-tomcat-7.4.x-gaXX.tar.gz

A extração gera uma pasta como liferay-ce-portal-7.4.x-gaXX. Para padronizar, mova o conteúdo para a raiz:
1
mv liferay-ce-portal-7.4.x-gaXX/* /opt/liferay/
2
rmdir liferay-ce-portal-7.4.x-gaXX
3
ls -la /opt/liferay

Estrutura esperada:
1
/opt/liferay
2
  data/              # documentos, índices (sidecar), etc.
3
  deploy/            # hot deploy de módulos e temas (.war / .jar)
4
  logs/
5
  osgi/
6
  tomcat-9.0.x/      # servidor de aplicacao
7
    bin/
8
    conf/
9
    webapps/ROOT/    # a aplicacao Liferay
10
  portal-setup-wizard.properties



5. Criando o banco de dados
Crie um banco e um usuário dedicados, com charset UTF-8. Exemplo em MySQL / MariaDB:
1
CREATE DATABASE lportal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
2
CREATE USER 'liferay'@'%' IDENTIFIED BY 'SENHA_FORTE_AQUI';
3
GRANT ALL PRIVILEGES ON lportal.* TO 'liferay'@'%';
4
FLUSH PRIVILEGES;

Exemplo em PostgreSQL:
1
CREATE ROLE liferay WITH LOGIN PASSWORD 'SENHA_FORTE_AQUI';
2
CREATE DATABASE lportal WITH OWNER = liferay ENCODING = 'UTF8';

Oracle: a SEA mantém procedimento próprio de criação de tablespaces, usuário e profile para portais em Oracle. Consulte o documento criar_base_de_dados_banco_oracle.md.



6. Configurando o portal-ext.properties
Toda a configuração do Liferay deve ficar no arquivo portal-ext.properties, na raiz da aplicação — em /opt/liferay/tomcat-9.0.x/webapps/ROOT/WEB-INF/classes/ (ou na raiz /opt/liferay/, também reconhecida pelo bundle).
1
# ===== Conexao JDBC =====
2
# --- MySQL / MariaDB ---
3
jdbc.default.driverClassName=com.mysql.cj.jdbc.Driver
4
jdbc.default.url=jdbc:mysql://localhost:3306/lportal?characterEncoding=UTF-8&useUnicode=true&serverTimezone=GMT
5
jdbc.default.username=liferay
6
jdbc.default.password=SENHA_FORTE_AQUI
7

8
# --- PostgreSQL (alternativa) ---
9
# jdbc.default.driverClassName=org.postgresql.Driver
10
# jdbc.default.url=jdbc:postgresql://localhost:5432/lportal
11
# jdbc.default.username=liferay
12
# jdbc.default.password=SENHA_FORTE_AQUI
13

14
# ===== Setup Wizard =====
15
setup.wizard.enabled=false
16

17
# ===== Administrador padrao =====
18
default.admin.email.address=admin@seatecnologia.com.br
19
default.admin.first.name=Administrador
20
default.admin.last.name=SEA
21

22
# ===== Localizacao (Brasil) =====
23
company.default.locale=pt_BR
24
company.default.time.zone=America/Sao_Paulo

Driver JDBC: os bundles do 7.4 já incluem os drivers MySQL e PostgreSQL. Para Oracle, copie o ojdbcXX.jar para /opt/liferay/tomcat-9.0.x/lib/ext/ manualmente.



7. Ajustando a memória da JVM (setenv.sh)
Crie/edite o arquivo setenv.sh em tomcat-9.0.x/bin/ para definir o heap:
1
#!/bin/bash
2
CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF-8"
3
CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Sao_Paulo"
4
CATALINA_OPTS="$CATALINA_OPTS -Xms4g -Xmx4g"
5
CATALINA_OPTS="$CATALINA_OPTS -XX:MetaspaceSize=384m -XX:MaxMetaspaceSize=512m"
6
CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC"

1
chmod +x /opt/liferay/tomcat-9.0.x/bin/setenv.sh

Dica: mantenha -Xms e -Xmx com o mesmo valor para evitar redimensionamentos de heap. Reserve memória do host também para o Elasticsearch.



8. Configurando o Elasticsearch
O Liferay 7.4 exige o Elasticsearch 7.17.x. Há dois modos:
  • Sidecar (embutido): ativo por padrão, ótimo para desenvolvimento/homologação. Não requer instalação extra.
  • Remoto/standalone: obrigatório em produção e em ambientes clusterizados.

Para apontar o Liferay a um Elasticsearch externo, use o arquivo OSGi:
osgi/configs/com.liferay.portal.search.elasticsearch7.configuration.ElasticsearchConfiguration.config
1
operationMode="REMOTE"
2
networkHostAddresses=["127.0.0.1:9200"]
3
clusterName="liferay-cluster"
4
productionModeEnabled=B"true"

Produção: com productionModeEnabled=true o Liferay NÃO inicia se não encontrar um Elasticsearch remoto saudável. Garanta que o ES esteja no ar antes de subir o portal.



9. Primeira inicialização
Garanta que tudo pertence ao usuário liferay e suba o portal:
1
sudo chown -R liferay:liferay /opt/liferay
2
sudo su - liferay
3

4
# Subir
5
/opt/liferay/tomcat-9.0.x/bin/startup.sh
6

7
# Acompanhar os logs
8
tail -f /opt/liferay/tomcat-9.0.x/logs/catalina.out

Na primeira execução o Liferay cria todas as tabelas no banco. Aguarde a mensagem "Server startup in [NNNNN] ms".
Pronto! Acesse http://SEU_SERVIDOR:8080. Faça login com o e-mail definido em default.admin.email.address e a senha padrão "test" — o sistema solicitará a troca imediata da senha e uma pergunta de segurança.

Para parar o servidor:
1
/opt/liferay/tomcat-9.0.x/bin/shutdown.sh



10. Configurando como serviço (systemd)
Para que o Liferay inicie junto com o sistema e seja gerenciável via systemctl, crie a unit em /etc/systemd/system/liferay.service:
1
[Unit]
2
Description=Liferay 7.4 CE (Tomcat)
3
After=network.target
4

5
[Service]
6
Type=forking
7
User=liferay
8
Group=liferay
9
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
10
Environment=CATALINA_PID=/opt/liferay/tomcat-9.0.x/temp/catalina.pid
11
ExecStart=/opt/liferay/tomcat-9.0.x/bin/startup.sh
12
ExecStop=/opt/liferay/tomcat-9.0.x/bin/shutdown.sh
13
Restart=on-failure
14
TimeoutStartSec=600
15

16
[Install]
17
WantedBy=multi-user.target

1
sudo systemctl daemon-reload
2
sudo systemctl enable liferay
3
sudo systemctl start liferay
4
sudo systemctl status liferay



11. Colocando em modo de produção
Em produção, desabilite o auto deploy do Tomcat para evitar que alterações acidentais reiniciem a aplicação. Edite o server.xml:
1
vim /opt/liferay/tomcat-9.0.x/conf/server.xml

Localize a configuração do Host e troque autoDeploy="true" por "false":
1
<Host name="localhost" appBase="webapps"
2
      unpackWARs="true" autoDeploy="false"></Host>

Referência interna: este passo também está em modoproducao.md. Com autoDeploy="false", o Liferay bloqueia o hot deploy e não reinicia ao detectar mudanças em ROOT/WEB-INF.



12. Verificação e troubleshooting
  • Portal não sobe / preso no boot: verifique catalina.out. Em produção, confirme que o Elasticsearch remoto está saudável (curl localhost:9200).
  • Erro de conexão com o banco: confira jdbc.default.url, usuário/senha e se o driver (Oracle) está em tomcat/lib/ext.
  • Subiu com HSQLDB sem querer: o portal-ext.properties não foi lido. Confirme o caminho do arquivo e reinicie limpando o data/ de teste.
  • Acentuação errada: garanta charset utf8mb4 no banco e -Dfile.encoding=UTF-8 no setenv.sh.
  • Permissão negada nos arquivos: sudo chown -R liferay:liferay /opt/liferay

Logs úteis:
1
tail -f /opt/liferay/tomcat-9.0.x/logs/catalina.out      # boot e erros gerais
2
tail -f /opt/liferay/logs/liferay.*.log                  # logs da aplicacao
Isaac de Moraes
5/4/23