wiki:Servicos/Funambol/InstalacaoServidor

Instalação do Servidor

1. Pré-requisitos

O Funambol precisa ser instalado num servidor que tenha acesso ao Expresso. Nesse servidor deve ser configurada uma conta de usuário com a qual será instalado o Funambol, de forma a manter a segurança dos arquivos de configuração. Os dispositivos compatíveis são:

  • Dispositivos que suportem o padrão SyncML1;
  • Dispositivos rodando:
  • Windows Mobile (a partir da versão 5);

Dispositivos compatíveis com java, atendendo aos requisitos:

  • MIDP 2.0;
  • WMA 1.1;
  • Heap de pelo menos 800Kb;
  • Tamanho máximo de download de pelo menos 250Kb.

Requisitos do servidor:

  • O Funambol apresenta problemas caso seja instalado na versão 8.3 do PostgreSQL, tendo que ser instalado em versões anteriores. Caso seja realmente necessário instalar na versão 8.3 deve executar as seguintes linhas dentro do banco para deixá-lo compatível:
    create function pg_catalog.text(integer) returns text strict immutable language sql as 'select textin(int4out($1));';
    create cast (integer as text) with function pg_catalog.text(integer) as implicit;
    create function pg_catalog.text(bigint) returns text strict immutable language sql as 'select textin(int8out($1));';
    create cast (bigint as text) with function pg_catalog.text(bigint) as implicit;
    
  • Ambos servidores (PostgreSQL e Funambol) devem estar sincronizados com algum servidor de hora. Caso estejam com horário diferente podem ocorrer problemas;
  • É preciso que os protocolos IMAP e SMTP no servidor Expresso estejam habilitados.

2. Instalação

É necessário compilar o instalador de acordo com o explicado nesse link?, e gerar o arquivo funambol-7.0.6.bin. Além do Funambol são necessários alguns outros arquivos para instalação, que podem ser puxados daqui Download. Copiar então todos os arquivos para uma pasta, como por exemplo /tmp/funambol, que será usada como exemplo neste documento.
Acessar a pasta /tmp/funambol e executar então o arquivo de instalação funambol-7.0.6.bin. Caso não tenha permissão para executar o arquivo execute o comando chmod +x funambol-7.0.6.bin, ficando assim possível executar o arquivo. Lembrar que deve ser executado com algum usuário com perfil de administrador, pois só assim ele poderá fazer a instalação na pasta /opt.
A instalação é dividida em duas partes. A primeira parte da instalação é bem simples, vai aparecer uma tela de com os termos de licença, e por último uma pergunta se concorda com os termos. Digite yes

Do you agree to the above license terms? [yes or no]
yes

Depois aparecerá uma tela perguntando o diretório onde se deseja instalar o Funambol. Por padrão ele instala em /opt. Aperte a tecla Enter para aceitar.

Directory to extract Funambol [/opt] <return to accept>? 

Após a finalização da primeira parte da instalação aparece uma pergunta se deseja iniciar o servidor. Digite no,

Do you want to start the server? [yes or no] 
no

A segunda parte da instalação consiste na configuração do Funambol para criar as suas tabelas no banco de dados. O Funambol consegue trabalhar com 03 bancos de dados, que são o PostgreSQL, MySQL e Hypersonic. Para integrar com o Expresso, precisamos usar o módulo pSync? desenvolvido pela Prognus Software Livre para fazer a sincronia de contatos e agenda. Para o funcionamento desse módulo é necessário um usuário com permissão de escrita no banco de dados, pois ele precisa criar duas colunas nas tabelas do Expresso. Lembrando que o banco do Expresso é PostgreSQL, temos que configurar o Funambol para trabalhar com esse banco.
Para se fazer a cópia dos arquivos, execute o arquivo de cópia:

/tmp/funambol/copia.bsh

Dessa forma já serão copiados os seguintes arquivos:

  • O módulo pSync (funambol-psync-1.0.0.s4j) será copiado para o diretório /opt/Funambol/ds-server/modules;
  • O driver de conexão com o banco de dados ( postgresql.jar) será copiado para os diretórios:
    • /opt/Funambol/tools/jre-1.5.0/jre/lib/ext;
    • /opt/Funambol/tools/tomcat/lib;
    • /opt/Funambol/inbox-listener/lib;
    • /opt/Funambol/pim-listener/lib;
    • /opt/Funambol/ds-server/default/lib;
    • /opt/Funambol/ctp-server/lib;
  • O arquivo XML de configuração de paramêtros do novo autenticador desenvolvido pela TISGM (LdapUserProvisioningOfficer?.xml) será copiado para /opt/Funambol/config/com/funambol/server/security
  • O arquivo de criação do usuário de administração com a senha inicial correta (init_engine.sql) será copiado para /opt/Funambol/ds-server/default/sql/postgresql
  • Como a ferramenta não copia o arquivo JAR (server-framework-7.0.4.jar)com as novas classes desenvolvidas para a pasta do módulo de correio, é feita uma cópia para os diretórios:
    • /opt/Funambol/inbox-listener/lib
    • /opt/Funambol/pim-listener/lib
    • /opt/Funambol/ctp-server/lib
    • /opt/Funambol/tools/tomcat/lib
  • Serão copiados também uns arquivos para melhorar a compatibilidade dos celulares da Motorola V8 e A1200, copiando os arquivos MotorolaA1200in.bsh e MotorolaV8in.bsh para /opt/Funambol/config/com/funambol/server/engine/pipeline/phones-support/bsh e o arquivo 110.1110.MotorolaA1200.xml para /opt/Funambol/config/com/funambol/server/engine/pipeline/input

