Artigos 14 fev 2010 06:13 pm

Controle de acessos no Git simples e seguro com Gitosis

Existem algumas formas de se fazer controle de acesso no GitW, a forma mais simples é criar o repositório com acesso a um grupo e adicionar os usuários com acesso a esse grupo. Se um grupo apenas não for suficiente para gerenciar os acessos ao repositório pode ser possível utilizar ACL’s.
O único problema desse esquema é que exige que cada usuário tenha acesso SSHW ao servidor e isso muita das vezes não é interessante para o administrador do servidor.

Outra forma de se fazer o controle de acesso é através de WebDAVW. A vantagem é que nesse caso o gerenciamento dos usuários é feito através de um arquigo que deve ser gerado e atualizado com o utilitário htpasswd (htpasswd2 em algumas distribuições como o Gentoo), porém para executar o WebDAV é preciso um servidor web como o Apache ServerW ou LighttpdW.
Se sua escolha for pelo WebDAV, o HowToW disponível na própria documentação do Git ou em http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt explica como fazer.

Uma forma mais simples e segura é utilizar o Gitosis. Sua principal vantagem é ser executado via ssh através de autenticação via chave pública, porém utilizando uma única conta compartilhada cujos comandos disponíveis são limitados.

Continue Reading »

Artigos 10 fev 2010 12:43 am

Monitoramento com Zabbix – Parte 2 – Monitorando Hosts e dispositivos

Continuando o tutorial de configuração do ZabbixW, o próximo passo é configurar o primeiro host à ser monitorado na rede, o que na maioria dos casos é o próprio servidor do Zabbix.

Agente de Monitoramento

A instalação do agente do Zabbix na maioria das distribuições é bem fácil e envolve poucos passos:

Continue Reading »

Dicas 16 jan 2010 12:58 pm

Erro ao compilar o kernel 2.6.31: implicit declaration of function ‘_cpu_down’

Ao tentar compilar a versão 2.6.31 do kernel linux (com suporte ao Xen) obtive a seguinte mensagem de erro:

kernel/cpu.c: In function 'disable_nonboot_cpus':
kernel/cpu.c:394: error: implicit declaration of function '_cpu_down'
make[1]: *** [kernel/cpu.o] Error 1
make: *** [kernel] Error 2

Uma rápida pesquisa no google me revelou que o problema se encontrava na falta do suporte a hot-pluggable cpu’s. Este recurso permite que CPU’s possam ser ligadas/desligadas durante a execução da máquina, possibilitando a economia de energia e a própria inclusão de novas CPU’s em sistemas multi-processados.
Esse recurso já vem habilitado por padrão caso você esteja configurando o kernel pela primeira vez, mas no meu caso, copiei o arquivo .config de outro kernel que não tinha esse suporte habilitado.

A solução é simples e envolve executar novamente o configurador do kernel para habilitar a opção pertinente ou editar diretamente o arquivo .config, sendo mais aconselhável executar o o configurador (make menuconfig).

A opção que precisa ser habilitada é CONFIG_HOTPLUG_CPU e pode ser encontrada em:

Processor type and features --->
[*] Support for hot-pluggable CPUs

Pronto, agora é só executar o make novamente e aguardar o fim da compilação.

Referências

Artigos 04 jan 2010 10:39 pm

Monitoramento com Zabbix – Instalação e Configuração

O ZabbixW é um poderoso sistema de monitoramento de hosts e dispositivos, que pode monitorar desde a própria máquina onde está instalado, a milhares de hosts e dispostivos localizados na rede local ou na mais remota localização geográfica.

Sua estrutura é simples e descentralizada e consiste de um aplicativo denominado servidor que coleta e armazena as informações dos hosts em um banco de dados que pode ser SQLiteW, MySQLW, PostgreSQLW ou OracleW; uma interface web para administração / monitoramento feita em PHP, e os agentes que podem ser desde hosts monitorados pelo aplicativo agente do Zabbix quanto os mais variados serviços e dispositivos, acessíveis das mais diversas formas como SNMPW, TCPW, ICMPW E IPMIW.

