Veja como instalar o WildFly, o sucessor do JBoss, no AlmaLinux 9 ou Ubuntu 24.04 com Java 21, rodando como serviço do systemd e com usuário próprio.
O JBoss AS passou a se chamar WildFly em 2013, a partir da versão 8. O JBoss 6.1, que este artigo ensinava a instalar, é de 2011, exige Java 6 ou 7 e não recebe correções de segurança há mais de uma década. Hoje existem dois caminhos: o WildFly, gratuito e de código aberto, e o JBoss EAP, versão comercial da Red Hat baseada nele. Este guia instala o WildFly.
javax.* viraram jakarta.*. Uma aplicação feita para o JBoss 6 ou para o Java EE 8 precisa ser migrada antes de rodar no WildFly atual.Antes de começar
- Acesso root ou
sudoao servidor. Os comandos abaixo são executados como root. - Pelo menos 2 GB de RAM livres para o WildFly e a aplicação.
- Portas usadas por padrão:
8080(aplicações) e9990(console de administração). - A versão mais recente no momento desta revisão é a 41.0.1.Final. Confira a atual na página de downloads do WildFly.
Passo 1: instalar o Java
O WildFly 41 exige Java 17 ou mais novo e é testado com Java 17, 21 e 25. O Java 21 está disponível nos repositórios padrão das distribuições atuais:
# AlmaLinux e Rocky 9
dnf install java-21-openjdk-headless
# Ubuntu 22.04 e 24.04
apt update
apt install openjdk-21-jdk-headless
# Debian 12 (o Java 17 é o disponível no repositório padrão)
apt install openjdk-17-jdk-headless
Confira com java -version.
Passo 2: baixar o WildFly e criar o usuário do serviço
O WildFly não deve rodar como root. Crie um usuário de sistema só para ele e instale em /opt:
WF=41.0.1.Final
cd /tmp
curl -LO https://github.com/wildfly/wildfly/releases/download/$WF/wildfly-$WF.tar.gz
tar xzf wildfly-$WF.tar.gz -C /opt
ln -sfn /opt/wildfly-$WF /opt/wildfly
groupadd -r wildfly
useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly
chown -R wildfly:wildfly /opt/wildfly-$WF
O atalho /opt/wildfly facilita as atualizações: na próxima versão, basta extrair a pasta nova, copiar a configuração e apontar o atalho para ela.
Passo 3: criar o usuário do console de administração
/opt/wildfly/bin/add-user.sh
Escolha a opção a (Management User), mantenha o realm ManagementRealm e defina usuário e senha. Esse usuário serve para o console web (porta 9990) e para a linha de comando jboss-cli.sh.
Passo 4: configurar o WildFly como serviço do systemd
Crie o arquivo /etc/systemd/system/wildfly.service:
[Unit]
Description=WildFly
After=network-online.target
Wants=network-online.target
[Service]
User=wildfly
Group=wildfly
ExecStart=/opt/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 127.0.0.1
Restart=on-failure
TimeoutStopSec=60
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
O -b 0.0.0.0 deixa as aplicações acessíveis pela rede. O -bmanagement 127.0.0.1 mantém o console de administração fechado para a internet, que é o recomendado. Ative e inicie:
systemctl daemon-reload
systemctl enable --now wildfly
systemctl status wildfly
O WildFly também traz unidades do systemd prontas na pasta /opt/wildfly/bin/systemd, com um README próprio. A unidade acima faz o mesmo de forma mais direta.
Passo 5: liberar a porta no firewall
# AlmaLinux e Rocky (firewalld)
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
# Ubuntu (ufw)
ufw allow 8080/tcp
Teste no navegador: http://203.0.113.10:8080 deve abrir a página de boas-vindas do WildFly.
127.0.0.1:8080. Assim a porta 8080 não precisa ficar aberta para a internet.Como acessar o console de administração
Como o console só escuta no próprio servidor, acesse por um túnel SSH. No seu computador:
ssh -L 9990:127.0.0.1:9990 [email protected]
Com a conexão aberta, acesse http://localhost:9990 no navegador e entre com o usuário criado no passo 3.
Como publicar uma aplicação (deploy)
O jeito mais simples é copiar o arquivo .war ou .ear para a pasta monitorada:
cp minhaapp.war /opt/wildfly/standalone/deployments/
chown wildfly:wildfly /opt/wildfly/standalone/deployments/minhaapp.war
Em alguns segundos aparece um arquivo marcador ao lado: minhaapp.war.deployed significa sucesso e minhaapp.war.failed indica erro (o motivo fica no log). Pela linha de comando:
/opt/wildfly/bin/jboss-cli.sh --connect --command="deploy /caminho/minhaapp.war"
O log principal fica em /opt/wildfly/standalone/log/server.log.
Problemas comuns
Address already in use na porta 8080
Outro programa (um Tomcat, por exemplo) já usa a porta. Descubra qual com ss -ltnp | grep 8080. Para deslocar todas as portas do WildFly, acrescente -Djboss.socket.binding.port-offset=100 no ExecStart: a 8080 vira 8180 e a 9990 vira 10090.
ClassNotFoundException em classes javax
A aplicação foi feita para Java EE 8 ou anterior e precisa ser migrada para Jakarta EE. Ferramentas como o Eclipse Transformer convertem os pacotes automaticamente, mas teste bem antes de colocar em produção.
OutOfMemoryError ou servidor lento
Ajuste a memória da JVM no arquivo /opt/wildfly/bin/standalone.conf, na variável JAVA_OPTS (opções -Xms e -Xmx), e reinicie com systemctl restart wildfly.
O serviço não sobe
Veja o motivo com journalctl -u wildfly -e. Os erros mais comuns são Java ausente ou antigo e permissão: a pasta do WildFly precisa pertencer ao usuário wildfly.