Caso já exista uma instalação do Funambol num banco de dados do Expresso, e esteja ocorrendo apenas uma migração de servidores ou uma reinstalação, deve-se pular os procedimentos abaixo e ir para o item 2.2 – Configuração dos arquivos – Parte 2

2.1. Configuração dos Arquivos – Parte 1

Acabada a instalação é necessário fazer a configuração, começando pelo o arquivo install.properties, do diretório /opt/Funambol/ds-server. Nesse arquivo estão as informações necessárias de conexão ao banco de dados e de quais módulos devem ser instalados.
Onde está escrito:

	# The DBMS name. One of:
	#   - hypersonic
	#   - postgresql
	#   - mysql
	#
	dbms=hypersonic

Deve-se mudar o dbms para acessar postgresql, ficando desta forma:

	# The DBMS name. One of:
	#   - hypersonic
	#   - postgresql
	#   - mysql
	#
	dbms=postgresql

Deve-se editar as seguintes linhas que estão descomentadas de:

	jdbc.classpath=../tools/hypersonic/lib/hsqldb.jar
	jdbc.driver=org.hsqldb.jdbcDriver
	jdbc.url=jdbc:hsqldb:hsql://localhost/funambol
	jdbc.user=sa
	jdbc.password=

Para:

	jdbc.classpath=/opt/Funambol/tools/tomcat/lib/postgresql.jar
	jdbc.driver=org.postgresql.Driver
	jdbc.url=jdbc:postgresql://<ip do servidor expresso>/<nome do banco do expresso>
	jdbc.user=<usuario do banco do expresso>
	jdbc.password=<senha do banco do expresso>

No final do arquivo temos os módulos que serão instalados:

	#
	# Modules definitions
	#
	modules-to-install=content-provider-7.0.3,email-connector-7.0.6, foundation-7.0.6, phones-support-7.0.4, webdemo-7.0.6

Deve-se adicionar o módulo do pSync (funambol-psync-1.0.0) à lista. Não é preciso colocar a extensão .jar:

	#
	# Modules definitions
	#
	modules-to-install=content-provider-7.0.3,email-connector-7.0.6, foundation-7.0.6, phones-support-7.0.4, webdemo-7.0.6, funambol-psync-1.0.0

Depois de editado e salvo, deve-se ir para o diretório /opt/Funambol/bin e rodar o comando ./install.
Vai então aparecer um texto explicando o que vai ser feito, que praticamente é a criação das tabelas do Funambol no banco de dados. Para cada módulo será perguntado se deseja recriar as tabelas no banco novo. É necessário atentar para duas situações durante a instalação. Caso seja a primeira instalação, basta digitar “y” para dar continuidade a instalação, como mostra o trecho a seguir:

	[echo] Funambol Data Synchronization Server will be installed on the Tomcat 6.0.x application server
	[echo] Undeploying funambol...
	[input] The Funambol Data Synchronization Server installation program can now create the database.
	[input] You can skip this step if you have already a valid database created.
	[input] If you choose 'y' your existing data will be deleted.
	[input] Do you want to recreate the database?
	[input]       (y,n)

Nesse caso todas as tabelas são recriadas. Na primeira instalação como as tabelas ainda não existem, algumas mensagens de erros referente a recriação das tabelas podem aparecer, mas são erros esperados e não influenciam na instalação e funcionamento do Funambol.
Para os passos seguintes é necessário ter o postgresql-client instalado para executar os comandos listados abaixo. Considerar que os comandos estão sendo executados na pasta descompactada do funambol no diretório /tmp/funambol.
É necessário a criação de duas novas triggers para que o módulo pSync consiga atualizar no dispositivo móvel alterações feitas nos contatos e eventos do calendário do Expresso. Para executar esse comando é necessário usar o endereço, o usuário e a senha (os mesmos utilizados na edição do arquivo install.properties). Para criar as triggers executar o comando:

