FreeBSD + Diablo JDK + MySQL + Openfire
Autor: Alvaro | Publicado: 2011-05-05T09:18:00-07:00

 Servidor de CHAT 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Nesta documentação apresentaremos de forma simples e clara como disponibilizar um servidor de conferencia com Openfire. 

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Para esse projeto foi instalado o sistema operacional FreeBSD 8.2 e configurados o Diablo JDK, MYSQL e Openfire.

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FREEBSD

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; O FreeBSD é um sistema operacional livre do tipo Unix descendente do BSD desenvolvido pela Universidade de Berkeley. Está disponível para as plataformas Intel x86, DEC Alpha, Sparc, PowerPC e PC98 assim como para as arquiteturas baseadas em processadores de 64bits IA-64 e AMD64. Considerado como robusto e estável, geralmente é utilizado em servidores, mas também pode ser utilizado como estação de trabalho.
www.freebsd.org/
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MySQL

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface. O MySQL foi criado na Suécia por dois suecos e um finlandês: David Axmark, Allan Larsson e Michael "Monty" Widenius.
www.mysql.com/

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DIABLO JDK

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; A Fundação FreeBSD tem uma licença com a Sun Microsystems para distribuir binários FreeBSD para o Java Runtime Environment (JRE) e o Java Development Kit (JDK). Essas implementações foram viabilizados através do trabalho duro da equipe Java FreeBSD, bem como através de doações para a Fundação FreeBSD que apoiaram hardware, custos de desenvolvimento, e honorários legais.
O JRE oficiais e os binários do JDK baseada em fontes mais recentes da Sun parceiro fornecer aos usuários finais e desenvolvedores com a confiança de que eles podem usar e criar aplicações Java no FreeBSD com o mesmo grau de portabilidade, robustez e estabilidade que têm vindo a esperar do outro suporte sistemas operacionais. Estes binários foram totalmente testadas em teste de compatibilidade da Sun suite.
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Por favor, considere uma doação para a Fundação FreeBSD para apoiar a continuação do desenvolvimento Java. Suas doações ajudarão a atualizações de manutenção do fundo, as futuras versões do Java, e atualizações para novas versões do FreeBSD.
www.freebsdfoundation.org/downloads/java.shtml

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; OPENFIRE

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Openfire é um servidor que utiliza o protocolo Jabber para oferecer serviços de mensagens instantâneas aos usuários. O software é gratuito e, além da simples troca de mensagens de texto, permite conversas por voz, conferências, envio de arquivos e até a troca de screenshots (imagens da área de trabalho) — tirados em tempo real — entre os participantes das sessões.
www.igniterealtime.org/projects/openfire/index.jsp


1- Instalando o Diablo JDK

Para instalar o Diablo JDK é necessário baixar determinados arquivos manualmente, devido a restrições de licenciamento. Realize o download dos arquivos a seguir:

http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-src-b05-jrl-24_sep_2007.jar
http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-bin-b05-jrl-24_sep_2007.jar
http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-mozilla_headers-b05-unix-24_sep_2007.jar
http://www.FreeBSDFoundation.org/cgi-bin/download?download=diablo-caffe-freebsd7-amd64-1.6.0_07-b02.tar.bz2
Depois acesse o site “http://java.sun.com/javase/downloads/index.jsp” e baixe:

JDK DST Timezone Update Tool - 1.3.35
Depois acesse o site “http://www.eyesbeyond.com/freebsddom/java/jdk16.html” e baixe:

bsd-jdk16-patches-4.tar.bz2
Salve todos os arquivos baixados no “/usr/ports/distfiles”

Agora acesse o diretório:

# cd /usr/ports/java/jdk16
Configure as opções de compilação do Diablo JDK 1.6 com o comando:

