Como implantar seus aplicativos PHP corretamente?

Como implantar corretamente aplicativos do desenvolvimento à produção e como lidar com várias configurações de site. Todo meu desenvolvimento é feito através do svn localizado em var / svn / myapp / trunk e o código de produção atual está em / var / www / myapp.

Eu verifico o código mais recente para a minha máquina local em um diretório chamado "myapp_latest_svn". Eu tenho o código específico do site e localização no meu settings.php principal, que tem H_PATH = 'http://myapp.com'& db config settings para db_host, db_user_name e db_password que é como você sabe diferentes nas configurações da máquina local (onde localhost / myapp.com é apenas um alias do Apache) e no servidor de produção (site ao vivo é executado em myapp.com).

Além disso, o arquivo .htaccess é diferente daquele no servidor de produção. Em resumo, existem várias diferenças entre dev e produção.

Eu mantenho todo o meu trabalho no SVN. Todas as manhãs eu uso o SVN Update, que atualiza o código mais recente para o meu repositório svn local. Quando estou pronto para ir ao vivo, eu construo uma versão com o svn Commit.

Então, na versão, tenho que lembrar de alterar todos os arquivos dev apropriados para a sua contraparte de produção. Agora eu tive que editar manualmente o settings.php & .htaccess de produção para refletir as alterações específicas do site.

Eu estou procurando uma maneira automatizada para ir de dev para produção completa com controle de versão e sem edição manual de arquivos que é propenso a erros e má prática.

Uma maneira é tornar a versão de produção de arquivos somente leitura (0444). Dessa forma, quando eu faço uma exportação de svn, eles não são sobrescritos pela versão dev dos arquivos e eu não tenho que me preocupar com a edição de arquivos em cada movimento, do dev para a produção. Mas essa é uma maneira ruim de fazer coisas como integração contínua.

Também fazendo várias cópias do settings.php (uma para localhost, beta e prod). Em seguida, usando um script de shell que exporta do svn e, em seguida, uma vez que a exportação é feita, substitui o settings.php com o settings.php correto, dependendo do local que estamos implantando. Dessa forma, tudo é automatizado. Mas este também é um caminho ruim.

A última maneira é

if( eregi ("myapp.com$", $_SERVER['HTTP_HOST']) ){

    define('H_PATH', 'myapp.com');

} else {

    define('H_PATH', 'localmyapp.com');

}

Isso é bom no que diz respeito ao settings.php. Mas o que acontece com o .htaccess, você não pode verificar como o acima em .htaccess.

O que eu não quero acabar fazendo toda vez que eu implantar o meu site que eu tenho que mudar as configurações.

Meu esquema do banco de dados não está no controle de versão, portanto, db não é um problema para mim, apenas o settings.php e o .htaccess.

Além disso, como posso dizer ao svn para não atualizar alguns diretórios, uma vez que também é específico do site (/ log, / cache, / assets, / downloads). Também preciso preservar o acesso de gravação do apache (www_data) intacto para os arquivos acima também.

Por fim, não quero copiar o diretório de troncos vazio e os arquivos .svn para o servidor de produção quando eu exportar.

Como posso usar o Phing ou até mesmo um shell script para integrar sem causar nenhum desses problemas ao construir a partir do svn para servidores de produção?

Isso pode ser útil para muitos desenvolvedores de aplicativos wannabe por aí na natureza.

Desde já, obrigado,

octime

questionAnswers(4)

yourAnswerToTheQuestion