Symlink somente se o arquivo não estiver presente

1

Eu tenho um site / aplicativo baseado em LAMP e estou me preparando para começar a servir clientes. Com o meu sistema atual, cada cliente precisaria de uma instância completa do site (estrutura de pastas completa do web-root). Eu gostaria de separar o aplicativo principal enquanto apenas cria os arquivos personalizados necessários para cada cliente.

Aqui está o que estou procurando: Uma maneira de dizer "se o arquivo existir na pasta do cliente, use esse. Caso contrário, use o arquivo da pasta principal do aplicativo." Uma espécie de link simbólico condicional ou priorizado, mas trabalhando para uma árvore de pastas inteira. Dessa forma, não precisarei alterar o código em todo o framework, e a separação pode ocorrer de forma transparente para o aplicativo.

Essa funcionalidade existe no Linux, ou é algo que eu preciso implementar no servidor web?

Obrigado!

    
por user1259576 26.02.2013 / 16:50

3 respostas

1

Você pode usar um sistema de arquivos de união como aufs ou UnionFS para sobrepor diretórios uns sobre os outros. Acessar um arquivo envolve a verificação das sobreposições em uma ordem específica até que o arquivo seja encontrado.

    
por 26.02.2013 / 18:08
0

O método comum para isso é usar uma estrutura de pastas para seu aplicativo que ofereça suporte a isso, como /app para o código comum e /config para a configuração local. Você então symlink /app para um diretório de código fonte comum e tem um diretório real para /config . Isso é fácil de reproduzir e eficaz. Entre outras coisas, permite uma opção de atualização muito fácil, pois você só precisa substituir um diretório comum.

Eu considero isso como um critério de qualidade muito básico e sugiro que você corrija seu aplicativo para permitir isso.

Além disso, a funcionalidade originalmente solicitada não existe.

    
por 26.02.2013 / 17:05
0

O que você descreve geralmente é realizado por meio de versões. Os sistemas de versionamento mais usados ultimamente são o Subversion e o Git.

Se você configurar um repositório base, poderá ramificar para cada instalação do cliente e fornecer correções e diferenças, conforme necessário, para modificar as fontes. Como você terá diferentes ramificações do aplicativo principal, você terá que testar os patches aplicados no aplicativo base para cada ramificação, mas não há outra maneira de contornar isso.

Como você está usando o Linux e ambos os SCM são fornecidos com todas as principais distros, você não terá muita dificuldade para configurar nenhum deles.

    
por 26.02.2013 / 17:07

Tags