# make config
Marque as opções apropriadas para sua necessidade no jdk 1.6.0.3p4_22:
[ ] DEBUG&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  Enable debugging support
[ ] IPV6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  Enable IPv6 support
[X] WEB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  Enable the browser plugin and Java Web Start
[ ] POLICY&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  Install the Unlimited Strength Policy Files
[X] TZUPDATE&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  Update the time zone data&nbsp; 
[ ] JAIL&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;   Port is being built within a jail
Execute o comando de compilação e instalação do Diablo JDK:
# make install clean
Marque as opções apropriadas para sua necessidade no libiconv 1.13.1_1:
[X] EXTRA_ENCODINGS&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Include extra character sets
[ ] EXTRA_PATCHES&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Apply patches to fix CP932, add EUCJP-MS
Marque as opções apropriadas para sua necessidade no libxslt 1.1.26_2:
[ ] MEM_DEBUG&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  Enable memory debugging&nbsp; 
[X] CRYPTO&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  Enable crypto support for exslt
Marque as opções apropriadas para sua necessidade no python27 2.7.1_1:
[X] THREADS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Enable thread support
[ ] HUGE_STACK_SIZE&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Use a larger thread stack
[ ] SEM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Use POSIX semaphores (experimental) 
[ ] PTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Use GNU Pth for threading/multiprocessing
[X] UCS4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Use UCS4 for unicode support&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
[X] PYMALLOC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Use python's internal malloc
[ ] IPV6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Enable IPv6 support
[ ] FPECTL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; Enable floating point exception handling
Marque as opções apropriadas para sua necessidade no perl 5.10.1_3:
[ ] DEBUGGING&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  Build with debugging support
[ ] GDBM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  Build GDBM_File extension
[X] PERL_MALLOC&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  Use Perl malloc
[X] PERL_64BITINT&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  Use 64 bit integers (on i386)
[ ] THREADS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  Build threaded perl
[ ] MULTIPLICITY&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;    Use multiplicity
[ ] SUIDPERL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  Build set-user-id suidperl binary
[ ] SITECUSTOMIZE&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;   Run-time customization of @INC
[X] USE_PERL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;   Rewrite links in /usr/bin
Marque as opções apropriadas para sua necessidade no m4 1.4.16,1:
[ ] LIBSIGSEGV&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;    Use libsigsegv for better diagnostics
Marque as opções apropriadas para sua necessidade no cups-client 1.4.6:
[X] GNUTLS&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;    Build with GNUTLS library
Marque as opções apropriadas para sua necessidade no diablo-jdk 1.6.0.07.02_13:
[ ] POLICY&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;    Install the Unlimited Strength Policy Files
[X] TZUPDATE&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;    Update the time zone data
Marque as opções apropriadas para sua necessidade no glib 2.26.1_1:
[ ] COLLATION_FIX&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;   fix string collation
Marque as opções apropriadas para sua necessidade no gamin 0.1.10_4:
[ ] GAM_POLLER&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;    Use gamin's poller instead of kqueue's
2- Instalando o MySQL

Para instalar o MySQL acesse o diretório:

# cd /usr/ports/databases/mysql55-server/
Configure as opções de compilação do MySQL 5.5 com o comando: 

# make config
Marque as opções apropriadas para sua necessidade no mysql-server 5.5.11:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
[X] OPENSSL&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;     Enable SSL support
[ ] FASTMTX&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;   Replace mutexes with spinlocks
Execute o comando de compilação e instalação do MySQL 5.5:
# make install clean
Marque as opções apropriadas para sua necessidade no mysql-client 5.5.11: 
[X] OPENSSL&nbsp;               Enable SSL support
[ ] FASTMTX&nbsp;               Replace mutexes with spinlocks
Depois de instado o MySQL, vamos habilitar para o que ele inicialize quando o FreeBSD for reiniciado. Editar o arquivo “rc.conf”:

# ee /etc/rc.conf
Adicionando ao final do arquivo as linhas abaixo, depois salve o arquivo e saia:

#MySQL
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql_enable="YES"
Agora vamos iniciar o MySQL com o seguinte comando:

# /usr/local/etc/rc.d/mysql-server start
# rehash
Agora vamos realizar as alterações necessárias no MySQL. Primeiro alterar senha de root:

# mysqladmin -uroot password “senha” (sem aspas)
Agora reiniciar o MySQL:

# /usr/local/etc/rc.d/mysql-server restart
3- Instalando o Openfire

Para instalar o Openfire acesse o diretório:

# cd /usr/ports/net-im/openfire
Execute o comando de compilação e instalação do Openfire:

# make install clean
Depois de realizado a instalação, vamos habilitar para o Openfire inicializar quando o FreeBSD for reiniciado. Editar o arquivo “rc.conf”.

# ee /etc/rc.conf
Adicionando ao final do arquivo as linhas abaixo, depois salve o arquivo e saia.

# Openfire
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openfire_enable="YES"
Antes de iniciar o Openfire vamos aumentar a memória Java alocada para o mesmo. Acesse o arquivo /usr/local/etc/rc.d/openfire:

# ee /usr/local/etc/rc.d/openfire
Localize a seguinte linha:

: ${openfire_javargs:='-Xmx256M'}
Altere para:

: ${openfire_javargs:='-Xms256M -Xmx1024M'}
Explicando:

-Xms256M: Mínimo de memória alocada;
-Xmx1024M: Máximo de memória alocada.
Agora vamos iniciar o Openfire com o seguinte comando:

# /usr/local/etc/rc.d/openfire start
# rehash
Vamos agora testar o Openfire. Use um browser para conectar a:

# http://"ip_do_servidor":9090
Se tudo estiver certo será exibido à página “Welcome to Setup”.

4- Configurando o MySQL 

Agora iremos acessar o MySQL e criar a base de dados para o Openfire:

