Tutorial: Instalando o Oracle Weblogic Server 11g

Neste tutorial, vou compartilhar o meu procedimento de instalação do servidor de aplicação Oracle Weblogic versão 11g em um ambiente Linux – Red Hat Enterprise Linux 5.7 64 bits para ser mais exato.

Este procedimento é a minha abordagem sobre as instruções no guia de instalação oficial, disponível em http://docs.oracle.com/cd/E21764_01/doc.1111/e14142/toc.htm.

Pré-instalação

Antes de iniciar a instalação do Weblogic, é necessário fazer download dos pacotes de instalação, criar um usuário e um grupo de sistema para a instalação e configurar um ambiente gráfico para este usuário.

Passo 1: Download dos pacotes de instalação

Fazer o download dos pacotes de instalação no site http://edelivery.oracle.com. É necessário ter uma conta na Oracle para poder acessar este site.

  1. No campo Select a Product Pack selecione a opção Oracle Fusion Middleware
  2. No campo Platform selecione a arquitetura do seu sistema operacional, este caso Linux x86-64
  3. Clique em Go
  4. Na lista apresentada, selecione a opção Oracle Fusion Middleware 11g Media Pack for Linux x86-64
  5. Clique em Continue

Faça o download dos seguintes pacotes:

  • Oracle JRockit JDK R28.1.3 for Java SE 6 with JRockit Mission Control 4.0.1 for Linux x86-64
  • Oracle WebLogic Server 11gR1 (10.3.5) Generic and Coherence

O download pode demorar um pouco. Aguarde pacientemente.

Passo 2: Usuário e grupo da instalação

A instalação do Weblogic precisa de um usuário e grupo específico. Este usuário e grupo permitem um nível de isolamento adequado em termos de sistema operacional, permitindo-nos limitar os recursos dos processos deste usuário, proteger os arquivos de instalação e por aí vai.

Para criar um usuário e grupo, vou usar o programa groupadd e useradd, disponíveis na minha instalação:

# groupadd weblogic
# useradd -r -g weblogic weblogic
# passwd weblogic

O comando acima criará um usuário de sistema (um usuário com UID abaixo da faixa dos usuários normais) e definirá o grupo principal deste usuário como o grupo weblogic. Não se esqueça de definir uma senha forte para este usuário.

Para validar a criação do seu usuário, inicie uma sessão via terminal com este usuário e verifique se o seu prompt está saudável e se o seu diretório está acessível e protegido (700).

Passo 3: Diretório Oracle Middleware Home

Os produtos do Oracle Fusion Middleware são instalados a partir de um diretório específico. Este diretório é essencial e é referenciado como Oracle Middleware Home. Particularmente, eu não gosto de tomar decisões (rsrs), mas nesse caso não tem jeito, você vai ter de decidir qual diretório usar. Em todas as instalações de Weblogic que fiz eu sempre utilizei o diretório home do usuário weblogic como base e então o diretório padrão que o instalador usa:

/home/weblogic/Oracle/Middleware

Vamos usar este diretório.

Passo 4: Configurar um ambiente gráfico

A maioria dos instaladores do Oracle Fusion Middleware se sentem mais confortáveis em ambientes gráficos. Embora seja possível instalar alguns componentes em um modo silencioso (usando apenas o shell e um arquivo de log), particularmente acho mais simples configurar um ambiente gráfico e utilizar todos os instaladores da mesma maneira, além de ser mais simples e rápido usar a instalação em modo gráfico, neste caso.

Como estamos em um ambiente Linux, vamos configurar um ambiente X para permitir a criação de sessões X remotas, usando o nosso usuário weblogic. Você pode configurar o ambiente X da maneira que preferir, eu utilizo o VNC Server – que “vem junto” com o RHEL, usando o comando vncserver, com o usuário weblogic. Este comando vai te dar uma saída parecida com isso:

New 'hades:2 (weblogic)' desktop is hades:2

Creating default startup script /home/weblogic/.vnc/xstartup
Starting applications specified in /home/weblogic/.vnc/xstartup
Log file is /home/weblogic/.vnc/hades:2.log

Na primeira execução do comando acima com um usuário, será necessário definir uma senha para estas sessões X, particularmente weu utilizo a mesma senha do usuário, tendo em vista que esta senha é armazenada com um hash em um arquivo protegido no diretório home (.vnc/passwd).

Pronto, agora é possível utilizar qualquer cliente de VNC para iniciar uma sessão X no servidor. Vamos usar estas sessões para instalar o Weblogic 11g.

Passo 5: Instalação do JRockit

Calma, já vamos chegar na instalação do Weblogic. O Weblogic é um servidor de aplicação J2EE e obviamente, precisa de uma máquina virtual Java para executar as aplicações. Para melhorar um pouco a sua vida, a Oracle criou uma JVM mais “legal” chamada JRockit. A Oracle recomenda a utilização desta JVM, por questões de segurança, desempenho e ainda por ter alguns recursos bem legais.

No passo 1 fizemos o download do pacote de instalação. A instalação é bem simples, basta iniciar uma sessão X remotamente (ou no próprio servidor), descompactar o pacote de instalação, alterar o modo de acesso do arquivo de instalação (permitindo sua execução) e finalmente executando-o:

$ whoami
weblogic
$ pwd
/home/weblogic/downloads
$ unzip V26144-01.zip
$ chmod a+x jrockit-jdk1.6.0_24-R28.1.3-4.0.1-linux-x64.bin
$ ./jrockit-jdk1.6.0_24-R28.1.3-4.0.1-linux-x64.bin

Na primeira tela, apenas clique em Next para iniciar a instalação:

Na segunda tela é possível configurar o diretório onde o JRockit será instalado, vamos usar o diretório padrão, clique em Next:

Na terceira tela, deixa as opções como estão (nenhum opção selecionada), clique em Next:

Finalmente a instalação vai começar e terminar bem rápido. Se tudo der certo, apenas clique em Done na sexta e última tela:

O JRockit está instalado. Para terminar com estilo. Vamos definir a variável de ambiente JAVA_HOME para o diretório definido há pouco e adicionar o diretório bin do JRockit na variável de ambiente PATH. Para fazer tudo isso, basta adicionar as linhas abaixo no arquivo de login do usuário weblogic, neste caso o arquivo /home/weblogic/.bash_profile:

# JRockit environment
JAVA_HOME=$HOME/jrockit-jdk1.6.0_24-R28.1.3-4.0.1
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH

Pronto, o JRockit está instalado e pronto para ser utilizado.

Instalação

A instalação do Weblogic pode ser feita em vários “sabores”:

  • Pacote específico do seu sistema operacional
  • Pacote genérico
  • Arquivos binários para Linux e Windows

Neste tutorial, vou utilizar o pacote genérico, por que eu prefiro e por que é o que temos (fizemos download no passo 1). Você pode usar outro tipo de pacote se preferir.

Para iniciar a instalação usando o pacote genérico, basta executar o arquivo .jar, utilizando o java da instalação do JRockit:

$ which java
/usr/bin/java

Opa! Temos um problema aqui. Como já existia uma instalação de um JVM no servidor e o diretório de instalação dessa JVM está definido primeiro na variável de ambiente PATH, nosso ambiente está usando o java desta instalação e não do JRockit. Não vamos quebrar a cabeça com isso agora, vamos apenas executar o java do JRockit, usando o path completo:

$ pwd
/home/weblogic/downloads
$ ../jrockit-jdk1.6.0_24-R28.1.3-4.0.1/bin/java -jar wls1035_generic.jar

