lunes, 9 de abril de 2012

Permisos de acceso y Capifony

En el ultimo post se explico como desplegar un proyecto Symfony 2 con Capifony. Dependiendo del servidor con el que estemos trabajando debemos tener mas o menos cuidado con los permisos de usuario. Git en concreto solo guarda información sobre el bit ejecutable de un archivo. En mi caso al desplegar me encuentro con que el servidor se queja de los siguiente:
  • Carpetas 775 en lugar de 755
  • Archivos 664 en lugar de 644
Al intentar servir una pagina web en la que el archivo o la carpeta no tenga los permisos adecuados , se genera un error 500. Así que hay que hacer algo para realizar los cambios pertinentes. Seria bastante estúpido, montar todo Capifony para desplegar cómodamente con la ejecución de un comando para tener que cambiar los permisos de los ficheros manualmente.

Por defecto Capifony le dará permisos de escritura al grupo, asi que para ello hay que agregar a Deploy.rb la opción:
 set :group_writable, false  

Con eso están solucionados los permisos de las carpetas, sin embargo para los ficheros no hay una opción que podamos modificar. Mirando el código de Symfony2.rb, cuando se despliega el código la ultima tarea ejecutada antes del commit es deploy:symlink asi que teniendo esto en cuenta podemos modificar deploy.rb para que cambie los permisos de los ficheros cuando termine de desplegar. Yo solo necesito eliminar los permisos de escritura para todos los que no sean el propietario.
 after "deploy:symlink" do  
  run "cd #{latest_release} && chmod -R go-w web/"  
 end