¿Deben los sitios web vivir en / var / o / usr / según el uso recomendado?

62

Según una guía sobre la estructura de directorios de Linux , /usr/es para archivos de aplicaciones y /var/para archivos que cambian (supongo que esto significa "archivos que pertenecen a las aplicaciones"). ¿Es esto correcto?

Si este es el caso, entonces estoy un poco dividido entre usar cualquiera. Un sitio web es una aplicación (si es dinámico, por así decirlo), pero en otros casos es solo una colección de archivos utilizados por Apache.

El directorio predeterminado de www reside /var/www/, así que ¿deberíamos hacer lo mismo usando /var/websites/(o algo similar), o elegir /usr/websites/ya que podrían ser aplicaciones?

Esta es una pregunta muy trivial, pero de todos modos me está molestando. Para nuestro caso, me estoy inclinando hacia /usr/webalgo así, ya que nuestros sitios web son todas aplicaciones.

Actualizar:

Esto es para los sitios web de nuestra empresa; no es un servidor de alojamiento compartido, por lo que no debemos preocuparnos por separarlos /home/ni nada por el estilo.

Nick Bolton
fuente
10
No creo que la pregunta sea tan trivial; es bastante bueno, en realidad. Interesante.
Aron Rotteveel

Respuestas:

63

Según la FHS , /usres para shareable, read-only data, no donde desea colocar el sitio web. Aquí es donde debe poner su código (por ejemplo, Fedora hace esto para Wordpress). Consulte también la guía de empaquetado de activos web para Fedora.

/vares "archivos de datos variables. Esto incluye directorios y archivos de spool, datos administrativos y de registro, y archivos transitorios y temporales". - mejor, pero aún no del todo correcto - pero se usarán muchos sistemas /var/www, por lo que incluso si se equivoca al ponerlo allí, está en buena compañía.

/srves para "datos específicos del sitio que sirve este sistema". - lo que parece una buena combinación, pero es mucho menos común que /var/www.

El otro lugar común para colocar los archivos del sitio es debajo /home: creando un usuario especial llamado websiteo tal, y luego colocando los archivos dentro del homedir de ese usuario (por ejemplo, /home/website).

James Polley
fuente
44
Ah, mi trabajo usa /srv, como nunca había visto esto antes, pensé que fue creado por ellos. ¿Es algo de Redhat / CentOS?
Nick Bolton el
12
El valor predeterminado solo se establece en /var/wwwporque las distribuciones no pueden tocar /srv; eso es para que el administrador del sistema lo configure. Por eso, es "mucho menos común" y también correcto.
Michael Hampton
28

Eche un vistazo al Estándar de jerarquía del sistema de archivos ( Wikipedia ). Yo mismo uso / srv / web / $ domain / {htdocs, logs, cgi-bin, ...}.

ptman
fuente
3
También lo hago así, pero en lugar de "www" siempre uso el nombre del servicio "httpd". Entonces tengo / srv / httpd / $ domain ... o / srv / smbd / sharename ... De esta manera, es más fácil ver qué servicio está sirviendo los archivos. Por ejemplo, en algunos sistemas tenemos / srv / nginx / $ domain
Raffael Luthiger
9

Los sitios web deben vivir en los directorios de inicio de los usuarios. Son datos de usuario, deben estar aislados por un usuario por sitio, y el contenido dinámico debe ejecutarse nuevamente como un usuario separado, con archivos que el contenido dinámico necesita leer y modificar dados los permisos apropiados para hacerlo.

Actualizar:

El hecho de que no sea un servidor de alojamiento compartido no significa que no deba participar en buenas prácticas de seguridad y separar roles independientes en sus propias zonas de seguridad.

womble
fuente
7

La guía definitiva es el Estándar de Jerarquía del Sistema de Archivos que dice que /srves el lugar apropiado.

Dennis Williamson
fuente
2
No lo leo de esa manera, o al menos, lo leo como ambiguo en este punto. La mayoría de los sitios web no son atendidos simplemente by this system, son atendidos por un grupo completo de sistemas; y las dos oraciones que comienzan en This setup will differ from host to host.sugieren que este no es el lugar para los archivos compartidos en muchos servidores. Es un lugar bastante probable, sin embargo - sin duda más apropiado que /usr, y sin duda mejor que/var
James Polley
1
No creo que el FHS sea definitivo. Re: (De Wikipedia): La mayoría de las distribuciones de Linux siguen el FHS y declaran que es su propia política mantener el cumplimiento del FHS. Sin embargo, la gran mayoría (a partir de 2009) de las distribuciones, incluidas las desarrolladas por miembros del Grupo de Estándares Libres, no siguen completamente el estándar propuesto.
Michael Graff
66
Eso es lo bueno de los estándares: ¡hay tantos para elegir! :)
James Polley
3