Este comando é suficiente para iniciar a instalação em modo gráfico do Weblogic – finalmente.

A primeira tela é apenas uma mensagem de boas vindas, clique em Next:

A próxima tela é muito importante. Lembra sobre o diretório Oracle Middleware Home que comentei no passo 2 da seção de pré-instalação? Vamos usar o diretório /home/weblogic/Oracle/Middleware:

A próxima tela permite que você associe uma conta da Oracle com esta instalação. Particularmente eu pulo esta parte. Concorde com os avisos e clique em Next:

Na próxima tela, selecione a instalação Typical e clique em Next:

A próxima tela também é muito importante. Confirme que a instalação utilizará a JVM JRockit que instalamos no passo 5 da seção de pré-instalação. Para confirmar, basta observar o caminho e versão do JRockit. Caso nenhuma instalação seja apresentada, clique em Browse e navegue até o diretório de instalação do JRockit. Clique em Next:

A tela seguinte apenas vai confirmar os diretório dos produtos do Oracle Fusion Middleware que estamos instalando: o Weblogic e o Coherence. Pense no Coherence como a amiga chata de uma garota bonita, que não vai te atrapalhar, por enquanto. Também não vamos alterar nenhum destes diretórios:

Estamos quase lá. A próxima tela vai apresentar um resumo da instalação. Apenas confirme e clique em Next:

Finalmente a instalação vai começar. Deixe-a livre, leve e solta e aguarde até terminar, não vai demorar muito.

Se tudo der certo, apenas clique em Done na última tela:

Pronto, o Weblogic está instalado. Agora só falta criar um domínio e iniciar o servidor de administração :)

Pós-instalação

Após a instalação do Weblogic, temos de criar um domínio e iniciar o servidor de administração. Se você é preguiçoso como eu sou, não vai ter jeito, você vai ter de entender alguns conceitos básicos sobre a arquitetura do Weblogic, principalmente o que é um domínio e o que são managed servers. Como este artigo é um tutorial, vá tomar um café enquanto aprende alguns conceitos básicos disponíveis em http://docs.oracle.com/cd/E21764_01/core.1111/e10103/terminology.htm#BGBJIJAE.

Em linhas gerais, um domínio é um contexto lógico para managed servers, que são componentes java que oferecem algum tipo de recurso, como uma aplicação Java, um web service ou algo do tipo. Para continuar, é essencial que você entenda o que é um domínio e o que são managed servers. O principal managed server do Weblogic é o AdminServer, que é uma aplicação Java para administrar o Weblogic.

Primeiro, vamos criar um domínio. Este pode ser um domínio de teste ou um domínio para o Oracle Portal, ou um domínio para deploy de suas aplicações Java em desenvolvimento. O guia oficial da Oracle para a criação de domínios do Weblogic está disponível em http://docs.oracle.com/cd/E21764_01/web.1111/e14140/newdom.htm#WLDCW111.

Antes de iniciar a criação do domínio, a Oracle recomenda definir a variável de ambiente CONFIG_JVM_ARGS com o valor -Djava.security.egd=file:/dev/./urandom. Isso vai deixar o processo “mais rápido”.

$ export CONFIG_JVM_ARGS="-Djava.security.egd=file:/dev/./urandom"

A criação de um domínio no Weblogic também pode ser feita através de um Configuration Wizard. Para iniciar a instalação em modo gráfico, navegue até o diretório WL_HOME… ahhh… não temos uma variável de ambiente WL_HOME, tudo bem, vamos criar agora, modificando as últimas linhas do arquivo /home/weblogic/.bash_profile:

# JRockit environment
JAVA_HOME=$HOME/jrockit-jdk1.6.0_24-R28.1.3-4.0.1
PATH=$PATH:$JAVA_HOME/bin

# Weblogic environment
WL_HOME=$HOME/Oracle/Middleware/wlserver_10.3

export JAVA_HOME PATH WL_HOME

Voltando, vamos navegar até o diretório $WL_HOME/common/bin e executar o arquivo config.sh:

$ cd $WL_HOME/common/bin
$ ./config.sh

Na primeira tela, seleciona a opção Create a new Weblogic domain e clique em Next:

Na tela seguinte, escolhemos a fonte (source) do domínio. Algum dia você pode precisar usar domínios específicos ou templates de domínio, mas não hoje. Mais uma vez, vamos usar o domínio padrão:

Na próxima tela, vamos escolher o nome do nosso domínio. Como não tenho nenhum propósito específico, vou ficar com o nome padrão. Utilize o nome que preferir:

Na tela seguinte, vamos definir um nome de usuário e senha para o usuário do servidor de administração (que é um managed server especial) do Weblogic. Aqui não vai dar para ser preguiçoso com a senha. Deixe o nome de usuário como weblogic e defina uma senha forte (mínimo de 8 caracteres, letras, números e símbolos):

Na próxima tela, vamos configurar como o Weblogic vai iniciar e qual JVM (JDK) ele vai usar. Se você estiver instalando um Weblogic para um ambiente de produção selecione a opção Production Mode, caso contrário, vamos ficar com a padrão, Development mode. Não esqueça de confirmar que a JDK é o JRockit, conforme instalamos no passo 5 da seção de pré-instalação:

Já está cansado de tanta tela? Já está chegando no final. Na tela seguinte, é possível definir configurações adicionais. Mais uma vez vamos simplificar e configurar só o essencial. Não marque nenhuma opção e clique em Next:

Ahhh, finalmente a tela de sumário da configuração. Dê uma olhada e se não estranhar nada, clique em Create:

Se tudo der certo e nada dar errado (rsrs) apenas clique em Done na última tela:

Agora só falta iniciar o servidor! Vamos lá! Infelizmente (na minha opinião) existem várias maneiras de iniciar o Weblogic. Para mais informações sobre todas estas maneiras e algumas outras informações interessantes, visite http://docs.oracle.com/cd/E21764_01/web.1111/e13708/overview.htm#i1070153.

Neste artigo, vou iniciar utilizando um script disponível na instalação do Weblogic, mais especificamente em /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/bin/startWebLogic.sh:

$ pwd
/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain
$ bin/startWebLogic.sh 2>&1 &

Eu sei, o comando acima tá bem estranho. Vou explicar qual é o meu objetivo. Por padrão, o script acima “roda” conectado no terminal e portanto todas as mensagens de inicialização (que são muitas) vão infestar o seu terminal. Além disso, seu terminal ficará “preso” a este processo e não poderá ser utilizado a menos que você pare o servidor Weblogic. O comando acima conecta a saída de erro padrão com a saída padrão (2>&1) e coloca o processo para ser executado em background, desconectado do terminal (&).

Particularmente eu não gosto de alterar scripts “proprietários” como os scripts de inicialização. Dá muito trabalho entender tudo o que ele faz e onde que você pode colocar a mão. Neste caso prefiro decorar um comando com algumas opções a mais – ou então você pode criar um script pessoal que “decora” o comando acima para você.

Depois de alguns minutos, a linha abaixo vai indicar que o servidor está “rodando”:

<Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>

Finalmente, abra seu navegador favorito e digite a URL abaixo para acessar o seu servidor Weblogic fresquinho:

http://hades:7001/console

Conclusão

Neste tutorial, compartilhei meu procedimento de instalação do Oracle Weblogic 11g. Apresentei como criar um usuário e grupo para a instalação, configurar um ambiente gráfico e instalar a JVM JRockit. Depois apresentei todas as telas da instalação do Weblogic e da criação de um domínio de testes. No final, inicializamo o servidor através de um script disponível no diretório de instalação e acessamos o servidor através de um navegador.

