2. Requisitos para espelhar o FreeBSD

2.1. Espaço em disco

Espaço em disco é o requisito mais importante. Dependendo do conjunto de releases, arquiteturas, e de quão completo você deseja que seja o seu site espelho, uma enorme quantidade de espaço em disco pode ser consumida. Tenha também em mente que provávelmente é exigido dos sites espelhos oficiais que sejam completos. O repositório de CVS e as páginas web devem ser sempre espelhados completamente. Note também que os números aqui mencionados estão refletindo o estado atual (4.9-RELEASE e 5.1-RELEASE). Abrigar outras releases, bem como desenvolvimentos adicionais apenas irá aumentar a quantia necessária. Certifique-se de manter algum espaço extra (entre 10 e 20%) disponível, além do mencionado abaixo, apenas por segurança. Aqui estão algumas estimativas aproximadas:

2.2. Conectividade de rede e disponibilidade de banda IP

Obviamente, você precisa estar conectado a Internet. A largura de banda requerida depende do uso pretendido para o seu site espelho. Se você deseja apenas espelhar algumas partes do FreeBSD para uso local no seu site e/ou na sua intranet, a demanda pode ser muito menor do que se você desejar disponibilizar os arquivos publicamente. Se você pretende se tornar um site espelho official, a largura de banda requerida será mesmo mais elevada. Nós só podemos dar estimativas grosseiras aqui:

2.3. Requisitos de sistema, CPU e Memória

Isto é algo que depende do número esperado de clientes simultâneos, o que é determinado pela politica de uso do servidor. Ele também é afetado pelo tipo de serviços que você deseja oferecer. Serviços básicos de FTP ou HTTP podem não necessitar de uma grande quantidade de recursos. Mas fique atento se você for disponibilizar os serviços de CVSup, rsync ou mesmo de AnonCVS. Estes serviços podem ter um grande impacto nos requisitos de CPU e de memória. Especialmente o rsync o qual é considerado um devorador de memória, e o CVSup certamente consome um pouco da CPU. No caso do AnonCVS pode ser interessante configurar um sistema de arquivos residente em memória (MFS) de no minimo 300MB, assim você precisa considerar este consumo quando avaliar a memória requerida. A seguir temos alguns exemplos e sugestões grosseiras.

Para um site de visitação média o qual ofereça o serviço de rsync, você pode considerar o uso de um servidor com uma CPU com clock entre 800MHz e 1 GHz, e com um mínimo de 512MB de memória RAM. Esta é provavelmente a configuração mínima para um site espelho oficial.

Para um site de visitação frequente, você definitivamente vai precisar de mais memória RAM (considere 2 GB como um bom começo) e possivelmente mais poder de processamento (CPU), o que pode significar que você precisa ir para um sistema multi processado (SMP).

Você também pode considerar o uso de um subsistema rápido de discos. As operações em um repositório CVS necesistam de um subsistema de discos rápido (o uso de RAID é altamente desejável). Uma controladora SCSI que possua cache dedicado também pode melhorar a velocidade uma vez que a maioria destes serviços incorre na realização de um grande número de pequenas modificações para o disco.

2.4. Serviços para oferecer

Cada site espelho deve disponibilizar obrigatoriamente um conjunto de serviços básicos. Em adição a estes serviços obrigatórios, existe um grande número de serviços opcionais os quais o administrador do servidor pode optar por oferecer. Esta sessão irá detalhar quais serviços você pode oferecer, bem como proceder para implementá-los.

2.4.1. FTP

Este é um dos serviços mais básicos, e ele é requerido em todos os mirrors que oferecem acesso público às distribuições via FTP. O acesso ao FTP deve ser anônimo, e não é permitido o uso de taxas de upload/download (algo ridículo de qualquer forma). Nao é necessário ter o upload de arquivos habilitado (e ele nunca deve ser permitido na área onde os arquivos do FreeBSD são mantidos). Os arquivos do FreeBSD devem ficar disponíveis sob o caminho /pub/FreeBSD .

