O Tuxfiles diz o seguinte sobre a estrutura de diretórios do Linux:
/var
:Este diretório contém dados variáveis que mudam constantemente quando o sistema está em execução.
A ESF/var
diz o seguinte:
/var
contém arquivos de dados variáveis. Isso inclui diretórios e arquivos em spool, dados administrativos e de log e arquivos temporários e temporários.
Eles então dizem que coisas como logs, correio e spooler são colocados nessa pasta.
Tradicionalmente, uma instalação padrão do Apache ou Nginx no Ubuntu Linux colocará o diretório em /var/www/
.
Não me parece o local ideal para colocar um diretório com arquivos ou conteúdo que deveria ser quase permanente.
Por que é tão frequentemente colocado /var
?
Mais subjetivamente, é para onde deveria ir, de acordo com a estrutura de diretórios?
fonte
/var/lib/www
teria sido mais adequado .../srv
/var
é para dados não executáveis e não configuráveis e de propriedade de um usuário real que podem ser editados ou alterados (por exemplo, devem residir em um volume regravável)./var/lib
é especificamente para esse tipo de dados que deve sobreviver a uma reinicialização e não ser excluído por um processo de manutenção,isc-dhcp-server
usa/var/lib
para armazenar, por exemplo, seu registro de concessões de DHCP. Portanto, seria um local lógico para os arquivos do servidor da web.Respostas:
Na verdade, não é o local "tradicional". Tradicionalmente, tudo o que você instalou após a entrada do sistema operacional
/usr/local
e, de fato, esse é o "layout do caminho clássico do Apache" (suas palavras) até hoje. Durante muito tempo, foi/home/httpd
.O que você está vendo é que um Apache que foi configurado para um sistema operacional específico - seja Red Hat Linux, Mac OS X, GNU etc. - personalizará o local. A fonte do Apache foi bem projetada para isso; na verdade, se você rastrear o valor para o ServerRoot nos arquivos de origem, verá que ele começa nesse arquivo
config.layout
:Alguns trechos desse arquivo mostrarão que há muita variedade no local da documentação.
O IIRC,
/var/www
entrou na minha vida com as versões 2000-2001 do Red Hat Linux 7.x (não o Red Hat Enterprise Linux). Por todas as razões citadas acima, achei que não fazia muito sentido - mas a realidade é que, na era moderna, tantas outras ferramentas e tecnologias estão envolvidas, a localização se move de qualquer maneira.fonte
O uso de
/var/www
é confuso apenas à primeira vista.De acordo com a ESF, os dados do servidor da web devem ir para
/srv
. Essa é a regra principal.No entanto, também diz que a decisão sobre a estrutura
/srv
é de responsabilidade exclusiva do administrador local! Portanto, os pacotes não devem colocar nada/srv
e a raiz do documento padrão não deve estar/srv
, porque o pacote (apache) não sabe o que está dentro/srv
e abaixo dele. Talvez um repositório do subversion com senha de texto não criptografado e outras coisas também. Portanto, deve haver um padrão fora de/srv
. Esse padrão se torna/var/www
./var/www
é principalmente um espaço reservado. Os pacotes são usados/usr/share
para conteúdo HTML estático ou/var/lib
para conteúdo dinâmico dinâmico. Muitas pessoas pensaram erroneamente que deveriam colocar HTML/var/www
. Isso é um problema, porque os pacotes também usam isso ocasionalmente. Recentemente, eles inventaram/var/www/html
para pacotes. Espero que as pessoas não comecem a usá-lo porque, novamente, elas precisam inventar um novo diretório ... e assim por diante.Resumo: você deve usar
/srv
e configurar seus hosts virtuais Apache adequadamente.fonte
Embora eu concorde com a resposta de Akond, acho que há um aspecto mais importante nisso. A maioria dos outros locais (como
/usr/local
) é normalmente gerenciada pelo sistema (o gerenciador de pacotes)./var
geralmente é para onde vão os arquivos que não são gerenciados pelo gerenciador de pacotes ('dados' em todo o sistema).Também acho que a definição da ESF é um pouco mais precisa (os dados não precisam estar "mudando constantemente"):
No entanto, a ESF também especifica que os dados www deveriam estar entrando em
/srv
fonte
/usr/local
é que não é gerenciado pelo gerenciador de pacotes./srv/www
foi o caminho clássico nos sistemas SuSE (até SLES10) também.Os motivos são principalmente históricos, como outros disseram.
/var
foi usado para dados do sistema que mudam o tempo todo, por exemplo, arquivos de cache, logs, dados de tempo de execução (arquivos de bloqueio, por exemplo), armazenamento do servidor de correio, spool da impressora, etc. Basicamente, para todos os itens que não podem ser inseridos/usr
( porque contém dados locais), não são programas de terceiros que entram/opt
e não são descartáveis e voláteis à medida que entram/tmp
.À medida que o Unix / Linux se desenvolveu, tornou-se um lugar confuso, com uma mistura de vários diretórios diferentes reunidos. Nos últimos anos, tem havido uma tendência de mudar algumas coisas, particularmente o conteúdo fornecido pela máquina (que agora, conforme o [ Padrão de Hierarquia do Sistema de Arquivos 2.3, p.15 ], deve entrar
/srv
, não entrar/var/www
).O mesmo aconteceu com
/var/run
alguns anos atrás - com o esforço concentrado de várias distribuições, foi transferido/var/run
para o/run
qual fundiram as funções dos usados anteriormente/var/lock
,/var/run
e/dev/shm
.fonte
Pela minha experiência (eu sou desenvolvedor da Web), o conteúdo do site está longe de ser estável. Mesmo no caso de arquivos html (não importa com o conteúdo gerado dinamicamente), eles estão sujeitos a alterações constantes (emendas, omissões etc.).
Então, do meu ponto de vista, são variáveis. Portanto, eles são perfeitamente adequados no diretório / var e não há nada de errado nisso.
fonte
/var
. Mas acho que é uma questão de opinião e debate, e não fatos concretos.IIRC, antigamente, sempre montávamos
/var
como seu próprio sistema de arquivos (disco separado ou fatia de disco).Uma das razões para isso, como outros já declararam, é que há muita leitura / gravação nesse sistema de arquivos (logs / et al). Ter um disco / segmento separado significa que pode ser melhor ajustado para este tipo de I / O (versus principalmente ler
/
,/usr
etc ...).A outra razão é que, naqueles dias, se o seu sistema travava durante uma operação de gravação, havia uma chance muito boa de o seu sistema de arquivos raiz ser corrompido, deixando-o em um estado difícil de reparar. Daí a necessidade de separação de
/
.A tecnologia do sistema de arquivos e do disco melhorou bastante com o tempo, portanto, essa é uma ocorrência muito menos provável.
fonte
/var
é uma escolha decente para um local "base" neutro do usuário para acesso multiusuário, caso você tenha um site com vários hosts virtuais em execução que permita FTP ou outros uploads, por exemplo, se você é um host da web ou similar./home
é possivelmente não ideal, porque as coisas ruins poderiam acontecer com outras contas shell usuário se um irrefletidos ou maliciosos uploads do usuário para o/home
limite de partição (assumindo configuração tradicional de/var
,/home
, etc. sendo em partições separadas) pode afetar outras contas de usuário.Claro que acho que
/srv
é melhor para isso, mas já/var
existe há mais tempo na tradição UNIX.fonte
/home/http
?O que eu gostaria de adicionar aqui é que colocar a "raiz" da web em / usr entra em conflito com a parte da ESF que indica / usr como compartilhavel e somente leitura, uma vez que diferentes servidores da web, mesmo no mesmo "cluster" pode ter arquivos diferentes que contêm configurações diferentes, e isso não o torna ideal para / usr.
Além disso, alguns aplicativos da Web (MediaWiki e PhpBB para citar os que estão em cima da minha cabeça) esperam um local gravável na árvore de diretórios da Web para upload de anexos / arquivos de mídia. Portanto, colocar a árvore da web em / usr entraria em conflito se você desejar aderir à definição / somente leitura / usr.
fonte
O servidor da web Apache possui o site padrão em / var / www /, mas está sugerindo colocar outros sites em / srv /
Notei isso no Ubuntu Server 14.04 LTS. Seu arquivo apache2.conf padrão contém um bloco comentado:
fonte