|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Raspberry Pi

Tutorial de Raspberry Pi en español.
- Juan Antonio Villalpando -

Volver al índice del tutorial

____________________________

20.- Servidor Web Apache. PHP. MySQL (MariaDB). PhpMyAdmin.

- Vamos a realizar una nueva instalación de Apache, PHP, MySQL (MariaDB) y phpmyadmin.

_______________
1.- Apache.


sudo apt-get install apache2 -y

- El -y lo ponemos para que no pregunte durante la instalación y realice la instalación por defecto.

- Una vez instalado, vamos a un navegador web y escribimos la IP del Raspberry, ejemplo: http://192.168.1.11

- Deberá salir esta página web:

- Esa página está localizada en: /var/www/html/index.html

- El propietario es el root. Vamos a hacer propietario al usuario pi

sudo chown pi: /var/www/html/index.html

- Ya podemos editar esa página y cambiarle el contenido.

- Si necesitaramos reiniciar Apache:

sudo service apache2 restart
_______________
2.- PHP.

- Ahora vamos a instalar PHP.

- Copia y pega en el Terminal todo esto:

sudo apt-get install php7.1 php7.1-cli php7.1-common libapache2-mod-php7.1 php7.1-mysql php7.1-fpm php7.1-curl php7.1-gd php7.1-bz2 php7.1-mcrypt php7.1-json php7.1-tidy php7.1-mbstring php-redis php-memcached -y

- Y vamos a crear esta página:

sudo nano /var/www/html/index.php

con este contenido:

/var/www/html/index.php
<?php phpinfo(); ?>

- Para guardar Ctrl-O.
- Pulsa Enter para Confirmar.
- Para Salir Ctrl-X

- Escribimos en un navegador web: 192.168.1.11/index.php

- Aparecerá esta página con información sobre PHP.

- Podemos cambiarle el propietario al archivo index.pxp y abrirlo con un Editor de texto gráfico.

sudo chown pi: /var/www/html/index.php

_______________
3.- MySQL (MariaDB).

- Actualmente por problemas de propiedad de MySQL con Oracle, se está instalando otra base de datos compatible llamada MariaDB.

- MariaDB funcionará como MySQLi. Su puerto es el 3306.

sudo apt-get install mariadb-server mariadb-client -y

- Una vez instalada vamos a configurarla:

sudo mysql_secure_installation

- Cuando pide contraseña de root, le he puesto raspberry

- Para hacer pruebas lo he configurado de esta forma, ya que no voy a establecer seguridad.

- Más adelante veremos cómo hacer una copia de seguridad de MariaDB

_______________
4.- phpmyadmin.

- Para configurar la base de datos utilizaremos phpmyadmin.

sudo apt-get install phpmyadmin -y

- Con la barra espaciadora, marcamos en apache2 (observa el asterisco *).

- Con la tecla de Tabulador, nos posicionamos en <Aceptar>

- Pide contraseña, escribimos: raspberry

- Confirmamos la contraseña: raspberry

- Vamos a ver si funciona:

- En un navegador escribimos nuestra IP y phpmyadmin

- 192.168.1.11/phpmyadmin

- Nos autentificamos y nos da un ERROR de AUTENTIFICACIÓN, en algo nos debemos de haber equivocado, vamos a arreglarlo con estas instrucciones:

sudo mysql -p -u root
Enter password: raspberry

MariaDB [(none)]> CREATE USER 'pi'@'%' IDENTIFIED BY 'raspberry';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'pi'@'%' WITH GRANT OPTION;

MariaDB [(none)]> exit

- Ahora podemos entrar con el usuario: pi y la contraseña: raspberry

_______________
5.- Creación de una base de datos y una tabla.

- Vamos a crear una base de datos llamada: tutorial

- Ahora dentro de la base de datos tutorial, vamos a crear una tabla llamada: comercio

___________________
- Importar la tabla.

- Para crear la tabla anterior, podemos utilizar el siguiente archivo e Importarlo:

- comercio.sql

comercio.sql

-- Juan A. Villalpando
-- kio4.com