El lugar donde viven en el disco tiene poca importancia. Es donde los quieres.

Tengo un enlace simbólico de / www en todas mis máquinas a donde realmente viven, así que nunca tengo que preguntarme de una máquina a otra. Algunas máquinas antiguas tienen / u0 y / u1 para discos de usuario, y coloco las cosas web allí. Algunos tienen / home montado directamente, por lo que van allí, pero / www siempre apunta al lugar correcto.

Tampoco pongo ninguna configuración en / usr ni en / var. Va en / local (que, lo has adivinado, es un enlace simbólico en algún lugar en / u0 o / u1 normalmente). Esto hace que hacer copias de seguridad sea fácil. Acabo de hacer una copia de seguridad de los discos de usuario.

Por supuesto, tengo un sitio de distribución maestro para mi sistema operativo de elección, NetBSD. Hago el sistema como lo quiero en esta máquina principal (realmente una instancia de xen) y rsync / usr around. Me hace la vida fácil.

Michael Graff
fuente
66
Esto está bien si es una operación de una sola persona, o tal vez incluso un pequeño equipo que trabaja en estrecha colaboración y está familiarizado con las debilidades de los demás; aprender la forma 'correcta' de hacerlo probablemente tomará más tiempo que simplemente hacerlo eso. Si tiene una operación grande y con frecuencia trae nuevas personas a bordo, tener que ponerlas al día con un diseño como este llevará mucho tiempo: quedarse con (o al menos, cerca) el FHS es ahorrará tiempo con cada nueva persona que traiga al equipo.
James Polley
55
Cuando utiliza 8 sistemas operativos diferentes, los estándares internos son mucho más fáciles de aprender que cada uno de los sistemas operativos.
Michael Graff
1
@James Polley ¿Cuánto tiempo lleva decirle a un nuevo empleado que "ponemos cosas /path/we/chose"?
ceejayoz
@ceejayoz Si tiene más de dos categorías de "cosas", es mucho más simple decirles "seguimos el FHS", aunque eso podría requerir algunos detalles adicionales para algunas categorías de "cosas".
tripleee
3

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:

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

Según mi opinión, NUNCA y NUNCA coloquen servicios de Internet en la zona común del sistema.

Sus servicios de Internet (Apache / Tomcat / SSH, etc.) son una puerta de entrada, entonces si coloca esos servicios en su zona de Sistema, será potencialmente vulnerable a algunos ataques.

Más que si ha puesto sus diferentes servicios en una zona segura como otra partición de separación.

Aquí hay un ejemplo de estructura que podría usar:

/ --> Root System --> On SDA1 --> Root and System security operator access only
 |
 | -->/usr /etc /var etc.

/SRV --> Web Root --> On SDB1 --> Web users access with minimal rights access.
 |
 |-->/srv/bin & /srv/dta
      |
      |-->/srv/bin/apache (or any other APPLICATION Binaries)
      |-->/srv/dta/SQL (or any other APPLICATION Datas like a 
                        database or web PHP files etc.)
Dr. I
fuente
1
¿Podría ampliar en "zona común del sistema"? No es un término que haya escuchado antes y no estoy seguro de lo que quieres decir. /srv/binparece violar el FHS, que establece que /srves para datos, no binarios
James Polley
Zona de sistema bien común significa, la parte del sistema operativo donde se almacenan todos los componentes del sistema, como cuenta, contraseña, binarios de administrador y biblioteca. Sé que mi instalación no respeta completamente el FHS, pero puedo dividir completamente el sistema operativo en dos partes. 1 ° / - El sistema que es bastante fijo (excepto para la instalación de herramientas de actualización y administración) 2 ° / - Las aplicaciones, datos y USers Homeland. De esta manera, si tiene algunos problemas con su sistema o datos, no perderá todos los datos.
Dr I
Veo. Esto tiene sentido (es por eso que la mayoría de los equipos de escritorio, por ejemplo, se colocan /homeen una partición separada), puede eliminar todo lo que no está en la /homepartición y no preocuparse por perder los datos del usuario. +1 para segregar datos.
James Polley