Instalar Servidor LAMP
El acrónimo LAMP está compuesto por las iniciales de sus cuatro componentes: Linux, Apache, MySQL y PHP. Estos forman la infraestructura en el servidor, que hace posible la creación y el alojamiento de páginas web dinámicas. Los componentes individuales se acumulan unos sobre otros, por lo que esta plataforma también recibe el nombre de LAMP stack (del inglés “apilar”).
Su funcionamiento es muy simple. Linux sirve como sistema operativo base para ejecutar el servidor web Apache. Este último no puede interpretar contenidos dinámicos, pero es aquí donde PHP entra a ejercer sus funciones de programación del lado del servidor. El proceso funciona entonces de la siguiente manera: Apache le envía un código fuente al intérprete PHP, incluyendo la información correspondiente sobre las acciones del visitante de la web, y permite el acceso a la base de datos MySQL. El resultado es devuelto a Apache y este se muestra finalmente en el navegador web del visitante.
El lenguaje de programación PHP es uno de los más extendidos para el desarrollo de páginas web. La ventaja de utilizar PHP para el desarrollo de páginas web es que nos permite crear páginas web dinámicas, es decir, que se generan cuando un usuario visita la página.
MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual: Licencia pública general/Licencia comercial por Oracle Corporation y está considerada como la base datos de código abierto más popular del mundo, y una de las más populares en general junto a Oracle y Microsoft SQL Server, sobre todo para entornos de desarrollo web.
La alternativa libre es mariaDB: https://mariadb.org/
Este proyecto monta un pequeño servidor web Apache con lo que podrías por ejemplo alojar tu propia página web entre otras cosas. Además, si despliegas alrededor de tu casa, por ejemplo, varios sensores y actuadores (temperatura, humedad, luces, etc…) comandados por Arduino, podrías utilizar la Raspberry Pi 3como centro de envío y recepción de datos a través de su red. Y por supuesto utilizar la página Web para mostrar y controlar los datos a través de Internet.
Instrucciones para su instalación:
#Update system
- sudo apt-get update
- sudo apt-get upgrade
#Install Apache2
- sudo apt-get install apache2
Comprobar que accedemos entrando a la IP de la Raspberry Pi desde un navegador
La página web por defecto está en /var/www/html
Crear un fichero prueba.html en el directorio /var/www/html que contenga el texto: “HOLA MUNDO”
Para comprobar que funciona entrar desde un navegador a la dirección: http://ip_raspberry/prueba.html y ver que aparece el texto “HOLA MUNDO”
También podemos comprobar que funciona conectando un Arduino a la red de la Raspberry Pi y cargar este sketch: https://github.com/jecrespo/Curso-IoT-Open-Source/blob/master/Conecta_Raspberry/Conecta_Raspberry.ino
Curso configuración Apache: https://plataforma.josedomingo.org/pledin/cursos/apache24/
#Install PHP
- sudo apt-get install php libapache2-mod-php
La versión que se instala es la 7.
Para comprobar el funcionamiento crear un fichero llamado info.php y en su interior el código: <?php phpinfo(); ?>
Luego en un navegador ir a http://IP-raspberry/info.php
#Install MariaDB
- sudo apt-get install mariadb-server mariadb-client php-mysql
- sudo mysql_secure_installation
- sudo service apache2 restart
#Install MySQL (ya no está en los repositorios oficiales)
En caso de querer instalar MySQL usar estos comandos:
- wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
- sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
- sudo apt update
- sudo apt install mysql-server
- sudo systemctl restart mysql.service
- sudo mysql_secure_installation
Más información:
- https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/
- Repositorio: https://dev.mysql.com/downloads/repo/apt/
- https://tecadmin.net/install-mysql-on-debian-10-buster/
Durante el proceso de instalación se pedirá el password de root de MySQL, poner el mismo que tiene el usuario pi de la Raspberry Pi y poner a Yes todas las opciones de mysql_secure_installation
Para comprobar que todo funciona ejecutar sudo mysql -u root -p y poner la contraseña, saldrá:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 61
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Para conectarnos remotamente a MySQL podemos usar:
#Install PhpMyAdmin
- sudo apt-get install phpmyadmin
Durante el proceso pide la contraseña del usuario phpmyadmin de MySQL y el servidor a instalar el apache y poner yes en dbconfig-common
En caso que no hayamos configurado el servidor web correctamente o queramos hacer una configuración de phpmyadmin después de la instalación, usar el comando: sudo dpkg-reconfigure -plow phpmyadmin
phpMyAdmin es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet. 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. Se encuentra disponible bajo la licencia GPL Versión 2.
Para probar que funciona ver en un navegador: http://IP-raspberry/phpmyadmin con el usuario phpmyadmin y la contraseña usada.
El usuario phpmyadmin no tiene privilegios. Para crear un usuario “pi” con privilegios ejecutar:
- sudo mysql -u root -p
- CREATE USER ‘pi’@’localhost’ IDENTIFIED BY ‘tu_contrasena‘;
- CREATE USER ‘pi’@’%’ IDENTIFIED BY ‘tu_contrasena‘;
- GRANT ALL PRIVILEGES ON * . * TO ‘pi’@’localhost’; (Para acceso local)
- GRANT ALL PRIVILEGES ON *.* TO ‘pi’@’%’; (Para acceso remoto)
- GRANT GRANT OPTION ON *.* TO ‘pi’@’localhost’; (Privilegios para dar permisos a otros usuarios)
- FLUSH PRIVILEGES;
Para conectarnos desde otro servidor: mysql -h ip_raspberry -u root -p
#Install servidor ftp (VSFTPD)
- sudo apt-get install vsftpd
Una vez instalado, configurar con: sudo nano /etc/vsftpd.conf
Comentar estas dos opciones:
#local_enable=YES
#ssl_enable=NO
Y añadir al final del fichero:
# CUSTOM
ssl_enable=YES
local_enable=YES
chroot_local_user=YES
local_root=/var/www
user_sub_token=pi
write_enable=YES
local_umask=002
allow_writeable_chroot=YES
ftpd_banner=Welcome to my Raspberry Pi FTP service.
También necesitamos añadir el usuario pi al grupo www-data, dar la propiedad de la carpeta /var/www al usuario y al grupo www-data, cambiar la carpeta de inicio del usuario pi a la misma, y aflojar algunos permisos en la carpeta /var/www:
- sudo usermod -a -G www-data pi
- sudo usermod -m -d /var/www pi
- sudo chown -R www-data:www-data /var/www
- sudo chmod -R 775 /var/www
Y reiniciar el servicio: sudo service vsftpd restart
Para comprobar que funciona usar un cliente ftp con https://filezilla-project.org/ y hacer una conexión con la siguiente configuración:
- Host – 192.xxx.x.xxx (IP address)
- Port – 21
- Protocol – FTP (File Transfer Protocol)
- Encryption – Use explicit FTP over TLS if available
- Logon Type – Normal (username & password)
- Username – pi
- Password – [enter password]
Más información:
- Tutorial seguido https://pchelp.ricmedia.com/setup-lamp-server-raspberry-pi-3-complete-diy-guide/3/
- https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md
- Otro buen tutorial: https://howtoraspberrypi.com/how-to-install-web-server-raspberry-pi-lamp/
- Otro tutorial: https://www.prometec.net/raspberry-pi-servidor/
- en español : https://www.atareao.es/tutorial/raspberry-pi-primeros-pasos/lamp-raspberry-pi/
- http://www.instructables.com/id/Turning-your-Raspberry-Pi-into-a-personal-web-serv/?ALLSTEPS
Y si quisieramos instalar un wordpress: https://www.raspberrypi.org/learning/lamp-web-server-with-wordpress/
Con esto ya tenemos listo un servidor para recibir conexiones de arduino y guardar datos y mostrarlos.
Recordar cada vez que se haga una modificación grande en Raspberry Pi hacer una copia de seguridad de la tarjeta SD con Win32DiskImager.
Descarga https://sourceforge.net/projects/win32diskimager/
Escribir el nombre de la imagen en la ruta donde los guardemos.
Y luego pulsar read. Una vez hecho esto, esperar a que el proceso finalice.
Instalar Webmin
Webmin es una herramienta de configuración de sistemas accesible vía web para sistemas Unix, como GNU/Linux y OpenSolaris. Con él se pueden configurar aspectos internos de muchos sistemas operativos, como usuarios, cuotas de espacio, servicios, archivos de configuración, apagado del equipo, etcétera, así como modificar y controlar muchas aplicaciones libres, como el servidor web Apache, PHP, MySQL, DNS, Samba, DHCP, entre otros.
Instalar Webmin en debian: https://www.webmin.com/deb.html
Instalar con apt desde el repositorio de webmin. Comandos:
- sudo sh -c ‘echo «deb http://download.webmin.com/download/repository sarge contrib» > /etc/apt/sources.list.d/webmin.list’
- cd /home/pi
- wget https://download.webmin.com/jcameron-key.asc
- sudo cat jcameron-key.asc | gpg –dearmor >jcameron-key.gpg
- sudo cp jcameron-key.gpg /etc/apt/trusted.gpg.d
- rm jcameron-key.*
- sudo apt-get install apt-transport-https
- sudo apt update
- sudo apt install webmin
Instalación Manual:
- wget http://prdownloads.sourceforge.net/webadmin/webmin_1.890_all.deb o desdecargar desde http://www.webmin.com/download.html el paquete de debian
- sudo dpkg –install webmin_1.890_all.deb o doble click en el fichero
Es posible que haya que instalar algunas dependencias con:
- sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
Para comprobar que se ha instalado acceder desde un navegador a https://ip_address:10000
Más información:
- Instalar en debian: http://www.webmin.com/deb.html
- https://www.instructables.com/id/Adding-Webmin-to-manage-a-Raspberry-Pi/ y muy intersante para usar con SSH tunneling
- https://www.deacosta.com/instala-webmin-y-administra-tu-raspberry-pi-desde-una-consola-web/
- Otro https://www.raspberrypizaragoza.es/webmin/
- Usando repositorio apt-get: http://www.ubuntufacil.com/2015/03/script-para-instalar-webmin-en-ubuntu-raspberry-pi-debian/
Instalar Node-RED
No instalar la versión que aparece en el software recomendado de Raspberry Pi OS, ni usar apt
Seguir esta instalacióm: https://nodered.org/docs/getting-started/raspberrypi
Ejecutar el comando para instalar y actualizar: bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Para ejecutar Node-RED en el arranque: sudo systemctl enable nodered.service
Para iniciar el servicio: sudo systemctl start nodered.service
En caso de problemas ver el log con: node-red-log
Instalar SQLite
SQLite es una herramienta de software libre, que permite almacenar información en dispositivos empotrados de una forma sencilla, eficaz, potente, rápida y en equipos con pocas capacidades de hardware.
Web: https://sqlite.org/index.html
Más información:
Documentación: https://sqlite.org/docs.html
CLI: https://sqlite.org/cli.html
Integración con json: https://sqlite.org/json1.html
Porqué usar SQLite:
- Una base de datos SQLite completa se almacena en un único archivo de disco multiplataforma
- SQLite es muy pequeño y ligero
- SQLite es autónomo (no se requieren dependencias externas)
- SQLite no requiere un proceso o sistema de servidor separado para operar (sin servidor)
- SQLite viene con configuración cero (no se necesita configuración)
- SQLite es multiplataforma. Está disponible en UNIX (Linux, Mac OS-X, Android, iOS) y Windows (Win32, WinCE, WinRT)
Instalar SQLite: sudo apt-get install sqlite3
Tutoriales instalación:
- https://iotbytes.wordpress.com/sqlite-db-on-raspberry-pi/
- https://linuxhint.com/install-set-up-sqlite-raspberry-pi/
- https://randomnerdtutorials.com/sqlite-database-on-a-raspberry-pi/
DB Browser for SQLite (DB4S) es una herramienta de código abierto, visual y de alta calidad para crear, diseñar y editar archivos de bases de datos compatibles con SQLite.
Instalar SQLite Browser:
- sudo apt-get update
- sudo apt-get install sqlitebrowser
Usaremos SQLite como BBDD local y luego pasar datos a una BBD cloud. Así disponemos de un sistema de almacenamiento local en lugar de una BBDD más compleja o un fichero en local en un formato como json, que es más simple y menos funcional.
Si queremos usar un interfaz web sencillo para visualizar y hacer operaciones sencillas usar: https://github.com/coleifer/sqlite-web
Para instalar ejecutar los comandos:
- sudo pip install sqlite-web
- sqlite_web –host 0.0.0.0 prueba.db
Pingback: Diario del Curso IoT, Smart Cities y Node-RED | Aprendiendo Arduino
Pingback: Diario Curso: Raspberry Pi y Node-RED. 2ª ed | Aprendiendo Arduino