Mostrando postagens com marcador Administração Linux. Mostrar todas as postagens
Mostrando postagens com marcador Administração Linux. Mostrar todas as postagens

domingo, 3 de junho de 2012

Instalando um Servidor Jabber jabberd no Ubuntu ou Debian

Jabber é um serviço que implementa o protocolo XMPP (Extensible Messaging and Presence Protocol), um protocolo aberto responsável por definir padrões para a comunicação entre clientes e servidores de mensagens instantâneas. É claro que não é o único padrão neste sentido, já que temos muitos deles (como o ICQ, AIM, MSN, etc.), mas é o único realmente aberto e gratuito.
Porque o XMPP é gratuito, existem muitos servidores e clientes Jabber, que implementam este protocolo e permitem, assim, que você tenha um serviço privado de mensagens instantâneas na sua casa, sua empresa, sua lan house ou rede particular. O objetivo deste artigo é exatamente isto: ajudar-lhe a instalar e configurar seu serviço particular de mensagens instantâneas baseado em Jabber. Note que todas as ações descritas neste tutorial supõem que você tem prioridade de root.


1- De Que Programas Preciso?

Para começar, você precisa de dois tipos de programas:

  • Um servidor Jabber, que ficará em uma máquina servidora acessível via rede;
  • Um cliente Jabber, que ficará em cada máquina de usuário.

A princípio, qualquer servidor Jabber deve poder falar com qualquer cliente, sem exclusividade, já que o protocolo XMPP é aberto e único.
Consulte aqui uma lista de clientes Jabber, e consulte aqui uma lista completa de servidores Jabber.
Para efeito deste artigo, vamos utilizar o servidor jabberd, versão 14, que é um servidor leve e bastante flexível, e vamos utilizar, para testar, o cliente pidgin, que é leve e multi-plataforma.


2- Instalação dos Programas

Nas máquinas clientes (dos usuários), instale o pidgin:

apt-get install pidgin

Faça a instalação do cliente em pelo menos uma máquina, para fins de teste. Em último caso, você pode instalar o cliente e o servidor na mesma máquina, para que faça todos os testes e configurações antes da implantação na máquina servidora realmente.

Na máquina servidora, instale o jabberd:


apt-get install jabberd14

(Em algumas distribuições, há o meta-pacote "jabber", que tem o jabberd14 como dependente. Neste caso, use opcionalmente "apt-get install jabber")

Isto instala o servidor jabberd e já roda o script de inicialização, programando-o para carregar sempre durante o boot. Evidentemente, você desejará modificar as configurações do servidor, então é preciso pará-lo:

/etc/init.d/jabberd14 stop


3- Configurando o Servidor jabberd

Toda a configuração do servidor está em um único arquivo XML, que pode ser encontrado em:

/etc/jabber/jabber.xml

Já a configuração do script de inicialização, dependendo de sua distribuição, pode ser encontrada em um destes dois arquivos:

/etc/jabber/jabber.cnf (mais comum no Debian)
ou
/etc/default/jabberd14 (mais comum no Ubuntu)

O arquivo jabber.xml é vastamente documentado e já vem pronto para uso. Contudo, algumas informações você precisará alterar.


Ajustando o nome e domínio do servidor

Ache a linha:

<host><jabberd:cmdline flag="h">localhost</jabberd:cmdline></host>

E troque a referência "localhost" pelo nome de sua máquina na rede. Use aqui o que chamamos de FQDN (Full-Qualified Domain Name), ou seja, o nome da máquina com o domínio. Exemplo: se sua máquina se chama "host1" e seu domínio é "minhacasa.org", então configure esta linha assim:

<host><jabberd:cmdline flag="h">host1.minhacasa.org</jabberd:cmdline></host>

Observe que a linha acima faz menção à opção de linha de comando "-h". Esta opção é usada na inicialização do servidor pelo script e serve para indicar o nome do host que deverá ser considerado.
Portanto, uma vez alterando o nome de máquina no arquivo jabber.xml, você deve necessariamente abrir o arquivo de configuração do script e fazer a mesma alteração:

/etc/jabber/jabber.cnf (Debian):
JABBER_HOSTNAME=host1.minhacasa.org

ou

/etc/default/jabberd14 (Ubuntu):
HOSTNAME=host1.minhacasa.org

 Ainda falta um passo: neste arquivo de configuração do script acima, há referência ao diretório de spool. Este diretório é onde o jabberd armazena todos os dados dos usuários criados (que são arquivos XML contendo as informações de usuário, como login e senha, e o ícone do mesmo). Para cada opção de host o jabberd necessita de um sub-diretório dentro do spool de mesmo nome do host.
Assim, se seu diretório de spool é /var/spool/jabberd/, então você deve criar o diretório:

mkdir /var/spool/jabberd/host1.minhacasa.org

 Verifique com que usuário o seu jabberd roda. Em geral, ele roda com usuário e grupo chamado "jabberd". Assim, atribua este diretório a estes usuário e grupo:

chown jabberd /var/spool/jabberd/host1.minhacasa.org
chgrp jabberd /var/spool/jabberd/host1.minhacasa.org


Ajustando a porta

Se você chegou até aqui, seu servidor jabberd já está pronto para rodar perfeitamente. Contudo, ele vai rodar nas portas padrões do Jabber, a porta 5222 (para acesso sem encriptação) e 5223 (para acesso com encriptação). É fortemente recomendável, especialmente se seu servidor estará aberto para acesso externo via internet, que você troque a porta.
Para tanto, localize no arquivo jabber.xml mencionado acima as linhas:

<ip port="5222"/> (usada para acesso sem SSL)
<tls port='5223'/> (usada para acesso com SSL)

Troque os valores 5222 e 5223 para valores que você desejar. É imprescindível, entretanto, que você verifique o firewall de sua máquina onde está instalado o jabberd para se certificar de que as portas escolhidas estão abertas para acesso conforme você deseja. De outro modo, o servidor ficará inacessível.


Cadastramento de usuários

O jabberd vem, por padrão, disponível para aceitar que qualquer novo usuário se cadastre (registre) no sistema. Caso esta não seja a opção de seu desejo, então visite, no arquivo jabber.xml mencionado acima, as tags <register> e escolha a opção que mais lhe convenha.
Para eliminar totalmente a opção de registro automático pelo usuário, elimine deste arquivo todas as tags <register>.
Caso você queira ter total controle sobre os usuários e deseja registrá-los através de um serviço web ou criando-os a mão mesmo, você deverá saber a sintaxe do arquivo XML de usuário para escrevê-lo, ou confiar em um script que faça isto. Se é este seu desejo, veja bons scripts administrativos do Jabber aqui e aqui.
Lembre-se de que, para o Jabber, o nome do usuário sempre tem a fórmula:

nomeusuario@host.dominio
Arquivo: "/var/spool/jabberd/host.dominio/nomeusuario.xml"

Muitos clientes só conseguirão cadastrar ou localizar usuários usando esta forma acima.
Também é importante lembrar-se de que, se você fará o cadastramento de usuários manualmente ou através de outro sistema, os arquivos XML de cada usuário deverão ser atribuídos aos usuário e grupo do jabberd, conforme fizemos com o diretório de spool acima.


4- Reiniciando o Servidor

Após concluídas todas estas modificações, o servidor precisa ser reiniciado. Para tanto, rode os comandos:

/etc/init.d/jabberd14 stop (caso ainda não o tenha feito)
/etc/init.d/jabberd14 start

Para verificar se o servidor rodou usando o nome de host adequado, consulte o comando executado pelo script:

ps ax | grep jabberd

Deve surgir algo como:

2764 pts/1    S      0:00 /usr/sbin/jabberd --background -h host1.minhacasa.org -s /var/spool/jabberd

onde:

--background: informa que o serviço deve rodar como deamon, ou seja, em segundo plano.
-h: informa o nome do host (e, conseqüentemente, a pasta a ser lida dentro do spool);
-s: indica o local onde está o spool.


5- Conclusões

Bom, ao final deste tutorial, você deverá estar com um servidor Jabber rodando perfeitamente. Deve também ser capaz de criar usuários e configurar facilmente um cliente, como o Pidgin. Espero ter ajudado e conto com suas impressões nos comentários!!

quinta-feira, 22 de dezembro de 2011

Script para Automatizar Conexões SSH

Se você é um solicitado administrador de redes, um responsável por uma lan house ou um laboratório Linux ou mesmo um usuário avançado, certamente já se viu na situação de ter de abrir várias sessões de SSH para máquinas diferentes com grande freqüência. Normalmente, isto não é problema algum, mas muitas vezes é chato e cansativo se digitar tantos parâmetros para abrir a conexão.
Se este é o seu problema, o script abaixo poderá lhe ajudar muito!!



  • Mas, o que ele faz??
Ele automatiza o comando do SSH retirando alguns dos indicadores de parâmetros, como o "-p".


  • Como Devo Usá-lo??
Primeiramente, grave o script com um nome sugestivo, como "fastssh.sh", colocando-o em um diretório dentro de seu PATH (por exemplo, o /usr/bin), para que possa ser executado de qualquer diretório.
Não se esqueça de determinar a permissão de execução para todos os usuários, com o comando:

chmod +x fastssh.sh


Agora, imagine que você tem dois servidores que precisam ser acessados rotineiramente, com as seguintes configurações:

nomes: "server1.dominio.com" e "server2.dominio.com".
porta do SSH: 1000.
usuário: "pele".

OBS1: é sempre recomendável, para garantir maior segurança, que o SSH utilize uma porta fora do padrão!!
OBS2: Cuidado!! Normalmente, não é recomendável se conectar em servidor diretamente como "root".

Você deverá criar então 2 arquivos bem simples:

server1.sh:
fastssh.sh server1.dominio.com 1000 pele

