Apache vhost_alias – como definir usuário por host virtual?

Apache vhost_alias – como definir usuário por host virtual?

Para contextualizar: estou usando um servidor Debian ou Ubuntu com Apache 2.4, PHP 7.2 e uma série de outras coisas, para configurar um ambiente de desenvolvimento e teste para desenvolvedores e técnicos usarem no trabalho.

Eu segui otutorial sobre host virtual em massausando mod_vhost_aliaspara que eu possa obter coisas assim:

path: /var/www/{projectname}/public
url: {projectname}.dev.mycompany.net

A configuração relevante é a seguinte (editada adequadamente)

        VirtualDocumentRoot /var/www/%-4/public
        ServerName dev.mycompany.net
        ServerAlias *.dev.mycompany.net
        UseCanonicalName Off

Agora, tudo isso está funcionando corretamente e os desenvolvedores podem facilmente iniciar seus próprios projetos solicitando um usuário; o usuário é criado e adicionado ao www-datagrupo e então as pastas adequadas são criadas em /var/www com uma estrutura como esta:

projectname:projectname  rwxrwxr-x  /var/www/projectname
www-data:www-data     rwxrwsr-x  /var/www/projectname/public 

setfacl -m user:www-data:rwx /var/www/projectname
setfacl -R -m user:projectname:rwx /var/www/projectname/public 

(o último era necessário para que os arquivos criados, por exemplo: estruturas instaladas ou descompactadores, pudessem realmente ser manipulados pelo servidor web)

É claro que isso tem a desvantagem de qualquer projeto poder incluir coisas em qualquer outro projeto, então quero trabalhar nisso. No entanto, eu quero, sempre que possível,mantera automação, já que os desenvolvedores e técnicos devem ser capazes de iniciar projetos com o mínimo possível de informações do backend sobre o assunto ("Distrair o backend fica para depois", disse o chefe).

Agora, para tornar as coisas seguras, mas ainda tentando mantê-las simples, o que eu quero é configurar o Apache (ou PHP?) Para que o usuário adequado seja usado para executar o processo webserver/PHP correspondente a cada host virtual. Isso significa que, por exemplo: o projeto /var/www/foo1é executado sob o usuário foo1e não tem acesso aos arquivos sob /var/www/foo2. É claro que espero adaptar as permissões e a ACL para isso.

Mas não consigo encontrar nenhuma documentação sobre como configurar usuários separados enquantomantendo-se por pertoa automação para host virtual em massa. Presumo que isso deva existir - afinal, as empresas de hospedagem fariam coisas assim. Mas pesquisei várias coisas e nada parece oferecer uma alternativa que funcione.

No máximo, fui orientado para o apache2-mod-itk, mas uma vez instalado, o servidor web sempre falhará ao iniciar, não importa o que aconteça, mesmo quando padronizar a maioria dos arquivos conf para a configuração padrão, então não é uma opção.

O que estou procurando é algo que tenha um efeito semelhante a este "pseudocódigo" de configuração do Apache:

<Virtualhost *:443> 
        VirtualDocumentRoot /var/www/%-4/public
        ServerName dev.mycompany.net
        ServerAlias *.dev.mycompany.net
        UseCanonicalName Off
        User %-4
        Group %-4
        SuexecUserGroup %-4
        CustomLog /var/www/%-4/logs/access.log vcommon

[...other directives]

</Virtualhost>

Existe algo assim disponível no Apache/+PHP ou devo procurar outro tipo de solução automatizada?

Observe que eunãoquero acabar separando tudo em, por exemplo: um docker ou VM para cada usuário, a menos que haja uma maneira semelhante a mass_vhosts de automatizar a configuração; isso exigiria ainda mais informações (sem mencionar dar permissão root (?) aos técnicos para executar e instalar contêineres docker) e também interromper a automação em andamento (como você conecta os subdomínios aos contêineres dinamicamente?).

informação relacionada