TOP

Xen com multi bridge e LVM

O propósito

Aqui demonstro como subir um ambiente virtualizado com Xen, utilizando um servidor com quatro interfaces de rede, sendo que cada interface estará conectada a cada máquina virtual. Essa abordagem garante maior segurança e desempenho. Além disso, as máquinas virtuais serão criadas em volumes virtuais, que podem ser redimensionados de acordo com a necessidade.

O hardware

Este é o servidor da universidade onde trabalho. Obviamente que as suas configurações podem ser diferentes. Não abordarei aqui a configuração de setup nem da RAID.

  • Dell PowerEdge 2900
  • 2 x Xeon E5410 2.33Ghz QuadCore 6MB Cache L2
  • 4GB RAM DDR2 FB-DIMM 667Mhz (2 x 2GB)
  • 1 dual Ethernet Broadcom NetXtreme II BCM5708 Gigabit Ethernet (onboard)
  • 1 dual Ethernet Intel 82571EB Gigabit Ethernet
  • 2 HD Dell SAS 73 GB 15K RPM em RAID1
  • 2 Fontes redundantes 930W

(mais…)

Read More
TOP

Dansguardian não inicializa no Debian

Recentemente precisei reinstalar meu servidor PROXY e após instalar o Dansguardian este travava na inicialização durante a atualização do ClamAV. Pesquisando um pouco descobri que o problema é em uma opção do arquivo dansguardian.conf

vim /etc/dansguardian/dansguardian.conf

Procure esta seção

# OPTION: virusengine
# Set the embedded virus scan engine to be used (clamav, clamdscan, kav, aveserver, trophie, sophie).
virusengine = 'clamav'

Altere a palavra ‘clamav’ para ‘clamscan’. Note que nas opções fornecidas aparece ‘clamdscan’, mas está errado.

Após isto é só inicializar o Dansguardian.

Esta soluções foi retirada da dica do Alexandre

Read More
TOP

Resolvendo problema com os Dashlets do SugarCRM na Locaweb

Tenho uma instalação do SugarCRM hospedada na Locaweb. Tudo funciona corretamente exceto os Dashlets do Painel, que apresentam a mensagem “No Displayable Data”, mesmo tendo dados na base. No fórum deles encontrei a solução, que é a adição de uma linha de forma a alterar as permissões antes da escrita.

Edite o arquivo SugarChart.php, que fica em /include/SugarCharts e insira a linha que está em destaque.