Comentários são sempre bem-vindos ;)

Rapidinha: Diretórios HOME no Oracle Fusion Middleware

Neste artigo, vou falar um pouco sobre o que são e como se comportam os diretórios HOME do Oracle Fusion Middleware. Ao contrário da maioria dos conceitos e componentes do Oracle Fusion Middleware, estes diretórios são bem fácil de entender – e também fácil de fazer confusão (rsrs).

Sobre tudo e todos, absoluto, vem o diretório chamado Oracle Middleware Home. Este é apenas um diretório base para todos os produtos do Oracle Fusion Middleware e pode, infelizmente, ser qualquer diretório. Se estiver na dúvida, um bom começo é usar o diretório /Oracle/Middleware. Reforçando:

Oracle Middleware Home é o diretório base para a instalação de todos os componentes do Oracle Fusion Middleware.

Logo abaixo, podemos ter um ou mais diretórios chamados Oracle Home. Estes diretórios são diretórios base para a instalação de um produto específico do Oracle Fusion Middleware, como o Weblogic ou o Coherence ou o SOA Suite. Reforçando:

Oracle Home é um diretório base para a instalação de um componente específico do Oracle Fusion Middleware.

Vou terminar com um exemplo:

/Oracle/Middleware/ (ORACLE MIDDLEWARE HOME)
    wlserver_10.3/  (ORACLE HOME DO WEBLOGIC)
    coherence_3.6/  (ORACLE HOME DO COHERENCE)
    ...             (PODEMOS TER MAIS ORACLE HOMES AQUI)

:)

Tutorial: Configurando os módulos VFS audit e recycle no Samba

No meu primeiro artigo do ano, vou compartilhar o procedimento de configuração dos módulos VFS audit e recycle que permitem registrar cada operação feita sobre os arquivos e criar uma “lixeira” no estilo windows, respectivamente.

Os módulos VFS foram introduzidos na versão 3 do Samba e foram muito bem aceitos pela comunidade. Essencialmente, o Samba passa cada requisição de acesso a um arquivo para os módulos VFS “grudados” em um compartilhamento, permitindo “capturar” informações como qual arquivo está sendo solicitado, qual o tipo de operação, quem está solicitando e muito mais. Isto permitiu o desenvolvimento de módulos plugáveis que podem extender as funcionalidades do Samba.

Neste artigo eu vou apresentar apenas dois módulos VFS que uso em meu ambiente, o audit e o recycle. Para uma lista completa dos módulos existentes, visite http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2650657.

Verificando os módulos VFS instalados

Para verificar se a sua instalação do Samba possui os módulos VFS instalados, execute o comando abaixo e observe a saída:

[bruno@ubuntu samba]# pwd
/usr/local/samba
[bruno@ubuntu samba]# ls -l lib/vfs
total 636
-rwxr-xr-x 1 root root 38932 Jun 2 2011 acl_tdb.so
-rwxr-xr-x 1 root root 34586 Jun 2 2011 acl_xattr.so
-rwxr-xr-x 1 root root 14676 Jun 2 2011 audit.so
-rwxr-xr-x 1 root root 25258 Jun 2 2011 cap.so
-rwxr-xr-x 1 root root 25258 Jun 2 2011 catia.so
...
-rwxr-xr-x 1 root root 14013 Jun 2 2011 readahead.so
-rwxr-xr-x 1 root root 27057 Jun 2 2011 readonly.so
-rwxr-xr-x 1 root root 28886 Jun 2 2011 recycle.so
-rwxr-xr-x 1 root root 29617 Jun 2 2011 scannedonly.so
-rwxr-xr-x 1 root root 38394 Jun 2 2011 shadow_copy2.so
...
[root@hades samba]#

Na saída acima, garanti que os módulos audit (audit.so) e recycle (recycle.so) estão instalados corretamente.

Habilitando os módulos VFS

Para habilitar os módulos VFS, basta utilizar a opção vfs objects dentro de qualquer serviço (share) e os módulos especificados serão carregados para este serviço. Se preferir, pode habilitar um ou mais módulos de forma global (para todos os serviços) especificando a opção vfs objects na seção [global].

A opção vfs objects espera um ou mais nomes de módulos separados por um espaço simples. É importante observar que o Samba respeita a ordem dos módulos definida, passando a requisição primeiro para o primeiro módulo, depois para o segundo e assim por diante. Esta ordem pode ser essencial para conseguir uma configuração específica. Por exemplo:

[audit]
comment = Audited /data directory
path = /data
vfs objects = audit recycle
writeable = yes
browseable = yes

A configuração acima define que o Samba deve passar as requisições primeiro para o módulo audit e depois para o módulo recycle.

Configurando os módulos VFS

A configuração dos módulos no arquivo de configuração utiliza o mesmo modelo opção = valor utilizado no arquivo smb.conf, mas são sempre prefixados com o nome do módulo. Por exemplo:

[global]
vfs objects = audit
audit:facility = LOCAL1
audit:priority = NOTICE

Observe que as opções do módulo audit são prefixadas com o nome do módulo.

Configurando os módulo audit e recycle para um serviço

Agora que sabemos como carregar e configurar os módulos VFS. Vamos colocar este conhecimento em prática, carregando e configurando o módulos audit e recycle para um serviço qualquer. Neste artigo, vou assumir que meu chefe gostaria de registrar todas as operações (auditar) nos arquivos do serviço (compartilhamento) de documentações, bem como criar uma lixeira para recuperar algum arquivo removido por engano.

Antes de carregar e configurar estes módulos, é importante entender como estes módulos funcionam, essencialmente. O módulo audit permite registrar alguns eventos que ocorrem sob um serviço como:

  • Abrir e fechar um serviço
  • Abrir, criar e remover diretórios
  • Abrir, fechar, renomear, remover (unlink) e alterar o modo de acesso (chmod)

Estes eventos podem ser registrados no arquivo de log do Samba ou em uma facility do syslog, que é a opção que eu recomendo. Para mais informações sobre este módulo VFS, visite http://www.samba.org/samba/docs/man/manpages-3/vfs_audit.8.html.

O módulo recycle permite manter uma cópia de todos os arquivos removidos (unlink) de um serviço em um diretório específico, como a clássica lixeira do Windows. Para mais informações sobre este módulo, visite http://www.samba.org/samba/docs/man/manpages-3/vfs_recycle.8.html.

Mãos à obra!

[docs]
comment = Compartilhamento para as documentações dos projetos
path = /docs
vfs objects = audit recycle
writeable = yes
browseable = yes
audit:facility = LOCAL1
audit:priority = NOTICE
recycle:repository = .recycle
recycle:touch = yes

No trecho de arquivo de configuração acima:

  1. Carreguei os módulos VFS audit e recycle, utilizando a opção vfs objects
  2. Configurei o módulo audit para utilizar a facility LOCAL1 do meu sistema de syslog
  3. Configurei o módulo audit para utilizar o nível de prioridade NOTICE do meu sistema de syslog
  4. Configurei o módulo recycle para utilizar um diretório .recycle. Esta é a configuração padrão
  5. Configurei o módulo recycle para alterar a data de modificação dos arquivos da lixeira. Assim é possível saber a data e hora que estes arquivos foram removidos
