Files

392 lines
16 KiB
Markdown
Raw Permalink Normal View History

2026-05-06 13:35:47 -03:00
---
title: Guia de migração da plataforma do Windows para Linux
source: https://tdn.totvs.com/pages/viewpage.action?pageId=1027816803
path: \Plataforma Documentação técnica\Instalação e Atualização\Guia de migração da plataforma do Windows para Linux.md
---
Fique atento!
Esta página é válida a partir da **atualização 2.0** e **superiores**.
- [Objetivo](#GuiademigraçãodaplataformadoWindowsparaLinux-Objetivo)
- [Preparação](#GuiademigraçãodaplataformadoWindowsparaLinux-Preparação)
- [Instalação](#GuiademigraçãodaplataformadoWindowsparaLinux-Instalação)
- [Ajustes de ambiente](#GuiademigraçãodaplataformadoWindowsparaLinux-Ajustesdeambiente)
- [Importação das configurações](#GuiademigraçãodaplataformadoWindowsparaLinux-Importaçãodasconfigurações)
- [Ajustes no standalone.xml](#GuiademigraçãodaplataformadoWindowsparaLinux-Ajustesnostandalone.xml)
- [Volume com os arquivos](#GuiademigraçãodaplataformadoWindowsparaLinux-Volumecomosarquivos)
- [Aplicativos customizados](#GuiademigraçãodaplataformadoWindowsparaLinux-Aplicativoscustomizados)
- [Caminho customizado do volume](#GuiademigraçãodaplataformadoWindowsparaLinux-Caminhocustomizadodovolume)
- [Banco de dados](#GuiademigraçãodaplataformadoWindowsparaLinux-Bancodedados)
- [Tabela FDN\_TENANTDATA](#GuiademigraçãodaplataformadoWindowsparaLinux-TabelaFDN_TENANTDATA)
- [Tabela FDN\_PARAMGERAL](#GuiademigraçãodaplataformadoWindowsparaLinux-TabelaFDN_PARAMGERAL)
- [Tabela FDN\_VOLUMESITE](#GuiademigraçãodaplataformadoWindowsparaLinux-TabelaFDN_VOLUMESITE)
# Objetivo
---
O objetivo deste guia é apresentar os procedimentos recomentados para efetuar uma migração do TOTVS Fluig de um servidor Microsoft Windows para Linux.
# Preparação
---
- Defina previamente as configurações do ambiente para que sejam informados corretamente durante a fase de instalação e posteriores.
EXEMPLO
URL pública, servidor SMTP.
- RECOMENDADO: derrube todos os serviços do Fluig antes de começar a migração.
# Instalação
---
Atenção!
- Utilize, para o Linux, uma versão do Fluig igual a versão instalada no Microsoft Windows.
- Durante a execução do instalador, informe nas configurações do banco de dados o mesmo nome do banco sendo utilizado atualmente.
- Apenas execute a instalação, não inicie o Fluig.
Realize uma instalação em Linux seguindo os procedimentos de uma nova instalação conforme documentado em [Instalação da plataforma no Linux - Instalador](Guia de instalação da plataforma/Instalação da plataforma no Linux - Instalador.md).
Em seguida, faça os ajustes necessários na instalação.
## Ajustes de ambiente
---
Realize os ajustes de ambientes necessários configurações de memória do servidor, por exemplo no arquivo **appserver/bin/standalone.conf**.
## Importação das configurações
---
Substitua o arquivo **appserver/standalone/configuration/standalone.xml** por uma cópia do mesmo arquivo encontrado na instalação do servidor Microsoft Windows.
# Ajustes no standalone.xml
---
Uma vez que o arquivo **appserver/standalone/configuration/standalone.xml** foi copiado a partir do servidor Windows, estará configurado com informações nome do servidor, endereço IP do servidor, caminhos da instalação apontando para o servidor Windows. Será necessário alterar para as configurações do novo servidor. Para isso, abra o arquivo **appserver/standalone/configuration/standalone.xml** em seu editor de texto simples favorito (vi, nano, etc) e faça as seguintes alterações:
Atenção!
- O Microsoft Windows comumente utiliza como separador de pastas o caracter **"\"**, enquanto que o Linux utiliza o caracter **"/"**. Portanto, é importante lembrar de, sempre que alterar partes de um caminho, substituir o **"\"** por **"/"** em todo o restante do caminho.
- Os exemplos utilizados a seguir usam como base as seguintes informações:
- Servidor antigo (Windows) → Endereço IP: **192.168.1.100**; hostname: **fluig-windows**; pasta de instalação: **C:\fluig**.
- Servidor novo (Linux) → Endereço IP: **192.168.2.50**; hostname: **fluig-linux**; pasta de instalação: **/opt/fluig**.
- Troque o endereço IP do servidor antigo (por exemplo: **192.168.1.100**) para o IP do servidor novo (por exemplo: **192.168.2.50**).
Exemplos de configurações comumente encontradas com o endereço IP (mas não limitado a apenas esses e nem sempre todos esses existem):
```
<property name="FLUIG_URL" value="http://${env.FLUIG_CONFIG_SERVER_ADDRESS_UNSECURE:192.168.1.100}:8080"/>
<property name="FLUIG_URL" value="http:192.168.1.100:8080"/>
<property name="NETWORK_IP_ADDRESSES" value="127.0.0.1,127.0.0.1,0:0:0:0:0:0:0:1,192.168.1.100"/>
<inet-address value="${env.FLUIG_CONFIG_SERVER_ADDRESS_MANAGEMENT:192.168.1.100}"/>
<inet-address value="${env.FLUIG_CONFIG_SERVER_ADDRESS_PUBLIC:192.168.1.100}"/>
<inet-address value="${env.FLUIG_CONFIG_SERVER_ADDRESS_UNSECURE:192.168.1.100}"/>
<inet-address value="192.168.1.100"/>
<remote-destination host="${env.FLUIG_HOST_ADDRESS:192.168.1.100}" port="5445"/>
<remote-destination host="192.168.1.100" port="5445"/>
```
- Troque o hostmane do servidor antigo (por exemplo: **fluig-windows**) para o hostname do servidor novo (por exemplo: **fluig-linux**).
Exemplos de configurações comumente encontradas com o hostname (mas não limitado a apenas esses e nem sempre todos esses existem):
```
<property name="FLUIG_URL" value="http://${env.FLUIG_CONFIG_SERVER_ADDRESS_UNSECURE:fluig-windows}:8080"/>
<property name="FLUIG_URL" value="http:fluig-windows:8080"/>
<inet-address value="${env.FLUIG_CONFIG_SERVER_ADDRESS_MANAGEMENT:fluig-windows}"/>
<inet-address value="${env.FLUIG_CONFIG_SERVER_ADDRESS_PUBLIC:fluig-windows}"/>
<inet-address value="${env.FLUIG_CONFIG_SERVER_ADDRESS_UNSECURE:fluig-windows}"/>
<inet-address value="fluig-windows"/>
<remote-destination host="${env.FLUIG_HOST_ADDRESS:fluig-windows}" port="5445"/>
<remote-destination host="fluig-windows" port="5445"/>
```
- Troque os caminhos do servidor antigo (por exemplo: **c:\fluig**)  para o caminho do servidor novo (por exemplo: **/opt/fluig**).
Atenção!
- Em servidores Microsoft Windows, o caminho pode aparecer na forma **C:\fluig**, **C:\\fluig** ou ainda **C:/fluig**. É importante procurar pelas três formas.
- Não esqueça de trocar o "**\**" por "**/**".
Exemplos de configurações comumente encontradas com o caminho (mas não limitado a apenas esses e nem sempre todos esses existem):
```
<property name="FLUIG_INSTALL_CONFIG_PROPERTIES_DIR" value="C:\fluig/repository/wcmdir/config"/>
<property name="FLUIG_INSTALL_DATABASE_UPDATE_DIR" value="C:\fluig/repository/wcmdir"/>
<simple name="java:global/wcm/globalDataDir" value="${env.FLUIG_DATADIR_GLOBAL:C:\fluig/repository/wcmdir}"/>
<simple name="java:global/wcm/localDataDir" value="${env.FLUIG_DATADIR_LOCAL:C:\fluig/repository/wcmlocaldir}"/>
<simple name="java:global/wcm/xmlPagesFile" value="C:\fluig/xml/pages/pages.xml"/>
<simple name="java:global/wcm/xmlGlobalPagesFile" value="C:\fluig/xml/pages/globalPages.xml"/>
<simple name="java:global/wcm/xmlCategories" value="C:\fluig/xml/resources/fdn_category.xml"/>
<simple name="java:global/wcm/xmlResources" value="C:\fluig/xml/resources/fdn_resource.xml"/>
<file name="staticHandler" path="C:\fluig/repository/wcmdir/static"/>
<subsystem xmlns="urn:com.totvs.technology.wcm:1.0" dir="${env.FLUIG_DEPLOY_DIR:C:\fluig\appserver/apps}" refresh="15">
```
# Volume com os arquivos
---
Um dos principais motivadores de uma migração de um servidor Microsoft Windows para um servidor Linux, é a falta de confiabilidade do Microsoft Windows como servidor de arquivos. Portanto, é muito importante migrar o volume (arquivos) para um servidor Linux também.
Em ambientes onde haverá apenas um servidor do Fluig, o volume pode ser movido para o mesmo servidor Linux onde o Fluig será instalado, mantendo uma estrutura muito semelhante à instalação no servidor Windows.
Mas se o ambiente possuir (ou haver a intenção de possuir) mais de um servidor Fluig, é imprescindível que o volume esteja em algum servidor de arquivos que seja compartilhado (comumente via NFS).
Portanto:
- faça a cópia dos arquivos do volume atual (Windows) para o volume novo (Linux);
- monte um caminho (por exemplo: **/opt/volume**) apontando para o compartilhamento, em caso de uso de um servidor de arquivos dedicado.
## Aplicativos customizados
---
Se possuir aplicativos não padrão, sejam desenvolvidos por equipes internas, por terceiros ou mesmo baixado na *Store* oficial do Fluig, esses estarão na pasta própria.
Em uma instalação padrão, encontram-se na pasta "**appserver/apps**".
Esses aplicativos precisam ser disponibilizados manualmente para a nova instalação.
Em uma instalação padrão, com um único servidor Fluig, basta copiar o conteúdo da pasta *apps* do servidor atual (por exemplo: **C:\fluig\appserver\apps**) para a pasta *apps* do novo servidor (por exemplo: **/opt/fluig/appserver/apps**).
Já em uma instalação em que a pasta *apps* não esteja no local padrão, é necessário:
- copiar os aplicativos para uma localização acessível ao Fluig no novo servidor. Por exemplo, em um ambiente com um servidor de arquivos dedicado, poderia estar na pasta "**/opt/volume/apps**";
- ajustar a configuração que indica o caminho. Para isso, edite o arquivo **appserver/standalone/configuration.xml**, procure por algo como:
```
<subsystem xmlns="urn:com.totvs.technology.wcm:1.0" dir="${env.FLUIG_DEPLOY_DIR:C:\fluig\appserver/apps}" refresh="15">
```
e substitua por algo como:
```
<subsystem xmlns="urn:com.totvs.technology.wcm:1.0" dir="${env.FLUIG_DEPLOY_DIR:/opt/volume/apps}" refresh="15">
```
## Caminho customizado do volume
---
Se o volume está em um local diferente do local padrão da instalação (**FLUIG\_DIR/repository**), é preciso configurar esse caminho.
Para isso, edite o arquivo **appserver/standalone/configuration.xml**, procure pela propriedade **java:global/wcm/globalDataDir**.
Será encontrado algo como:
```
<simple name="java:global/wcm/globalDataDir" value="${env.FLUIG_DATADIR_GLOBAL:C:\fluig/repository/wcmdir}"/>
```
Ajuste para algo como:
```
<simple name="java:global/wcm/globalDataDir" value="${env.FLUIG_DATADIR_GLOBAL:/opt/volume/wcmdir}"/>
```
Nota:
É importante manter sufixo "**/wcmdir**".
# Banco de dados
---
O caminho da instalação também é salvo em alguns registros de algumas tabelas e, portanto, precisam ser ajustados também.
Para isso, conecte no banco de dados com algum cliente dele e execute alguns *updates*.
## Tabela FDN\_TENANTDATA
---
Encontre os registros que precisam ser alterados na empresa "**0**" (dados globais), com um comando como este (a sintaxe está para o banco MySQL, é necessário ajustar de acordo com o banco):
```
select * from fdn_tenantdata where data_key in ('dirUpload', 'dirDefault', 'dirCustom') and tenant_id = 0 order by tenantdata_id;
```
Retornará algo semelhante a isso:
![](..\..\images\image-2025-12-29_14-51-18.png)
Atualize os registros usando comandos semelhantes a esses:
```
update fdn_tenantdata set data_value = '/opt/volume/wcmdir/wcm/tenants/wcm' where tenant_id = 0 and data_key = 'dirDefault';
update fdn_tenantdata set data_value = '/opt/volume/wcmlocaldir/wcm/upload' where tenant_id = 0 and data_key = 'dirUpload';
update fdn_tenantdata set data_value = '/opt/volume/wcmlocaldir/wcm/custom' where tenant_id = 0 and data_key = 'dirCustom';
```
Consulte os registros alterados para conferência:
```
select * from fdn_tenantdata where data_key in ('dirUpload', 'dirDefault', 'dirCustom') and tenant_id = 0 order by tenantdata_id;
```
Retornará algo semelhante a isso:
![](..\..\images\image-2025-12-29_14-58-57.png)
A seguir, encontre os registros que precisam ser alterados na(s) empresa(s) criada(s), com um comando como esse:
```
select * from fdn_tenantdata where data_key in ('dirUpload', 'dirDefault', 'dirCustom', 'dirUploadConnect') and tenant_id > 0 order by tenantdata_id;
```
Retornará algo semelhante a isso:
![](..\..\images\image-2025-12-29_15-10-28.png)
Atualize os registros usando comandos semelhantes a esses:
```
update fdn_tenantdata set data_value = '/opt/volume/1' where data_key = 'dirDefault' and tenant_id = 1234;
update fdn_tenantdata set data_value = '/opt/volume/1/upload' where data_key = 'dirUpload' and tenant_id = 1234;
update fdn_tenantdata set data_value = '/opt/volume/1/uploadConnect' where data_key = 'dirUploadConnect' and tenant_id = 1234;
update fdn_tenantdata set data_value = '/opt/volume/1/custom' where data_key = 'dirCustom' and tenant_id = 1234;
```
Consulte os registros alterados para conferência:
```
select * from fdn_tenantdata where data_key in ('dirUpload', 'dirDefault', 'dirCustom') and tenant_id = 0 order by tenantdata_id;
```
Retornará algo semelhante a isso:
![](..\..\images\image-2025-12-29_15-19-19.png)
Nota:
O exemplo acima pressupõe que há apenas uma empresa criada, com o TENANT\_ID=1234. Se houver mais empresas, é preciso repetir os procedimentos para cada uma delas, tomando o cuidado de informar o caminho correto para o volume de cada uma.
Por segurança, é interessante verificar se existe (e consequentemente corrigir) mais algum registro apontando para o caminho antigo. Por exemplo, com um comando como esse:
```
select * from fdn_tenantdata where data_key like 'C:%';
```
## Tabela FDN\_PARAMGERAL
---
Encontre os registros que precisam ser alterados com um comando como este (a sintaxe está para o banco MySQL, é necessário ajustar de acordo com o banco).
### Analytics
---
Encontre e corrija o caminho onde são salvos os dados do Analytics:
```
select * from fdn_paramgeral where data_key = 'analytics.resources.folder';
```
![](..\..\images\image-2025-12-29_15-35-51.png)
```
update fdn_paramgeral set data_value = '/opt/volume/analytics/resources' where data_key = 'analytics.resources.folder';
select * from fdn_paramgeral where data_key = 'analytics.resources.folder';
```
![](..\..\images\image-2025-12-29_15-37-58.png)
### Solr
---
Encontre e corrija o caminho da instalação do Solr:
```
select * from fdn_paramgeral where data_key = 'totvs/solrHome';
```
![](..\..\images\image-2025-12-29_15-42-9.png)
```
update fdn_paramgeral set data_value = '/opt/fluig/solr' where data_key = 'totvs/solrHome';
select * from fdn_paramgeral where data_key = 'totvs/solrHome';
```
![](..\..\images\image-2025-12-29_15-43-53.png)
### Outras propriedades
---
Encontre e corrija o caminho em outras propriedades:
```
select * from fdn_paramgeral where data_key in ('fluig/themeFormDir', 'webdesk/OOoDir', 'wcm/icons', 'fluig/thumbnailDir');
```
![](..\..\images\image-2025-12-29_15-46-47.png)
```
update fdn_paramgeral set data_value = '/opt/fluig/temaFormulario' where data_key = 'fluig/themeFormDir';
update fdn_paramgeral set data_value = '/opt/fluig/OpenOffice' where data_key = 'webdesk/OOoDir';
update fdn_paramgeral set data_value = '/opt/fluig/icon' where data_key = 'wcm/icons';
update fdn_paramgeral set data_value = '/opt/fluig/thumbnail' where data_key = 'fluig/thumbnailDir';
select * from fdn_paramgeral where data_key in ('fluig/themeFormDir', 'webdesk/OOoDir', 'wcm/icons', 'fluig/thumbnailDir');
```
![](..\..\images\image-2025-12-29_15-50-18.png)
Por segurança, é interessante verificar se existe (e consequentemente corrigir) mais algum registro apontando para o caminho antigo. Por exemplo, com um comando como esse:
```
select * from fdn_paramgeral where data_key like 'C:%';
```
## Tabela FDN\_VOLUMESITE
---
Encontre os registros que precisam ser alterados com um comando como este (a sintaxe está para o banco MySQL, é necessário ajustar de acordo com o banco):
```
select * from fdn_volumesite;
```
Retornará algo semelhante a isso:
![](..\..\images\image-2025-12-29_9-43-25.png)
Importante observar a coluna **VOLUMESITE\_ID**, pois ela contém a chave dos registros que precisam ser alterados.
Atualize os registros usando comandos semelhantes a esses:
```
update fdn_volumesite set storage = '/opt/volume/1' where volumesite_id = 1;
```
Consulte os registros alterados para conferência:
```
select * from fdn_volumesite;
```
Retornará algo semelhante a isso:
![](..\..\images\image-2025-12-29_15-57-52.png)
Importante!
As tabelas tratadas aqui são as tabelas padrão e registros padrão. Se possuir tabelas e/ou registros customizados que apontam para o volume, será necessário ajustar manualmente.