Eu gosto da convenção /var/www/example.com.
Eu gosto de ter o conf em /etc/httpd/vhosts.d/example.com.conf e incluído no conf apache principal. Eu não deixo o cliente editar isso. Desta forma, se você adicionar um novo domínio e o configtest, recarregar ou reiniciar, detectará um erro, então é muito fácil retroceder.
Com:
/var/www/example.com/html
/var/www/example.com/cgi-bin
/var/www/example.com/log
Eu uso posix acls para adicionar acls padrão nos diretórios acima, para que todos os arquivos que eles criam sejam criados com rwx para o usuário do servidor (aquele usado no suexec) / group, de modo que não importa o usuário criar o arquivo, o usuário do servidor pode acessá-los e para que os membros do grupo do usuário VritualHosts possam acessar todos os arquivos.
/var/www/example.com/private
Eu uso privado como o lugar para arquivos de senha e de grupo para ir.
/var/www/example.com/conf/example.com.include.conf
Se eu quiser permitir que o proprietário do site faça alterações de configuração, também criei um arquivo como:
/var/www/example.com/conf/example.com.include.conf
que está incluído no VirtualHost na configuração principal do domínio, por exemplo, /etc/httpd/vhosts.d/example.com.conf.
Você precisa ser cuidadoso com isso, já que isso significa que o usuário pode quebrar toda a sua configuração para que você tenha muito cuidado com o usuário e saiba o que está fazendo.
Eu tenho a tendência de fazer isso quando existe um servidor com vários VirtualHosts todos pertencentes ao mesmo cliente, então se eles quebrarem a configuração, eles apenas quebrarão seus próprios sites.
Também sugiro usar o suexec, que permite que os processos sejam executados como um usuário diferente do apache e também permite que o conteúdo dinâmico seja executado como usuários que não sejam o usuário do apache.
Veja:
link
Você também pode querer examinar as várias diretivas RLmit, que permitem que você limite o uso de recursos em uma base VirtualHost, etc. Veja:
link