server2.sh:
fastssh.sh server2.dominio.com 1000 pele

Faça os dois arquivos se tornarem executáveis (utilizando o mesmo comando "chmod", conforme mostrado acima) e coloque-os igualmente em uma pasta como o /usr/bin (ou qualquer outra que esteja no seu PATH).
Pronto!! Parabéns, agora, para se conectar a qualquer um dos servidores, basta somente se chamar o script correspondente, digitando-se "server1.sh" ou "server2.sh".


  • Conclusões
Este artigo foi bem simples e mostrou uma técnica de automatização extremamente útil e a que, muitas vezes, na pressa do dia-a-dia nós não atentamos e não utilizamos. Muitas vezes, são nas tarefas mais banais onde se perde mais tempo... Assim, fica aqui a dica e o script, testado e pronto para entrar em funcionamento na sua rede!!

sábado, 5 de novembro de 2011

Instalando a Versão Mais Nova do TimThumb

  • O Que é o TimThumb??

O TimThumb é uma pequena aplicação em PHP criada para automatizar o redimensionamento de imagens em páginas web, tarefa especialmente importante na geração de thumbnails para galerias de fotos e imagens. Pode ser usada em qualquer portal cujo servidor suporte PHP, mas tem sido fortemente aplicada em temas para o Wordpress. O próprio Wordpress não usa o TimThumb (ao menos até as últimas versões lançadas até o momento da escrita deste artigo), mas muitos de seus temas o têm usado ostensivamente.

Página do Projeto TimThumb:


  • O Problema da Vulnerabilidade (Falha no TimThumb)

Recentemente, a Avast noticiou ter descoberto uma vulnerabilidade provocada por uma falha no TimThumb que permite a injeção de código malicioso em páginas que utilizam este componente, podendo infectar máquinas clientes e disseminar o código malicioso rapidamente. Mais informações, vide aqui. Uma lista ainda bem incompleta de temas do Wordpress que utilizam o TimThumb está aqui.


  • Como Saber se Uso o TimThumb??

O TimThumb nada mais é do que um arquivo PHP. Nos temas do Wordpress, ele pode ter os seguintes nomes: timthumb.php, thumb.php, image.php, além de alguns outros nomes menos utilizados. O comando abaixo lista possíveis lugares onde o TimThumb pode estar instalado:

cd /var/www [ou o local onde está sua pasta web]
find . | grep thumb.php
find . | grep image.php

Em último caso, você pode varrer todos os arquivos PHP das suas pastas virtuais, com o comando:

find . | grep .php

Anote os arquivos que os comandos geram em suas saídas. Estes são do TimThumb e precisam ser atualizados.


  • Atualizando o TimThumb (Passo-a-Passo)


1- Baixe a versão mais nova do TimThumb em:

http://timthumb.googlecode.com/svn/trunk/timthumb.php

Atente para que o arquivo tem, além do código em si, logo no início, algumas informações de registro, como a versão e a licença. Verifique estes dados na versão que está instalada em cada sistema web seu e valide se a sua versão é mesmo defasada e precisa ser atualizada. A versão pode ser encontrada em uma linha semelhante a esta:

define ('VERSION', '2.8.2');

2- Antes de qualquer coisa, PELAMORDEDEUS, faça backup dos arquivos que você pretende substituir. Mantenha estes backups durante algum tempo, para que seja fácil voltar os arquivos antigos caso algum erro seja detectado com a versão nova.

3- Verifique as permissões que foram dadas a cada arquivo de versão antiga que deve ser substituído. Verifique também o nome de usuário e grupo atribuído a estes arquivos. Para tanto, utilize o comando "ls -l".

4- Copie o arquivo que você baixou, correspondente à versão mais nova do TimThumb, para o mesmo local e com o mesmo nome do arquivo correspondente à versão antiga, de forma a sobreescrevê-lo. Faça isso para cada ocorrência do TimThumb em seus sistemas web. Restaure ao arquivo recém-copiado as mesmas permissões de acesso, nome de usuário e grupo, conforme configurado no arquivo antigo.

5- Teste, teste, teste. Testar nunca é demais.



  • Instalando o TimThumb Pela Primeira Vez!!

Embora este artigo seja inicialmente destinado a ajudar um administrador de sistemas a atualizar o TimThumb, esta seção foi criada para ajudar os desenvolvedores web que acaso venham até aqui e quereiram aprender a usar o TimThumb em seus sistemas.
Antes de instalar, note que o TimThumb é um script PHP e, evidentemente, necessita rodar em um servidor que suporte PHP.
Poucos passos podem propiciar uma boa instalação do TimThumb em seu sistema:

1- Copie o arquivo timthumb.php para seu sistema web, mantendo as permissões, usuário e grupo coerentes com os demais arquivos PHP.

2- No diretório onde o arquivo acima foi copiado, crie duas pastas especiais, que serão usadas para criação, utilização e armazenamento de thumbnails geradas automaticamente pelo TimThumb. Estas pastas são: cache e temp.

3- Defina para as pastas cache e temp a permissão 777. Apenas para estas pastas a permissão terá este valor, e não para arquivos PHP ou qualquer outro trecho de seu sistema!!

4- Verifique outro pré-requisito: é preciso se ter instalada a biblioteca GD Image, e esta precisa ser suportada pelo ser servidor web.


  • Conclusões

Este breve artigo pretende ajudar os administradores a atualizar seguramente um componente interno utilizado em temas do Wordpress (ou em outros sistemas web). Note que o procedimento é válido para qualquer versão, e não apenas no caso mencionado acima, a respeito da falha de segurança de algumas versões do componente. Espero ter ajudado e, claro, COMENTEM!!

domingo, 28 de agosto de 2011

Como Personalizar a Mensagem e a Tela do KDM

Você gostaria de mudar a tela de login das máquinas de sua empresa?? Gostaria de mudar o texto de boas-vindas?? Gostaria de personalizar a tela das máquinas de seu laboratório?? Entenda um pouco mais sobre como fazer isto neste artigo!!

  • O Que é o KDM??

O KDM (K Display Manager) é o gerenciador de login da suíte do KDE. Conforme o GDM (do Gnome) ou o XDM (do X), ele é responsável por fornecer ao usuário uma interface gráfica pela qual seja possível entrar com o nome do usuário e senha, selecionar o gerenciador de janelas preferido (KDE, Gnome, etc.) para a sessão e fazer o login gráfico diretamente. Ainda é possível se fazer várias outras coisas, como desligar ou reiniciar o sistema, reiniciar o X, fazer login no console, exibir fotos dos usuários, etc.
O KDM tem um sofisticado suporte a temas que permite uma personalização verdadeiramente radical de toda a interface. Um manual completo sobre o KDM e todas as suas possibilidades administrativas pode ser encontrado livremente no KDM Handbook, da documentação do KDE. Excelentes temas podem ser baixados gratuitamente do portal http://kde-look.org/, na seção de temas do KDM. Particularmente, eu gosto muito do SteampunK, que tem também uma versão para o KSplash (KSplash é o programa responsável pela tela de inicialização do KDE, aquela animação que roda enquanto a sessão está sendo carregada. Em geral, temas do KDM são acompanhados por temas do  KSplash, para maior integração gráfica).
Nosso objetivo deste artigo é muito mais pontual: estamos interessados em ajustar as mensagens do KDM Greeter, que é a telinha de boas-vindas que aparece para o usuário.


  • Configurando o KDM

As configurações básicas do KDM são dispostas no arquivo (com acesso de escrita apenas para root):

/etc/kde4/kdm/kdmrc
(substitua o "kde4" por "kde3" ou simplesmente "kde", de acordo com a sua distribuição e a versão do KDE que você está usando).

Este arquivo-mestre contém diversas opções de configurações, separadas por seções. A seção importante para se configurar a tela inicial e a mensagem de boas-vindas se chama "[X-:*-Greeter]". Uma abordagem detalhada de todas as opções disponíveis para cada seção pode ser encontrada no Capítulo 5 do manual do KDM.

IMPORTANTE: utilize este arquivo para fazer configurações gerais. Note que a seção acima mencionada (o Greeter, ou seja, a tela de boas-vindas) é totalmente sobrescrita pelas definições dos temas!! Se você usa algum tema, o que eu recomendo que faça, então não perca tempo configurando esta seção, mas sim alterando as definições da tela de boas-vindas do tema.


  • Configurando e Personalizando um Tema do KDM

Os temas do KDM podem ser baixados pela rede e instalados através das configurações do KDE. É preciso se ter a senha de administrador para instalar um tema, ainda que não se esteja logado como root. No KDE3, o programa gráfico que gerencia as configurações do KDE é o KControl (KDE Control Center); no KDE4, o KControl foi descontinuado e substituído pelo System Settings. Para uma lista de novos programas e substitutos implementados na mudança do KD3 para o KDE4, vide esta página ou esta outra.
Uma vez instalado um tema através do System Settings, o arquivo do tema é descomprimido e colocado no diretório de temas do KDM:


/usr/share/kde4/apps/kdm/themes/
(substitua o "kde4" por "kde3" ou simplesmente "kde", de acordo com a sua distribuição e a versão do KDE que você está usando).


Para cada tema instalado, é criado um diretório novo com o nome do tema dentro deste diretório de temas e seus arquivos são depositados ali. Este é o local onde você deve olhar caso queira substituir alguma imagem pelo logo de sua empresa, instituição ou laboratório (especialmente a imagem de fundo).
As imagens de fundo, em geral, ficam no diretório "wallpapers" e podem ser várias, dependendo das resoluções que o tema suporta. Assim, se seu tema se chama "xyz", procure a imagem de fundo em:

/usr/share/kde4/apps/kdm/themes/xyz/wallpapers