psql -h <endereço do postgres> -U <usuário do postgres> -W -d expresso < triggers.sql

Após executar o comando entrar com a senha. Poderão aparecer os erros de que as triggers não existem, mas é porque elas ainda não foram criadas.
Caso ocorra algum erro referente a inexistência da “language plpgsql”, usar o seguinte comando:

createlang plpgsql -h <endereço do postgres> -U <usuário do postgres> -W -d expresso

Após executar o comando entrar com a senha. Depois de criada a “language plpgsql” e preciso executar o comando pra criação de triggers novamente.
Agora é preciso criar um usuário que fará a correta codificação entre o funambol (UTF-8) e o Expresso (Latin1). Para criar o usuário executar o comando:

psql -h <endereço do postgres> -U <usuário do postgres> -W -d expresso < criausu.sql

Após executar o comando entrar com a senha.
O último passo é habilitar a conexão segura, através de HTTPS. Executar o comando:

/opt/Funambol/tools/jre-1.5.0/jre/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /opt/Funambol/.keystore

Vão aparecer então as perguntas para gerar o certificado começando com:

	Enter keystore password: 

Entrar com o valor de changeit
Depois responder as seguintes perguntas de acordo com o lugar, ou empresa que estiver fazendo a instalação:

	What is your first and last name? 
	  [Unknown]:  
	What is the name of your organizational unit? 
	  [Unknown]:  
	What is the name of your organization? 
	  [Unknown]:   
	What is the name of your City or Locality? 
	  [Unknown]:   
	What is the name of your State or Province? 
	  [Unknown]:   
	What is the two-letter country code for this unit? 
	  [Unknown]:   
	Is CN=, OU=, O=, L=, ST=, C= correct? 
	  [no]:  

	Enter key password for <tomcat> 
        (RETURN if same as keystore password):  changeit 

Para finalizar executar o comando

/opt/Funambol/tools/jre-1.5.0/jre/bin/keytool -export -alias tomcat -file <nome do certificado>.cer

Onde o nome do certificado pode ser qualquer nome.

2.2. Configuração dos Arquivos – Parte 2

Deve-se editar um arquivo para que o servidor Funambol use o usuário do postgres criado. Editar o arquivo /opt/Funambol/config/com/funambol/server/db/db.xml, modificando as linhas:

	<void method="setProperty">
		<string>username</string>
		<string><usuario do banco do expresso></string>
	</void>
	<void method="setProperty">
		<string>password</string>
		<string><senha do banco do expresso></string>
	</void>

Para:

	<void method="setProperty">
		<string>username</string>
		<string>funambol</string>
	</void>
	<void method="setProperty">
		<string>password</string>
		<string>funambol</string>
	</void>

No mesmo arquivo db.xml deve-se editar também as seguintes linhas, caso elas não tenham sido modificadas durante a instalação:

	<void method="setProperty"> 
		<string>url</string> 
		<string>{jdbc-url}</string> 
	</void> 
	<void method="setProperty"> 
		<string>driverClassName</string> 
		<string>{jdbc-driver}</string> 
	</void> 

Para:

	<void method="setProperty"> 
		<string>url</string> 
		<string>jdbc:postgresql://<ip do servidor expresso>/<nome do bd do expresso></string> 
	</void> 
	<void method="setProperty"> 
		<string>driverClassName</string> 
		<string>org.postgresql.Driver</string> 
	</void> 

No mesmo arquivo db.xml deve-se adicionar também as seguinte linhas para manter a conexão do Funambol com o banco do Expresso ativa:

	<void method="setProperty"> 
		<string>testWhileIdle</string> 
		<string>true</string> 
	</void> 
	<void method="setProperty"> 
		<string>timeBetweenEvictionRunsMillis</string> 
		<string>600000</string> 
	</void> 
	<void method="setProperty"> 
		<string>numTestsPerEvictionRun</string> 
		<string>5</string> 
	</void> 
	<void method="setProperty"> 
		<string>minEvictableIdleTimeMillis</string> 
		<string>1800000</string> 
	</void> 
	<void method="setProperty"> 
		<string>validationQuery</string> 
	    	<string>select 1</string> 
	</void> 
	<void method="setProperty"> 
		<string>testOnBorrow</string> 
		<string>false</string> 
	</void> 
	<void method="setProperty"> 
		<string>removeAbandoned</string> 
		<string>true</string> 
	</void> 
	<void method="setProperty"> 
		<string>logAbandoned</string> 
		<string>true</string> 
	</void>

Para habilitar a conexão segura no Funambol, deve-se editar o arquivo /opt/Funambol/tools/tomcat/conf/server.xml descomentando as seguintes linhas:

	<!-- 
	<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
		maxThreads="150" scheme="https" secure="true" 
           		clientAuth="false" sslProtocol="TLS" /> 
	--> 