CREATE TABLE `comercio` (
  `id` int(6) NOT NULL,
  `nombre` varchar(14) COLLATE utf8_spanish2_ci NOT NULL,
  `producto` varchar(12) COLLATE utf8_spanish2_ci NOT NULL,
  `precio` varchar(6) COLLATE utf8_spanish2_ci NOT NULL,
  `fecha` varchar(10) COLLATE utf8_spanish2_ci NOT NULL,
  `pagado` varchar(5) COLLATE utf8_spanish2_ci NOT NULL,
  `profesional` varchar(5) COLLATE utf8_spanish2_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci;

ALTER TABLE `comercio`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `comercio`
  MODIFY `id` int(6) NOT NULL AUTO_INCREMENT;
COMMIT;		    

___________________
- Subir esta página web PHP.

- Vamos a crear una página PHP para insertar, borrar, ver datos de la tabla comercio.

- Primero creamos este archivo de autentificación de la base de datos, pondremos el nombre de la base de datos, en este caso: tutorial

- El nombre y clave del usuario, en este caso pi y raspberry.

sudo nano /var/www/html/bd_autentifica.php

/var/www/html/bd_autentifica.php

<?php
// 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db_host="localhost";
$db_name="tutorial"; 
$db_login="pi";
$db_pswd="raspberry";
?>		    

- Para guardar Ctrl-O.
- Pulsa Enter para Confirmar.
- Para Salir Ctrl-X

- Ahora creamos el archivo de entrada de datos mediante PHP.

sudo nano /var/www/html/comercio_insertar_web.php

/var/www/html/comercio_insertar_web.php

<html>
<head><meta charset="UTF-8"></head>
<body>
<font face="Arial">
<form name="test" method="post" action="comercio_insertar_web.php">
    <b><font face="Arial, Helvetica, sans-serif">- Crear un usuario.</font></b><font face="Arial, Helvetica, sans-serif"><br>
Nombre:  
<INPUT TYPE="text" NAME="nombre" value=""><br><br>
Producto:  
<INPUT TYPE="text" NAME="producto" value=""><br><br>
Precio:  
<INPUT TYPE="text" NAME="precio" value=""><br><br>
Fecha:  
<INPUT TYPE="text" NAME="fecha" value=""><br><br>
Pagado:  
<INPUT TYPE="checkbox" NAME="pagado" value="true"><br><br>
Profesional:  
<INPUT TYPE="checkbox" NAME="profesional" value="true"><br><br>
<INPUT TYPE="submit" name="btnInsertar" value=" Pulsa insertar los datos">
 <br>
 <b><font color="#009900">_________________________________________________________________</font></b>

  <br>
  <b>- Ver el nombre de los usuarios creados.</b><br>
    <INPUT TYPE="submit" name="btnConsultarUsuarios" value="Pulsa para ver un listado de los nombres de los usuarios creados">
    <br>
    <b><font color="#009900">_________________________________________________________________</font></b>

    <br>
    <b>- Borrar un usuario.</b><br>
Escribe el nombre de un usuario para borrarlo. 
<INPUT TYPE="text" NAME="nombre_borrar" value="">
<INPUT TYPE="submit" name="btnBorrar" value=" Pulsa para borrar a ese usuario">

 <br>
 <b><font color="#009900">_________________________________________________________________</font></b>

   <br>
   <b>- Consultar la información de un usuario. (Si no escribes nada, se mostrará las respuesta de todos los usuarios.)</b><br>
Escribe el nombre de un usuario para ver sus respuestas. 
<INPUT TYPE="text" NAME="nombre_consultar" value="">
<INPUT TYPE="submit" name="btnConsultarTodo" value=" Pulsa para ver las respuestas de ese usuario o de todos">

    </font><br>
    <b><font color="#009900" face="Arial">_________________________________________________________________</font></b>
 
   <br>
  <b><font color="#009900" face="Arial"><br>
 _________________________________________________________________</font></b>
</form>
</body>
</html>

<?php
// Juan Antonio Villalpando
// juana1991@yahoo.com 
// http://kio4.com


// 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
require_once('bd_autentifica.php');

// 2.- CONEXION A LA BASE DE DATOS
// mysql_select_db($db_name) or die(mysql_error());
$link = new mysqli($db_host, $db_login, $db_pswd, $db_name);
// Check connection
if ($link->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}

// 3.- INSERTAR USUARIO
////////////////////////////// INSERTAR ////////////////////////////////////
if(isset($_POST['btnInsertar'])){
	$nombre = $_POST['nombre'];
	$producto = $_POST['producto'];
    $precio = $_POST['precio'];
	$fecha = $_POST['fecha'];
	$pagado = $_POST['pagado'];
	$profesional = $_POST['profesional'];

$res=mysqli_query($link, "SELECT nombre FROM `comercio` WHERE `nombre`='$nombre' ");
$row=mysqli_fetch_array($res);
$count = mysqli_num_rows($res);
if( $count == 0 ) { // Si ha contado 0 nombre, es que el usuario no esta registrado. Lo registra y pone los datos.
$query="insert into comercio (nombre, producto, precio, fecha, pagado, profesional) values ('$nombre','$producto','$precio','$fecha','$pagado','$profesional')";
			$result = mysqli_query($link, $query);
			echo 'Registrado y guardado';
	}else{
	echo ' Ya estaba registrado. Guardado';
	// Actualiza
	$query="update comercio set producto='$producto', precio='$precio', fecha='$fecha', pagado='$pagado', profesional='$profesional' WHERE nombre='$nombre' ";
			
	$result = mysqli_query($link, $query);
		}
	
mysqli_close($link);
}
////////////////////////////////////////////////////////////////////////
// 4.- LISTADO DE TODOS LOS USUARIOS ///////////////////////////////////
if(isset($_POST['btnConsultarUsuarios'])){
$resultado= mysqli_query( $link,"SELECT DISTINCT nombre FROM comercio" ) 
or die("SELECT Error: ".mysql_error()); 

print "<table  border='3' cellpadding='4' cellspacing='0' bordercolor='#009900'"; 
while ($row = mysqli_fetch_array($resultado)){ 
$columna= $row['nombre'];
print "<tr>\n"; 
print "\t<td>\n"; 
echo "<font face=arial size=4/>$columna</font>";
print "</td>\n";
print "</tr>\n"; 
} 
print "</table>\n"; 
	
mysqli_close($link);
}
////////////////////////////////////////////////////////////////////////
// 5.- BORRAR USUARIOS ///////////////////////////////////
///////////////////////////////    BORRAR  ////////////////////////////////////
if(isset($_POST['btnBorrar'])){
    $nombre=$_POST['nombre_borrar'];
	echo($nombre);
    $query="delete from comercio where nombre='$nombre'";
$result = mysqli_query($link, $query);
print("Datos borrados.");
mysqli_close($link);
}
///////////////////////////////////////////////////////////////////
//////////////////////////////    CONSULTAR P?GINA WEB. /////////////////////////////////////
if(isset($_POST['btnConsultarTodo'])){

//  RECOGIDA DE DATOS DEL FORMULARIO
$nombre=$_POST['nombre_consultar'];

//  SELECCI?N
if ($nombre==''){
    $hacer = mysqli_query ($link, "SELECT * FROM comercio");
}
else {
    $hacer = mysqli_query ($link, "SELECT * FROM comercio WHERE nombre='$nombre' ");
};

///////////////////////////////////////////////////////////////////////////////
// En los casos que hay SELECT y se debe enviar una respuesta act?a este c?digo

    $resultado = mysqli_query($link, "SHOW COLUMNS FROM comercio");
    $numerodefilas = mysqli_num_rows($resultado);
    if ($numerodefilas > 0) {
      echo ("<table  border='3' cellpadding='4' cellspacing='0' bordercolor='#009900'");
	  echo ("<center>");
	  
	  echo("
<tr>
    <td>id</td>
    <td>nombre</td>
    <td>producto</td>
    <td>precio</td>
	<td>fecha</td>
    <td>pagado</td>
    <td>profesional</td>

  </tr>
	  ");
	  
    while ($rowr = mysqli_fetch_row($hacer)) {
	 echo("<tr>");
     for ($j=0;$j<$numerodefilas;$j++) {
	 echo("<td><center>".$rowr[$j]."</center></td>");
     }
	 echo("</tr>");
    }
     
    }
     
mysqli_close($link);
}

?>

___________________
- Ver la página web PHP.

- Escribimos en un navegador

192.168.1.11/comercio_insertar_web.php

y obtendremos ésta página desde donde podremos insertar, borrar y ver datos de nuestra base de datos.

___________________
- Copia de seguridad de la base de datos completa.

- Vamos a realizar una copia de seguridad de la tabla comercio que se encuentra en la base de datos tutorial.

sudo mysqldump -u pi -p --single-transaction --quick --lock-tables=false tutorial comercio > tutorial-comercio-$(date +%F).sql

- Este archivo se guardará en el mismo directorio desde el que se ha ejecutado la orden.

- Para recuperar la base completa, tutorial deberá estar creada previamente:

mysql -u pi -p tutorial < tutorial-comercio-2019-07-15.sql

- En caso que solo queramos recuperar una tabla:

mysql -u pi -p tutorial < comercio.sql

- Copias temporizadas.

- Mediante cron, podemos hacer copias automáticamente cada cierto tiempo:

/home/pi/.login.conf

[client]
user = pi
password = raspberry	    

* * * * * /usr/bin/mysqldump --defaults-extra-file = /home/pi/.login.conf -u pi --single-transaction --quick --lock-tables = false tutorial comercio > tutorial-comercio-$(date + \% F).sql

https://crontab.guru/#*_*_*_*_*

___________________
- Rapberry en Internet. NAT. Seguimiento de puerto. Port Forwarding.

- Hasta ahora hemos configurado todo el proceso para que funcione en red local, ahora vamos a consegir que también podamos entrar en nuestra Raspberry desde Internet, para ello debemos entrar en la configuración de nuestro Router.

1.- En un navegados escribimos la Puerta de enlace (gateway) de nuestro Router, por ejemplo: http://192.168.1.1

2.- Escribir nombre y contraseña para entrar en nuestro Router.

3.- Buscar en la configuración "Seguimiento de puerto"

4.- Escribir la IP de Raspberry y el Puerto 80, por ejemplo:

192.168.1.11 ................................... 80

5.- Buscar nuestra IP Pública entrando en: https://www.vermiip.es/

6.- ¿Qué pasa si mi proveedor de Internet me cambia mi IP Pública?

- Utilizamos un DDNS - DynDNS, por ejemplo no-ip.com

https://www.maketecheasier. com/best-dynamic-dns- providers/

https://www.duckdns.org/ install.jsp

http://www.dnsexit.com/domains/free-second-level-domains/

___________________________________________________________

https://www.rephp.com/phpmyadmin-mbstring-error.html

https://es.stackoverflow.com/questions/161109/error-1698-phpmyadmin-access-denied-for-user-rootlocalhost

___________________________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información