Abaixo você encontra diversos softwares disponíveis os quais podem ser configurados para operarem como servidor de FTP Anônimo (em ordem alfabética).

  • /usr/libexec/ftpd: É o servidor de FTP nativo do FreeBSD. Consulte o ftpd(8).

  • ftp/ncftpd: Um pacote comercial, gratuito para uso educacional.

  • ftp/oftpd: Um ftpd desenvolvido com foco principal voltado para a segurança.

  • ftp/proftpd: Um ftpd modular e muito flexível

  • ftp/pure-ftpd: Outro ftpd desenvolvido com foco na segurança.

  • ftp/twoftpd: Ftpd desenvolvido com foco na segurança.

  • ftp/vsftpd: Um ftpd muito seguro.

  • ftp/wu-ftpd: O ftpd da universidade de Washington. Ele se tornou impopular, por causa da enorme quantidade de problemas de segurança que foram descobertos nele. Se você optar por utilizar este software, certifique-se de mantê-lo atualizado.

O ftpd nativo do FreeBSD, o proftpd, o wu-ftpd e talvez o ncftpd são os programas utilizados com mais frequência. Os demais não possuem uma grande base de usuários entre nossos sites espelho. Um item a ser considerado é que você pode precisar de flexibilidade para controlar quantas conexoes simultâneas serão permitidas no servidor, limitando quanto da banda IP e dos recursos do sistema são consumidos.

2.4.2. RSYNC

O rsync pode ser oferecido como opção para acesso ao conteúdo da area de FTP do FreeBSD, desta forma outros sites espelho podem utilizar o seu sistema como fonte para o sistema deles. O protocolo do rsync é diferente do FTP em muitos aspectos. Ele é muito mais amigável com relação ao consumo de banda IP, uma vez que apenas as diferenças entre os arquivos são tranferidas ao invés de transferir o arquivo completo quando ele se altera. O rsync necessita de uma grande quantidade de memória para cada instância. A quantidade de memória alocada depende do tamanho do modulo sincronizado em termos de número de diretórios e de arquivos. O rsync pode utilizar o rsh e o ssh (agora é padrão) para transporte dos dados, ou então utilizar o seu próprio protocolo para acesso stand-alone (este é o método preferido para um servidor público de rsync). Autenticação, limite para o número de conexoes e outras restrições podem ser aplicadas. Até o momento só existe um pacote de software disponível para implementar um servidor de rsync:

2.4.3. HTTP (Necessário para as páginas web, Opcional nos servidores FTP)

Se você deseja oferecer as páginas web do FreeBSD, você precisa instalar um servidor web, conhecido por httpd. Opcionalmente você pode oferecer acesso a sua árvore de FTP via HTTP. A escolha do software do servidor web é uma escolha do administrador do site espelho. As opções mais populares são:

  • www/apache13: O apache é o servidor web mais amplamente utilizado na Internet. Ele é usado extensivamente pelo projeto FreeBSD. Você também pode desejar utilizar a nova geração do servidor web apache, disponível na coleção de ports como www/apache2 .

  • www/thttpd: Se você for servir uma grande quantidade de conteúdo estático, você pode constatar que o uso de uma aplicação como o tHttpd é mais eficiente do que o uso do Apache. Ele é otimizado para operar sob a máxima performance no FreeBSD.

  • www/boa: O Boa é uma outra alternativa ao uso do tHttpd e do Apache. Ele deve prover uma performance consideravelmente melhor que a do Apache para conteúdos puramente estáticos. Ele não possui, pelo menos até o momento em que esse artigo está sendo escrito, o mesmo conjunto de otimizações para o ambiente FreeBSD que encontramos disponíveis no tHttpd.

2.4.4. CVSup (desejado para repositórios CVS)