Agora é preciso configurar o Funambol para acessar o diretório. Isso é feito editando o arquivo /opt/Funambol/config/com/funambol/server/security/LdapUserProvisioningOfficer.xml. Modifique as seguintes linhas:

   	<void property="ldapIP"> 
		<string><"IP do servidor LDAP"></string> 
	</void> 
        <void property="ldapStartSearchPath">
                <string>dc="raiz do seu LDAP"</string>
        </void>

2.3. Configuração das Permissões e Serviço

É interessante executar o Funambol com um usuário comum, evitando a utilização do root. Para tanto é necessário, primeiramente, criar tal usuário executando o seguinte comando:

# No CentOS/RedHat/Fedora
adduser -d /opt/Funambol/ -g nobody -M -r -s /bin/sh funambol

# Em seguida, modifique as permissões dos arquivos para o novo usuário:
chown -R funambol:nobody /opt/Funambol

Para deixar o ambiente mais elegante, crie um script no /etc/init.d/funambol com o seguinte conteúdo:

#!/bin/bash

echo "$1ing Funambol..."
su - funambol -c "/opt/Funambol/bin/funambol $1"

Aí, para iniciar ou parar o serviço basta rodar o comando;

/etc/init.d/funambol start (para iniciar)
/etc/init.d/funambol stop (para iniciar)

# Caso deseje utilizar o script original, execute:
/opt/Funambol/bin/funambol start (para iniciar)
/opt/Funambol/bin/funambol stop (para parar)

Pode-se verificar se o serviço do Funambol está rodando, digitando ps aux na linha de comando. Devem aparecer 05 processos do java do Funambol rodando. É importante verificar se o Java utilizado é o que vem com o Funambol (/opt/Funambol/tools/jre-1.5.0/jre), para evitar possíveis conflitos de versões diferentes do Java. Caso não seja, configurar o JAVA_HOME para esse diretório. Para configurar, primeiro digite:

echo $JAVA_HOME

Para visualizar qual é o diretório que está sendo utilizado. Caso não seja o diretório desejado, executar

export JAVA_HOME = /opt/Funambol/tools/jre-1.5.0/jre

Assim finaliza-se a instalação, sendo agora necessário fazer a configuração do servidor.

2.4 Configuração do Servidor via Administração

Para abrir a interface de administração é necessário executar o próximo comando a partir de um servidor ou estação com interface gráfica. Pode-se fazer o download apenas da interface de administração, o  Funambol Admin Tool. Supondo que o arquivo foi descompactado na pasta /tmp, execute:

/tmp/funambol/admin/bin/funamboladmin

# Caso esteja acessando do próprio servidor Funambol, execute:
/opt/Funambol/admin/bin/funamboladmin


Figura 1 – Tela inicial da ferramenta de administração do Funambol

Dar um duplo clique em Funambol Administration Tool para se conectar ao servidor Funambol. Caso esteja acessando do próprio servidor, basta clicar em login. A senha padrão, que deve ser modificada, é “sa” (sem as aspas). Caso esteja executando de um outro lugar, colocar o endereço do servidor em Hostname/IP.


Figura 2 – Tela de login da ferramenta de administração do Funambol


Figura 3 – Configurações do Funambol

A figura 3 mostra as configurações do servidor, deixar todas com a configuração padrão. Em Engine, na linha Officer, onde está escrito com/funambol/server/security/UserProvisioningOfficer.xml deve ser modificado para com/funambol/server/security/LdapUserProvisioningOfficer.xml Para mostrar os usuários existentes, acesse o item Users (figura 4). Clicar em Search para mostrar os usuários existentes. Como medida de segurança recomenda-se trocar a senha do admin.


Figura 4 – Configuração de usuários

Os usuários serão adicionados de forma automática, a medida que tentarem se autenticar do dispositivo. Clicando em Edit serão abertas a propriedades de cada usuário para edição, mas a princípio essa edição não será necessária, uma vez que os campos são atualizados de forma automática.


Figura 5 – Adicionando ou editando um usuário

Agora será feita a configuração de acesso ao Expresso. É preciso que essa parte esteja corretamente configurada para que a adição de usuários funcione de forma correta. Dar um duplo clique em FunambolEmailConnector para abrir as opções de configuração do email. Em Public Mail Server, clicar em Add, aparecendo então a tela de configuração, conforme figura 7. Deve-se preencher os valores de acordo com as especificações do servidor de correio. Atentar para o fato de que o nome do servidor em Description deve ser expresso, escrito dessa forma com todas as letras em caixa baixa. E também o servidor deve usar SSL, marcando as opções SSL outgoing e SSL incoming, bem como marcar a caixa onde está escrito auth.


Figura 6 – Configuração do acesso ao Expresso


Figura 7 – Dados do Expresso a serem preenchidos.

Attachments