Nessa série de artigos comentarei a instalação, configuração e utilização do Zabbix nas distribuições GentooW e UbuntuW.

Continue Reading »

Dicas 16 dez 2009 08:57 am

Usando kernel vanilla como domU no Xen

O Xen é um dos paravirtualizadores mais famosos do mercado e seu uso está cada vez mais difundido a cada dia que se passa.

Configurar uma instalação básica do Xen nas principais distribuções não é muito difícil e no Gentoo não é diferente. Em geral o processo envolve instalar um kernel customizado no dom0 (a “máquina real”), e instalar os utilitários do Xen também no dom0. Se a CPU em questão tiver suporte a virtualização (flag  svm em arquitetura AMD, ou vmx em arquitetura Intel) é possível utilizar para os domU’s (as “máquinas virtuais”) qualquer versão de Kernel ou de Sistema Operacinal, não necessitando que o mesmo tenha sido previamente preparado (patch) para utilização sob o Xen.

Caso a CPU não tenha suporte a virtualização, é necessário utilizar um Sistema Operacinal ou Kernel devidamente adaptado, o que não costuma ser uma tarefa muito complicada visto que as principais distribuições já orefecem pacotes prontos. No Gentoo apenas é necessário compilar uma versão do mesmo kernel utilizado no dom0 porém com os devidos recursos que dão suporte a inicialização e execução do domU.

Até ai, tudo corre muito bem, sem muitos problemas, no entanto, quando é necessário utilizar uma versão específica de kernel para o domU é que o problema começa, principalmente se for necessário utillizar uma das versões mais recentes do kernel, visto que os patches de suporte ao Xen não costumam ser disponibilizados com a mesma frequência que novas versões do kernel.

Felizmente desde a versão 2.6.23 o kernel vanilla (padrão) do Linux conta com suporte nativo a virtualização, possibilitando que o mesmo seja iniciado como um domU sob o Xen. Para tanto é necessário habilitar no kernel as seguintes opções:

Continue Reading »

Artigos 13 jan 2008 11:42 am

Memcached, optimizando aplicações PHP com cache em memória

Aplicações de grande porte tendem a passar por problemas de performance, por N motivos como o crescimento do número de usuários simultâneos, complexidade da lógica, cresicmento da base de dados, dentre outros.

Geralmente o primeiro passo a seguir quando uma aplicação está com a performance degradada é tentar detectar no código os problemas de performance e corrigi-los. Em caso de aplicações WEB um sistema de cache como o do PHP Smarty pode ajudar e quando isso não for o bastante pode ser possível partir para a clusterização dos servidores.

Quando o problema está na base dados, a solução comumente utilizada é clusterizar a base, geralmente adicionando servidores slave que se por um lado melhoram o tempo de resposta de consultas a base, por outro lado perdem no momento da escrita, pois cada nó do cluster deve ser atualizado.

Pensando nesses problemas, Brad Fitzpatrick desenvolveu um sistema de cache em memória distribuido. Fitzpatrick se deparou com o problema de rápido cresicmento da audiência do site LiveJournal.com. Ao chegar a casa dos 20 milhões de usuários por dia, clusters de servidores web e de banco de dados já não eram mais suficientes, e então o Memcached surgiu garantindo rápido acesso aos dados e melhor utilização de recursos.

Continue Reading »

Sem categoria 28 out 2007 06:12 pm

Xen e LVM – Uma bat-dupla perfeita

