No hay un directorio "mejor". Y aunque la gente podría argumentar que esta pregunta es subjetiva, o que la ubicación real de los archivos no importa, y tienen razón sobre esto último, hay hay recomendaciones estandarizadas sobre dónde poner qué en sistemas similares a 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/www
es el directorio predeterminado para colocar contenido web para Apache, pero su uso no está estandarizado en absoluto y es solo el lugar "habitual" donde lo colocaría porque las personas no cambian 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 desea. La FHS explica:El 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 secuencias de comandos (como secuencias de comandos cgi) puedan ubicarse razonablemente. Los datos que solo son de interés para un usuario específico deben ir en el directorio de inicio de ese usuario. (…)
Un método para estructurar datos bajo
/srv
es por protocolo, ej.ftp
,rsync
,www
ycvs
Entonces, simplemente crea un
/srv/www
directorio y usa esto. Puede crear subcarpetas para cada host virtual que desee servir con su máquina. -
/home
contiene archivos que realmente deberían pertenecer a un solo usuario. Apache, por ejemplo, permite directorios de usuario, por lo que puede acceder a los archivos web de un usuario a través dehttp://example.com/~username
, y se sirven desde elpublic_html
directorio en la casa del usuario.Si usa 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 sean escribibles solo por el usuario al que pertenecen.
En esencia /srv/www
y /var/www
son 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 escriban en ellos. Si tiene proyectos para un usuario a la vez, use /home
.
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 y si sigue el estándar de jerarquía del sistema de archivos, iría aquí.
Si tiene varios dominios, puede hacer /srv/domain1
/srv/domain2
etc etc luego subcarpeta dentro de allí /ftp
/www
/tftp
/logs
/etc.etc.etc
Para mí, eso se siente como una estructura muy sólida para construir y controlar fácilmente
Pero como administrador, puede hacer todo lo limpio o desordenado que desee.
Ok, respuesta fácil y rápida.
Si solo UN usuario en el sistema Linux accederá a sus archivos web en el sistema. Utilice el directorio de inicio del usuario (~/
).
Si sus archivos web en el sistema serán accedidos por MÚLTIPLES usuarios en el sistema Linux. Usa /srv/
.
Esto es exactamente lo que dice http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM.
Aquí está la cita:
/srv contiene datos específicos del sitio que son atendidos por este sistema.
El 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 secuencias de comandos (como secuencias de comandos cgi) puedan ubicarse razonablemente. Los datos que solo son de interés para un usuario específico deben ir en el directorio de inicio de ese usuario.
Bonificación:www? ftp? ¿Organizarse por protocolo? ¿Eh?
Como se indica aquí en http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM
- Si solo UN usuario del sistema accede a su sitio web y SOLO a través del navegador (protocolo http), entonces:
~/http/your-website-directory/
- Si solo UN usuario del sistema accede a su sitio web y NO SOLO a través del navegador, sino a través de varios protocolos (por ejemplo, http Y tcp Y...), entonces:
~/your-website-directory/
- Si MÚLTIPLES usuarios acceden a su sitio web en el sistema y SOLO a través del navegador (protocolo http), entonces:
/srv/http/your-website-directory/
- Si MÚLTIPLES usuarios del sistema acceden a su sitio web y NO SOLO a través del navegador, sino también a través de varios protocolos (por ejemplo, http Y ftp Y...), entonces:
/srv/your-website-directory/
¿Eh, por qué no www? Este es un legado de la época de Apache. www no especifica qué protocolo se está utilizando. Debian todavía usa esto a día de hoy, mientras que, por ejemplo, Arch Linux usa /srv/http.