Pronto, agora basta reiniciar o Samba. Para confirmar que os módulos estão funcionando:
  1. Monitore o arquivo de log (/var/log/local1) e crie, renomei e remova alguns arquivos do serviço configurado
  2. Remove um arquivo do serviço configurado e confirme que uma cópia deste arquivo existe no diretório .recycle, sob o diretório configurado na opção path do serviço
Segue abaixo um exemplo de uma entrada no arquivo de log, escrita pelo módulo audit:
Jan  9 08:17:45 ubuntu smbd_audit: bruno|192.168.1.144|unlink|ok|erp/welcome.pdf

A linha acima contém informações interessantes, como a data e hora da operação, qual o usuário, endereço IP do host, operação, se esta operação “deu certo” ou não e o arquivo que foi criado/removido/alterado/etc.

Configurações adicionais

Que maravilha, você agora tem um registro de alguns eventos sobre os arquivos de seu servidor Samba e também pode se exibir para os usuários do ambiente dizendo que pode recuperar os arquivos que eles removeram magicamente. Isto é suficiente para agradar o seu chefe e ganhar alguns pontos com os usuários. Mas um bom administrador de redes nunca se deixa vencer pelo sucesso (ou por um aumento). Ainda temos trabalho a fazer.

Primeiro, dependendo do tamanho (em número de usuários e operações sobre arquivos) você pode ter, em alguns GBs de arquivos de log em poucos meses.  Mesmo que você tenha muitos e muitos GBs disponíveis para estes arquivos de log, você ainda pode ter problemas quando precisar ler estes arquivos, ou até mesmo analisar estes arquivos com outras ferramentas. Para evitar este problema, vamos pedir a ajuda de nosso super-amigo: o logrotate.

Edite o seu arquivo /etc/logrotate.conf (ou crie um arquivo samba.conf sob o diretório /etc/logrotate.d) com as seguintes linhas:

/var/log/local1.log {
    weekly
    rotate 4
}

As linhas acima configuram o logrotate para manter 1 arquivo de log por semana, durante 4 semanas. Com esta configuração não teremos problemas com arquivos de log monstruosos. Fale com o seu chefe e pergunte quantas semanas (ou meses) ele gostaria de ter registrado, sempre informando dos problemas relacionados (espaço em disco por exemplo).

Tudo pronto? Calma, ainda podemos ter problemas com o tamanho de nossa lixeira, tendo em vista que não será possível clicar com o botão direito nesta lixeira e esvaziar. O módulo recycle não permite definir um tamanho máximo para a lixeira, mas podemos evitar que arquivos muito grandes sejam colocados lá, usando a opção maxsize do módulo recycle. Por exemplo:

[docs]
comment = Compartilhamento para as documentações dos projetos
path = /docs
vfs objects = audit recycle
writeable = yes
browseable = yes
audit:facility = LOCAL1
audit:priority = NOTICE
recycle:repository = .recycle
recycle:touch = yes
recycle:maxsize = 1048576 # Tamanho em bytes

A linha em negrito acima evita que arquivos maiores que 1MB sejam guardados na lixeira. Novamente, converse com o seu chefe e defina qual o tamanho ideal para o seu ambiente.

Conclusão

Neste artigo, compartilhei como carregar e configurar os módulos VFS audit e recycle do Samba. Estes módulos permitem, respectivamente, registrar alterações nos diretórios e arquivos de um serviço e guardar cópias de arquivos removidos em um diretório, no estilo lixeira do Windows. Também apresentei como utilizar o syslog para armazenar estes eventos, como configurar o logrotate para não ter problemas com arquivos de log monstruosos e ainda como limitar o tamanho dos arquivos da lixeira.

Comentários são sempre bem-vindos ;)

Tutorial: Instalando o Samba 3.6.1 no Ubuntu 11.10

Neste tutorial, vou compartilhar o procedimento que uso para instalar o Samba 3.6.1 em um servidor Ubuntu 11.10 a partir do código-fonte. Para mais informações, leia a documentação oficial em http://samba.org/samba/docs/man/Samba-HOWTO-Collection/install.html.

Durante este tutorial, vou deixar os erros naturais acontecerem e, para cada erro, vou explicar qual o motivo e como resolve-lo.

Passo 1: Preparação

Confirme a versão do seu servidor Ubuntu, bem como a arquitetura:

$ less /etc/lsb-release

A saída deve ser algo como:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"

Para verificar a arquitetura:

$ uname -i

A saída do comando deve ser algo como:

i386

Para terminar este passo, crie dois diretórios sob o seu diretório home, para armazenar os pacotes de instalação e o código-fonte a ser compilado. Eu sempre utilizo estes diretórios para armazenar os pacotes de download e os arquivos de código-fonte.

bruno@ubuntu:~$ pwd
/home/bruno
bruno@ubuntu:~$ mkdir downloads softwares
bruno@ubuntu:~$ ls -ltr
total 8
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 softwares
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 downloads
bruno@ubuntu:~$

Passo 2: Instalação do make, gcc e autoconf

Para compilar qualquer software a partir do código-fonte, é necessário um conjunto específico de ferramentas. Antes de prosseguir com a instalação, instale os seguintes pacotes, usando o apt-get:

$ sudo apt-get install gcc
$ sudo apt-get install g++
$ sudo apt-get install make
$ sudo apt-get install autoconf

Passo 3: Download do pacote de instalação

Faça o download do pacote de instalação na página http://samba.org/samba/download/. Selecione o pacote Samba 3.6.1 (gzipped) . Após o download, copie o arquivo para o diretório downloads no seu servidor. Se preferir, você pode fazer o download direto do servidor através do wget:

$ pwd
/home/bruno/downloads
$ wget http://samba.org/samba/ftp/stable/samba-3.6.1.tar.gz

Se você for bem paranóico, pode verificar a integridade do pacote de download usando o md5sum:

$ md5sum samba-3.6.1.tar.gz
5291717be0734e07dc07b6110e162e87  samba-3.6.1.tar.gz

Altere o diretório de trabalho para o diretório softwares e descompacte o pacote de instalação:

$ pwd
/home/bruno
$ cd softwares
$ tar --extract --gzip --verbose --file ../downloads/samba-3.6.1.tar.gz

Passo 5: Configuração

Altere o diretório de trabalho para samba-3.6.1/source3 e execute o comando abaixo:

$ pwd
/home/bruno/softwares/samba-3.6.1/source3
$ ./configure --prefix=/usr/local/samba-3.6.1

O comando acima configura a instalação para o diretório /usr/local/samba-3.6.1. E isto é tudo. Aguarde pacientemente. Se tudo der certo, a última linha da saída do comando de configuração deve ser algo como:

config.status: executing default-1 commands

Passo 6: Compilação

Após o comando de configuração, basta executar o comando de compilação. Normalmente este comando demora um pouco.

$ sudo make

Se tudo der certo, a última linha da saída deve ser algo como:

Linking ../nsswitch/libnss_wins.so.

Passo 7: Instalação

Agora, basta executar o comando abaixo:

$ sudo make install

Se tudo der certo, a última linha da saída deve ser algo como:

==============================================================
MO files for pam_winbind are installed.
==============================================================
==============================================================
All MO files for Samba are installed. You can use "make uninstall"
or "make uninstallmo" to remove them.
==============================================================

Passo 8: Pós-instalação

Beleza, o Samba está instalado. Para finalizar, vamos criar o link simbólico para o diretório de instalação, adicionar o diretório lib do Samba no cache do Vinculador Dinâmico (LDD), criar um arquivo de configuração mínimo e iniciar o samba.

Primeiro, o link simbólico:

