La base de datos que he usado durante el desarrollo del proyecto está muy bien para aplicaciones simples, pero si queremos implementar un servidor web completo, que puede necesitar manejar multiples solicitudes a la vez, es mejor utilizar una base de datos más robusta. Por esa razón voy a explicar como configurar una base de datos de tipo MySql en concreto MariaDB.
MariaDb es una base de datos opensource basada en MySql y que es compatible con la misma.
Lo primero que haré será instalarlo. Para ello abrimos un terminal y comenzamos actualizando los repositorios:
$ sudo apt-get update
$ sudo apt-get full-upgrade
Una vez actualizado el software de la Raspberry, procedemos a instalar MariaDB:
$ sudo apt-get install mariadb-server
Con esto ya tenemos instalado MariaDB. Ahora vamos a tratar de configurarlo. Para ello escribimos el siguiente comando:
$ sudo mysql_secure_installation
Este comando aunque se llame mysql se puede usar con MariaDB. Lo primero que nos pide es que escribamos nuestra contraseña actual, pero como acabamos de instalarla no tenemos ninguna por lo que simplemente le damos un Enter.
Luego nos pregunta si queremos establecer una contraseña para el usuario root. Yo no voy a ponerla con lo cual presiono "n". (pero tu puedes ponerla sin problemas)
A continuación nos pregunta si queremos eliminar los usuarios anónimos, lo que si vamos a hacer. Presionamos "y"
También nos pregunta si queremos desactivar el acceso remoto, a lo que contestamos que si ya que en nuestro proyecto todas las consultas a la base de datos se realizarán de forma local.
Nos preguntará si queremos eliminar la base de datos de prueba a lo que también contestamos que si. "y"
Y para finalizar nos dirá si queremos recargar los privilegios de la tabla ahora. Contestamos que si "y"
Y ya la tenemos configurada. Otra forma es dejar las opciones por defecto pulsando simplemente Enter a cada pregunta lo que viene a ser los mismo.
Para ver que versión tenemos instalada podemos teclear:
$ mysql --version
Bien ahora que ya lo tenemos preparado vamos a ejecutar MariaDB,
$ sudo mysql
Este comando nos conecta con MariaDB y nos mostrará su prompt donde podemos crear base de datos, usuarios etc.
Pero lo primero que tenemos que hacer es crear un usuario nuevo adicional con privilegios que es el que usaremos en nuestro proyecto. Ejecutaremos el siguiente comando:
MariaDB [(none)]> GRANT ALL ON *.* TO 'usuario'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
En donde 'usuario' es el nombre del nuevo usuario que utilizaremos en nuestra base de datos.
En donde 'localhost' es la dirección de red de la base de datos, en nuestro caso al trabajar en local usaremos localhost.
En donde 'password' es la contraseña del usuario para la base de datos.
Voy a comprobar si todo ha quedado bien. Para ello reiniciamos la tabla para que pueda reconocer mi nuevo usuario.
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
$ sudo systemctl status mariadb
Vemos que el servicio mariadb esta activo y ejecutándose y si queremos saber más sobre el shell de MariaDB podemos usar:
$ sudo mysqladmin version
ffgfg
Vamos a testear nuestro nuevo usuario. Para ello nos volveremos a conectar con el nuevo usuario que hemos creado.
$
mysql -u usuario -p
Y desde aquí ya podemos crear la base de datos que vamos a utilizar en el proyecto.
MariaDB [(none)]> create database mibase;
MariaDB [(none)]> CREATE DATABASE mibase CHARACTER SET utf8 COLLATE utf8_bin;
MariaDB [(none)]> DROP DATABASE nombre_de_la_base_a_borrar;
MariaDB [(none)]> show databases;
En el post anterior de como desplegar una aplicación en raspberry pi hemos utilizado la aplicación del post 19 así que vamos utilizar ese ejemplo, para pasar de una base de datos sqlite que utiliza a MariaDB.
IMPORTANTE: para que todo funcione correctamente tenemos que instalar un driver que haga de enlace o controle la base de datos MariaDB desde python. Esto es muy sencillo solo tenemos que instalar el paquete pymysql dentro de nuestro entorno virtual.
Entramos en el entorno virtual de la aplicación de ejemplo:
pi@raspberry:~/miproyecto $ source ./miEntorno/bin/activate
(miEntorno) pi@raspberry:~/miproyecto $ pip install pymysql
(miEntorno) $ pip install flask-migrate
(miEntorno) $ export FLASK_APP=inicio.py
(miEntorno) $ flask db init
creating directory /14/migrations ... done
Creating directory /14/migrations/versions ... done
Generating /14/migrations/alembic.ini ... done
Generating /14/migrations/README ... done
Generating /14/migrations/env.py ... done
Generating /14/migrations/script.py.mako ... done
Please edit configuration/connection/logging settings in '/14/migrations/alembic.ini' before proceeding.
# Cadena de conexion SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://usuario:password@localhost/mibase'
(miEntorno) pi@raspberry:~/miproyecto $ flask db migrate -m "migracion mariaDB"
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added table 'usuario'
Generating
/home/pi/miproyecto/migrations/versions/2fa6cb75c75d_migracion_mariadb.py ... done
(miEntorno) pi@raspberrry:~/miproyecto $ flask db upgrade
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 2fa6cb75c75d, migracion mariaDB
Instalar phpMyadmin para gestionar nuestra base de datos MariaDB.
Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y está disponible en 72 idiomas
- $ sudo apt-get install phpmyadmin
Durante la instalación nos preguntará que servidor queremos utilizar para sevir las páginas si apache o ligthtpd. Si quieres usar nginx también se puede. Puedes conseguir información en esta web.
Si todo ha ido correcto al ir al navegador y teclear:
https://nombredelservidor_or_IP/phpmyadmin
Deberías ver la pantalla de bienvenida y a partir de ahí con el usuario que hemos definido previamente poder entrar en la aplicación.
Puedes encontrar más información sobre instalar phpMyAdmin es el blog "usuariodebian.blogspot.com"
Código del Capitulo en GitHub. Ten en cuenta que la base de datos mibase no está incluida tienes que crearla tu y cambiar el conector por el nombre de tu usuario y contraseña ya que se partio en el ejemplo de una base sqlite3.
Próximo Capítulo. Desplegar una aplicación de Flask en Heroku.
No hay comentarios:
Publicar un comentario