Note que é preciso reiniciar o KDM para que ele absorva todas as configurações novas. Para tanto, faça logout de todos os usuários e reinicie o X (Ctrl + Alt + Backspace) ou, como root, reinicie o serviço na mão:

service kdm stop
service kdm start

Para se alterar a mensagem de boas-vindas, vá ao diretório de instalação do tema (conforme mostrado acima) e edite o arquivo:

vi tema.xml
(onde "tema" é o nome do tema, sempre em letras minúsculas)

Este é um arquivo XML que basicamente trata da disposição dos itens gráficos da tela de login, o chamado Greeter. É o coração do tema. Procure a linha responsável pelo item de nome "label":

<item type="label">
    <pos anchor="c" x="58%" y="82%"/>
    <normal font="Sans Bold 12" color="#a07358"/>
    <text>%h - %c</text>
</item>

A maior parte das tags se referem a posicionamento e formatação do texto, e talvez não precisem ser mudadas. A mensagem está na tag "text" e contém as informações:

%h - nome do host (da máquina)
%c - data e hora local.

Este campo aceita qualquer caracter, letra, número ou frase, onde algumas variáveis podem ser adicionadas:

%%    O caracter %
%c    Data e hora do relógio
%d    Nome da variável de ambiente DISPLAY do sistema (verifique digitando "echo $DISPLAY", sem aspas, no terminal)
%h    Nome da máquina (obtido do gethostname output)
%m    Nome da máquina (obtido do comando uname)
%n    Nome do node (obtido do comando uname)
%o    Nome do Domínio (obtido do getdomainname output)
%r    Nome do Release (obtido do comando uname)
%s    Nome do Sistema (obtido do comando uname)
%t    Quantidade de segundos restante até que o login agendado seja realizado, com o devido plural na forma de "segundos" do padrão i18n.
%u    Nome do usuário para o login agendado
_    Força que o próximo caracter seja um acelerador

Use estas variáveis para personalizar sua mensagem de boas-vindas e para informar dados úteis, como o nome da máquina, a data e hora, o nome do sistema, etc. Se estas informações ficarem muito grandes para o layout do tema, tente redimensionar o texto, mudando o tamanho da fonte. Não altere o layout do tema, pois ele certamente é complexo, depende de figuras e outros itens e dará uma boa dor-de-cabeça se ficar quebrado!!

Um tutorial completo sobre todos os itens presentes neste arquivo XML está nesta página do manual do KDM.


  • Conclusões

Este artigo abordou diversos importantes detalhes sobre a configuração do KDM e de seus temas. Com isto, torna-se possível se utilizar um tema gratuito e personalizá-lo para sua empresa, instituição ou laboratório. É possível se trocar figuras e textos facilmente. Com as referências incorporadas ao texto e a teoria explanada, uma pessoa interessada pode inclusive criar facilmente seu próprio tema do KDM, de forma a personalizar sofisticadamente a tela de login de suas máquinas.
Espero ter sido útil e ter ajudado!! Claro, continuem visitando o Pajé e, sempre que possível, COMENTEM!!!

domingo, 31 de julho de 2011

Amule: Resolvendo Problemas de LowID

  • O Que é LowID e Como Funciona a Conexão no Amule??

O Amule é um cliente das redes ED2K e KAD para Linux, muito semelhante ao E-Mule, que é direcionado ao público de outros sistemas operacionais.
Para o seu total funcionamento, o Amule (assim como o E-Mule) precisa atuar como servidor, abrindo uma porta em seu computador e permitindo o acesso externo a esta porta. A porta padrão do Amule é 4662 (TCP). Muitas vezes ainda é usada a porta 4672 (UDP). Se ao menos a porta TCP (4662) não estiver aberta, sua conexão será prejudicada e você receberá um LowID, que é um número de identificação baixo.
Receber um LowID significa que você tem dificuldades para ser acessado remotamente, e, por isso, não terá prioridade para download, o que implica em demora muito maior para receber dados.


  • Como Descobrir ou Configurar a Porta que o Amule Usa?

Abrir uma porta para acesso externo é complicado, pois pode favorecer a invasão a seu sistema, especialmente se você abrir a porta errada!! Felizmente, você pode verificar e trocar qual a porta que o Amule vai usar no próprio programa acessando (vide Figura 01):

Preferências - Conexão - Porta TCP do Cliente

Recomenda-se que você utilize uma porta fora do padrão, garantindo segurança um pouco maior no seu sistema.

Figura 01: Tela de configurações do Amule, mudando as portas.


  • Como Saber se a Porta Está Aberta??

Evidentemente, para usar o Amule você precisa verificar duas coisas:

1- Não existe mais nenhum programa usando a porta que você escolheu;
2- O Amule abre e a porta fica acessível;
3- O seu Firewall não bloqueia a porta do Amule.

Existem milhares de maneiras de se fazer isso. Uma forma fácil é usar o programa "nmap", um excelente sniffer de rede em modo texto. Em muitas distribuições ele não vem por padrão, então, para instalá-lo, digite, como root (em sistemas baseados no Debian):

apt-get install nmap

Para verificar as portas abertas em sua máquina, digite:

nmap localhost