$ sudo ln --symbolic /usr/local/samba-3.6.1 /usr/local/samba

Adicione o diretório /usr/local/samba/lib no cache do LDD:

$ sudo echo "/usr/local/samba/lib" > /etc/ld.so.conf.d/samba.conf

Atualize este cache:

$ sudo ldconfig

E confirme se está tudo correto:

$ sudo ldconfig -p |grep samba

Se tudo estiver correto, você verá algumas linhas como:

libwbclient.so (libc6) => /usr/local/samba/lib/libwbclient.so

Para testar, vamos usar um arquivo de configuração mínimo. Por padrão, este arquivo deve se chamar smb.conf e existir dentro do diretório /usr/local/samba. Vamos criá-lo:

$ pwd
/usr/local/samba
$ vim lib/smb.conf

E adicionar apenas as linhas abaixo:

[global]
workgroup    = WORKGROUP
netbios name = UBUNTU

[homes]
comment    = User home directories
browseable = yes
writeable  = yes

Sempre que criar/alterar um arquivo de configuração, utilize o comando abaixo para testar a síntaxe destes arquivo:

$ /usr/local/samba/bin/testparm

Se tudo estiver correto, a saída será algo como:

Load smb config files from /usr/local/samba-3.6.1/lib/smb.conf
Processing section "[homes]"
Processing section "[htdocs]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

Agora é só iniciar o Samba. Esta inicialização é simples mas precisa respeitar uma simples regra: Primeiro inicie o nmbd e depois o smbd. Em resumo, o nmbd é responsável por todas as requisições de resolução e registros de nomes NetBIOS. O smbd é responsável por todas as requisições de acesso À serviços (compartilhamentos). Para mais informações, consulte esta página http://samba.org/samba/docs/man/Samba-HOWTO-Collection/install.html#id2552898

$ sudo /usr/local/samba/sbin/nmbd
$ sudo /usr/local/samba/sbin/smbd

O Samba está instalando e em execução. Agora é hora de adicionar usuários, novos serviços e até mesmo incrementar sua configuração, usando o Samba como um controlador de domínio por exemplo.

Rapidinha: Instalando o Sublime Text 2 no Ubuntu

O Sublime Text 2 é um editor de texto no sabor TextMate. Além de uma interface simples, é altamente configurável e simples de utilizar. Para mais informações, visite este site http://www.sublimetext.com/. Para instalar este cara no Ubuntu é necessário adicionar o seu repositório e instalar com o apt-get:

sudo add-apt-repository ppa:webupd8team/sublime-text-2
sudo apt-get update
sudo apt-get install sublime-text-2

Rapidinha: Organizando suas imagens com md5sum

Nesta rapidinha, vou compartilhar o comando que utilizo para organizar minhas imagens. Este comando é simples e:

  1. “Anda” por todos os arquivos JPG (ou PNG) de um diretório
  2. Para cada um, renomeia o arquivo para o hash MD5 deste arquivo, mais a extensão
Recomendo fazer um backup do diretório antes… O comando é:
$ pwd
/home/bruno/Pictures/Wallpapers
$ for file in *.jpg
> do
> mv $file $(md5sum $file |cut -d " " -f 1).jpg
> done;
Se tiver arquivos PNG, basta alterar o for file in *.jpg por for file in *.png. Depois de executar este comando, você terá todos os arquivos com nomes únicos, mais ou menos assim:
081ae2b19bbe454a6e4e45b07b1b17d4.jpg
322b049b111e6514440855d2a159471d.jpg
34b142789f23ee134a6bf1359ebbe0f4.png
389a08cdbcae80791246dd37df0da2df.png

Dúvidas, críticas e sugestões são bem-vindas.

Tutorial: Instalando o Git 1.7.7 em um servidor Ubuntu 11.10

Neste tutorial, vou compatilhar o meu procedimento de instalação do Git 1.7.7 em um servidor Ubuntu 11.10 (32bits) a partir do código-fonte. Para mais informações, visite a documentação oficial de instalação em http://book.git-scm.com/2_installing_git.html.

Durante este procedimento, vou deixar os erros naturais ocorrerem e em cada caso, vou apresentar a origem do problema e como solucioná-la.

Passo 1: Pré-instalação

Confirme a versão do seu servidor Ubuntu, bem como a arquitetura:

$ less /etc/lsb-release

A saída deve ser algo como:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"

Para verificar a arquitetura:

$ uname -i

A saída do comando deve ser algo como:

i386

Crie dois diretórios sob o seu diretório home, para armazenar os pacotes de instalação e o código-fonte a ser compilado. Eu sempre utilizo estes diretórios para armazenar os pacotes de download e os arquivos de código-fonte.

bruno@ubuntu:~$ pwd
/home/bruno
bruno@ubuntu:~$ mkdir downloads softwares
bruno@ubuntu:~$ ls -ltr
total 8
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 softwares
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 downloads
bruno@ubuntu:~$

Para a instalação, será necessário ter as ferramentas gcc, g++, autoconf e make. Caso você não tenha estes pacotes instalados, é possível instalá-los a partir do apt-get:

$ sudo apt-get install gcc
$ sudo apt-get install g++
$ sudo apt-get install make
$ sudo apt-get install autoconf

Para terminar este passo, faça o download do pacote de instalação Source versão 1.1.7 em http://git-core.googlecode.com/files/git-1.7.7.tar.gz.

$ pwd
/home/bruno/downloads
$ wget http://git-core.googlecode.com/files/git-1.7.7.tar.gz

Passo 2: Configuração

Descompacte o pacote de instalação no diretório softwares:

$ pwd
/home/bruno/softwares
$ tar --extract --gzip --verbose --file ../downloads/git-1.7.7.tar.gz

O pacote de instalação do Git 1.7.7 já vem pré-configurado e portanto não é necessário executar o comando de configure.

Passo 3: Compilação

Executar o comando abaixo:

$ pwd
/home/bruno/softwares/git-1.7.7
$ make prefix=/usr/local/git-1.7.7 all

O primeiro erro será:

git-compat-util.h:168:25: fatal error: openssl/ssl.h: No such file or directory

Este erro indica que a biblioteca OpenSSL não está instalada. A solução, como você pode imaginar, é instalá-la:

$ sudo apt-get install libcurl4-openssl-dev

Compilando de novo:

$ make prefix=/usr/local/git-1.7.7 all

Mais um erro:

http-push.c:14:19: fatal error: expat.h: No such file or directory

Este erro também indica a falta de uma biblioteca, mas dessa vez a biblioteca é a expat:

$ sudo apt-get install libexpat-dev

Compilando de novo:

$ make prefix=/usr/local/git-1.7.7 all

O último erro:

* tclsh failed; using unoptimized loading

Este erro indica um problema relacionado a algo chamado tclsh. Depois de ler o arquivo Makefile, notei que por padrão, o Git tenta instalar um ambiente gráfico (GUI) usando uma ferramenta (ou biblioteca) chamada TCLSH. Como não vamos precisar de uma interface gráfica nesta instalação, basta desativá-la, através de uma opção no comando make:

$ make prefix=/usr/local/git-1.7.7 NO_TCLTK=yes all

Pronto, agora a compilação deve terminar sem mais problemas. A última linha da saída deve ser algo como:

GEN bin-wrappers/test-treap

Passo 4: Instalação

Para instalar, utilize o target install do make, com as mesmas opções:

$ make prefix=/usr/local/git-1.7.7 NO_TCLTK=yes install

A última linha da saída deve ser algo como:

./check_bindir "z$bindir" "z$execdir" "$bindir/git-add"

