Tuxfiles dice lo siguiente sobre la estructura de directorios de Linux:
/var
:Este directorio contiene datos variables que cambian constantemente cuando el sistema se está ejecutando.
FHS on/var
dice lo siguiente:
/var
contiene archivos de datos variables. Esto incluye directorios y archivos de spool, datos administrativos y de registro, y archivos transitorios y temporales.
Luego continúan diciendo que cosas como los registros, el correo y la cola de impresión se colocan en esa carpeta.
Tradicionalmente, una instalación estándar de Apache o Nginx en Ubuntu Linux colocará el directorio en /var/www/
.
No me parece el lugar ideal para colocar un directorio con archivos o contenido que se supone que es casi permanente.
¿Por qué se pone tan a menudo /var
?
Más subjetivamente, ¿es aquí donde debería ir idealmente, de acuerdo con la estructura del directorio?
fuente
/var/lib/www
habría sido más adecuado .../srv
/var
es para datos no ejecutables, no configurados, no pertenecientes a un usuario real que se pueden editar o cambiar (por ejemplo, deben vivir en un volumen regrabable)./var/lib
es específicamente para ese tipo de datos que deberían sobrevivir a un reinicio y no ser eliminados por un proceso de mantenimiento, seisc-dhcp-server
utiliza/var/lib
para almacenar su registro de arrendamientos DHCP, por ejemplo. Por lo tanto, sería un lugar lógico para los archivos del servidor web.Respuestas:
En realidad no es la ubicación "tradicional" en absoluto. Tradicionalmente, todo lo que instaló después del SO entró
/usr/local
, y de hecho ese es el "diseño de ruta de Apache clásico" (sus palabras) hasta el día de hoy. Durante mucho tiempo lo fue/home/httpd
.Lo que está viendo es que un Apache que se ha configurado para un sistema operativo particular, ya sea Red Hat Linux, Mac OS X, GNU, etc., personalizará la ubicación. Las fuentes de Apache están bien diseñadas para esto, de hecho, si rastrea el valor de ServerRoot en los archivos de origen, verá que comienza en este archivo
config.layout
:Algunos extractos de ese archivo le mostrarán que hay mucha variedad en la ubicación de docroot.
IIRC
/var/www
entró en mi vida con las versiones 2000-2001 de Red Hat Linux 7.x (no Red Hat Enterprise Linux). Por todas las razones que mencionas anteriormente, pensé que no tenía mucho sentido, pero la realidad es que en la era moderna hay tantas otras herramientas y tecnologías involucradas, la ubicación se mueve de todos modos.fuente
El uso de
/var/www
es confuso solo a primera vista.Según el FHS, los datos del servidor web deben ir a
/srv
. Esa es la regla principal.Sin embargo, también dice que ¡decidir sobre la estructura
/srv
es responsabilidad exclusiva del administrador local! Por lo tanto, los paquetes no deben incluir nada/srv
, y la raíz del documento predeterminada no debe serlo/srv
, porque el paquete (apache) no sabe qué hay dentro/srv
y debajo de él. Tal vez un repositorio de subversión con contraseña de texto claro y otras cosas también. Por lo tanto, debe haber un valor predeterminado fuera de/srv
. Que por defecto se convierta/var/www
./var/www
es principalmente un marcador de posición. Los paquetes se utilizan/usr/share
para contenido HTML estático o/var/lib
para contenido variable dinámico. Muchas personas erróneamente pensaron que deberían poner HTML/var/www
. Eso es un problema, porque los paquetes ocasionalmente también lo usan. Tan recientemente inventaron/var/www/html
para los paquetes. Esperemos que la gente no empiece a usar eso porque, de nuevo, tienen que inventar un nuevo directorio ... y así sucesivamente.Resumen: debe usar
/srv
y configurar sus hosts virtuales Apache en consecuencia.fuente
Si bien estoy de acuerdo con la respuesta de Akond, creo que hay un aspecto más importante. La mayoría de las otras ubicaciones (como
/usr/local
) son administradas típicamente por el sistema (el administrador de paquetes)./var
generalmente es donde van los archivos que no son administrados por el administrador de paquetes ('datos' de todo el sistema).También creo que la definición del FHS es un poco más precisa (los datos no tienen que estar "cambiando constantemente"):
Sin embargo, el FHS también es una especie en la que los datos de www deberían entrar
/srv
fuente
/usr/local
es que no es administrado por el administrador de paquetes./srv/www
También era el camino clásico en los sistemas SuSE (hasta SLES10).Las razones son principalmente históricas, como otros dijeron.
/var
se ha utilizado para datos del sistema que cambian todo el tiempo, por ejemplo, archivos de caché, registros, datos de tiempo de ejecución (archivos de bloqueo, por ejemplo), almacenamiento del servidor de correo, cola de impresora, etc. Básicamente para todo lo que no se puede ingresar/usr
( porque contiene datos locales), no son programas de terceros que entran/opt
y no son descartables y volátiles a medida que entran/tmp
.A medida que se desarrollaba Unix / Linux, se convirtió en un lugar desordenado con una mezcla de varios directorios diferentes juntos. En los últimos años, ha habido una tendencia a sacar algunas cosas de allí, en particular el contenido servido por la máquina (que ahora según [ Estándar de Jerarquía del Sistema de Archivos 2.3, p.15 ] debería entrar
/srv
, no entrar/var/www
).Algo similar ocurrió a
/var/run
unos años atrás - con el esfuerzo concentrado de varias distribuciones, se trasladó desde/var/run
en/run
el que fusionan las funciones de la utilizada anteriormente/var/lock
,/var/run
y/dev/shm
.fuente
Desde mi experiencia (soy desarrollador web) el contenido del sitio web está lejos de ser estable. Incluso en el caso de archivos html (no importa el contenido generado dinámicamente) están sujetos a cambios constantes (enmiendas, omisiones, etc.).
Desde mi punto de vista, son variables. Por lo tanto, se adaptan perfectamente al directorio / var y no hay nada de malo en eso.
fuente
/var
. Pero creo que es una cuestión de opinión y debate más que hechos concretos.IIRC, en los viejos tiempos, siempre montamos
/var
como su propio sistema de archivos (disco separado o segmento de un disco).Una de las razones de esto, como han dicho otros, es que hay mucha lectura / escritura en ese sistema de archivos (logs / et al). Tener un disco / segmento independiente significa que puede ser sintonizado mejor para este tipo de E / S (en comparación con la mayoría de leer
/
,/usr
etc ...).La otra razón es que en aquellos días, si su sistema se bloqueaba durante una operación de escritura, había una muy buena posibilidad de que su sistema de archivos raíz se corrompiera dejándolo en un estado difícil de reparar. De ahí la necesidad de separación de
/
.El sistema de archivos y la tecnología de disco ha mejorado mucho con el tiempo, por lo que es mucho menos probable.
fuente
/var
es una opción decente para una ubicación "base" neutral para el usuario para el acceso multiusuario, en el caso de que tenga un sitio web con múltiples hosts virtuales en ejecución que permita FTP u otras cargas, es decir, si es un host web o similar./home
es posiblemente no óptima porque las cosas malas pueden suceder a otras cuentas de concha de usuario si un irreflexivas o maliciosos usuario carga al/home
límite de partición (suponiendo que la configuración tradicional de/var
,/home
, etc estar en particiones separadas) que pueden afectar a otras cuentas de usuario.Por supuesto, creo que
/srv
es mejor para esto, pero/var
ha existido por más tiempo en la tradición de UNIX.fuente
/home/http
?Lo que me gustaría agregar aquí es que poner la "raíz" web en / usr entra en conflicto con la parte del FHS que indica que / usr es compartible y de solo lectura, ya que diferentes servidores web, incluso en el mismo "clúster" puede tener diferentes archivos que contienen diferentes configuraciones, y esto no lo hace ideal para / usr.
Además, algunas aplicaciones web (MediaWiki y PhpBB para nombrar las que están en la parte superior de mi cabeza) esperan una ubicación que se pueda escribir en el árbol del directorio web para cargar archivos adjuntos / archivos multimedia. Por lo tanto, colocar el árbol web en / usr entraría en conflicto si desea adherirse a la definición de solo lectura / usr.
fuente
El servidor web Apache tiene un sitio web predeterminado en / var / www / pero sugiere colocar otros sitios web en / srv /
Me di cuenta de esto en Ubuntu Server 14.04 LTS. Su archivo predeterminado apache2.conf contiene un bloque comentado:
fuente