Em qualquer tipo de desenvolvimento web, geralmente existem várias boas razões para lidar com o desenvolvimento de forma diferente da produção. É conveniente ter uma cópia local do seu site em seu diretório inicial para desenvolvimento, mas aceite que não há problema em algumas coisas não funcionarem totalmente até que você as envie para o ambiente de produção.
Você não deve tentar vincular o esquema de permissão do Drupal e seu esquema de permissão de conta de usuário. Deixe as coisas Drupal de produção viverem em /var/www/html
ou onde, com todas as permissões que deixam Apache / PHP / Drupal felizes. Deixe sua árvore de desenvolvimento pertencer a você.
Sempre que você terminar de trabalhar em um novo recurso para o site, use algum tipo de ferramenta de sincronização para enviar as alterações do desenvolvedor para a produção, além de obter novas permissões ao longo do caminho.
Pessoalmente, eu uso rsync
para isso. Isso tem a boa vantagem de o servidor de produção poder estar na Internet, já que o tunelamento de rsync
a ssh
é trivial. Esse é um recurso importante no desenvolvimento da web, já que geralmente há boas razões para hospedar seu site em um servidor que não está em sua própria LAN. Eu uso um comando como este para meus sites:
rsync -lprtvD -e ssh --delete \
--exclude \*.swp \
--exclude .svn \
--exclude GNUmakefile \
./ [email protected]:/var/www/html
Esse comando fará com que os arquivos sejam de propriedade do usuário www
em www.mysite.com
, dissociando o esquema de permissão dev da produção.
Parece que você quer usar o SVN, o que é bom. Você só precisa fazer com que as caixas de desenvolvimento e de produção possam ver o servidor SVN. Como no rsync, você quer estar tunelando o protocolo SVN através de ssh
aqui, por segurança. Quando chegar a hora de enviar uma alteração para a produção, verifique-a no SVN e, em seguida, verifique-a na caixa de produção. Na verdade, eu recomendo usar svn export
em vez de svn checkout
para evitar o espalhamento de subdiretórios .svn
em toda a árvore do seu servidor web. O método rsync evita isso com as regras --exclude
.