Configuration standard d'un système de files webservers

Je cherche à essayer de rendre mon server Web plus facile à gérer, à sauvegarder et à reproduire. J'ai des sites Web, des files de configuration, des ssl certs, des vhosts dispersés partout. Il semble logique qu'ils soient tous dans un seul endroit. Je pensais créer un directory en root comme tellement

/data 

et à l'intérieur de cela, tous les directorys de mes données sur ce server Web sont les suivants:

 /data /websites [websites directories] /ssl_certs [secure certificatees for sites] /vhosts [virtual host files for sites] /config [Software config files (apache, mod_security etc.) /apache2 [Apache Server Config files] /proftpd [FTP Server Config files] /utilities [Misc Bash Scripts] 

Cela signifierait que si je devais répliquer ce server, je pourrais installer et configurer les packageages requirejs, puis copyr ce dossier sur lequel contiendra toutes mes données. De plus, je pourrais sauvegarder tout sur mon server facilement et rapidement, en cas de nécessité de restaurer, j'aurais toutes mes données au même endroit.

donc j'ai 3 questions:

Est-ce une bonne idée ou serait-il plus marrant que sa valeur?

Y aurait-il des conséquences sur la security de faire les choses de cette façon?

Quelle est la manière standard de faire cela si ce qui précède n'est pas possible?

Différents sites font des choses différentes; Si vous disposez d'un système de sauvegarde en place et d'un plan de reprise après sinistre qui est bien documenté et que vos files de configuration sont correctement configurés, vous mettez les files peu importe.

"Normes" … il y a tellement d'entre eux que c'est un nom stupide. Il existe des sites typiques , mais même cela varie selon le server distro et le server Web.

À la fin, si vous l'avez bien documenté et sauvegardé, cela ne devrait pas poser de problème. Faites ce qui convient le mieux à votre entreprise / stream de travail et ne vous inquiétez pas à ce sujet.

J'ai quelque chose comme ça:

  • /etc/
    • apache2 /
      • sites disponibles /
      • site activé /
    • ssl /
      • * .crt
      • privé/
        • *.key
  • / srv /
    • www /
      • $ site /
        • htdocs /
        • bûches /
        • cgi-bin /

En règle générale, configs va dans / etc / appname (donc certs sont dans / etc / nginx / certs /, les passwords sont / etc / nginx / passwords, les configurations vhost individuelles sont dans / etc / nginx / sites /, etc.). Ceci n'est pas considéré comme désordonné ou "partout"; tout se trouve dans le / etc / nginx / dir.

Le contenu des sites passe normalement dans / var / www / site1, / var / www / site2, mais cela est configuré par site et n'a pas besoin de se conformer à cette convention. (Chaque site pourrait être dans un endroit radicalement différent si vous le souhaitez, pour autant que httpd ait access.)

Remarque: J'utilise généralement nginx, mais le directory de configuration pour apache devrait être / etc / apache2 /. Le même sentiment s'applique.

Remarque: il est une autre convention commune d'utiliser / etc / apache2 / sites-enabled / et les sites disponibles /, mais j'aime personnellement cette approche.

Contrairement aux autres répondants, je pense qu'il existe un argument fort pour ne pas utiliser la layout par défaut – tout comme il existe de très bonnes raisons de ne pas utiliser le model d'permissions par défaut.

Le problème que j'ai avec ce que vous proposez, c'est que vous avez appelé les «données» du directory. Je voudrais que tous les config et les certs SSL soient bien séparés du contenu. Et puisque la configuration par défaut sera surtout / etc de toute façon, cela semble être l'endroit logique pour le laisser.

Dans le cas où vous rencontrez des problèmes, vous pouvez append des modules qui apporteront des modifications à la config (p. Ex. Ajout de modules apache). L'utilisation intelligente des logiciels de directory peut vous aider.