O CVSup é um meio muito eficiente de distribuição de arquivos. Ele trabalha de forma semelhante ao rsync, porém foi desenvolvido para uso com repositórios CVS. Se você desejar disponibilizar um repositório CVS do FreeBSD, você deve considerar fortemente fazê-lo via CVSup . É possível oferecer acesso a um repositório CVS via AnonCVS, FTP, Rsync ou HTTP, mas as pessoas vão se beneficiar muito mais de um acesso via CVSup . O CVSup foi desenvolvido pelo John Polstra . É um pouco complicado instalá-lo em uma plataforma diferente do FreeBSD, uma vez que ele foi escrito em Modula-3 e consequentemente necessita de um ambiente Modula-3 disponível. O John Polstra preparou uma versão simplificada do M3 a qual é suficiente para executar o CVSup, a qual pode ser facilmente instalada. Consulte Ezm3 para maiores detalhes. Os ports relacionados são:

  • net/cvsup: O port nativo do CVSup (cliente e servidor) o qual requer a instalação do lang/ezm3 .

  • net/cvsup-mirror: O kit de espelhamento do CVSup, o qual requer o net/cvsup, e que o configura para atuar no espelhamento dos serviços. Alguns administradores de sistema podem preferir uma forma diferente de configurar um site espelho.

Existem alguns outros, como o net/cvsup-without-gui o qual você pode desejar olhar. Se você preferir um pacote binário, compilado estaticamente, de uma olhada aqui. Esta página continua mencionando o erro SG1, o qual esteve presente no CVSup. Pode ser que o John venha a definir no futuro um site genérico para download de binários estáticos para várias plataformas.

É possível utilizar o CVSup para disponibilizar qualquer tipo de arquivo, e não apenas repositórios CVS, mas a configuração será mais complexa. O CVSup é conhecido por comer um pouco de CPU tanto no servidor quanto no cliente, o que ocorre porque ele precisa comparar muitos arquivos.

2.4.5. AnonCVS (Opcional para um repositório CVS)

Se você possui o repositório CVS, você pode desejar disponibilizá-lo via cvs anônimo. Um pequeno aviso antes: Não existe muita demanda para este tipo de acesso, ele requer alguma experiência, e você precisa saber o que está fazendo.

Geralmente há duas formas de se acessar um repositório CVS remotamente: via pserver ou via ssh (nós não consideramos o rsh ). Para acesso anônimo, o uso do pserver é mais que suficiente, porém alguns também oferecem acesso via ssh. Existe um wrapper customizado no repositório CVS, para ser utilizado como shell para uma conta de ssh anônimo. Ele faz um chroot, e consequentemente requer que o repositório CVS esteja disponível no diretório home do usuário anônimo. Isto pode não ser possível para todos os sites. Se você for oferecer apenas acesso via pserver, esta restrição não se aplica, mas você pode ficar sujeito a um risco maior de segurança. Você não precisa instalar nenhum software especial, uma vez que o cvs(1) vem por padrão na instalação básica do FreeBSD. Você precisa habilitar o acesso através do inetd, para isto basta adicionar uma entrada ao seu /etc/inetd.conf semelhante a esta:

cvspserver stream tcp nowait root /usr/bin/cvs cvs -f -l -R -T /anoncvstmp --allow-root=/home/ncvs pserver
          

Consulte o manual para detalhes das opções. Consulte também a página de info do CVS sobre formas adicionais de certificar-se de que o acesso é de apenas leitura. Recomenda-se que você crie uma conta não privilegiada, preferencialmente chamada anoncvs . Você também precisa criar um arquivo passwd no seu /home/ncvs/CVSROOT e atribuir um password (em branco ou anoncvs) para acesso deste usuário ao CVS. O diretório /anoncvstmp é um sistema de arquivo baseado em memória que tem um propósito especial. Ele não é obrigatório mas seu uso é recomendado, uma vez que o cvs(1) cria uma estrutura de diretórios ocultos no seu /tmp a qual não é utilizada depois da operação, mas que deixa as coisas dramáticamente lentas se forem necessárias operações reais de escrita/leitura para o disco. Aqui está um fragmento do /etc/fstab, de como configurar um MFS:

/dev/da0s1b /anoncvstmp mfs rw,-s=786432,-b=4096,-f=512,-i=560,-c=3,-m=0,nosuid,nodev 0 0
          

Esta é (naturalmente) uma sintaxe ajustada ao máximo, e foi sugerida pelo John Polstra .

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.