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, este ejemplo 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. ServerName mysandbox.com DocumentRoot "/var/www/mysandbox.com/web" DirectoryIndex index.php AllowOverride All Allow from All 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: 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. 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 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 root@leviatan:/var/www/plughelp.com# e 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 - 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