Beleza, o Git está instalado.

Passo 5: Pós-instalação

Para finalizar a instalação, crie um link simbólico do diretório de instalação, para facilitar a administração e futuras atualizações:

$ pwd
/usr/local
$ sudo ln --symbolic git-1.7.7 git

Pronto! Agora é só testar:

$ pwd
/usr/local/git
$ bin/git version

A saída deve ser algo como:

git version 1.7.7

Conclusão

Neste tutorial, compartilhei o meu procedimento de instalação do Git 1.7.7 em um servidor Ubuntu 11.10 a partir do código-fonte. Também apresentei como desabilitar a instalação de uma interface gráfica a partir da opção NO_TCLSH=yes no comando de compilação.

Dúvidas, sugesões e/ou críticas, é só comentar.

Tutorial: Instalando o PHP 5.3.8 no Ubuntu Server 11.10

Neste tutorial, vou compartilhar o procedimento que uso para instalar o PHP 5.3.8 em um servidor Ubuntu 11.10 a partir do código-fonte. Para mais informações, leia a documentação oficial em http://www.php.net/manual/en/install.unix.apache2.php.

Durante este tutorial, vou deixar os erros naturais acontecerem e, para cada erro, vou explicar qual o motivo e como resolve-lo.

Passo 1: Preparação

Confirme a versão do seu servidor Ubuntu, bem como a arquitetura:

$ less /etc/lsb-release

A saída deve ser algo como:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"

Para verificar a arquitetura:

$ uname -i

A saída do comando deve ser algo como:

i386

Para terminar este passo, crie dois diretórios sob o seu diretório home, para armazenar os pacotes de instalação e o código-fonte a ser compilado. Eu sempre utilizo estes diretórios para armazenar os pacotes de download e os arquivos de código-fonte.

bruno@ubuntu:~$ pwd
/home/bruno
bruno@ubuntu:~$ mkdir downloads softwares
bruno@ubuntu:~$ ls -ltr
total 8
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 softwares
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 downloads
bruno@ubuntu:~$

Passo 2: Instalação do make, gcc e autoconf

Para compilar qualquer software a partir do código-fonte, é necessário um conjunto específico de ferramentas. Antes de prosseguir com a instalação, instale os seguintes pacotes, usando o apt-get:

$ sudo apt-get install gcc
$ sudo apt-get install g++
$ sudo apt-get install make
$ sudo apt-get install autoconf

Passo 3: Download do pacote de instalação

Faça o download do pacote de instalação na página http://www.php.net/downloads.php. Selecione o pacote Complete Source Code e o arquivo php-5.3.8.tar.gz. Após o download, copie o arquivo para o diretório downloads no seu servidor. Se preferir, você pode fazer o download direto do servidor através do wget:

$ pwd
/home/bruno/downloads
$ wget http://br.php.net/get/php-5.3.8.tar.gz/from/this/mirror

Se você for bem paranóico, pode verificar a integridade do pacote de download usando o md5sum:

$ md5sum php-5.3.8.tar.gz
f4ce40d5d156ca66a996dbb8a0e7666a *php-5.3.8.tar.gz

Altere o diretório de trabalho para o diretório softwares e descompacte o pacote de instalação:

$ pwd
/home/bruno
$ cd softwares
$ tar --extract --gzip --verbose --file ../downloads/php-5.3.8.tar.gz

Passo 4: Antes de configurar…

Antes de configurar a instalação, é hora de decidir algumas coisas importantes. Primeiro, eu recomendo sempre instalar o mínimo possível de extensões. Descubra quais extensões a sua instalação realmente precisa e comece com estas. Caso sejam necessárias outras extensões no futuro, você não terá problemas para re-compilar o PHP com essas novas extensões. Em seguida, é necessário definir como o PHP vai trabalhar com o Apache. Apenas para sua informações, o PHP é capaz de funcionar de três formas diferentes:

  1. Como um executável de linha de comando
  2. Como um executável CGI em um servidor HTTP
  3. Como um módulo de um servidor HTTP

Nesta instalação, vou instalar apenas a extensão pdo_mysql e utilizar o PHP como um módulo de um servidot HTTP  - o Apache neste caso. Caso você não tenha o Apache instalado, recomendo instalar a partir deste tutorial em http://brunitto.wordpress.com/2011/10/18/tutorial-instalando-o-apache-2-2-21-no-ubuntu-server-11-10/.

Dica! Se o seu servidor Apache estiver sendo executado, recomendo pará-lo antes de continuar:

$ sudo ps fax |grep http
$ sudo /usr/local/httpd/bin/apachectl stop

Passo 5: Configuração

Altere o diretório de trabalho para php-5.3.8 e execute o comando abaixo:

$ pwd
/home/bruno/softwares/php-5.3.8
$ ./configure --prefix=/usr/local/php-5.3.8 --with-apxs2=/usr/local/httpd/bin/apxs --with-pdo-mysql=mysqlnd --with-config-file-path=/usr/local/php-5.3.8/conf

O comando acima configura a instalação para o diretório /usr/local/php-5.3.8. A opção –with-apxs2 define o programa que será utilizado para gerar o módulo do Apache. A opção –with-pdo-mysql define a instalação da extensão pdo-mysql utilizando o driver nativo, disponível no pacote de instalação. Finalmente, a opção –with-config-file-path define qual o diretório onde o PHP procurará pelo arquivo de configuração php.ini por padrão.

Opa, erro!

configure: error: xml2-config not found. Please check your libxml2 installation.

Este erro é muito claro, precisamos instalar a biblioteca libxml2. No Ubuntu, por padrão, as bibliotecas de desenvolvimento de um pacote tem o sufixo -dev:

$ sudo apt-get install libxml2-dev

Execute o comando configure novamente e aguarde pacientemente. Se tudo der certo, a última linha da saída do comando de configuração deve ser algo como:

Thank you for using PHP.

Passo 6: Compilação

Após o comando de configuração, basta executar o comando de compilação. Normalmente este comando demora um pouco.

$ sudo make

Se tudo der certo, a última linha da saída deve ser algo como:

Don't forget to run 'make test'.

Se você estiver entediado, pode executar o comando acima para ver muitas linhas de saída de testes do PHP, pode ser divertido.

Passo 7: Instalação

Agora, basta executar o comando abaixo:

$ sudo make install

Se tudo der certo, a última linha da saída deve ser algo como:

Installing PDO headers:          /usr/local/php-5.3.8/include/php/ext/pdo/

Passo 8: Pós-instalação

Beleza, o PHP está instalado. Para finalizar com estilo, vamos criar o link simbólico para o diretório de instalação e copiar o arquivo de configuração php.ini.

Primeiro, o link simbólico:

$ sudo ln --symbolic /usr/local/php-5.3.8 /usr/local/php

Depois, criar o diretório conf e copiar o arquivo php.ini-development:

$ sudo mkdir /usr/local/php/conf
$ pwd
/home/bruno/softwares/php-5.3.8
$ sudo cp php.ini-development /usr/local/php/conf/php.ini

Para evitar mensagens de warning do tipo:

Warning: date(): It is not safe to rely on the system’s timezone settings.

Edite o arquivo de configuração (/usr/local/php/conf/php.ini) e defina o valor da opção date.timezone:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
date.timezone = "America/Sao_Paulo"

Para terminar, confirme que a linha abaixo está definida no arquivo de configuração do Apache (/usr/local/httpd/conf/httpd.conf):

LoadModule php5_module        modules/libphp5.so