# mysql -u root -p
mysql&gt; CREATE DATABASE openfire;
mysql&gt; GRANT ALL PRIVILEGES ON openfire.* TO openfire@localhost IDENTIFIED BY “senha”; (Digite a Senha entre as aspas”)
mysql&gt; QUIT
Explicando: (1)

Na primeira linha estamos criando um banco de dados com o nome "openfire", que será utilizado pelo servidor Openfire.
Na segunda linha estamos dando para o usuário "openfire" todos os privilégios neste banco de dados e estamos definindo para ele uma senha denominada "senha".
Na terceira linha estamos saindo do banco de dados.
Importe o arquivo do esquema a partir do diretório /resources/database/ na pasta que o Openfire está intalado: 

# cat /usr/local/share/java/openfire/resources/database/openfire_mysql.sql | mysql -u root -p openfire
A base de dados já está criada e configurada para utiliza-la na configuração do Openfire.



5- Configurando o Openfire

Agora iremos acessar, via browser, a console de Administração do Openfire para configurar nosso servidor

# http://"ip_do_servidor":9090

1)&nbsp;&nbsp;&nbsp; Selecione o idioma de sua escolha:


2)&nbsp;&nbsp;&nbsp; Configure o domínio. Se você optar por um endereço IP, digite o IP do seu servidor. Se você optar por criar um alias de DNS, digite o domínio do servidor DNS: (2)

3)&nbsp;&nbsp;&nbsp; Você tem duas escolhas sobre qual banco de dados a ser usado  para Openfire para armazenar seus dados: um banco de dados externos,  como MySQL, MSSQL, PostgreSQL, etc, ou usar o pacote do banco de dados  incorporado (Embedded Database). Se você optou por configurar um banco  de dados MySQL, como fizemos neste guia, selecione a opção Standard  Database Connection. Se não, a única opção é usar o banco de dados  incorporado. (2)


4)&nbsp;&nbsp;&nbsp; Para configurar sua conexão com  banco de dados, selecionar o driver apropriado da lista de Database  Presets Driver (em nosso caso selecione MySQL). A página será atualizada  e você precisa preencher as informações necessárias (o host do banco de  dados, nome, nome de usuário e senha). Você deve ter essa informação de  quando você configurar o seu banco de dados MySQL. Por este guia, o  MySQL é no mesmo servidor como a minha instalação Openfire (localhost) e  criei um banco de dados chamado “openfire” com um nome de usuário  “openfire” e defini uma senha. (2)



5)&nbsp;&nbsp;&nbsp; A  etapa perfil tem a ver com os usuários e grupos de bate-papo membros e  onde Openfire irá armazenar as informações (novos usuários, grupos de  usuários, etc). Nós não vamos optar por LDAP para armazenar essas  informações. É muito mais conveniente para salvá-lo em nosso em nosso  banco de dados. Selecione a opção “Default” para o Profile:&nbsp;&nbsp;&nbsp; &nbsp;(2)



6)&nbsp;&nbsp;&nbsp; Digite o endereço de e-mail do administrador e defina uma senha para seu servidor Openfire.
&nbsp; 
7)&nbsp;&nbsp;&nbsp; A configuração esta completa! Clique em “Login to admin console”:



8)&nbsp;&nbsp;&nbsp; Agora iremos acessar, via browser, a console de Administração do Openfire




6- Referências

(1) http://www.vivaolinux.com.br/artigo/Servidor-Jabber-com-Openfire-+-MySQL-+-Debian-Lenny?pagina=2
(2) http://www.tonybhimani.com/2007/12/31/openfire-jabberxmpp-server-on-centos-mini-howto/
www.fug.com.br
www.bsdux.com.br
http://www.remontti.com.br/blog/archives/648
http://dev.mysql.com/doc/refman/5.5/en/freebsd.html
http://www.fug.com.br/content/view/360/77/
http://openfirebrasil.blogspot.com/
http://community.igniterealtime.org/thread/28484
http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/database.html
http://mistura.wordpress.com/2008/06/25/instalando-o-openfire-no-debian-etch/
http://www.sistemabasico.com.br/2010/12/28/tutorial-integrando-o-servidor-de-mensagens-instantaneas-openfire-com-mysql-no-windows-7/
http://www.rafaelmatias.com.br/2011/03/20/instalando-openfire-jabber-com-mysql-no-ubuntu-e-autenticando-no-ad/
http://ubuntuforums.org/showthread.php?t=525670
http://community.igniterealtime.org/thread/28325
http://community.igniterealtime.org/docs/DOC-1633
http://community.igniterealtime.org/blogs/ignite/2008/07/26/flash-based-audio-and-video-in-spark-sparkweb-and-openfire
http://www.igniterealtime.org/projects/openfire/plugins-beta/red5/readme.html
http://www.igniterealtime.org/projects/openfire/plugins-beta/red5/changelog.html