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