Acho que uma das maiores dificuldades pra quem trabalha com informática (especialmente na administração de redes) é conseguir se manter atualizado em meio a tanta tecnologia que surge e/ou se atualiza a cada dia.
Frequentemente são criadas novas versões de softwares que as vezes podem não ser 100% compatíveis com as versões anteriores e nesse caso pode ser necessário uma reconfiguração ou adaptação da configuração anterior, e claro, surgem também novos softwares/soluções que aprimoraram os já existentes ou criam novos conceitos que devem ser no mínimo estudados.

Já há algum tempo resolvi experimentar o XEN como solução de virtualização já que o VMWare Server apesar de prático e com versão Free, não é um software livre.
Inicialmente tive algumas dificuldades para entender as configurações necessárias pois ao contrário do VMWare o Xen não tem interface gráfica para configura-lo/visualiza-lo, mas nada que um pouco de pesquisa, tentativas e erros não resolvessem.
Em pouco tempo eu já tinha um kernel linux sendo iniciado no meu terminal e em poucos segundos um prompt de login.
Logo surgiram mil idéias de aplicação da tecnologia e resolvi que meus novos servidores deveriam ser virtualizados para facilitar a manutenção deles, mas ainda faltava algo, e é ai que entra o LVM, tornando o particionamento de discos o que ele já deveria ser há muito tempo, dinâmico e sem limites.

O LVM veio pra acabar com aquela limitação chata de 16 partições por disco e tornar prática a manutenção das mesmas. Com o LVM o processo de particionar o disco fica absolutamente dinâmico e objetivo além de mais organizado. Dentre outras recursos é possível por exemplo criar um snapshot de um sistema de arquivos em uso e cloná-lo para uma nova partição, e com isso facilitar a duplicação de uma máquina virtual do XEN em uso para por exemplo testar a nova versão do software XYZ que precisa que sua configuração seja adaptada para um novo formato, ou até mesmo para fazer backup de arquivos abertos de softwares que não podem parar.

E dai em diante como a maioria dos softwares livres, a imaginação é o limite. No caso da empresa em que trabalho, utilizo essas 2 soluções para facilitar a instalação e manutenção de nossos clusters de apache e postgresql.
No meu próximo artigo explicarei o uso tanto do XEN quanto do LVM para criar um serviço de alto desempenho.

Artigos 14 set 2007 02:01 pm

Configurando filtros de e-mail no servidor com Postfix e Maildrop.

Na empresa em que trabalho todos os usuários utilizam o Mozilla Thunderbird como cliente de e-mail. Temos listas de entrega definidas de acordo com setores e funções exercidas pelos usuários e cada usuário tem suas próprias regras configuradas no seu Thunderbird.
Com o diretório Home exportado via NFS fica fácil utilizar a mesma configuração do Thunderbird em qualquer máquina desde que o sistema operacional tenha suporte a NFS. Usuários de estações Windows podem também se beneficiar do Profile remoto do Samba no entanto o problema começa quando o usuário alterna entre estações Windows/Linux ou pior, quando o usuário utiliza outro cliente de e-mail, como por exemplo o webmail.

Para solucionar o problema decidi deixar a responsabilidade das regras direto no servidor, pesquisei no Google e rapidamente re-descobri o Procmail, no entanto seu uso se limita a caixas postais locais do Postfix, e em nosso caso, utilizamos caixas virtuais do postfix, sendo assim a melhor opção foi implantar o Maildrop.

Maildrop

O Maildrop é tão poderoso quanto o Procmail e pode ajudar bastante na filtragem dos e-mails, caso necessário é possível passar o processamento do e-mail para o Procmail sem perder o suporte a domínios virtuais por exemplo. Seus métodos de autenticação podem utilizar base dados LDAP, Mysql, PostgreSQL ou configuração existente da AuthLib.
Cada usuário pode ter seu próprio arquivo de regras em HOME/.mailfilter e sua sintaxe é simples e baseia-se em poucos comandos quando comparada as regras do Procmail.

Instalação

Usuários do gentoo podem instalar o Maildrop direto da árvore do portage. Se necessário especifique o esquema de autenticação a ser utilizado com a useflag correta.

