instalar silex apache php mysql

Upload: michael-mars

Post on 05-Jul-2018

247 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/16/2019 Instalar SILEX Apache Php Mysql

    1/7

    ## Instalamos el framework Silex para PHP...entramos en la carpeta de nuestra webcd ~/www/pruebascurl -s http://getcomposer.org/installer | phpphp composer.phar install

    ## Luego actualizamos pasando al directorio donde esta localizado el archivo composer.pharcd ~/www/pruebasphp composer.phar installphp composer.phar create-project fabpot/silex-skeleton silex-user --stability=dev

    ## Ponemos o modificamos despues de instalar el Silex, para que nuestra web seamas accesible## tanto desde "mysite.com" o "mysite.com/index.php" como desde "mysite.com/index_dev.php"sudo gedit /etc/apache2/sites-enabled/mysite.com.conf

    ## Quedando nuestro archivo asi...

    ServerAdmin your_email@domain_name.comDocumentRoot /home/mike/www/pruebas/silex-user/web/ServerName mysite.com

    Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all

    ## Ya podemos empezar probando en nuestro navegador## http://mysite.com o mysite.com## Tambien esto: mysite.com/index.php o mysite.com/index_dev.php## Una es la pagina de produccion o final y otra es la de desarrollo o depuracion (local o 127.0.0.1)

    ## Para limpiar la cache cuando estamos recargando la pagina...cd www/pruebas/silex-user/rm -rf var/cache/*rm -rf var/logs/*

    ## Dejo algunos ejemplos de enrutamiento contenidos en el archivo "../silex-user/src/controllers.php" ...

  • 8/16/2019 Instalar SILEX Apache Php Mysql

    2/7

    })->bind('homepage');

    $app->get('/demo', function () use ($app,$curso) {return $app['twig']->render('index.html.twig', array(

    'curso' => $curso));

    })->bind('demopage');

    $app->get('/variables/{usuario}/{correo}', function ($usuario,$correo) use ($app) {

    return $app['twig']->render('variables.html.twig', array('usuario' => $usuario.' => '.$correo

    ));})->bind('variables');

    $app->get('/login', function () use ($app) {return $app['twig']->render('login.html.twig', array(

    ));})->bind('loginpage');

    $app->post('/acceso', function (Request $request) use ($app) {

    $usermail = $request->get('usr_email');$password = $request->get('usr_pass');

    return $app['twig']->render('acceso.html.twig', array('mail' => $usermail,'pass' => $password

    ));})->bind('accesopage');

    $app->get('/accesoGet/{usermail}/{password}', function ($usermail,$password) use ($app) {

    return $app['twig']->render('acceso.html.twig', array('mail' => $usermail,'pass' => $password));

    })

    ->bind('accesoGetpage');

    $app->error(function (\Exception $e, Request $request, $code) use ($app) {if ($app['debug']) {

    return;}

    // 404.html, or 40x.html, or 4xx.html, or error.html$templates = array(

  • 8/16/2019 Instalar SILEX Apache Php Mysql

    3/7

    'errors/'.$code.'.html.twig','errors/'.substr($code, 0, 2).'x.html.twig','errors/'.substr($code, 0, 1).'xx.html.twig','errors/default.html.twig',

    );

    return new Response($app['twig']->resolveTemplate($templates)->render(array('code' => $code)), $code);});

    ## Silex ± Proveedores de servicios## Básicamente los proveedores de servicios los debemos visualizar como utilerías oherramientas que nos permiten realizar o implementar cierta## funcionalidad a nuestros proyectos de desarrollo web utilizándolas de diversasmaneras en una o varias aplicaciones. Algunos de estos## trabajan en conjunto lo que hace que podamos desarrollar funcionalidades robustas en tiempos cortos.

    ## DoctrineServiceProvider **Este servicio permite la integración de la librería DBAL de Doctrine facilitando las conexiones e interacción con bases de datos.

    ## SessionServiceProvider **Con el servicio de sesiones podemos generar y almacenar datos persistentes entre

    peticiones.## SwiftmailerServiceProvider **Servicio utilizado para el envío de correo electrónico mediante la biblioteca SwiftMailer.

    ##TwigServiceProviderSin duda alguna uno de los servicios mas utilizados dentro de silex, éste integrael potente motor de plantillas Twig

    ##TranslationServiceProviderEste servicio puede ser integrado en conjunto con otros servicios como Twig, tepermite realizar la traducción de nuestras aplicaciones a diversos idiomas.

    ## Suelen venir con Silex y su instalacion del "fabpot/silex-skeleton"...y se instalan en la carpeta "vendor" del proyecto Silex## Instalacion de Doctrine en Silex## En el archivo composer.json debemos incluir Doctrine ORM. Agregaremos librerías como Yaml y DBAL de la siguiente forma:"require": { "doctrine/orm": "2.5.*@dev", "dflydev/doctrine-orm-service-provider": "2.0.*@dev", "symfony/doctrine-bridge": "3.0.*@dev", "symfony/yaml": "3.0.*@dev", "doctrine/dbal": "2.5.*@dev"}

    ## Ejecutamos la actualizacion, para que Silex descargue los archivos que le hemos indicado anteriormentecd www/pruebas/silex-user ## Si no estamos ya en la ruta...vale?php composer.phar update

    ## En el archivo "app.php" que esta en "silex-user/src/" añadimos...use Silex\Provider\DoctrineServiceProvider;use Dflydev\Provider\DoctrineOrm\DoctrineOrmServiceProvider;

  • 8/16/2019 Instalar SILEX Apache Php Mysql

    4/7

    ## en el mismo archivo un poco mas abajo ponemos lo siguiente:// Registro de doctrine$app->register(new DoctrineServiceProvider(), array( 'db.options' => array( 'driver' => 'pdo_mysql', 'dbname' => 'nombre_base_datos', 'host' => 'localhost', 'user' => 'usuario', 'password' => 'password', 'charset' => 'utf8', // Conexión en servidores locales por ejemplo MAMP (Mac o Apple) //'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock' )));

    ## Lista de carpetas de como quedaria nuestro proyecto...Config /dev.php Activar el log para monitorear la actividad de nuestra aplicación y utilizar la barra para debug de symfony.

    /prod.phpConfigurar nuestra aplicación para el entorno de producción, por default cuenta conel registro del cache para twig.

    src /app.php Registro

    de proveedores de servicios /controllers.php Registro de componentes, configuración de detección de errores, definición y montaje de controladores.

    /Controller/ Dentro de esta carpeta se pueden ubicar todos los controladores debidamente ordenados por sección.

    /doctrine/ Mapeo de bases de datos por medio de un archivo YAML para doctrine.

    /Entity/Definición de entidades y clases de la base de datos, seters y geters, crear repositorios especiales.

    /Lib/Dentro de esta carpeta se pueden ubicar funciones de uso compartido.

    /Model/Definición de modelos de bases de datos a la medida.

    templates /*.html.twig Ubicación de todas las vistas de nuestra aplicación.

    var /cache/ Se guarda el caché del profiler.

    /log/Se guarda el log de comportamiento de nuestra app.

    vendor /dependencias Ubicación de todas las dependencias que se instalan por default y las que agregamos por medio de composer.

    web /assets/ Carpetapara incluir librerías javascript, CSS, imágenes, etc., Y archivos index para acceso en modo debug o

    producción.## En nuestro archivo "console.php" situado en "www/pruebas/silex-user/src/" añadimos lo siguiente casi al final:$console->setHelperSet(new Symfony\Component\Console\Helper\HelperSet(array(

    'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($app["d

  • 8/16/2019 Instalar SILEX Apache Php Mysql

    5/7

    b"]),'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($app[

    "orm.em"])))); $console->addCommands(array(

    new \Doctrine\ORM\Tools\Console\Command\ClearCache\MetadataCommand,new \Doctrine\ORM\Tools\Console\Command\ClearCache\QueryCommand,new \Doctrine\ORM\Tools\Console\Command\ClearCache\ResultCommand,new \Doctrine\ORM\Tools\Console\Command\SchemaTool\CreateCommand,new \Doctrine\ORM\Tools\Console\Command\SchemaTool\DropCommand,new \Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand,new \Doctrine\ORM\Tools\Console\Command\ConvertDoctrine1SchemaCommand,new \Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand,new \Doctrine\ORM\Tools\Console\Command\EnsureProductionSettingsCommand,new \Doctrine\ORM\Tools\Console\Command\GenerateEntitiesCommand,new \Doctrine\ORM\Tools\Console\Command\GenerateProxiesCommand,new \Doctrine\ORM\Tools\Console\Command\GenerateRepositoriesCommand,new \Doctrine\ORM\Tools\Console\Command\InfoCommand,new \Doctrine\ORM\Tools\Console\Command\RunDqlCommand,new \Doctrine\ORM\Tools\Console\Command\ValidateSchemaCommand,new \Doctrine\DBAL\Tools\Console\Command\ImportCommand,new \Doctrine\DBAL\Tools\Console\Command\ReservedWordsCommand,new \Doctrine\DBAL\Tools\Console\Command\RunSqlCommand

    ));## En la linea 160 de este archivo indicaba que lineas añadir a "../src/app.php"...pues añadimos y modificamos los datos de la base de datos## Yo pongo una de muestra...CREATE TABLE ̀ seg_paises` ( `id_pais` int(11) NOT NULL AUTO_INCREMENT, `pais_clave` varchar(2) COLLATE utf8_unicode_ci NOT NULL, `clave_pais` varchar(2) COLLATE utf8_unicode_ci NOT NULL, `pais_nombre` varchar(64) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id_pais`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

    ## Que creo y llamo como "crm_paises", luego entro en MySqlmysql -hlocalhost -u{user} -p{password} ## En mi caso root y su contraseña

    ## en la consola de mysql uso lo siguientes comandos para crear un usuario paraesa base de datos.mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || ajax_2015 || crm_paises || demo_tz |

    | mysql || performance_schema || phpmyadmin || qmp || tienda |+--------------------+9 rows in set (0.00 sec)

    mysql> use crm_paises;Reading table information for completion of table and column names

  • 8/16/2019 Instalar SILEX Apache Php Mysql

    6/7

    You can turn off this feature to get a quicker startup with -A

    Database changed

    mysql> show tables;+----------------------+| Tables_in_crm_paises |+----------------------+| seg_paises |+----------------------+1 row in set (0.00 sec)

    mysql> grant all privileges on crm_paises.* to 'usercrm'@'localhost' identifiedby 'usercrm';

    mysql> exitBye

    ## Ahora entramos con el nuevo usuario a ver si funciona...mysql -hlocalhost -uusercrm -pusercrmmysql> show databases;+--------------------+| Database |+--------------------+

    | information_schema || crm_paises |+--------------------+2 rows in set (0.00 sec)

    mysql> use crm_paises;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -A

    Database changed

    mysql> show tables;+----------------------+

    | Tables_in_crm_paises |+----------------------+| seg_paises |+----------------------+1 row in set (0.00 sec)

    mysql> select * from seg_paises;Empty set (0.00 sec)

    mysql> exitBye

    ## Bueno pues modificamos el archivo "../src/app.php" y añadimos ademas...

    // Registro de doctrine$app->register(new DoctrineServiceProvider(), array( 'db.options' => array( 'driver' => 'pdo_mysql', 'dbname' => 'crm_paises', 'host' => 'localhost', 'user' => 'usercrm', 'password' => 'usercrm', 'charset' => 'utf8', // Conexión en servidores locales por ejemplo MAMP

  • 8/16/2019 Instalar SILEX Apache Php Mysql

    7/7

    //'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock' )));// Doctrine ORMapp->register(new DoctrineOrmServiceProvider(), array(

    'orm.em.options' => array('mappings' => array(

    array('type' => 'yml','namespace' => 'Entity','path' => realpath(__DIR__ . "/../src/d

    octrine"))

    ))

    ));

    ## Salvamos y ejecutamos en la consolaphp bin/console orm:convert-mapping --filter="SegPaises" --from-database yml src/doctrine --force ## // Comando para mapeo## php bin/console orm:convert-mapping## // Filtro para indicar el nombre de la tabla que deseamos mapear

    ## --filter="NombreTabla"## // Indicar que lo haga desde la base de datos## --from-database## // Tipo de archivo en el que queremos guardarlo## yml## // Ubicación del archivo## src/doctrine## // Forzar la creación del archivo## --force## Y veremos que nos devuelve por consola lo siguienteExporting "yml" mapping information to "/Users/macbookprocazares/Dropbox/silex-seg/src/doctrine"