Para garantir que os arquivos index.php serão carregados por padrão, adicione index.php na linha abaixo:

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

E inclua as linhas abaixo no final deste mesmo arquivo:

PHPIniDir "/usr/local/php/conf"
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Estas linhas definem qual o diretório que o Apache irá tentar carregar o arquivo de configuração – note que é necessário definir apenas o diretório, não o nome do arquivo – e uma regra que define que todos os arquivos .php sejam tratados pelo módulo do PHP.

Dica! Para testar a instalação, crie um arquivo chamado info.php no diretório /usr/local/httpd/htdocs contendo uma única linha:

<?php phpinfo() ?>

Pronto! Agora é só iniciar o Apache:

$ sudo /usr/local/httpd/bin/apachectl start

Conclusão

Neste tutorial, compartilhei o meu procedimento de instalação do PHP 5.3.8 como módulo de um servidor Apache 2.2.21 em um servidor Ubuntu 11.10 a partir do código-fonte. Esta instalação utilizou o PHP como um módulo de um servidor HTTP e utilizou uma única extensão adicional, para a conexão com banco de dados MySQL através do PDO.

Dúvidas, críticas e/ou sugestões, é só comentar.

Tutorial: Instalando o Apache 2.2.21 no Ubuntu Server 11.10

Neste tutorial, vou compartilhar o procedimento que uso para instalar o Apache 2.2.21 em um servidor Ubuntu 11.10 (32bits) a partir do código fonte. Para mais informações, leia a documentação oficial em http://httpd.apache.org/docs/2.2/install.html.

Passo 1: Preparação

Confirme a versão do seu servidor Ubuntu, bem como a arquitetura:

$ less /etc/lsb-release

A saída deve ser algo como:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"

Para verificar a arquitetura:

$ uname -i

A saída do comando deve ser algo como:

i386

Para terminar este passo, crie dois diretórios sob o seu diretório home, para armazenar os pacotes de instalação e o código-fonte a ser compilado. Eu sempre utilizo estes diretórios para armazenar os pacotes de download e os arquivos de código-fonte.

bruno@ubuntu:~$ pwd
/home/bruno
bruno@ubuntu:~$ mkdir downloads softwares
bruno@ubuntu:~$ ls -ltr
total 8
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 softwares
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 downloads
bruno@ubuntu:~$

Passo 2: Instalação do make, gcc e autoconf

Para compilar qualquer software a partir do código-fonte, é necessário um conjunto específico de ferramentas. Antes de prosseguir com a instalação, instale os seguintes pacotes, usando o apt-get:

$ sudo apt-get install gcc
$ sudo apt-get install g++
$ sudo apt-get install make
$ sudo apt-get install autoconf

Passo 3: Download do pacote de instalação

Faça o download do pacote de instalação na página http://httpd.apache.org/download.cgi. Escolha o pacote Unix Source, arquivo httpd-2.2.21.tar.gz. Após fazer o download, copie este arquivo para o diretório /root/downloads. Se preferir, você pode fazer o download direto do servidor, usando o wget:

$ pwd
/home/bruno/downloads
$ wget http://ftp.unicamp.br/pub/apache//httpd/httpd-2.2.21.tar.gz

Se você for bem paranóico, pode verificar a integridade do pacote de download usando o md5sum:

$ md5sum httpd-2.2.21.tar.gz
b24ca6db942a4f8e57c357e5e3058d31 *httpd-2.2.21.tar.gz

Altere o diretório de trabalho para o diretório softwares e descompacte o pacote de instalação:

$ pwd
/home/bruno
$ cd softwares
$ tar --extract --gzip --verbose --file ../downloads/httpd-2.2.21.tar.gz

Passo 4: Antes de configurar…

Antes de configurar a instalação do Apache, é necessário tomar algumas decisões importantes, como qual será o modelo de multi-processamento e quais módulos devem ser carregados. O modelo de multi-processamento define como o Apache irá se comportar em relação à criação de processos-filho e distribuição das requisições entre estes processos. Para um servidor de desenvolvimento, essa decisão não é tão importante, mas em ambientes de produção, pode ter impacto direto no sucesso ou fracasso deste servidor. Para mais informações sobre os modelos de multi-processamento do Apache, visite http://httpd.apache.org/docs/2.2/mpm.html.

Neste tutorial, vou escolher o módulo prefork e vou carregar três módulos adicionais:

  • mod_info: Este módulo oferece um Location (/server-info) que apresenta informações detalhadas sobre a instalação do Apache e é recomendada para ambientes de desenvolvimento e produção (com controle de acesso)
  • mod_status: Este módulo também oferece um Location (/server-status) que apresenta informações sobre o status do Apache, incluindo quais os módulos carregados e, o mais legal na minha opinião, é a possibilidade de ver um mapa dos processos atuais, bem como o que cada um está fazendo (status)
  • mod_rewrite: Este módulo é muito útil para criar regras de re-escrita de URL, que podem ser de muita utilidade na administração deste servidor

Passo 5: Configuração

Executar os comandos abaixo, na ordem especificada. Este comando verificará se o ambiente possui todas as bibliotecas e ferramentas necessárias, de acordo com os parâmetros de configuração:

$ ./configure --prefix=/usr/local/httpd-2.2.1 --with-mpm=prefork --enable-info=shared --enable-status=shared --enable-rewrite=shared

O comando acima configura a instalação para o diretório /usr/local/httpd-2.2.21, define a utilização do módulo de multi-processamento como prefork e habilita o carregamento de três módulos adicionais. O shared nas opções acima define que estes módulos devem ser instalados como objetos compartilhados (Shared Objects). Estes objetos serão criados como arquivos .so no diretório modules sob o diretório de instalação do Apache. Instalar módulos como objetos compartilhados permite carregar estes módulos dinamicante.

Passo 6: Compilação

Executar os comandos abaixo, na ordem especificada:

$ sudo make

Passo 7: Instalação

Executar os comandos abaixo, na ordem especificada:

$ sudo make install

Pronto, a instalação do Apache 2.2.21 foi feita no diretório /usr/local/httpd-2.2.21.

Passo 8: Pós-instalação

Para finalizar, falta apenas fazer algumas alterações no arquivo de configuração e inicializar o Apache através do script apachectl.

Antes, crie um link simbólico para o diretório de instalação:

$ sudo ln --symbolic /usr/local/httpd-2.2.21 /usr/local/httpd

Em seguida, edite o arquivo de configuração localizado em /usr/local/httpd/conf/httpd.conf, removendo os comentários do início das linhas abaixo – os comentários sobre as linhas são bem claros.

Linha 379:

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf

Linha 393:

# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf

Linha 405:

# Various default settings
Include conf/extra/httpd-default.conf

Agora só falta iniciar o Apache e correr para o abraço… rsrs

$ pwd
/usr/local/httpd
$ sudo bin/apachectl start

Conclusão

Neste artigo, compartilhei o meu procedimento para a instalação do servidor HTTP Apache 2.2.21 em um servidor Ubuntu 11.10 a partir do código-fonte. Esta instalação utiliza o módulo de multi-processamento prefork e carrega três módulos como objetos compartilhados.

Dúvidas, críticas e/ou sugestões, é só comentar.

Tutorial: Instalando o MySQL 5.5.16 no Ubuntu Server 11.10

