instalar silex apache php mysql
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"