Qual é o diretório recomendado para armazenar o conteúdo do site?

21

Quando comecei a programar para a Web e queria criar um novo projeto, sempre fui ensinado a criar um diretório /var/www/. No entanto, em muitos tutoriais que li, as pessoas tendem a criar um diretório no /home/username/.

Não gosto da ideia de colocar isso /home/username/.

Existe um local correto ou, caso contrário, quais são as vantagens / desvantagens de colocá-lo em determinadas áreas do sistema de arquivos?

Pattle
fonte
Essa é a preferência ("melhor" implica que, talvez você deva mudar isso para ser mais seguro etc.) para o desenvolvimento principalmente. Se você também os estiver servindo de lá, provavelmente desejaria algo isolado para manter algum tipo de distância entre seus arquivos pessoais e outras coisas de compartilhamento na web. Mas há um milhão de configurações. Eu fico com /var/wwwe geralmente tenho isso em outra unidade (apenas preferência).
Nerdwaller 22/08/13
Não existe um diretório "melhor". É inteiramente sua perferência, porque a localização phyiscal dos arquivos não importa.
Ramhound

Respostas:

36

Não existe um diretório "melhor". E enquanto as pessoas podem argumentar que essa questão é subjetiva, ou que a colocação real de arquivos não importa e eles estão certos sobre os últimos não são recomendações padronizadas sobre onde colocar o que em sistemas Unix-like.

O padrão de hierarquia do sistema de arquivos define isso e oferece o seguinte:

  • /var- um local para colocar dados que mudam durante a operação normal, como logs, etc. /var/wwwé o diretório padrão para colocar o conteúdo da web para o Apache, mas seu uso não é padronizado e apenas o local "usual" que você colocaria porque as pessoas não altere as configurações padrão com muita frequência.

  • /srv- este diretório deve conter dados que são servidos pelo sistema. Este é geralmente o lugar que você deseja. A ESF explica:

    Esse objetivo principal de especificar isso é para que os usuários possam encontrar a localização dos arquivos de dados para um serviço específico e para que serviços que exijam uma única árvore para dados somente leitura, dados graváveis ​​e scripts (como scripts cgi) possam ser colocados de maneira razoável. Dados que são de interesse apenas de um usuário específico devem ir no diretório inicial desse usuário. (…)

    Um método para estruturar dados abaixo /srvé por protocolo, por exemplo. ftp, rsync, www, Ecvs

    Então, basta criar um /srv/wwwdiretório e usar isso. Você pode criar subpastas para cada host virtual que desejar servir com sua máquina.

  • /homecontém arquivos que realmente devem pertencer apenas a um usuário. O Apache, por exemplo, permite userdirs , para que você possa acessar os arquivos da web de um usuário http://example.com/~usernamee eles são servidos a partir do public_htmldiretório na casa do usuário.

    Se você usa um servidor compartilhado entre várias pessoas e deseja permitir que todos hospedem seus próprios scripts, é para onde eles devem ir. Lembre-se de tornar os diretórios graváveis ​​apenas pelo usuário ao qual eles pertencem.

Em essência /srv/wwwe /var/wwwsão diretórios, você deve criar subdiretórios para qualquer projeto da web que você queira hospedar. Você pode definir permissões diferentes nesses diretórios para permitir que determinados usuários ou grupos de usuários gravem neles. Se você possui projetos para um usuário por vez, use /home.

slhck
fonte
3
O http://example.com/~usernamenormalmente não aponta para /home/username/, mas para /home/username/public_html/.
choroba
Sim, obrigado, isso deveria ter sido adicionado para maior clareza. Feito.
slhck
Após vários anos de uso /var/www, é hora de mudar!
sitilge 5/10
Além disso, wwwparece mais um subdomínio para mim.
sitilge 5/10
Apenas para adicionar ... O uso de / var / www é uma prática comum para instâncias de veiculação de site único e, como dito, o local padrão do Apache, enquanto o uso de / home / usr / was / é uma prática comum para servidores revendedores ou vários sites hospedagem desenhada a partir do conceito de usuários == clientes. Ambas são apenas práticas comuns e a resposta do shlck é um melhor uso dos propósitos pretendidos do sistema de arquivos.
Jools
4

Bem, você pode colocar arquivos em qualquer lugar, desde que as coisas possam acessá-los adequadamente, no entanto, os sistemas de arquivos desordenados são uma dor de cabeça se alguém entrar mais tarde.

/srv é mais lógico e, se você seguir o padrão de hierarquia do sistema de arquivos, ele será acessado aqui.

Se você faz vários domínios, pode fazer /srv/domain1 /srv/domain2etc etc, então subpastas lá dentro/ftp /www /tftp /logs /etc.etc.etc

Para mim, isso parece uma estrutura muito sólida para construir e controlar facilmente

Mas como administrador, você pode fazer o que quiser com a limpeza ou a sujeira que deseja.

Jenny
fonte
1

Ok, resposta rápida e fácil.

Se seus arquivos da web no sistema serão acessados ​​apenas por UM usuário no sistema Linux. Use o diretório inicial do usuário ( ~/).

Se seus arquivos da web no sistema serão acessados ​​por vários usuários no sistema linux. Use /srv/.

É exatamente isso que afirma http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM .

Aqui está a citação:

/ srv contém dados específicos do site que são servidos por este sistema.

Esse objetivo principal de especificar isso é para que os usuários possam encontrar o local dos arquivos de dados para um serviço específico e para que serviços que exijam uma única árvore para dados somente leitura, dados graváveis ​​e scripts (como scripts cgi) possam ser colocados razoavelmente. Dados que são de interesse apenas de um usuário específico devem ir no diretório inicial desse usuário.

Bônus: www? ftp? Organizar por protocolo? Hã?

Conforme declarado aqui em http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM

  • Se o seu site for acessado apenas por UM usuário no sistema e SOMENTE através do navegador (protocolo http), então: ~/http/your-website-directory/ou (protocolo https), então:~/https/your-website-directory/
  • Se o seu site for acessado apenas por UM usuário no sistema e NÃO SOMENTE pelo navegador, mas por vários protocolos (ig http AND tcp AND ...), então: ~/your-website-directory/
  • Se o seu site for acessado por vários usuários no sistema e SOMENTE através do navegador (protocolo http), então: /srv/http/your-website-directory/ou (protocolo https), então:/srv/https/your-website-directory/
  • Se o seu site for acessado por vários usuários no sistema e NÃO SOMENTE pelo navegador, mas por vários protocolos (ig http AND ftp AND ...), então: /srv/your-website-directory/

Huh, por que não www? Este é um legado da época do Apache. www não especifica qual protocolo está sendo usado. O Debian ainda usa isso hoje, enquanto, por exemplo, o Arch linux usa / srv / http.

Karl Morrison
fonte
0

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 apache2.confarquivo padrão contém um bloco comentado:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
Maris B.
fonte