function saveXMLFile($xmlFilename,$xmlContents) {
global $app_strings;
global $locale;
 
$xmlContents = chr(255).chr(254).mb_convert_encoding($xmlContents, 'UTF-16LE', 'UTF-8');
 
// open file
if (!$fh = sugar_fopen($xmlFilename, 'w')) {
$GLOBALS['log']->debug("Cannot open file ($xmlFilename)");
return;
}
 
// write the contents to the file
if (fwrite($fh,$xmlContents) === FALSE) {
$GLOBALS['log']->debug("Cannot write to file ($xmlFilename)");
return false;
}
chmod($xmlFilename,0644);//<=INSIRA ESTA LINHA
 
$GLOBALS['log']-&gt;debug("Success, wrote ($xmlContents) to file ($xmlFilename)");
 
fclose($fh);
return true;

Salve o arquivo e faça o upload novamente. Tudo deve funcionar corretamente.

Fonte: Fórum do SugarCRM

Read More
TOP

LTSP usando DreamLinux

Recentemente resolvi aprender de vez a como configurar um sistema de Terminais Leves com LTSP, o Linux Terminal Server Project. Achei interessante utilizar o DreamLinux para ser um servidor LTSP pelos seguintes motivos:

  • A base é Debian, 100% GPL, extremamente flexível e escalável e com uma comunidade com milhares de usuários.
  • O Projeto DreamLinux chamou não só a minha atenção, bem como a do Guto, responsável pela área técnica do Projeto Casa Brasil para o Centro Oeste e também do Rogério Fox, implementador do projeto GESAC e responsável pelo Grupo de Usuários do BROffice.org do Mato Grosso, pelo esmero dos desenvolvedores em criar uma solução leve, robusta e agradável de ser utilizada.
  • O XFCE é altamente indicado para soluções em LTSP em terminais antigos.
  • O MKDistro constitui ferramenta importantíssima para que se possa criar uma distro específica para LTSP, já com os serviços todos pré-configurados.

Quase toda a base desse tutorial teve como referência o excelente artigo do Carlos Morimoto no Guia do Hardware
A principal alteração que fiz foi substituir o inetd pelo xinetd

Não abordei a utilização do recurso de som nem no servidor, nem nos terminais pelo motivo de que esta implementação foi testada em um ambiente de biblioteca. Mas para quem desejar ter esses recursos, é só seguir a documentação do Morimoto, que tudo sairá certinho.

Vamos utilizar a base “Testing” do Debian, portanto a primeira coisa a fazer é editar o /etc/apt/sources.list
=====================================
# vim
/etc/apt/sources.list
=====================================
(eu estou acostumado com VIM, mas você pode usar o editor de sua preferência)

Altere a linha

deb http://ftp.br.debian.org/debian testing main contrib non-free

Para

deb http://linorg.usp.br/debian testing main contrib non-free

(uso o espelho da USP pois é mais rápido)

e comente o restante das linhas

Sai do vim e atualize a lista de pacotes
=====================================
# apt-get update
=====================================

Vamos utilizar o aptitude no lugar do tradicional apt-get pois ele resolve melhor as dependências
=====================================
# apt-get install aptitude
=====================================

O DreamLinux possui um utilitário para efetuar o backup das configurações antes de atualizar o sitema e depois restaurá-las quando a atualização for concluída. Rode o seguinte comando:
=====================================
# upgrade-wizard.sh
=====================================

Selecione a primeira opção, que é realizar o backup, e quando estiver concluído, atualize o sitema
=====================================
# aptitude upgrade
=====================================

Depois que o sitema  estiver atualizado rode novamente o comando
=====================================
# upgrade-wizard.sh
=====================================

e selecione a segunda opção para restaurar as configurações

O ltsp usa o serviço de tftp que deve ser configurado para inicializar não como um daemon, mas pelo inetd, economizando recursos do servidor
O DreamLinux vem com o openbsd-inetd, mas depois de alguma leitura, resolvi usar o xinetd que possui uma série de vantagens, entre elas:

  • Limitação de conexões:
    • taxa de conexões recebidas por intervalo de tempo
    • número de conexões por host
    • número de conexões por serviço
  • Controle de acesso mais sofisticado:
    • Feito pelo próprio daemon, dispensando o TCPWrappers
    • Por host, IP, domínio ou sub-rede
    • por horário
  • Controle de logs:
    • limitação do tamanho de cada arquivo de log
    • Nível de logging de cada serviço pode ser configurado de forma independente
  • Desvio de conexões
    • Um fluxo TCP pode ser redirecionado para outro host e/ou porta de forma transparente.
  • Suporte a IPv6

Além disso a configuração dos serviços é modularizada, ou seja, um arquivo para cada serviço, todos em /etc/xinetd.d/*, de forma que fica tudo muito organizado.

Desinstale o pacote openbsd-inetd
=====================================
# aptitude purge
openbsd-inetd
=====================================

Instale o xinetd
=====================================
# aptitude install
xinetd
=====================================

Instale os serviços básicos
=====================================
# aptitude install
dhcp3-server tftpd-hpa portmap nfs-common nfs-kernel-server ltsp-utils
=====================================

Como queremos que o tftpd-hpa inicialize pelo xinetd e não como um daemon, remova as entradas dele do rc.d
=====================================
update-rc.d -f tftpd-hpa remove
=====================================

Ajuste o rcconf para fazer os serviços nfs-common e nfs-kernel-server inicializarem automaticamente e desative o tftpd-hpa

=====================================
# rcconf
=====================================

Marque as seleções
[*]
nfs-common
[*] nfs-kernel-server

e desmarque
[ ] tftpd-hpa

e dê um OK

O serviço
tftpd-hpa vem desabilitado por padrão. Ative o serviço editando o arquivo tftp-hpa
=====================================
#  vim  /etc/default/tftpd-hpa
=====================================
e deixe-o como abaixo:

RUN_DAEMON=”yes”
OPTIONS=”-l -s /tftpboot”

Salve e saia do vim

Vamos agora instalar o ltsp propriamente dito. Nós poderíamos utilizar o ltspadmin e instalar pela rede, mas além de demorado, caso algo saia errado você terá que começar tudo do zero. Portanto vamos primeiro baixar a imagem .iso, montá-la e utilizá-la como fonte de instalação

Baixe a imagem iso do site do ltsp.org
=====================================
# wget http://ltsp.mirrors.tds.net/pub/ltsp/isos/ltsp-4.2u2-0.iso
=====================================

O arquivo tem cerca de 100MB, então vai demorar um pouco, dependendo da sua conexão
Crie um diretório para montar a imagem e monte com os comandos
=====================================
# mkdir /mnt/ltsp
# mount -o loop l
tsp-4.2u2-0.iso /mnt/lstp
=====================================

Rode o configurador do LSTP
=====================================
# ltspadmin
=====================================

Selecione a segunda opção “Configure the installer options” e configure de acordo com o que está abaixo

Where to retrieve packages from?
file:///mnt/lstp

In which directory would you like to place the LTSP client tree?
/opt/ltsp

A não ser que você esteja sob um proxy, a terceira e quarta opções podem ser ignoradas

Pressione “y” para aceitar as alterações. Isso fará voltar para a tela inicial do configurador.
Selecione agora a primeira opção “Install/Update LTSP Packages”
Pressione “a” para selecionar todos os componentes e depois “q” para sair e iniciar a instalação
Quando concluir a instalação, o configurador voltará à tela inicial, então pressione “q” para sair do configurador

Com isso a instalação do lstp está concluída, mas ainda faltam as configurações
Vamos contar com a ajuda do Morimoto que disponibilizou alguns modelos de configurações
Acesse http://www.guiadohardware.net/kurumin/modelos/kurumin-terminal-server/4.2/ e baixe os seguinte modelos:

  • dhcpd.conf
  • exports
  • hosts
  • hosts.allow
  • lts.conf


Faça backup dos arquivos originais copie os arquivos modelos
=====================================
# mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.old
# cp -f dhcpd.conf /etc/dhcp3/dhcpd.conf
# mv /etc/exports /etc/exports.old
# cp -f exports /etc/exports.conf
# mv /etc/hosts /etc/hosts.old
# cp -f hosts /etc/hosts
# mv /etc/hosts.allow /etc/hosts.allow.old
# cp -f hosts.allow /etc/hosts.allow
# cp -f lts.conf /opt/ltsp/i386/etc/lts.conf
=====================================

Edite os arquivos de acordo com as características da sua rede

dhcp.conf
=====================================
# vim /etc/dhcp3/dhcp.conf
=====================================
Este arquivo está muito bem comentado pelo Morimoto, e não tem nenhum segredo. Na seção “group” basta alterar o endereço MAC e IP de cada terminal

exports
=====================================
# vim /etc/exports
=====================================
Aqui também é tranquilo, bastando alterar sub-rede e máscara

hosts
=====================================
# vim /etc/hosts
=====================================
Basta alterar a sub-rede e tomar o cuidado com a primeira linha. Ela DEVE conter o nome de host do seu servidor.

hosts.allow
=====================================
# vim /etc/hosts.allow
=====================================
Aqui é só a sub-rede mesmo.

lts.conf
=====================================
# vim /opt/ltsp/i386/etc/lts.conf
=====================================
Este arquivo fui muito bem comentado pelo Morimoto, inclusive explicando os parâmetros para habilitar o acesso aos dispositivos locais

xinetd
O xinetd funciona de maneira modular, com um arquivo de configuração para cada serviços, todos em /etc/xinetd.d/
Crie um arquivo para o serviço tftpd-hpa
=====================================
# vim /etc/xinetd.d/tftpd-hpa
=====================================

e cole o seguinte conteúdo nele
=====================================echo ‘user_allow_other’ > /etc/fuse.conf
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -r blksize
}
=====================================

Salve, saia e reinicie os serviços
=====================================
# /etc/init.d/xinetd restart
# /etc/init.d/dhcp3-server restart
# /etc/init.d/portmap restart
# /etc/init.d/nsf-common restart
# /etc/init.d/nsf-kernel-server restart
=====================================

Para dar suporte aos dispositivos locais, devemos instalar o pacote ltsp-server-pkg-debian_0.1_i386.deb. Porém, ele foi criado para o Debain Sarge, causando um erro de dependência se for instalado. Para solucionar iso, o Morimoto disponibilizou um pacote fuse-source.deb, que resolve essa dependência
=====================================
# wget http://www.guiadohardware.net/kurumin/download/fuse-source.deb
# dpkg -i fuse-source.deb
# dpkg -i ltsp-server-pkg-debian_0.1_i386.deb
# aptitude install fuse-utils libfuse2 libx11-protocol-perl
=====================================

Carregue o módulo fuse e configure para carregar no boot
=====================================
#
modprobe fuse
# echo ‘fuse’ >> /etc/modules
# echo ‘user_allow_other’ > /etc/fuse.conf
=====================================

Para que cada usuário possa acessar os dispositivos locais, ele deve ser membro do grupo “fuse”
Execute os passos a seguir para fazer isso
=====================================
# cd /home
# for i in *; do adduser $i fuse; done

=====================================

Configure o GDM para aceitar sessões remotas

Abra o Painel de Controle do DreamLinux e vá em “Janela de Login”
Clique na aba “Remoto” e no campo “Estilo”, selecione “O mesmo que local”
Em “Mensagem de boas vindas” você pode personalizar sua mensagem selecionando “Adaptado”
Clique no botão “Configurar XDMCP…”
Marque a caixa “Honrar pedidos indiretos”
No ítem “Telas gráficas por máquina” coloque 1
No ítem “Intervalo entre pings” coloque 5

Depois das alterações efetuadas, reinicie o serviço GDM
=====================================
# /etc/init.d/gdm restart
=====================================

Agora é só configurar o seu xfce para esconder ítens que você  julgue desnecessários em um ambiente LTSP

Referências:
Guia do Hardware
Home Page do Laureano
DreamLinux Forum
Projeto LTSP

Read More