= Instalação do Servidor = [[PageOutline]] == 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 [wiki:funambol_desenvolvimento 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 [attachment:arq_funambol.tar.gz daqui]. Copiar então todos os arquivos para uma pasta, como por exemplo /tmp/funambol, que será usada como exemplo neste documento.[[BR]] 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.[[BR]] 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] ? }}} 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 [wiki:psync 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.[[br]] 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:[[br]] * 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 ([http://jdbc.postgresql.org/download.html 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.[[br]] 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:/// jdbc.user= jdbc.password= }}} 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''.[[br]] 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.[[br]] 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.[[br]] É 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 -U -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. [[br]] Caso ocorra algum erro referente a inexistência da “language plpgsql”, usar o seguinte comando: {{{ createlang plpgsql -h -U -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.[[br]] 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 -U -W -d expresso < criausu.sql }}} Após executar o comando entrar com a senha.[[br]] 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''[[br]] 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 (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 .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: {{{ username password }}} Para: {{{ username funambol password funambol }}} No mesmo arquivo db.xml deve-se editar também as seguintes linhas, caso elas não tenham sido modificadas durante a instalação: {{{ url {jdbc-url} driverClassName {jdbc-driver} }}} Para: {{{ url jdbc:postgresql:/// driverClassName org.postgresql.Driver }}} 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: {{{ testWhileIdle true timeBetweenEvictionRunsMillis 600000 numTestsPerEvictionRun 5 minEvictableIdleTimeMillis 1800000 validationQuery select 1 testOnBorrow false removeAbandoned true logAbandoned true }}} Para habilitar a conexão segura no Funambol, deve-se editar o arquivo /opt/Funambol/tools/tomcat/conf/server.xml descomentando as seguintes linhas: {{{ }}} 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: {{{ <"IP do servidor LDAP"> dc="raiz do seu LDAP" }}} === 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 [https://www.forge.funambol.org/download/ 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 }}} [[Image(figura1.jpg)]][[br]] Figura 1 – Tela inicial da ferramenta de administração do Funambol[[br]][[br]] 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. [[Image(figura2.jpg)]][[br]] Figura 2 – Tela de login da ferramenta de administração do Funambol[[br]][[br]] [[Image(figura3.jpg)]][[br]] Figura 3 – Configurações do Funambol[[br]][[br]] 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. [[Image(figura4.jpg)]][[br]] Figura 4 – Configuração de usuários[[br]][[br]] 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. [[Image(figura5.jpg)]][[br]] Figura 5 – Adicionando ou editando um usuário[[br]][[br]] 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. [[Image(figura6.jpg)]][[br]] Figura 6 – Configuração do acesso ao Expresso[[br]][[br]] [[Image(figura1.jpg)]][[br]] Figura 7 – Dados do Expresso a serem preenchidos.[[br]][[br]]