Neste tutorial, vou compartilhar o procedimento que uso para instalar o MySQL 5.5.16 em um servidor Ubuntu 11.10 (32bits) a partir do código-fonte. A grande diferença desta instalação é o uso da ferramenta CMAKE, que foi introduzida na seŕie 5.5 do MySQL. Para uma melhor experiência e aprendizado, vou deixar os erros naturais desta instalação acontecerem e então em cada momento vou explicar o problema e como resolve-lo.

Este tutorial foi baseado nas intruções de instalação na documentação oficial do MySQL, disponível em http://dev.mysql.com/doc/refman/5.5/en/installing-source-distribution.html

Antes de continuar…

Antes de continuar, certifique-se de que não existem pacotes do MySQL instalados em seu servidor. Estes pacotes podem gerar conflitos de bibliotecas e executáveis. que sõa problemas bem complicados de identificar. Para verificar se existem pacotes do MySQL instalados, use o comando abaixo:

bruno@ubuntu:~$ dpkg --get-selections |grep mysql

Passo 1: Preparação

Confirme a versão do seu servidor Ubuntu, bem como a arquitetura:

$ less /etc/lsb-release

A saída deve ser algo como:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"

Para verificar a arquitetura:

$ uname -i

A saída do comando deve ser algo como:

i386

Para terminar este passo, crie dois diretórios sob o seu diretório home, para armazenar os pacotes de instalação e o código-fonte a ser compilado. Eu sempre utilizo estes diretórios para armazenar os pacotes de download e os arquivos de código-fonte.

bruno@ubuntu:~$ pwd
/home/bruno
bruno@ubuntu:~$ mkdir downloads softwares
bruno@ubuntu:~$ ls -ltr
total 8
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 softwares
drwxrwxr-x 2 bruno bruno 4096 2011-10-14 09:44 downloads
bruno@ubuntu:~$

Passo 2: Download do pacote de instalação

Fazer o download do pacote de instalação do MySQL Community Server 5.5.16. Na opção Plataform, selecione a opção Source Code. Se preferir, utilize a URL abaixo:

http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.16.tar.gz/from/http://mysql.cce.usp.br/

Copie o arquivo mysql-5.5.16.tar.gz para o diretório downloads, utilizando cp (ou scp). Se preferir, você pode fazer o download direto a partir do servidor, usando o wget:

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.16.tar.gz/from/http://mysql.cce.usp.br/

Passo 3: Instalação do make, cmake, gcc e autoconf

Para compilar qualquer software a partir do código-fonte, é necessário um conjunto específico de ferramentas. Antes de prosseguir com a instalação, instale os seguintes pacotes, usando o apt-get:

$ sudo apt-get install gcc
$ sudo apt-get install g++
$ sudo apt-get install make
$ sudo apt-get install cmake
$ sudo apt-get install autoconf

Passo 4: Criação do usuário mysql

Para um melhor isolamento em nível de processos e propriedade de arquivos, é necessário criar um usuário (e um grupo) específicos para a instalação do MySQL:

$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql

Passo 5: Configuração

Altere o diretório de trabalho para softwares e descompacte o pacote de instalação:

$ pwd
/home/bruno
$ cd softwares $ tar --extract --gzip --verbose --file ../downloads/mysql-5.5.16.tar.gz

Altere o diretório de trabalho para mysql-5.5.16 e execute o comando abaixo:

$ cd mysql-5.5.16 $ cmake .

O comando acima vai verificar se o ambiente tem todas as bibliotecas e programas necessárias. Caso você queira alterar o prefixo de instalação (por padrão /usr/local/mysql), defina o valor da opção CMAKE_INSTALL_PREFIX:

$ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.16

Opa! Se você fez tudo certo, irá notar que ocorreu um erro durante a compilação:

-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)

Esse erro é muito claro e indica que não foi possível encontrar a biblioteca de curses. Obviamente, será necessário instalar essa biblioteca antes de continuar:

$ sudo apt-get install libncurses5-dev

Dica! Quando não souber o nome de um pacote de instalação no apt-get, consulte o repositório de pacotes do ubuntu em http://packages.ubuntu.com/.

Sempre que ocorrer um erro no cmake, é necessário remover o arquivo de cache (CMakeCache.txt) e executar a configuração novamente. Para mais informações visite http://www.cmake.org/:

$ rm CMakeCache.txt
$ cmake .

Opa! Depois de alguns minutos, outro erro, desta vez indicando que não existe um executável do bison disponível no PATH:

Warning: Bison executable not found in PATH

Execute os comandos abaixo, na ordem especificada:

$ sudo apt-get install bison
$ rm CMakeCache.txt $ cmake .

Opa! Chega de erros. Se a configuração foi feita corretamente, a última linha deve ser algo como:

-- Build files have been written to: /home/bruno/softwares/mysql-5.5.16

Pronto, agora estamos prontos para a instalação.

Passo 6: Compilação

Após a configuração, basta executarmos a compilação, através do make:

$ sudo make

Este procedimento pode demorar vários minutos, aguarde pacientemente. Quanto terminar, a última linha deve ser algo como:

[100%] Built target my_safe_process

Passo 7: Instalação

Após a configuração, basta executarmos a instalação (cópia dos arquivos nos locais configurados), através do target install do make:

$ sudo make install

A instalação não demora tanto quanto a compilação e a última linha deve ser algo como:

-- Installing: /usr/local/mysql-5.5.16/man/man8/mysqld.8

Pronto! A instalação está concluída, agora só falta executar alguns passos de pós-instalação.

Passo 8: Pós-instalação

Após a instalação, resta apenas criar os bancos de dados padrão do MySQL, arrumar a propriedade dos diretórios de instalação e definir uma senha para o usuário root:

Se você alterou o prefixo de instalação (como eu sempre faço), eu recomendo sempre manter um link simbólico chamado mysql referenciando o diretório de instalação:

bruno@ubuntu:/usr/local$ ls -ld mysql
lrwxrwxrwx 1 root root 13 2011-10-14 10:56 mysql -> mysql-5.5.16/

Primeiro, altere o diretório de trabalho para /usr/local/mysql:

$ cd /usr/local/mysql

Altere a propriedade, recursivamente, do diretório de instalação para o usuário e grupo mysql:

$ pwd
/usr/local/mysql
$ sudo chown -R mysql.mysql .

Instalar o banco de dados padrão do MySQL (que contém os schemas mysql, test, etc):

$ sudo scripts/mysql_install_db --user=mysql

Redefinir a propriedade, recursivamente, do diretório de instalação para o usuário root, com exceção do diretório data, que deve ser de propriedade do usuário mysql:

$ sudo chown -R root .
$ sudo chown -R mysql data

Estamos quase terminando. Copie um arquivo de configuração de exemplo para o diretório /etc:

$ sudo cp support-files/my-small.cnf /etc/my.cnf

Finalmente, copie o script de inicialização do MySQL, para o diretório /etc/init.d:

$ sudo cp support-files/mysql.server /etc/init.d/mysql

Agora, basta iniciar o servidor:

$ sudo /etc/init.d/mysql start

Definir uma senha para o usuário root (ou deixe em branco se o banco não for importante):

$ ./bin/mysqladmin -u root password 'new-password'

E iniciar uma sessão para garantir que está tudo beleza!

$ bin/mysql -u root -p

Conclusão

Neste tutorial, apresentei o procedimento de instalação do MySQL 5.5.16 a partir do código-fonte em um servidor Ubuntu Server 11.10. Adicionalmente, foi apresentado como instalar o pacote de ferramentas de compilação padrão, que inclusive podem ser utilizadas para instalar outros softwares, e também foi utilizada a ferramenta cmake, introduzida a prtir do MySQL 5.5.