echo "mail-filter/maildrop authlib" >> /etc/portage/package.use
# emerge maildrop

Configuração

A configuração do maildrop é bem simples. Caso seja utiliza a autenticação via AuthLib (recomendado) basta alterar os arquivos master.cf e main.cf do Postfix para habilitá-lo.

Edite o arquivo master.cf e acerte o caminho do binário do maildrop:

# vim /etc/postfix/master.cf
maildrop  unix  -       n       n       -       -       pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}

Em seguida edite o arquivo maincf e insira a linha abaixo no final do arquivo.

# vim /etc/postfix/master.cf
maildrop_destination_recipient_limit = 1

Reinicie o postfix e está pronta a configuração.

# /etc/init.d/postfix restart

Regras

O arquivo de regras do Maildrop é bem fácil de configurar e dispõe de poucos comandos que resolvem a grande maioria dos casos. As páginas de manual do maildrop (man maildropfilter) lista os comandos disponíveis e alguns exemplos de uso.
Um arquivo simples armazena os e-mails oriundos de uma lista de discussão na pasta Lista e os demails e-mails na Caixa de Entrada (Inbox) do usuário. Caso a pasta não exista o comando maildirmake se encarrega de criá-la.

$ vim ~/.mailfilter

FOLDER="${DEFAULT}"

if(/^(To|Cc): .*lista_de_discussao@dominio.com.br*/)
{
	FOLDER="${DEFAULT}/.lista_de_discussao"
	SUBSCRIPTION="INBOX.lista_de_discussao"
}

to `teste -d ${FOLDER} || maildirmake ${FOLDER} && echo ${SUBSCRIPTION} >> ${DEFAULT}/courierimapsubscribed` ${FOLDER} 

Vale lembrar que o arquivo .mailfilter deve ter permissão 600 ou o maildrop não fará a entrega da mensagem retornando-a para a fila.
$ chmod 600 ~/.mailfilter

Referências

Artigos 27 jun 2007 09:35 pm

Optimizando a compilação com ccache e distcc

Se sua rede tem 1 ou mais estação(ões)/servidore(s) Gentoo, está mais do que na hora de acelerar a compilação dos softwares. Duas opções estão disponíveis para rapida instalação, são elas: distcc e ccache.

ccache

O ccache, como o próprio nome já diz, tem por objetivo fazer cache de código C compilado durante uma instalação de software, para que numa próxima compilação ele possa ser reutilizado, economizando assim tempo e processamento. Seu funcionamento é análogo aos servidores proxys mais fomosos como o squid por exemplo.

Instalação

A instalação do ccache é bem simples e exige apenas 3 passos que são respectivamente, instalar o ccache, definir o tamanho máximo do diretório de cache e editar o arquivo make.conf adicionando a palavra ccache no parâmetro FEATURES.

# emerge ccache
# ccache -m 2G (define o tamanho máximo de 2 Gigabytes para o diretório do ccache)
# vim /etc/make.conf

FEATURES="ccache"

Uso

Uma vez instalado, basta começar a instalar novos programas para se beneficiar do uso do ccache. Vale observar que a primeira compilação após instalação do ccache pode demorar um pouco mais do que o normal já que o cache está sendo iniciado, no entanto as compilações seguintes deverão ser graduativamente aceleradas conforme o conteúdo do cache for sendo gerado.
Para certificar-se de que o ccache está sendo utilizado, basta executar o comando ccache -s e verificar se o mesmo está sendo utilizado.

# CCACHE_DIR=/var/tmp/ccache ccache -s (o diretório do cache do portage deve ser especificado)

distcc

A distcc distribui a compilação do código C entre hosts participantes da rede, acelerando assim o processo de compilação. A distcc faz uso do recurso de compilação pararela distribuindo cada “trabalho” entre os diversos hosts de compilação disponíveis. Sendo assim, programas que não podem ser compilados pararelamente não podem fazer uso da distcc, ao menos não sem nenhum trabalho adicional.

