LAMP stack, acesso de leitura / gravação somente para diretórios específicos

1

Estou pensando em criar uma micro-instância da AWS na qual posso executar vários sites diferentes e não relacionados.

Um problema que tive com minha hospedagem compartilhada é que alguns dos meus clientes executam sites do Wordpress que às vezes não são atualizados para a versão mais recente tão rapidamente quanto eu gostaria, deixando-os vulneráveis a vulnerabilidades de segurança. Anteriormente, quando um desses sites do Wordpress era comprometido, todos os outros sites da minha hospedagem compartilhada foram afetados, incluindo sites que não são do Wordpress.

Eu gostaria de pelo menos conter isso se isso acontecer novamente. Existe uma maneira, em uma única instância do Linux, que eu possa ter vários "usuários" do PHP (usando o termo muito livremente) cada um com permissão para ler e escrever não mais do que o diretório de nível raiz do site?

Eu já vi sugestões para OpenVZ , mas isso parece ser um grande impacto no desempenho por pouco ganho.

Desculpas se isso já foi perguntado antes - é uma daquelas coisas difíceis de expressar de forma sucinta para uma pesquisa no Google, mas é óbvio que alguém deve ter perguntado a mesma coisa antes.

    
por Michael 19.02.2017 / 21:37

1 resposta

1

Você pode usar permissões de arquivo para isolar coisas em uma única máquina virtual (instância do EC2). Você pode ter pools PHP separados e eles podem ser executados como usuários diferentes de acordo com este Faça o tutorial . Esse tutorial é praticamente um guia para exatamente o que você precisa fazer e provavelmente será melhor do que usar o ECS.

Você deve estar analisando as instâncias t2 , t2.micro pode ser um pouco pequeno com várias piscinas, mas um pequeno ou médio poderia trabalhar para você. Você certamente terá que fazer alguns testes. Você pode adicionar memória virtual à instância do EC2, mas há desvantagens, especialmente porque o disco está em uma rede em instâncias t2. Outros tipos de instâncias têm discos locais, as instâncias M3 / C3 da geração anterior, mas você provavelmente está melhor com as instâncias de geração t2 ou atual com RAM suficiente.

Alternativamente, consulte o AWS EC2 Container Service , também conhecido como estivador gerenciado. Isso permitirá que você mantenha as coisas completamente separadas, às custas da execução de várias cópias de aplicativos que consomem muitos recursos, como o PHP, que usa uma tonelada de memória. Uma micro instância provavelmente não seria suficiente para muitos contêineres, mas um t2.large ou semelhante é provavelmente adequado.

Atualização - perguntas de acompanhamento O Nginx é um servidor web e proxy reverso rápido e eficiente, que usa muito pouca memória e é relativamente fácil de configurar. O Apache é maior e faz mais com os muitos módulos disponíveis, mas usa mais recursos.

Eu hospedo 5 sites e o MySQL em um t2.nano, mas ocasionalmente fico sem RAM fazendo uma grande atualização para o yum. Um t2.micro provavelmente está bem para você inicialmente, mas depende de quantos pools PHP você possui - eles podem ser bastante intensivos em memória. Eu tenho um guia sobre como configurar o MySQL para usar o mínimo de RAM . Comece com o t2.micro e o serviço RDS, ambos no nível gratuito, assim seu banco de dados é executado em uma máquina separada, economizando RAM. Não se surpreenda se você precisar aumentar para um tamanho de instância maior devido aos requisitos de RAM.

Atualizar do comentário @tero Kilkanen aponta o seguinte ponto muito valioso

If you want more separation between PHP workers, you can consider using the chroot feature of PHP-FPM. With chroot, each PHP process can see only access the directories in its chroot. However, it needs much more work to set up and I don't know if there are any guides to do that

    
por 19.02.2017 / 21:53