¿Cuál es el directorio recomendado para almacenar el contenido del sitio web?

21

Cuando comencé a programar para la web y quería crear un nuevo proyecto, siempre me enseñaron a crear un directorio /var/www/. Sin embargo, en muchos tutoriales que leo, la gente tiende a crear un directorio /home/username/.

No me gusta la idea de ponerlo /home/username/.

¿Existe un lugar correcto o, de no ser así, cuáles son las ventajas / desventajas de colocarlo en ciertas áreas del sistema de archivos?

Pattle
fuente
Esa es la preferencia ("mejor" implica que, tal vez debería cambiar esto para que sea más seguro, etc.) para el desarrollo en su mayoría. Si también los está sirviendo desde allí, entonces es probable que desee algo aislado para mantener algún tipo de distancia entre sus archivos personales y el material compartido en la web. Pero hay un millón de configuraciones. Me quedo /var/wwwy usualmente tengo eso en otra unidad (solo preferencia).
nerdwaller
No hay un "mejor" directorio. Es totalmente su preferencia porque la ubicación física de los archivos no importa.
Ramhound

Respuestas:

36

No hay un "mejor" directorio. Y mientras que las personas podrían argumentar que esta pregunta es subjetiva, o que la colocación real de los archivos no importa, y tienen razón acerca de los últimos no son recomendaciones estandarizadas en donde poner lo que en los sistemas de tipo Unix.

El Estándar de jerarquía del sistema de archivos define esto y le ofrece lo siguiente:

  • /var- un lugar para colocar datos que cambian durante el funcionamiento normal, como registros, etc., /var/wwwes el directorio predeterminado para colocar contenido web para Apache, pero su uso no está estandarizado en absoluto y solo es el lugar "habitual" donde lo colocaría porque la gente no cambie la configuración predeterminada con mucha frecuencia.

  • /srv- este directorio debe contener datos que son servidos por el sistema. Este suele ser el lugar que deseas. El FHS explica:

    Este propósito principal de especificar esto es para que los usuarios puedan encontrar la ubicación de los archivos de datos para un servicio en particular, y para que los servicios que requieren un solo árbol para datos de solo lectura, datos editables y scripts (como scripts cgi) puedan ubicarse razonablemente. Los datos que solo son de interés para un usuario específico deben ir al directorio de inicio de ese usuario. (...)

    Un método para estructurar datos bajo /srves por protocolo, por ejemplo. ftp, rsync, www, Ycvs

    Entonces, simplemente cree un /srv/wwwdirectorio y use esto. Puede crear subcarpetas para cada host virtual que desee servir con su máquina.

  • /homecontiene archivos que realmente deberían pertenecer a un solo usuario. Apache, por ejemplo, permite las direcciones de usuario , para que pueda acceder a los archivos web de un usuario a través de http://example.com/~username, y se sirven desde el public_htmldirectorio en el hogar del usuario.

    Si utiliza un servidor que se comparte entre varias personas y desea permitir que todos alojen sus propios scripts, aquí es donde deben ir. Recuerde hacer que los directorios puedan ser escritos por el usuario al que pertenecen únicamente.

En esencia, /srv/wwwy /var/wwwson directorios en los que debe crear subdirectorios para cualquier proyecto web que desee alojar. Luego puede definir diferentes permisos en estos directorios para permitir que ciertos usuarios o grupos de usuarios les escriban. Si tiene proyectos para un usuario a la vez, use /home.

slhck
fuente
3
Por lo http://example.com/~usernamegeneral, no apunta a /home/username/, sino a /home/username/public_html/.
choroba
Sí, gracias, eso debería haberse agregado para mayor claridad. Hecho.
slhck
¡Después de varios años de usarlo /var/www, es hora de cambiar!
Sitilge
Además, me wwwsuena más como un subdominio.
Sitilge
Solo para agregar ... El uso de / var / www es una práctica común para instancias de servicio de sitio único y, como se dijo, la ubicación predeterminada de Apache, mientras que el uso de / home / usr / was / es una práctica común para servidores de revendedores o sitios múltiples hosting extraído del concepto de usuarios == clientes. Ambas son solo prácticas comunes y la respuesta de shlck es un mejor uso de los propósitos previstos del sistema de archivos.
Jools
4

Bueno, puede colocar archivos en cualquier lugar siempre que las cosas puedan acceder a ellos correctamente, sin embargo, los sistemas de archivos desordenados son un dolor de cabeza si alguien llega más tarde.

/srv es más lógico además si sigues el Estándar de Jerarquía del Sistema de Archivos, iría aquí.

Si haces varios dominios, puedes hacer, /srv/domain1 /srv/domain2etc., etc., luego subcarpeta allí dentro/ftp /www /tftp /logs /etc.etc.etc

Para mí, se siente una estructura muy sólida sobre la cual construir y controlar fácilmente

Pero como administrador, puede hacerlo tan limpio o desordenado como desee.

jenny
fuente
1

Ok, fácil respuesta rápida.

Si sus archivos web en el sistema solo serán accedidos por UN usuario en el sistema Linux. Utilice el directorio de inicio del usuario ( ~/).

Si los usuarios MÚLTIPLES tendrán acceso a sus archivos web en el sistema en el sistema Linux. Uso /srv/.

Esto es exactamente lo que http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM declara.

Aquí está la cita:

/ srv contiene datos específicos del sitio que sirve este sistema.

Este propósito principal de especificar esto es para que los usuarios puedan encontrar la ubicación de los archivos de datos para un servicio en particular, y para que los servicios que requieren un solo árbol para datos de solo lectura, datos de escritura y scripts (como scripts cgi) puedan ubicarse razonablemente. Los datos que solo son de interés para un usuario específico deben ir al directorio de inicio de ese usuario.

Bono: www? ftp? Organizar por protocolo? ¿Eh?

Como se indica aquí en http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM

  • Si solo un usuario accede a su sitio web en el sistema y SOLO a través del navegador (protocolo http), entonces: ~/http/your-website-directory/o (protocolo https) y luego:~/https/your-website-directory/
  • Si solo un usuario accede a su sitio web en el sistema y NO SÓLO a través del navegador, sino de múltiples protocolos (ig http AND tcp AND ...), entonces: ~/your-website-directory/
  • Si los usuarios MÚLTIPLES acceden a su sitio web en el sistema y SOLO a través del navegador (protocolo http), entonces: /srv/http/your-website-directory/o (protocolo https) y luego:/srv/https/your-website-directory/
  • Si los usuarios MÚLTIPLES acceden a su sitio web en el sistema y NO SOLO a través del navegador, sino de múltiples protocolos (ig http Y ftp Y ...) entonces: /srv/your-website-directory/

¿Eh por qué no www? Este es un legado del tiempo de Apache. www no especifica qué protocolo se está utilizando. Debian todavía usa esto a partir de hoy, mientras que, por ejemplo, Arch Linux usa / srv / http.

Karl Morrison
fuente
0

El servidor web Apache tiene un sitio web predeterminado, /var/www/pero sugiere colocar otros sitios web en/srv/

Me di cuenta de esto en Ubuntu Server 14.04 LTS. Su apache2.confarchivo predeterminado contiene bloque comentado:

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