Instalação

A instalação da distcc é simples e exige basicamente a instalação do pacote distcc. Esse pacote deve ser instalado em todas as máquinas, sejam elas clientes ou servidores do serviço.
As maquinas que forem atuar como compiladores da rede devem ter o daemon da distcc rodando em background.

# emerge distcc
# rc-update add distccd default

As maquinas clientes precisam de um pacote a mais para gerenciar o uso da distcc, além de configuração adicional no arquivo make.conf

# emerge distcc
# emerge distcc-config
# vim /etc/make.conf

MAKEOPTS="-jN"  (onde N é o número de CPUs compiladoras + 1, é comum usar esse número X 2)
FEATURES="distcc"

# distcc-config --set-hosts "localhost maquina1 maquina2" (define as maquinas participantes da compilação, inclusive a maquina local se desejado)

É altamente recomendado que as maquinas participantes utilizem a mesma versão da GCC. Não há problemas em misturar versões como 4.1.x e 4.1.y, no entanto misturar versões como 4.x.y e 4.z.w, 3.x.y e 4.z.w ou outras combinações pode gerar diversos problemas ou até mesmo impossibilitar a compilação do software.

Uso

Assim como o ccache, a distcc é usada transparemente pelo portage e uma vez que estiver instalada basta começar a compilar software para se beneficiar de seu uso. O status atual da distribuição da compilação pode ser verificado com o comando distccmon-text na maquina cliente.

# DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text N (onde N é o número de segundos de atualização da tela)

Se a distcc for usada junto com o ccache é necessário especificar o ccache antes da distcc no parâmetro FEATURES

Compilação cruzada

Na configuração padrão da distcc não é possível compilar para arquiteturas diferentes da utilizada pela máquina onde está instalada distcc, se você quiser compilar código para amd64 é necessário que todas as máquinas participantes da compilação utilizem arquitetura amd64 por exemplo. Uma forma de contornar essa limitação é a compilação cruzada, ou seja, compilar para uma arquitetura diferente da arquitetura do compilador utilizado. Dessa forma é possível utilizar uma estação x86 para compilar programas para uma estação ppc ou sparc.

Instalação

Instalar um ambiente de compilação cruzada é fácil no entanto um pouco demorado. O pacote crossdev cuida do recado e basta indicar a arquitetura desejada para que ele gere todos os programas necessários para a compilação (binutils, gcc, glibc, etc).
No caso abaixo, uma estação i686 é configurada para compilar software para arquitetura amd64.

# emerge crossdev
# crossdev -t x86_64 (onde x86_64 é a arquitetura em que os programas devem ser gerados)

Desative o ccache e a distcc para compilar os compiladores

A instalação da distcc cria um diretório com links dos compiladores para o binário da distcc que cuida de distribuir os processos, no entanto como muitos programas chamam os compiladores diretamente por c++, gcc, etc ao invés de x86_64-pc-linux-gnu-gcc é necessário acertar os links de modo a apontar para o compilador da arquitetura correta. Um simples script e alguns links resolvem o problema.
Crie um novo script com o nome equivalente a variavel CHOST da arquitetura desejada, por exemplo x86_64-pc-linux-gnu-wrapper pra amd64 ou sparc-unknown-linux-gnu-wrapper para arquitetura sparc, e insira as linhas abaixo lembrando-se de alterar os valores para a arquitetura correta:

# cd /usr/lib/distcc/bin
# rm c++ g++ gcc cc
# vim x86_64-pc-linux-gnu-wrapper

#!/bin/bash
exec /usr/lib/distcc/bin/x86_64-pc-linux-gnu-g${0:$[-2]} "$@"

Em seguida, dê permissão de execução no script e refaça os links.

# chmod a+x x86_64-pc-linux-gnu-wrapper