Nmap scan report for localhost (127.0.0.1)
Host is up (0.00032s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 994 closed ports
PORT     STATE SERVICE
4662/tcp open  edonkey

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Se o relatório mostrou a sua porta (ex: 4662, que é a padrão)  com o estado "OPEN" (aberto), então localmente o problema está sanado, ou seja, não há nenhum firewall bloqueando a porta. Caso o estado apareça como "FILTRED", então a porta está sofrendo alguma intervenção e você deverá analisar a sua máquina em busca de algum Firewall (scripts do IPTables ou mesmo o Firestarter) e deverá reconfigurá-lo ou ao menos pará-lo momentaneamente, enquanto você usa o serviço.


  • Configurando um Modem ou Roteador

Mas nem tudo são flores: você pode estar debaixo de um roteador e pode estar em uma sub-rede criada pelo seu Modem/Roteador ou pela máquina que faz o Gateway para a Internet. Como saber isso com certeza?? Verifique seu IP, digitando:

ifconfig

Se seu IP começa com 192.168.xxx.yyy ou com 10.xxx.yyy.zzz, então você não está na Internet, mas sim numa sub-rede. E agora??
Calma, tudo tem solução. Se sua rede é doméstica, você provavelmente (ainda que não saiba) é o administrador do seu Gateway, que possivelmente é seu Modem ou Roteador. A maioria destes aparelhos possuem, atualmente, uma boa interface Web de configuração, que pode ser acessada de ser navegador, pelo endereço do IP (normalmente, o mesmo IP da sua máquina, mudando o último número para "1"). Exemplos:

http://192.168.0.1
http://10.0.0.1

Se ele pedir uma senha e você não souber, chute usuário=admin e senha=admin. Se der errado, verifique nos seus manuais e com a pessoa que fez a instalação da sua rede.

Na interface Web, procure uma seção com nome como "Virtual Hosts" ou "IP Forwarding" ou "NAT". Lá você poderá configurar sua máquina. Desta forma, basta preencher os seguintes dados:

Porta Interna: 4662 (ou a porta que você está usando no Amule).
Porta Externa: 4662 (a mesma de cima!!).
Private/Internal IP: (digite o IP de sua máquina, conforme vimos acima. NÃO DIGITE 0.0.0.0, pois criará problemas de redirecionamento no momento em que uma máquina remota tentar acessar seu Amule).
Protocolo: TCP.

Agora basta salvar tudo e, dependendo de seu Gateway, talvez seja preciso reiniciá-lo.


  • Teste Final

Abra o Amule e entre neste endereço, informando a sua porta e clicando em "Test":


É possível que tudo esteja funcionando. Se seu Amule não reclamou de receber um LowID e se o endereço acima não reportar erros, então está tudo certo!! Parabéns e boa sorte!!


  • Avisos

Este artigo ensina como configurar detalhadamente as portas do programa Amule, um programa gratuito e de código aberto. Não estamos incitando a pirataria nem a cópia ilegal de materiais proprietários e fechados. O Amule serve para compartilhamento de arquivos e pode ser uma grande solução para distribuição de programas gratuitos, assim como materiais artísticos criados e lançados por licenças abertas, como a Creative Commons.

quinta-feira, 21 de julho de 2011

Instalando Impressoras Multifuncionais HP no Linux

Antigamente, realizar a tarefa proposta pelo título deste artigo era como reescrever o Kernel: todos diziam que era possível, mas ninguém conseguia fazer realmente. Hoje em dia, esta tarefa está muito mais fácil e, com as breves dicas deste artigo, você conseguirá fazer sua impressora HP funcionar corretamente no Linux, de maneira bem mais fácil, rápida e eficiente do que em outros sistemas operacionais para os quais a HP envia o CD de instalação...


  • Instalando o hplip

O projeto hplin (HP Linux Imaging and Printing) é um projeto de código livre que é uma verdadeira mão-na-roda: ele se propõe a prover, de maneira eficiente e sem muita frescura, drivers para tantas impressoras multifuncionais HP quanto possível. E, realmente, a lista é enorme (verifique todas as impressoras suportadas aqui)!! Os drivers em geral suportam tanto o scanner da impressora HP quanto a impressão em si.
Assim, seu primeiro passo é clicar no link mencionado e verificar se a sua impressora está presente na lista (ou seja, se ela é suportada), especialmente observando a partir de qual versão do driver ela aparece. O hplip está presente em muitas das distribuições Linux mais recentes, mas pode ser instalado em virtualmente qualquer distribuição, em geral através do seu gerenciador de pacotes. Em distros baseadas em Debian, basta digitar, como root:

apt-get install hplip

Se você não sabe se ele está ou não instalado, ou quer saber qual a versão que você tem, digite:

dpkg-query -l hplip

Em poucos instantes seu driver estará instalado. Não consome milhares de clicks nem fica nada piscando na sua tela. Não consome mais memória nem fica travando seu sistema. Fantástico!!
Se você quer dicas mais detalhadas sobre configurações específicas, incluindo suporte a FAX para o Ubuntu, consulte o tutorial oficial aqui.


  • Instalando o XSane

No Linux, existe uma ótima coisa: é preciso que se tenha apenas um programa para escanear, e ele não está preso ao driver ou ao CD da impressora. Este programa se chama "xsane", que é na verdade um frontend gráfico amigável para o Sane Project (Scanner Access Now Easy). Para instalá-lo, caso já não esteja instalado por padrão, digite (em distros Debian, Ubuntu ou baseadas no Debian), como root:

apt-get install xsane xsane-common

Isto instalará tudo o que você precisa. Agora, provavelmente aparecerá um novo programa no grupo Graphics do seu menu de programas. Caso nada apareça, basta digitar, no terminal: xsane.
Certifique-se de ligar a impressora e plugá-la antes de rodar o xsane, pois ele procura por dispositivos assim que se carrega.


  • Instalando e Configurando uma Impressora no Linux

Talvez, ao plugar sua impressora USB, o seu Linux já seja esperto o suficiente para encontrá-la e instalá-la automaticamente, de forma que nada mais seja preciso. Então esta seção pode ser pulada. Caso isto não aconteça, ou caso sua impressora não seja USB, vamos ao procedimento manual...
Para imprimir, é preciso instalar o CUPS (Common UNIX Print System), que possivelmente já estará instalado por padrão. Verifique com o comando:

dpkg-query -l cups

Caso não esteja instalado, instale-o com o comando:

apt-get install cups

Uma vez instalado, o CUPS vai rodar como um servidor (um deamon) em sua máquina. O interessante deste programa é que ele não provê uma interface gráfica, mas sim uma interface web de administração. É feito desta forma para que fique mais fácil a manutenção de impressoras em servidores de impressão de rede, que devem ser acessados remotamente.
Acesso o CUPS pelo seu navegador, com o endereço:

http://localhost:631/
OBS: troque o "localhost" pelo IP ou nome da máquina

A porta padrão do CUPS é 631, mas esta porta pode ser trocada, caso se deseje. Toda a manutenção de impressoras (configurar a impressora, adicionar ou remover impressoras, verificar a fila, etc, etc.) pode ser feita com as opções do menu CUPS for Administrators. A interface web é muito simples e bastante auto-explicativa. Boa sorte!!


Bom, pessoal, espero ter ajudado com este breve tutorial!! Boa sorte e, claro, como sempre: COMENTEM!!

sábado, 16 de julho de 2011

Como Copiar Arquivos Grandes no Linux?

Imagine que você precisa copiar um arquivo bem grande (ou de tamanho que consideramos bem grande para os dias de hoje, quando escrevo), algo em torno de vários gigas. Pode ser um dump geral de seu banco de dados, um arquivo de log gigantesco, um arquivo temporário ou um filme em Blue Ray. Pode ser que a cópia de backup deste arquivo falhe ou a escrita para ele comece a falhar a partir de certo ponto... o que fazer??
Calma, o Pajé tem a solução!!


  • Cópia em Ambiente Linux

Se você usa um sistema de arquivos moderno, como o ext4, então você poderá escrever vários gigas num mesmo arquivo. Se sua cópia ou escrita falhar, tente verificar se existe algum limite pré-definido de escrita, usando o comando:

$ ulimit
unlimited

Se a resposta for a que mostro aí em cima (unlimited), então não há limite para a sua cópia. De outra forma, pode haver limite. Daí, para redefinir o limite, basta usar este mesmo comando, passando o novo valor após o argumento -f:

$ ulimit -f [valor]

Para um tutorial completo sobre limites de escrita, uso e cotas de usuários, visite este endereço.


  • Cópia pela Rede, para Pen-Drives, HDs Externos ou Outros Dispositivos

Agora realmente a coisa muda de figura!! Você está tentando copiar um arquivo que está em um sistema de arquivos Linux para um dispositivo que provavelmente tem seu próprio sistema de arquivos, não necessariamente aquele que você usa na máquina de origem do arquivo. Lembre-se de que um sistema de arquivos é um banco de dados, e que cada tipo tem seus próprios limites.
Se você está copiando para outro dispositivo, verifique qual o sistema de arquivos que ele usa com este comando (claro, presumindo que o dispositivo esteja montado e acessível!!):

$ mount
(....)
/dev/sdb1 on /media/HDExterno type vfat

O comando acima vai mostrar tudo que está montado em seu sistema (a maioria não interessa neste momento, então coloquei estas saídas no formato de "(...)", para ficar mais fácil de entender). Porém, uma das linhas da saída vai se reportar ao dispositivo externo. No caso acima, é um HD Externo, que é acessível em /dev/sdb1 e está montado em /media/HDExterno. Observe que o tipo de sistemas de arquivos é vfat, ou seja, possivelmente um FAT32.
O sistema de arquivos FAT32 (vfat) é o pior que tem: um sistema antigo, limitado e muito simples. Porém, exatamente dada a sua simplicidade, ele é facilmente acessível e montável em ambientes os mais diferentes, desde Linux e MAC até Rádios (CD Players), TVs, DVD Players, CD Players de carros e aparelhos de som.
Notem que o HD Externo acima está formatado em FAT32. Pelas características deste sistema de arquivos, não é possível gravar nenhum arquivo maior que 4GB (na verdade, um byte antes de 4GB de tamanho). Não adianta, quantas vezes você tentar, vai falhar...


  • Achando a Solução para o Caso Acima

Se o seu caso é este acima, então tente fazer uma destas soluções:

1- Reformatar o HD com outro sistema de arquivos, como o NTFS (para ter compatibilidade com Windows) ou mesmo os sistemas do Linux, como ext4, ReiserFS, etc. Claro, isto implica em fazer backup de tudo que tem nele, apagar o HD Externo totalmente e reformatar. Porém, se você precisa muito gravar um arquivão de mais de 4GB, que pode ser seu precioso banco de dados ou o Log de seu sistema, então vale a pena o esforço!!

2- Uma alternativa, é usar o comando split, que quebra o arquivo em vários pedaços definidos por você. Depois desta quebra, o original pode ser apagado e os pedaços, em menor tamanho, podem ser gravados sem problemas. Fique tranqüilo, pois eles podem ser remontados sempre que necessário, usando o comando cat. Excede o escopo deste tutorial explicar detalhadamente como eles funcionam, mas a documentação dos mesmos é bem clara e certamente você conseguirá usá-los bem (digite "man split" e "man cat" para ver a página do manual de cada um)!!

3- Existem compactadores muito bons que conseguem reduzir em grande parte o tamanho dos arquivos. Muitos deles, como o rar, suportam não só a compactação como também a quebra do arquivo compactado em arquivos menores e de mesmo tamanho. Muitas vezes, você pode usar mais de um compactador, como a combinação do tar com o gzip ou bzip2. Se você pretende fazer backup, recomendo sempre compactar os dados e, claro, você pode fazer um script para te ajudar nesta tarefa um tanto quanto enfadonha.

Bom, pessoal, por hoje é isso... espero ter ajudado!!

domingo, 3 de julho de 2011

Faxina no Linux: Limpando as Imagens Antigas do Kernel

Você pode não ter notado, mas algumas distribuições, como o Ubuntu, no momento de fazer uma grande atualização, podem baixar novas versões do Kernel, compilá-las automaticamente (ou ao menos instalar imagens pré-compiladas), gerando as chamadas "Imagens do Kernel" e aplicá-las nas opções do boot. Este procedimento não tem problema nenhum, salvo o fato de que as imagens são sempre acompanhadas pelo código-fonte, o que ocupa bastante espaço no seu disco. Além disso, polui a tela de boot do LILO ou GRUB com opções diferentes para cada imagem de kernel, desde a mais antiga, que veio com a instalação do sistema, até as mais recentes baixadas e instaladas.
Como limpar estas imagens de Kernel seguramente, remover as centenas de megas em fontes ocupando seu disco rígido e limpar as entradas das opções de boot do GRUB? Este artigo trata exatamente desta dica, e creio que possa ser de grande valia para muitos usuários Linux, especialmente aqueles que costumam fazer atualizações constantes.

Em sistemas baseados em Debian, como o Ubuntu, para rodar uma atualização completa, basta que se digite, como root:

apt-get dist-upgrade

A atualização do sistema pode reportar, muitas vezes, uma atualização das imagens do Kernel no meio do monte de pacotes sendo atualizados. Isto pode ser verificado nas linhas em negrito do exemplo abaixo:

apt-get dist-upgrade
Lendo listas de pacotes... Pronto
Construindo árvore de dependências      
Lendo informação de estado... Pronto
Calculando atualização... Pronto
Os NOVOS pacotes a seguir serão instalados:
  linux-headers-2.6.32-32 linux-headers-2.6.32-32-server linux-image-2.6.32-32-server
Os pacotes a seguir serão atualizados:
  apparmor apparmor-utils apt apt-transport-https apt-utils at base-files bind9-host binutils bsdutils dhcp3-client dhcp3-common dnsutils fuse-utils grub-common grub-pc initscripts landscape-common libapache2-mod-php5 libapache2-svn libapparmor-perl libapparmor1 libapr1 libbind9-60 libblkid1 libc-bin libc-dev-bin libc6 libc6-dev libcurl3-gnutls libdbus-1-3 libdbus-glib-1-2 libdns64 libfuse2 libgssapi-krb5-2 libisc60 libisccc60 libisccfg60 libk5crypto3 libkrb5-3 libkrb5support0 libldap-2.4-2 liblwres60 libpam-modules libpam-runtime libpam0g libpcsclite1 libplymouth2 libssl0.9.8 libsvn1 libuuid1 libxml2 linux-firmware linux-headers-server linux-image-server linux-libc-dev linux-server login logrotate mount ntpdate openssh-client openssh-server openssl passwd perl perl-base perl-modules php5 php5-common plymouth plymouth-theme-ubuntu-text python-smartpm rsync subversion sysv-rc sysvinit-utils tzdata upstart util-linux uuid-runtime w3m xkb-data
83 pacotes atualizados, 3 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
É preciso baixar 96,8MB de arquivos.
Depois desta operação, 216MB adicionais de espaço em disco serão usados.
Você quer continuar [S/n]?

O novo Kernel é empacotado em pacotes com outros nomes, então, para o gerenciador de pacotes, não é considerado uma atualização, e sim uma gama de pacotes novos a serem instalados. Observe que existem muitos pacotes sendo de fato atualizados, o que não vai consumir espaço excedente quase nenhum, mas tem uma nova versão do Kernel a ser baixada, o que vai consumir 216MB de espaço, já que é preciso que se baixem todos os fontes. Naturalmente, a versão antiga, que está em pacotes de outros nomes, será mantida por padrão.
Depois de selecionar "S" para a pergunta e a atualização acabar, você já terá ocupado mais de 300MB deste sistema aí em cima sendo atualizado. Então, vamos limpar os arquivos de backup dos pacotes que foram baixados e atualizados. Se a atualização funcionou, não precisamos mais deles. Para tanto, digite:

apt-get clean

TESTE: Agora, dê um boot e certifique-se de que o sistema esteja funcionando perfeitamente, ou seja, a nova imagem do Kernel funciona e está estável (para fazer isto em modo texto, digite: "shutdown -r now"). Em avassaladora massa de vezes tudo estará perfeitamente estável, mas não custa fazer o teste, especialmente em servidores. Como o Pajezinho sempre diz, "um homem prevenido vale por cinco"!!

Estando tudo perfeito, vamos apagar os Kernels antigos do sistema:

apt-get autoremove

Respondendo "S" à pergunta gerada com o comando acima, será possível eliminar os pacotes referentes a Kernels antigos, aliviando centenas de megas de seu disco rígido. Contudo, isto ainda não limpa as imagens que estão associadas ao boot e à tela inicial do GRUB. Para limpá-las, é preciso que se vá ao diretório "/boot" e se apague os arquivos certos.

cd /boot
ls -1
abi-2.6.32-26-generic
abi-2.6.32-27-generic
abi-2.6.32-28-generic
abi-2.6.32-29-generic
abi-2.6.32-30-generic
abi-2.6.32-31-generic
abi-2.6.32-32-generic
config-2.6.32-26-generic
config-2.6.32-27-generic
config-2.6.32-28-generic
config-2.6.32-29-generic
config-2.6.32-30-generic
config-2.6.32-31-generic
config-2.6.32-32-generic
grub
initrd.img-2.6.32-26-generic
initrd.img-2.6.32-27-generic
initrd.img-2.6.32-28-generic
initrd.img-2.6.32-29-generic
initrd.img-2.6.32-30-generic
initrd.img-2.6.32-31-generic
initrd.img-2.6.32-32-generic
memtest86+.bin
System.map-2.6.32-26-generic
System.map-2.6.32-27-generic
System.map-2.6.32-28-generic
System.map-2.6.32-29-generic
System.map-2.6.32-30-generic
System.map-2.6.32-31-generic
System.map-2.6.32-32-generic
vmcoreinfo-2.6.32-26-generic
vmcoreinfo-2.6.32-27-generic
vmcoreinfo-2.6.32-28-generic
vmcoreinfo-2.6.32-29-generic
vmcoreinfo-2.6.32-30-generic
vmcoreinfo-2.6.32-31-generic
vmcoreinfo-2.6.32-32-generic
vmlinuz-2.6.32-26-generic
vmlinuz-2.6.32-27-generic
vmlinuz-2.6.32-28-generic
vmlinuz-2.6.32-29-generic
vmlinuz-2.6.32-30-generic
vmlinuz-2.6.32-31-generic
vmlinuz-2.6.32-32-generic

O comando "ls -1" lista os arquivos e diretórios todos em uma única coluna. Usei este comando para ficar mais fácil a leitura da saída dele aqui no blog. Obverse que temos aí uma verdadeira confusão: uma sopa de kernels e imagens que foram instalados, desde o 2.6.32-26 até o 2.6.32-32. O mais recente é aquele que instalamos lá em cima, o 2.6.32-32. Se ele está rodando e funcionando perfeitamente (conforme nosso teste acima), então podemos seguramente apagar todos os outros:

rm *-26* *-27* *-28* *-29* *-30* *-31*

Cuidado com o comando acima!!! Um dígito errado e você poderá estar prejudicando permanentemente seu sistema!! Apague apenas os arquivos cujos nomes apontam para as versões ANTIGAS do Kernel, nunca os que apontam para a mais recente!!
Depois disso, basta atualizar o GRUB ou o LILO (dependendo de qual você use) para que ele não aponte mais para as imagens antigas (até porque, elas foram apagadas). Para atualizar o LILO, é preciso que se edite manualmente o seu arquivo de configurações, removendo as linhas correspondentes às imagens apagadas. Para atualizar o GRUB (que é bem mais fácil!!), basta que se rode o seguinte comando:

update-grub2
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-32-generic
Found initrd image: /boot/initrd.img-2.6.32-32-generic
Found memtest86+ image: /boot/memtest86+.bin
done

Prontinho!!!! O GRUB encontrou apenas uma versão do Kernel, que é a mais recente!! Você já pode reiniciar o sistema e ver a tela limpinha do GRUB funcionando. Pode verificar seu disco para notar o quanto de espaço foi recuperado graças ao comando "apt-get autoremove" (para verificar o disco, use o comando "df -h").


Observações Importantes:

1- Evite colocar esta operação em scripts. São operações delicadas e muito pouco rotineiras. Faça-as com carinho e cuidado, manualmente;
2- Em servidores, assegure-se do momento mais propício para reiniciar a máquina;
3- Caso você tenha compilado manualmente uma versão do Kernel, assegure-se de deixá-la intacta. Tudo que não for removido será automaticamente detectado pelo GRUB e permanecerá válido;
4- Se você tiver medo na hora de apagar os arquivos do /boot, faça um backup deles. Caso necessário, apague os arquivos um a um, sem usar o "*", de forma a que você não se engane nem apague um arquivo errado;
5- Se você fez tudo isso e usa o indexador padrão do Linux, este é um bom momento para rodar o comando "updatedb". Não vai lhe render muito mais espaço em disco, mas vai remover uma série de entradas dos índices e vai deixar a busca mais leve;
6- Evidentemente, faça absolutamente todas estas operações como superusuário (root). De outro modo, nenhuma delas funcionará.

Bom, espero ter ajudado!! Boa sorte e, lembrem-se: COMENTEM!!!

sábado, 5 de março de 2011

Como Remover um Commit Errado no SVN? Ou: Como Desfazer um Commit no Subversion?

Este artigo é dedicado a todos aqueles que já enviaram um commit equivocado para o SVN e quebraram ou estragaram alguma coisa no sistema onde trabalham. Quem nunca fez isso antes, que atire a primeira pedra!!
Bom, mas vamos lá.... A reposta para a pergunta acima é bem simples: não há como. Meu Deus, então agora estou perdido?? Calma, não se preocupe!! Existe uma técnica que lhe permite reverter o seu repositório para um estado anterior, se for realmente preciso. Acompanhe nosso artigo.


  • Por Que não há uma Forma Direta de Desfazer Commits??

Se desejar, você pode ir imediatamente para a solução do problema, lá embaixo. Entretanto, eu resolvi incluir esta seção aqui para lhe ajudar a pensar mais sobre como funciona o SVN e quais as suas premissas, aumentando seu conhecimento sobre o mesmo.
O SVN armazena seus dados em um banco de dados interno (ou em BDB - Berkeley Data Base, ou em FSFS). Evidentemente, seria possível fazer operações comuns a bancos de dados, como delete ou roll back. Contudo, o Subversion não permite qualquer tipo de remoção de entradas (inserts) de dados que foram efetivadas, sob risco de comprometer a segurança do repositório. Observe o risco a que os desenvolvedores estariam sujeitos e a falta de confiança que se geraria sobre os repositórios se isso fosse possível, considerando cenários como:

  1. Um desenvolvedor ou administrador de sistemas é demitido. Num acesso de raiva e considerando-se injustiçado, ele remove grande parte dos commits dos repositórios da empresa, deixando-os em estados muito primitivos e perdendo grande parte dos códigos gerados durante anos.
  2. Um desenvolvedor mal intencionado pratica sabotagem industrial: elimina ou deturpa parte do código do sistema antes do mesmo ser compilado e o envia para produção. Após a implantação do sistema danificado, o desenvolvedor remove o trecho defeituoso que criou, eliminando a única prova concreta de sua ação.
  3. Imagine que ninguém será demitido e não há qualquer pessoa mal intencionada. Ao contrário: todos trabalham felizes e freneticamente. Contudo, a equipe tem o hábito de, vez por outra, remover um commit mal feito. A uma certa altura, descobre-se um erro grave no sistema que está há mais de 1 mês em produção. A correção parece simples e poderia ser feita em cerca de um dia. Contudo, a quantidade de commits removidos impede que se consiga restaurar o código exato da versão que está em produção. Resultado: o erro vai persistir lá até que a versão seguinte seja totalmente finalizada e implantada...

Por motivos como estes, a remoção direta de commits não é possível. No entanto, existe a solução paliativa, um pouco mais agressiva, porém que funciona e é razoavelmente fácil e segura. Acompanhe-a na próxima seção!!


  • Removendo um Commit Indesejado

Se é realmente necessário remover um ou mais commits do SVN, e espero que tenham sido os últimos, então a única solução é fazem um dump do repositório filtrado pelo número de revisão, eliminá-lo, recriá-lo e restaurar o dump com um load, de forma a carregar no repositório recém-criado todas as revisões até a última antes das indesejadas. Todas estas ações devem ser feitas como root!! Vamos fazer isso passo a passo...

1. Fazendo o dump:
Considere que seu repositórios se chame "repo" e você está no diretório onde ele se encontra. Primeiramente, pare todos os acessos ao repositório, para congelá-lo (ou seja, pare o Apache, se você usa o WebDAV, ou impeça o login via SSH de usuários comuns, se você usa o protocolo svn+ssh://). Descubra o número da última revisão boa (desejada), a partir da qual todas serão eliminadas (suponhamos: revisão 200), para que façamos o dump de tudo até ela. Agora, considerando esta revisão, faça o dump:

svnadmin dump repo --revision 0:200 > repo.dump

É criado o arquivo repo.dump, que contém todas as revisões deste o tenro início de seu repositório até a revisão informada, de número 200.

2. Remova o repositório e crie outro idêntico:
Se você quiser, por segurança, pode mover o repositório para outro nome ao invés de apagá-lo, de forma a manter uma cópia de segurança do mesmo, caso alguma operação falhe. Você pode também fazer um backup do diretório completo do repositório ou armazená-lo em um arquivo .tar.gz, para economizar espaço, caso o repositório seja muito grande.

rm -rf repo
svnadmin create --fs-type bdb repo

Isto recria o repositório com mesmo nome, só que agora completamente vazio.

3. Agora sim, subindo tudo!!
Rode o comando, considerando o arquivo de dump gerado e o repositório novo recém-criado. Observe que, evidentemente, convém utilizar o mesmo nome do repositório antigo, para que outras configurações de seu sistema permaneçam válidas:

svnadmin load repo < repo.dump

Se tudo deu certo até aqui, você terá seu repositório recuperado até a revisão que você informou no dump, de forma que as posteriores foram ignoradas e serão perdidas.

4. Para finalizar, não esqueça deste procedimento!! Atribua as mesmas permissões de arquivos, dono e grupo originais às pastas do repositório, especialmente ao diretório "db" e seus arquivos. Se você usa o WebDAV, por exemplo, terá de tornar os arquivos pertencentes ao usuário "www-data" (ou o nome que tem seu usuário do Apache), e não "root", como é inicialmente criado. Não esqueça de verificar se os diretórios estão marcados como executáveis, se for o caso, para permitir a criação de novos arquivos de log no diretório "db".

5. Teste tudo bem detidamente, para evitar surpresas. Em tudo funcionando, finalmente, faça a faxina: elimine ou faça backup do repositório antigo e dos arquivos de dump que ainda estão no disco.

Bom, pessoal, testei realmente todos estes comandos, embora eu mesmo já tenha me visto em situações de utilizar este mecanismo para eliminar commits errados. Torço que tudo dê certo com vocês!!

Mais detalhes sobre administração de repositórios, consultem o manual do SVN (SVN Red Book), Capítulo 5. Veja também nosso artigo completo sobre Como Fazer Backup de Repositórios SVN. E, claro, COMENTEM!!!

segunda-feira, 21 de fevereiro de 2011

Como Configurar Vários Domínios no Apache 2

Este artigo ensina como fazer para que seu Apache aceite requisições com um ou mais domínios diferentes. Antes de mais nada, lembre-se de que é preciso que você registre o domínio que você deseja usar e que exista um servidor de DNS, como o Bind, configurado e rodando em seu servidor, de forma que ele intercepte as requisições e as envie para o Apache. O escopo deste artigo é apenas a configuração do Apache, e não a do Bind ou como fazer para pagar e registrar um domínio na internet.
Com a técnica ensinada aqui, você poderá receber em seu servidor requisições para vários domínios (ex: www.dominio1.com.br, www.dominio2.com.br, www.dominio3.com.br, etc.) e processá-las pelo Apache para que as chamadas sejam redirecionadas para a pasta virtual correta (ex: /var/www/site1, /var/www/site2, /var/www/site3). Se não é exatamente isto que você deseja, mas é próximo, ou se é isso e mais um pouco, você pode tentar vasculhar a documentação do Apache 2 sobre a criação de Virtual Hosts, clicando aqui.


  • Pré-Requisitos para a Configuração dos Domínios no Apache

Vamos partir de um exemplo... imagine que desejemos configurar os seguintes domínios:

www.dominio1.com.br para /var/www/site1
www.dominio2.com.br para /var/www/site2
www.dominio3.com.br para /var/www/site2

Consideremos que:

1- Os sites existem e já respondem perfeitamente com os endereços:

[nome de seu servidor]/site1/
[nome de seu servidor]/site2/
[nome de seu servidor]/site3/

2- Os três domínios foram comprados em um serviço de registro de domínios, a fatura está paga e todos já se encontram devidamente registrados;

3- O Bind (ou outro servidor DNS) de seu servidor está funcionando e está configurado para redirecionar as chamadas a estes domínios para seu inocente Apachezinho...

4- No serviço de registro de domínios, você já configurou o uso de seu DNS (nome e IP dos DNS primário e secundário) e já esperou o tempo necessário para a replicação desta informação pela rede.

É claro que estas condições podem ser ligeiramente modificadas de acordo com sua situação, mas, em geral, é isso de que precisamos para começar a trabalhar...


  • Criando o Virtual Host

Para o Apache 2, as diversas configurações a respeito do acesso às pastas virtuais ficam em contêineres <VirtualHost>. Estes contêineres normalmente ficam no arquivo /etc/apache2/apache2.conf. Evidentemente, modificar este arquivo é permitido apenas ao root e as modificações exigem que se reinicie o Apache para tomar efeito.
Cada domínio novo supõe uma nova configuração do VirtualHost, ou seja, um novo contêiner. Assim, para a realização do exemplo, precisaremos de 3 contêineres, um para cada domínio, conforme segue:

<VirtualHost *:80>
ServerName www.dominio1.com.br
ServerAlias dominio1.com.br *.dominio1.com.br
DocumentRoot /var/www/site1
</VirtualHost>

<VirtualHost *:80>
ServerName www.dominio2.com.br
ServerAlias dominio2.com.br *.dominio2.com.br
DocumentRoot /var/www/site2
</VirtualHost>

<VirtualHost *:80>
ServerName www.dominio3.com.br
ServerAlias dominio3.com.br *.dominio3.com.br
DocumentRoot /var/www/site3
</VirtualHost>


O que isso tudo significa?? Vamos por partes...

VirtualHost *:80 - Inicia a tag do contêiner, informando que estamos interessados na porta 80 (protocolo http). Se você, por algum motivo qualquer, usa outra porta, substitua o "80" pela porta desejada. O "*" pode ser substituído pelo IP interno de seu servidor.

ServerName www.dominio1.com.br - Indica o nome do domínio que você deseja configurar. Evidentemente, coloque o domínio que você registrou e que está configurado no Bind.

ServerAlias dominio1.com.br *.dominio1.com.br - Isto garante que quaisquer chamadas a este domínio vão ser redirecionadas para a pasta virtual que está sendo configurada.

DocumentRoot /var/www/site1 - Enfim, a referência no sistema de arquivos para a pasta virtual!! Ou seja, em que canto do disco está o seu portal. Note que, aqui, você só pode especificar uma pasta por VirtualHost. Por isso que necessitamos de três contêineres VirtualHost configurados!!

Se, por algum motivo, esta configuração não funcionar, então experimente acrescentar a linha:

NameVirtualHost *:80

Antes da declaração do primeiro VirtualHost.

Bom, pessoal, esta configuração é razoavelmente simples e indolor. É claro que você pode tornar a sua configuração do VirtualHost muito mais complexa, acrescentando as diversas diretivas suportadas pelo mesmo. Mas isto já seria tema para um novo artigo...
Se gostaram, detestaram, ajudou ou atrapalhou, então COMENTEM!!!

terça-feira, 15 de fevereiro de 2011

Instalando a Suíte Ubuntu Studio no Ubuntu

O Ubuntu Studio nada mais é do que uma modificação do Ubuntu para compreender uma série de programas de áudio, vídeo e multimídia. Assim como o Edubuntu, todos estes programas, seus temas e suas configurações especiais (inclusive o Kernel do Ubuntu Studio) podem ser fácil e seguramente instalados via apt-get, a partir de uma distribuição padrão do Ubuntu ou Kubuntu.
Claro: instalar quilos e quilos de programas que vêm com o Ubuntu Studio via apt-get, além de todas as suas dependências, não é tarefa fácil!! Para diminuir esta tortura, o repositório padrão do Ubuntu tem alguns meta-pacotes que englobam todas as seções do Studio que se deseje instalar!! Este artigo mostra a lista dos meta-pacotes e ensina como instalá-los!!


  • Pacotes e Meta-pacotes do Ubuntu Studio

Um meta-pacote é um pacote que, ao invés de conter um programa ou biblioteca, contém um monte de referências a outros programas, que são computados como dependências. Assim, por ser um pacote vazio, ele na verdade não instala nada, mas exige um monte de dependências que serão forçosamente instaladas ao se instalar o meta-pacote em questão. Esta é uma maneira simples e ágil de se agrupar programas e bibliotecas diferentes em um único pacote.
Abaixo, a lista completa de pacotes e meta-pacotes do Ubuntu Studio. Note que não necessariamente é preciso que se instale todos estes pacotes!! Você pode instalar apenas aqueles que interessam.

ubuntustudio-audio: contém referências para toda a coleção de aplicativos para criação e edição de áudio do Ubuntu Studio.

ubuntustudio-audio-plugins: plugins do projeto LADSPA e DSSI.

ubuntustudio-controls: este de fato não é um meta-pacote, mas um programa mesmo. Trata-se de um configurador gráfico de opções internas de Áudio e Vídeo desenhado especificamente para o Ubuntu Studio.

ubuntustudio-default-settings: pacote com configurações padrão para o Ubuntu Studio e um tema gráfico personalizado para o Desktop (o Ubuntu Studio usa o Gnome por padrão, mas nada impede de utilizar o seu artwork no KDE, se desejado).

ubuntustudio-desktop: todos os aplicativos responsáveis pela parte gráfica do sistema, incluindo o gerenciador de janelas.

ubuntustudio-font-meta: algumas fontes para aprimorar sua experiência no uso dos programas gráficos.

ubuntustudio-gdm-theme: se você usa o Gnome e o GDM (Gnome Desktop Manager) para fazer login, talvez se interesse em instalar um tema personalizado do Ubuntu Studio para o GDM. Desculpe, não existe um equivalente para o KDM...

ubuntustudio-graphics: contém referências para toda a coleção de aplicativos para criação e edição gráfica em 2D e 3D do Ubuntu Studio.

ubuntustudio-icon-theme: contém o tema de ícones padrão do Ubuntu Studio.

ubuntustudio-look: contém referências a todos os pacotes de temas e perfumaria gráfica do Ubuntu Studio (inclusive o de sons ali embaixo). Serve como um atalho para não precisar explicitá-los um por um.

ubuntustudio-menu: instala um menu para o Ubuntu Studio, com submenus "Áudio" e "Vídeo".

ubuntustudio-screensaver: como o próprio nome diz, instala protetores de tela (oriundos do gnome-screensaver).

ubuntustudio-sounds: mais um item de perfumaria: sons personalizados para o Desktop do Ubuntu Studio.

ubuntustudio-theme: configurações do GTK e do Metacity para o visual do Ubuntu Studio.

ubuntustudio-video: contém referências para toda a coleção de aplicativos para criação e edição de vídeos do Ubuntu Studio, incluindo ripadores de DVD.

ubuntustudio-wallpapers: contém lindos panos de fundo para seu ambiente de trabalho do Ubuntu Studio!!


  • Finalmente, Instalando!!

Bom, tenha em mente que a instalação destes pacotes vai obrigar que se baixe e se instale uma enorme quantidade de dependências e que esta operação não é rápida, mesmo que sua conexão seja boa. Portanto, faça a instalação em um momento apropriado. Toda a instalação deve ser feita como root, evidentemente.

Uma sugestão para quem vai utilizar os programas de música e áudio:

apt-get install ubuntustudio-audio ubuntustudio-audio-plugins ubuntustudio-controls ubuntustudio-default-settings ubuntustudio-desktop ubuntustudio-look ubuntustudio-menu ubuntustudio-screensaver
apt-get clean

Uma sugestão para quem vai usar os programas de gráficos e vídeo:

apt-get install ubuntustudio-video ubuntustudio-font-meta ubuntustudio-controls ubuntustudio-default-settings ubuntustudio-desktop ubuntustudio-look ubuntustudio-menu ubuntustudio-screensaver
apt-get clean


Agora é só esperar o comando baixar e instalar tudo isso!! Boa sorte!!

sábado, 22 de janeiro de 2011

Configurando o Apache para Ler Páginas Pessoais dos Usuários

Esta dica é bem simples: se você usa o Apache 2 e quer permitir que cada usuário do sistema tenha sua página pessoal, residindo dentro de sua própria pasta, onde a página possa ser criada, modificada e atualizada pelo próprio usuário, sem interferência do administrador do sistema, então a solução que você procura está neste artigo!!


  • Criando as Pastas Pessoais dos Usuários

Em cada diretório de usuário (o famoso /home/usuario), você deve criar uma pasta chamada "public_html", que deve ter permissão de acesso e escrita para o próprio usuário; Assim, suponhamos que temos um usuário genérico chamado "usuario". Façamos, como root:

mkdir /home/usuario/public_html
chown usuario /home/usuario/public_html
chgrp usuario /home/usuario/public_html

Estes comandos não só criam a pasta pública onde será armazenada a página pessoal do usuário como também concede ao usuário em questão as permissões de acesso à mesma. É preciso fazer isto para cada usuário!! Claro que fica mais fácil se estes comandos estiverem dentro de um script. Se você quer saber como descobrir todos os usuários do sistema para criar este script, consulte nosso outro artigo aqui!!


  • Configurando o Apache 2 Para Ler o public_html dos Usuários

Este passo é simples: basta ativar o módulo correto!! Verifique se o módulo userdir existe (se você instalou o Apache por um gerenciador de pacotes, certamente ele existirá):

ls /etc/apache2/mods-available/userdir*
/etc/apache2/mods-available/userdir.conf /etc/apache2/mods-available/userdir.load

É preciso que apareçam estes dois arquivos. Agora, verifique se eles estão ativados:

ls /etc/apache2/mods-enabled/userdir*

Caso não haja saída para o comando acima, então precisamos habilitá-los:

cd /etc/apache2/mods-enabled
ln -s ../mods-available/userdir.conf
ln -s ../mods-available/userdir.load

Isto cria os links simbólicos que vão ativar o módulo. A rigor, basta isto (e, claro, reiniciar o Apache) para que tudo funcione, mas várias configurações extras podem ser feitas, editando o arquivo "userdir.conf". Em especial, verifique se a linha "UserDir public_html" está presente. Esta linha define o nome do diretório que será vasculhado na área do usuário para buscar a sua página pessoal.
É possível também ativar e desativar a leitura da pasta pública de usuários específicos, usando a diretiva UserDir, conforme o exemplo:

UserDir enabled usuario1 usuario2
UserDir disabled usuario3 usuario4

Para mais detalhes sobre como configurar este módulo e as diretivas específicas que ele usa, verifique a página do manual oficial.


  • Habilitando o PHP nas Páginas Pessoais dos Usuários

Como esta configuração é muito flexível, é possível que você queira usar este artifício para permitir que vários usuários se tornem verdadeiros desenvolvedores web. Assim, o Apache permite que o PHP instalado no servidor seja habilitado em páginas pessoais dos usuários. Primeiramente, verifique se o seu PHP está instalado. Caso não esteja, é preciso instalá-lo. Não se preocupe: para tanto, consulte detalhadamente este nosso artigo. Agora, para ativar esta opção, vá em:

vi /etc/apache2/mods-enabled/php5.conf

e comente as seguintes linhas (comentar significa iniciá-las com o caracter "#", conforme já está feito no exemplo abaixo):

# [IfModule mod_userdir.c]
# [Directory /home/*/public_html]
# php_admin_value engine Off
# [/Directory]
# [/IfModule]
#[/IfModule]

OBS: substitua os colchetes por sinais de maior e menor que.


  • Concluindo as Configurações!!

Agora, finalmente, reinicie o Apache:

/etc/init.d/apache2 restart

Pronto, tudo está configurado e as pastas já deverão estar respondendo. O endereço de acesso será: http://[domínio ou host]/~[usuario], onde [usuario] é o nome de cada usuário e [domínio ou host] pode ser o nome da máquina com o domínio ou o seu IP. Opcionalmente, você poderá, conforme a necessidade, atrelar algumas páginas pessoais a VirtualHosts, de forma a criar endereços de acesso diferenciados.
Bom, espero que tenha ajudado!! Qualquer coisa, COMENTEM!!

sexta-feira, 21 de janeiro de 2011

Instalando o Suporte a PHP5 no Apache2 (Ubuntu, Debian, etc.)

O PHP é uma linguagem bastante popular de programação para páginas dinâmicas na web. Vários sistemas importantes utilizam esta linguagem, como o MediaWiki e o WordPress. Este artigo é bem breve e ensina como instalá-lo no Apache Web Server 2.
Como vocês sabem, o Apache é um servidor web muito flexível, baseado em módulos. Inicialmente, ele não tem suporte a PHP, mas você pode instalar gratuitamente o módulo de PHP (e o suporte à linguagem), de forma que ele passe a entender e executar o PHP. Assim, após instalado o Apache 2, é preciso que se instale, como root, os seguintes pacotes:

apt-get install php5 libapache2-mod-php5

O pacote php5 contém a linguagem em si e o interpretador para executar seus comandos. O pacote libapache2-mod-php5 contém o módulo do Apache que é capaz de ligar o código escrito em PHP de cada página web de seu servidor ao interpretador de PHP instalado pelo primeiro pacote, de forma a executar com sucesso o referido código.
Após esta instalação, se o servidor Apache não for reiniciado automaticamente (o que muito provavelmente deve acontecer, devido aos scripts do apt-get), você deverá reiniciá-lo, de sorte a carregar o novo módulo. Para tanto, ainda como root, digite:

/etc/init.d/apache2 restart

Simples, rápido e indolor!! Se você não usa uma distro Linux baseada em Debian, você poderá achar estes mesmos pacotes (ou outros com nomes muito similares) no seu gerenciador de pacotes padrão e poderá instalá-los sem medo.
Não tenha medo se seu servidor tem páginas antigas escritas para PHP4. Instalar o PHP5 em geral não afeta nem prejudica as páginas escritas para PHP4 ou anterior. Claro que vale sempre a pena fazer backup e testes, mas em muitas ocasiões tudo funcionará corretamente.
Se você é teimoso e quer conferir se o módulo foi carregado corretamente após esta operação toda, digite:

ls /etc/apache2/mods-enabled/php5*
/etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-enabled/php5.load

Estes dois arquivos devem aparecer como saída para o comando ls, indicando que o módulo está instalado e ativo.

domingo, 9 de janeiro de 2011

Configurando o WebDAV com SSL no Apache

Este é o artigo final da série sobre WebDAV e Apache, portanto assumimos que todos os passos dos artigos anteriores foram realizados com sucesso. Você poderá encontrá-los seguindo os links:

1- Como Acessar o SVN via HTTP (acesso via porta 80, sem SSL);
2- Criando Certificados SSL com OpenSSL (como criar seu certificado. Caso já o tenha, pode pular este artigo);
3- Configurando o Apache com SSL (como fazer seu Apache usar um certificado digital).

Seguindo estes passos, você deverá ter, em seu arquivo de configuração do Apache (geralmente /etc/apache2/apache2.conf), ao menos um contêiner [Location], onde estará configurado o seu repositório SVN. Claro que você pode ter mais de um [Location], caso seu Apache precise servir vários repositórios ao mesmo tempo. Você também deve ter criado seu arquivos de senhas HTTP, onde a autenticação do usuário será feita.
Você notará que, mesmo com autenticação do usuário (no modo basic authentication, usando a diretiva AuthType Basic), ainda há risco de segurança, pois a senha e os dados não são encriptados, de forma que a senha é enviada em texto puro (plain text) e pode, com certa habilidade, ser capturada por pessoas mal-intencionadas. O outro modo de autenticação (digest), onde a senha é passada como uma soma MD5, ainda tem algumas falhas em seus processos. Sendo assim, a segurança somente estará garantida se seu acesso ao repositório for feito integralmente em conexão segura, via SSL.
Este artigo ensina rapidamente como configurar o SSL que seu Apache já tem (vide artigos anteriores) com o seu repositório SVN.


  • Acessando o WebDAV com Conexão Segura no Apache

Suponhamos então que você tenha um contêiner [Location] como este, no seu /etc/apache2/apache.conf:

[Location /repositorio1]
DAV svn
SVNPath /opt/svn/repositorio1
AuthType Basic
AuthName "repo1"
AuthUserFile /opt/svn/passwd
[Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK]
Require valid-user
[/Limit]
[LimitExcept GET]
Require valid-user
[/LimitExcept]
[/Location]

OBS: Substitua os colchetes por sinais de maior e menor que!!

Este [Location] funciona, mas responde apenas via HTTP, na porta 80. Para ele passar a responder na porta 443, com conexão segura, precisamos de duas coisas (assumindo que as chaves já estão instaladas e configuradas no Apache, conforme mostrado nos artigos anteriores):

1- Proibir o acesso ao contêiner pelo protocolo HTTP (porta 80). Ou seja: forçar o acesso ao WebDAV via SSL. Para tanto, basta acrescentar a linha em negrito:

[Location /repositorio1]
SSLRequireSSL
DAV svn
SVNPath /opt/svn/repositorio1
AuthType Basic
AuthName "repo1"
AuthUserFile /opt/svn/passwd
[Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK]
Require valid-user
[/Limit]
[LimitExcept GET]
Require valid-user
[/LimitExcept]
[/Location]

OBS: Substitua os colchetes por sinais de maior e menor que!!

A diretiva SSLRequireSSL impede que o acesso a este [Location] seja feita por qualquer outro meio que não via SSL. Existem outras diretivas que podem controlar este acesso, como a SSLVerifyDepth 1, que indica a profundidade (níveis de sub-diretórios) em que o acesso forçado em SSL deve ser aplicado. Evidentemente, informar o número zero "0" irá sugerir toda a árvore de diretórios. Para o nosso caso, esta diretiva não é necessária, pois, sem ela, o SSL já é forçado em todo o repositório, que é o que queremos.
Agora seu repositório está inacessível: não responde mais na porta 80 (o Apache vai informar a mensagem "Forbidden", ou seja, acesso negado), mas ainda não responde na porta 443. Para completar a operação, execute o passo 2, abaixo.

2- Criar um VirtualHost para o acesso seguro via SSL.
Um VirtualHost é um super contêiner do Apache que faz diversas coisas: mapeamento de URLs, redirecionamentos, escolha de portas, criação de regras de acesso, configuração de Aliases, dentre outras coisas, e suporta praticamente qualquer contêiner e diretiva dentro dele. Exatamente por isto precisamos criar um VirtualHost para o acesso à porta 443, conforme mostramos no exemplo:

[VirtualHost 127.0.0.1:443]
Servername localhost
DocumentRoot /var/www
[IfModule mod_ssl.c]
SSLEngine on
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
[/IfModule]
[/VirtualHost]

OBS1: Substitua os colchetes por sinais de maior e menor que!!
OBS2: Substitua o IP 127.0.0.1, que é usado apenas como exemplo, pelo IP de seu servidor!!

O que isto faz?? Bom, vamos aos detalhes:

VirtualHost IP:443 - Significa que você está criando o conjunto de regras específicas para o uso da porta 443, que é a porta configurada para conexão segura por SSL, o chamado protocolo HTTPS.
Servername localhost - É o nome do servidor. Troque o termo "localhost" por um nome válido. Este é usado apenas como exemplo.
DocumentRoot /var/www - É claro que este não é o endereço de seu repositório, mas é um local que vai ser utilizado caso alguém tente ler a URL raíz de seu servidor, por exemplo: https://localhost. Se você informar o endereço físico (diretório no sistema de arquivos) de um de seus repositórios aqui, estará criando uma brecha de segurança para um possível invasor. O local que o DocumentRoot informar não impede que um ou mais [Location] sejam contemplados pelo VirtualHost protegido.
SSLEngine on e demais diretivas do módulo SSL (mod_ssl.c) - responsáveis por ativar efetivamente o SSL nesta porta informada. Por aqui, você nota que é possível, no Apache, servir o SSL em ainda outra porta, diferente da 443. Não sei por que você desejaria isto mas, caso deseje, tenha a certeza de adicionar a diretiva "Listen" com o número da porta desejada. Exemplo: "Listen 400", para a porta 400. Isto não é informado no VirtualHost, mas sim no ports.conf, ou, opcionalmente, no apache2.conf, httpd.conf ou no mods-available/ssl.conf.

Existem outras coisas que você pode pendurar no VirtualHost, como os contêineres [Directory], que poderão ser utilizados especialmente para outros portais e sites que você serve com seu Apache. O fato de existir um contêiner para a porta 443 não impede que exista outro para a porta 80. Desta forma, seu Apache pode servir tanto conexões seguras (SSL/HTTPS) quanto conexões abertas (HTTP na porta 80). Basta configurar direitinho os VirtualHost. Como este artigo é apenas sobre o WebDAV e não um curso de Apache, recomendo que, se este é o seu caso, procure a documentação do Apache para maiores detalhes. Um exemplo mais sofisticado de configuração do VirtualHost pode ser encontrado aqui.


  • Configurando o WebDAV com SSL sem usar Location (Somente o VirtualHost)

Esta não é, inicialmente, a minha recomendação, porém provavelmente será mais útil a quem tem apenas um repositório para servir com o Apache e quer configurar o Apache como um servidor dedicado. Um servidor dedicado é aquele que serve a apenas um portal ou serviço, normalmente um que sofra com muitos acessos e grande carga, de sorte a justificar um servidor só para ele. Pode ser o caso de sua empresa, por exemplo, se todos os projetos estão centrados em um único repositório SVN acessado a partir de um único servidor Apache, vindo a sofrer grande volume de acessos.
Bom, neste caso, você pode fazer a configuração toda diretamente no VirtualHost, eliminando o contêiner [Location]. Isto vai ajudá-lo a configurar o repositório diretamente na URL raíz, ou seja, no caminho virtual "/" de seu servidor. Vide o exemplo abaixo:

[VirtualHost 127.0.0.1:443]
Servername localhost
DocumentRoot /var/www
[IfModule mod_ssl.c]
SSLEngine on
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
[/IfModule]
[Directory /opt/svn/repositorio1]
DAV svn
SVNPath /opt/svn/repositorio1
AuthType Basic
AuthName "repo1"
AuthUserFile /opt/svn/passwd
[Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK]
Require valid-user
[/Limit]
[LimitExcept GET]
Require valid-user
[/LimitExcept]
[/Directory]
[/VirtualHost]

OBS: Substitua os colchetes por sinais de maior e menor que!!

Note que este exemplo é bem semelhante ao primeiro. A diferença é que ele migra praticamente todas as informações que colocamos no contêiner [Location] (referentes à configuração do WebDAV), que ficava diretamente no /etc/apache2/apache.conf, para dentro de um contêiner [Directory]. Este, por sua vez, é disposto dentro do contêiner VirtualHost, em /etc/apache2/apache.conf. Isto provoca que as informações do [Directory] digam respeito ao endereço raíz e poderão ser acessadas pela URL https://localhost/.
Conforme mencionado, é o caso ideal para quem mantém apenas um repositório e tem um Apache exclusivo para o mesmo, embora outros VirtualHost (e contêineres [Directory]) possam ainda ser criados e configurados neste mesmo Apache.


  • Conclusões

Foram apresentadas duas técnicas para a configuração do WebDAV no Apache usando SSL: uma mais própria para configurar um único repositório e outra mais apropriada para múltiplos repositórios do SVN. A sua escolha da técnica, bom como qualquer refinamento a ser incluído, deve levar em conta o uso de seu repositório, a carga que ele recebe e a quantidade de repositórios gerenciados pelo Apache. O uso do WebDAV, mesmo via SSL, não exclui que o Apache sirva outras páginas e sistemas.
Espero que este conjunto de tutoriais tenha sido útil!! Lembre-se de que, sempre que possível, é fundamental que você COMENTE!!!