Comenzar un proyecto Symfony 1.2 desde un Sandbox

Esta es una pequeña guía de como encarar un proyecto nuevo con symfony 1.2 desde un sandbox, sobre un sistema Debian, con Apache 2, MySQL corriendo localmente y que utilizaremos como ORM Propel.

Por mas que symfony 1.2 esta viejo para el equipo de Symfony dado que ya no lo tienen para descargar en si lista de downloads, decidí realizar esta guía por que todavía hay gente que lo usa y no piensa migrarlo por el momento. Si estas por empezar desde cero, cero, cero y quieres saber symfony te recomiendo que veas instalar la versión 1.4, esta guía no debería diferenciarse en mucho para esa versión.

Para este ejemplo suponemos que el proyecto se llama mysandbox.com, reemplazar por el nombre que les parezca. Asumimos que será un entorno de prueba y obviamos las medidas de seguridad para hacer más sencillo el ejemplo.

Empezamos

1 – Descargar el Sandbox http://www.symfony-project.org/get/sf_sandbox_1_2.tgz

2 – Copiarlo descomprimido a un directorio para configurar el Vhost de Apache P.Ejemplo : /var/www/mysandbox.com

3 – Configurar el Vhost de Apache para nuestro proyecto, en el caso de debian añadir la siguiente definición de vhost en un archivo dentro de la carpeta /etc/apache2/sites-enabled.

<VirtualHost *:80>
ServerName mysandbox.com
DocumentRoot “/var/www/mysandbox.com/web”
DirectoryIndex index.php
<Directory “var/www/mysandbox.com/web”>
AllowOverride All
Allow from All
</Directory>
</VirtualHost>

Reemplazar los mysandbox.com por el nombre de su directorio y nombre de dominio.

4 – Añadir el nombre dominio de proyecto en su tabla de hosts. En caso de tener el DNS apuntando a su server para el Vhost saltear este paso. En caso de GNU/Linux la tabla de hosts se encuentra en /etc/hosts, deberán añadir una linea como la siguiente.

127.0.0.1  mysandobx.com

Reemplazar mysandbox.com por el nombre de su dominio, el que debe ser igual a la definición de la directiva ServerName en la definición del Vhost.

5 – Reiniciar Apache

/etc/init.d/apache2 reload

6 – Setear los permisos de los archivos del vhost adecuadamente, para salir rápido del paso (SOLO EN DESARROLLO!)

chmod 777 /var/www/plughelp.com -R

NOTA: Para una asignación de permisos segura en un entorno de producción les recomiendo que vean http://articles.slicehost.com/2007/9/18/apache-virtual-hosts-permissions.

En este paso debería tener el sandbox casi listo, si entra en su navegador a la direccion del dominio debería ver la pagina por defecto del proyecto.

http://mysandbox.com

7 – Levantar la base en mysql

#mysql -u root -p #Luego ingresar la password

mysql>create database mysandbox_com;

8 – Configurar el acceso del sandbox a mysql. Para esto debe modificarse el archivo databases.yml y propel.ini

Database.yml : Recuerden que el YML lleva una identación especifica, en esta pagina puede ser altera la identación por ende no copien y peguen esto por que seguramente no les va a funcionar adecuadamente. Verfiquen y cambien los valores del YML que viene por defecto.

dev:
propel:
param:
classname: DebugPDO
test:
propel:
param:
classname: DebugPDO
all:
propel:
class: sfPropelDatabase
param:
classname: PropelPDO
dsn: ‘mysql://host=127.0.0.1;dbname=mysandbox_com’
username: root
password: tupass
encoding: utf8
persistent: true
pooling: true

Propel.ini

propel.targetPackage       = lib.model
propel.packageObjectModel  = true
propel.project             = mysandbox.com
propel.database            = mysql
propel.database.driver     = mysql
propel.database.url        = mysql://dbname=mysandbox_com;host=127.0.0.1
propel.database.creole.url = ${propel.database.url}
propel.database.user       = root
propel.database.password   = tupass

; mysql options
propel.mysql.tableType     = InnoDB

propel.addVendorInfo       = true
propel.addGenericAccessors = true
propel.addGenericMutators  = true
propel.addTimeStamp        = true
propel.addValidators       = false

propel.useDateTimeClass       = true
propel.defaultTimeStampFormat = d-m-Y H:i:s
propel.defaultTimeFormat      = H:i:s
propel.defaultDateFormat      = d-m-Y

propel.schema.validate        = false
propel.samePhpName            = false
propel.disableIdentifierQuoting     = false
propel.emulateForeignKeyConstraints = true

; directories
propel.home                    = .
propel.output.dir              = /var/www/production/sfweb/www/cache/symfony-for-release/1.2.10/sf_sandbox
propel.schema.dir              = ${propel.output.dir}/config
propel.conf.dir                = ${propel.output.dir}/config
propel.phpconf.dir             = ${propel.output.dir}/config
propel.sql.dir                 = ${propel.output.dir}/data/sql
propel.runtime.conf.file       = runtime-conf.xml
propel.php.dir                 = ${propel.output.dir}
propel.default.schema.basename = schema
propel.datadump.mapper.from    = *schema.xml
propel.datadump.mapper.to      = *data.xml

; builder settings
propel.builder.peer.class              = plugins.sfPropelPlugin.lib.builder.SfPeerBuilder
propel.builder.object.class            = plugins.sfPropelPlugin.lib.builder.SfObjectBuilder
propel.builder.objectstub.class        = plugins.sfPropelPlugin.lib.builder.SfExtensionObjectBuilder
propel.builder.peerstub.class          = plugins.sfPropelPlugin.lib.builder.SfExtensionPeerBuilder
propel.builder.objectmultiextend.class = plugins.sfPropelPlugin.lib.builder.SfMultiExtendObjectBuilder
propel.builder.mapbuilder.class        = plugins.sfPropelPlugin.lib.builder.SfMapBuilderBuilder

propel.builder.addIncludes  = false
propel.builder.addComments  = true
propel.builder.addBehaviors = true

9 – Con eso deberías tener listo tu sandbox para comenzar a programar. El metacomando de symfony puede usarse desde el root del proyecto con ./symfony

10 – Como Seguir, algunas de las cosas a saber. Puedes seguir esta guía desde el capítulo 4 del libro para continuar aprendiendo

http://www.symfony-project.org/book/1_2/04-The-Basics-of-Page-Creation

Otra alternativa es ver esta pequeña introducción

http://www.symfony-project.org/tutorial/1_2/en/my-first-project

Cosas que deberías dominar

– Definir el esquema

– Generar

– build-model

– build-forms

– build-filters

– build-sql

– build-schema

– data-load

– insert-sql

– Crear Aplicaciones

– Crear Modulos

– Limpiar la cache ./symfony cc

A symfonear

Les dejo este post en texto plano por si quieren ver los ejemplos tal cual como son sin problemas de identación Descarga

Share

Leave a Reply

Your email address will not be published. Required fields are marked *