# ln -s x86_64-pc-linux-gnu-wrapper c++
# ln -s x86_64-pc-linux-gnu-wrapper cc
# ln -s x86_64-pc-linux-gnu-wrapper g++
# ln -s x86_64-pc-linux-gnu-wrapper gcc

Pronto, agora é só adicionar o host na lista de hosts da distcc das demais máquinas e começar a compilação.
Caso necessário compilar para outra arquitetura basta instalar os novos compiladores e refazer os links para a nova arquitetura.

Referências

Sem categoria 01 jun 2007 12:05 am

Breve análise do Kubuntu 7

Recentemente tive em minhas mãos um novíssimo laptop Acer 9423WSMi e como não poderia deixar de ser, o linux seria o sistema operacional padrão da máquina que veio de fábrica com Windows Vista (que além de acabar com os recursos da máquina, já sai do forno todo cheio de problemas).
Apesar de ser usuário assíduo do Gentoo Linux, já há muito tempo tenho acompanhado o crescimento e amadurecimento do Ubuntu (e suas variações com Kde e XFCE) e como eu não estava com muito tempo para gastar na instalação e tinha um CD do Kubuntu à mão, resolvi dar uma chance a ele.

Em pouco menos de meia hora e poucos cliques no estilo Next, Next, Finish, eu já tinha um sistema instalado com os softwares básicos para escritório como OpenOffice e navegador Web. A configuração do X subiu certinho em 1400×900 e até mesmo o hardware WiFi já estava detectado, apesar de ainda não ter por padrão um configurador amigável para criptografia WPA na versão 6.06, o que me levou a ter que usar a conexão via cabo inicialmente.

Instalar programas ficou fácil com o Adept principalmente na versão Installer onde os softwares são listados por categorias e contém breve descrição da funcionalidade. Com apenas alguns cliques é possível instalar o Mplayer, Amarok, plugin de flash, PHP, Mysql e centenas de outros softwares.
Outro recurso que facilita muito a vida é a detecção e montagem automática de mídias removíveis como cd, dvd, pen drive, hd externo (usb), e até câmera fotográfica.

Na versão mais nova, 7.04 as coisas ficaram ainda mais integradas, mais amigáveis e mais práticas, como por exemplo o KNetworkManager que já vem instalado por padrão e tem suporte a WPA.
Com pouco esforço também é possível instalar os drivers da nVidia e com mais alguns cliques pode-se instalar o window manager Beryl e deixar as coisas no Desktop mais divertidas com um bom toque de animações e efeitos 3D.

E depois de tudo isso ainda fui surpreendido com o fato de que as teclas multimedia estavam todas funcionando integradas ao Amarok e Kmixer, realmente não era algo esperado.
Com mais alguns cliques e alguns poucos comandos a WebCam rapidamente já estava funcionando e com o AMSN mais novo ficou fácil ver e exibir webcam com os contatos do Windows Messenger.Em alguns casos é preciso adicionar novos repositórios para instalar softwares como o Skype por exemplo mas com o Adept essa tarefa não tem mistério algum, basta uma rápida consulta ao google e em poucos minutos o software desejado estará instalado.

O único ponto frustrante é não poder usar a versão para 64 bits pois o suporte ainda não é dos melhores e tarefas como instalar codecs proprietários são muito mais complicadas que no Gentoo onde por exemplo é muito mais simples manter uma arquitetura 64 bits com instalações compátiveis de softwares 32 bits como plugin de flash, java e codecs.

Realmente, as coisas ficam muito práticas com o Kubuntu 7.04 e em muitos casos mais práticas que no próprio Windows só que com a grande vantagem da segurança e flexibilidade que só o Linux tem. E apesar de continuar preferindo o Gentoo para servidores e máquinas de desenvolvimento, com certeza o Kubuntu conquistou o primeiro lugar em se tratando de Desktop.

Próxima Página »