5. Estratégias do Sistema para Ambientes Pequenos e Somente Leitura

Em Seção 3, “O Subsistema rc e os Sistemas de Arquivos Read-Only”, foi apontado que o sistema de arquivos /var construído pelo /etc/rc.d/var e a presença de um sistema de arquivos raiz read-only causa problemas com muitos pacotes de software comuns usados ​​com o FreeBSD. Neste artigo, serão fornecidas sugestões para a execução bem-sucedida do cron, do syslog, instalações de ports e do servidor Web Apache.

5.1. Cron

Na inicialização, o /var é preenchido pelo /etc/rc.d/var usando a lista disponível em /etc/mtree/BSD.var.dist, então o cron, o cron/tabs, at, e alguns outros diretórios padrões são criados.

No entanto, isso não resolve o problema de manter as crontabs entre nas reinicializações. Quando o sistema for reinicializado, o sistema de arquivos /var que está na memória desaparecerá e todas as crontabs que você tenha nele também desaparecerão. Portanto, uma solução seria criar crontabs para os usuários que precisam delas, montar seu sistema de arquivos / como read-write e copiar estas crontabs para algum lugar seguro, como /etc/tabs, em seguida, adicione uma linha ao final do /etc/rc.initdiskless que copie estes crontabs para /var/cron/tabs depois que o diretório for criado durante inicialização do sistema. Você também pode precisar adicionar uma linha que altere modos e permissões nos diretórios criados e nos arquivos copiados com /etc/rc.initdiskless.

5.2. Syslog

O syslog.conf especifica os locais de certos arquivos de log que existem em /var/log. Esses arquivos não são criados pelo /etc/rc.d/var na inicialização do sistema. Portanto, em algum lugar do /etc/rc.d/var, logo após a seção que cria os diretórios em /var, você precisará adicionar algo como isto:

# touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages
# chmod 0644 /var/log/*

5.3. Instalação de Ports

Antes de discutir as alterações necessárias para usar com êxito a árvore de ports, é necessário um lembrete sobre a natureza read-only dos seus sistemas de arquivos na mídia flash. Como eles são read-only, você precisará montá-los temporariamente para read-write usando a sintaxe de montagem mostrada em Seção 3, “O Subsistema rc e os Sistemas de Arquivos Read-Only”. Você sempre deve remontar esses sistemas de arquivos no modo read-only quando tiver terminado qualquer manutenção - gravações desnecessárias na mídia flash podem reduzir consideravelmente sua vida útil.

Para tornar possível entrar em um diretório do ports e executar com sucesso o comando make install, devemos criar um diretório de pacotes em um sistema de arquivos que não esteja localizado na memória o qual manterá o controle dos nossos pacotes entre as reinicializações . Como é necessário montar seus sistemas de arquivos como read-write para a instalação de um pacote, é sensato supor que uma área na mídia flash também possa ser usada para que as informações do pacote sejam gravadas.

Primeiro, crie o diretório do banco de dados de pacotes. Ele fica normalmente em /var/db/pkg, mas não podemos colocá-lo lá, pois ele irá desaparecer toda vez que o sistema for inicializado.

# mkdir /etc/pkg

Agora, adicione uma linha ao arquivo /etc/rc.d/var que vincule o /etc/pkg ao /var/db/pkg. Um exemplo:

# ln -s /etc/pkg /var/db/pkg

Agora, sempre que montar seus sistemas de arquivos como read-write e instalar um pacote, o make install funcionará e as informações do pacote serão gravadas com êxito em /etc/pkg (porque o sistema de arquivos será, naquele momento, montado como read-write) que estará sempre disponível para o sistema operacional como /var/db/pkg.

5.4. Servidor Web Apache

Nota:

As etapas nesta seção são necessárias apenas se o Apache estiver configurado para gravar suas informações de pid ou log fora do /var. Por padrão, o Apache mantém seu arquivo pid em /var/run/httpd.pid e seus arquivos de log em /var/log.

Agora é assumido que o Apache mantém seus arquivos de log em um diretório apache_log_dir fora do /var. Quando esse diretório reside em um sistema de arquivos read-only, o Apache não poderá salvar nenhum arquivo de log e pode ter problemas para funcionar. Se assim for, é necessário adicionar um novo diretório à lista de diretórios em /etc/rc.d/var para criar no /var e vincular apache_log_dir ao /var/log/apache. Também é necessário definir permissões e propriedade neste novo diretório.

Primeiro, adicione o diretório log/apache à lista de diretórios a serem criados em /etc/rc.d/var.

Segundo, adicione estes comandos ao /etc/rc.d/var após a seção de criação do diretório:

# chmod 0774 /var/log/apache
# chown nobody:nobody /var/log/apache

Por fim, remova o diretório apache_log_dir existente e substitua-o por um link:

# rm -rf apache_log_dir
# ln -s /var/log/apache apache_log_dir

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.