3. Quién es Pablo Godel?"
• Argentino, viviendo en Miami desde 1999, EE.UU.
• Programador PHP, Symfony, entre otros
• Fundador de la lista de PHP en español http://
news.php.net/php.general.es/3 )antes de Julio 2000(
• Pasé el control a php.net con más de 1000 subscriptos
• Co-fundador de ServerGrove Networks
⁃ fundada en 2005
⁃ servicios de hosting especializado en PHP y Symfony
Sunday, July 3, 2011
5. Entorno Productivo - sistema operativo
Opciones disponibles
• Mac OS X )basado en Unix(
• Linux
• Windows
Sunday, July 3, 2011
6. Entorno Productivo - sistema operativo
Regla #1
El entorno de desarrollo
idealmente tiene que ser lo más
cercano posible al servidor de
producción.
Sunday, July 3, 2011
7. Entorno Productivo - sistema operativo
Regla #1
Si el servidor corre Linux, el
desarrollo debería ser Linux o
algún Unix, incluso Mac OS X.
Sunday, July 3, 2011
8. Entorno Productivo - sistema operativo
Regla #1
En cambio, si el servidor es
Windows, idealmente el
desarrollo debe ser en Windows.
Sunday, July 3, 2011
9. Entorno Productivo - sistema operativo
Regla #1
Todo esto es muy importante
para evitar sorpresas )que
generalmente son malas porque
son problemas(
Sunday, July 3, 2011
10. Entorno Productivo - sistema operativo
Regla #1
Razones:
• Falta de extensiones de PHP
• Diferencia en versiones de PHP y extensions
• Diferencia en configuración de Apache y PHP
)php.ini(
• Diferencia en el sistema de archivos )case sensitive/
insensitive(
Sunday, July 3, 2011
11. Entorno Productivo - sistema operativo
Diferencia en el sistema de archivos )case sensitive/
insensitive(
• Linux )case sensitve(
• Windows )case insensitive(
• Mac OS X )por defecto, case insensitive, se puede
cambiar pero trae problemas(
Sunday, July 3, 2011
12. Entorno Productivo - sistema operativo
Diferencia en el sistema de archivos )case sensitive/
insensitive(
<?php
use SymfonyComponentClassLoaderUniversalClassLoader;
$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
'Symfony' => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/
bundles'),
'Application' => __DIR__.'/../src',
'Sensio' => __DIR__.'/../vendor/bundles',
Archivo: src/Application/miBundle/clase.php
$clase = new Application/MiBundle/Clase()
Sunday, July 3, 2011
13. Entorno Productivo - sistema operativo
No olvidarse de los VMs
Permiten correr Linux dentro de Windows o Mac OS X
• VirtualBox )gratis(
• VMware Player )gratis(
• VMWare Fusion
• Parallels Desktop
Sunday, July 3, 2011
14. Entorno Productivo - sistema operativo
Otra alternativa es tener un servidor dedicado o
virtual aparte que se pueda montar con SMB / NFS
Sunday, July 3, 2011
15. Entorno Productivo - sistema operativo
Los servidores virtuales tienen la ventaja que se
pueden clonar para cuando se agrega un programador
al equipo.
Sunday, July 3, 2011
16. Entorno Productivo - sistema operativo
Jefes: ofrezcan al programador elegir su entorno de
desarrollo. No hay nada más importante que sentirse
cómodo y manejar bien las herramientas.
Sunday, July 3, 2011
17. Entorno Productivo - sistema operativo
Regla #2
Usen lo que les sienta mejor y donde sean más
productivos, pero prueben cosas nuevas.
Sunday, July 3, 2011
21. Entorno Productivo - Editor/IDE
Opciones disponibles
• Netbeans 7 PHP )gratis(
• phpStorm 2.1 )$84 personal, $168 comercial, gratis
para proyectos OS(
• Eclipse )gratis(
• Zend Studio 8 )$299(
• Komodo IDE 6 )$295 sin soporte/upgrades(
Textmate (Mac), vi/vim, emacs, notepad, etc.
Sunday, July 3, 2011
22. Entorno Productivo - Editor/IDE
¿Por qué un IDE?
• integración con Xdebug / otros
• breakpoints y watches
• code completion
• syntax highligher
• PHPDoc
• Twig! )phpStorm(
• muchas más!
Sunday, July 3, 2011
23. Entorno Productivo - Editor/IDE
¿Por qué no un IDE?
• generalmente requieren mucha memoria
• curva de aprendizaje
• familiarización con herramientas ya conocidas y
dominadas
• costo
Sunday, July 3, 2011
24. Entorno Productivo - Editor/IDE
Jefes: ofrezcan al programador elegir su entorno de
desarrollo. No hay nada más importante que sentirse
cómodo y manejar bien las herramientas.
Sunday, July 3, 2011
39. Entorno Productivo - deployment
Capifony
• Instalar capistrano
⁃ gem install capifony
• Inicializamos el proyecto
⁃ capifony .
• Configuramos el deployment con config/deploy.rb
• Seteamos el servidor
⁃ cap deploy:setup
• Hacemos el deployment
⁃ cap deploy
• Y la próxima vez y la otra y la otra…:
⁃ cap deploy
Sunday, July 3, 2011
40. Entorno Productivo - deployment
set :application, "sg11"
set :domain, "servergrove.com" Capifony
set :deploy_to, "/var/www/vhosts/sg11.servergrove.com"
set :repository, "git@github.com:servergrove/sg11.git"
set :scm, :git
set :branch, "master"
set :user, "deployer"
ssh_options[:port] = 22123
ssh_options[:forward_agent] = true
set :use_sudo, false
role :web, "sg100.servergrove.com" # Your HTTP server, Apache/etc
# directories that will be shared between all deployments
set :shared_children, [app_path + "/logs", web_path + "/uploads"]
set :update_vendors, false
set :dump_assetic_assets, true
Sunday, July 3, 2011
43. Entorno Productivo - tips
SSH
• ssh-keygen -t dsa
• ~/.ssh/config
Host *
ForwardAgent yes
• ssh-add
Ahora, cuando nos conectemos al servidor
remoto y ejecutemos git pull, utilizará el key de
nuestra computadora.
Sunday, July 3, 2011
44. Entorno Productivo - tips
• El poder del archivo hosts
• Unix: /etc/hosts
• Windows: /Windows/System32/etc/hosts
Permite acceder a un IP sin tener que cambiar
el DNS
Permite crear virtual hosts en el servidor local
de desarrollo, ej: desymfony.local
Sunday, July 3, 2011
45. Entorno Productivo - tips
El poder del archivo hosts
127.0.0.1 localhost symfony2rc2.local rockmongo.local mysql_admin.local maestro.local
desymfony.local sg11.local sgcontrol2.local
Apache Virtual Document Root
UseCanonicalName Off
VirtualDocumentRoot /Users/pgodel/Sites/%0/web
<Location />
AllowOverride All
Options +FollowSymLinks
</Location>
• ~/Sites/desymfony.local
• ~/Sites/sg11.local
•…
Sunday, July 3, 2011
46. Entorno Productivo - tips
Aliases en BASH
alias phplog="tail -f /var/log/apache2/php_errors.log"
$ phplog
Sunday, July 3, 2011