https://paquita.masto.host/polkillas

[Solucionado]Nextcloud en la Raspberry Pi con PHP 7 y MariaDB (3). Apache 2, PHP 7 y MariaDB 10

Actualizado el 2/11/17 con la última versión de Raspbian, que ya trae de serie PHP 7, y los repositorios de mati75

Raspbian Stretch es una versión de Debian 9 optimizada para el procesador de la Raspberry, que no es uno normal de ordenador (x86 o x86_64), sino más parecido a los de los móviles (arm). Acaba de salir, así que es una versión bastante moderna, pero hay ciertas partes del servidor que vamos a instalar que están en versiones un poco más antiguas. Aunque eso lo podremos corregir más adelanta.

Por su parte, MariaDB es una bifurcación (fork) de MySQL que tiene todas las características de MySQL y alguna más, aparte de (según parece) ser más rápida.

Y, por último, Apache es el servidor web, el programa que recibe las peticiones de otros ordenadores y manda páginas web. Hay otros servidores más ligeros (Nginx, lighthttp) que seguramente harían que la Raspberry en general y nuestra nube de Nextcloud en particular funcionaran algo más rápido, pero en mi caso opto por Apache por dos motivos. En primer lugar, porque es el único que he manejado y que algo entiendo de su configuración (poco, realmente poco, en realidad) y en segundo lugar porque hay algunas apps de Nextcloud que piden Apache.

Instalación de Apache, MariaDB y phpMyAdmin

Este paso me ha dado bastantes dolores de cabeza cada vez hasta que, parece, lo he conseguido resolver en Raspbian 9.

Con la llegada de Rasbpian 9, este paso es mucho más sencillo y se instala directamente PHP 7 y una versión de Apache bastante más moderna, aunque siga sin ser la última.

En un terminal o vía SSH, escribimos el siguiente comando:

sudo apt-get update && sudo apt-get install mariadb-server apache2 phpmyadmin

Con esta orden actualizamos la información de actualización y después  instalamos MariaDB y el servidor Apache 2. Veremos que, además, se instalan un montón de paquetes más, que son necesarios. Cuando hemos terminado, podemos comprobar que ambos servidores se han instalado bien.

Para Apache procedemos así: abrimos un navegador en otro ordenador de nuestra red en casa (por ejemplo, en el que estamos usando SSH) y entramos en la dirección de cuatro números que buscamos en la anterior entrada. Debe aparece la página por defecto de Apache. En mi caso, como se puede ver, la dirección es 192.168.0.26, pero variará:

apache2-debian-default-page-it-works-mozilla-firefox_025

Y para PHP 7, podemos escribir php -version en el terminal y debería aparecer algo como esto:

phpversion

Visto desde Windows con PuTTY. (ver entrada anterior).

Si no nos fiamos y queremos comprobar el estado de PHP en el navegador, podemos crear un archivo de prueba. Pero como vamos a instalar dos elementos que usan PHP (phpMyAdmin y el mismo Nextcloud), no es muy necesario.

Instalación de phpMyAdmin

phpMyAdmin es un sistema de gestión de bases de datos MySQL y MariaDB que tiene la ventaja de ser gráfico, por lo que es bastante más sencillo que el cliente de línea de comandos. No es que sea muy necesario para Nextcloud, pero sí que puede simplificar la tarea de crear la base de datos.

Sin embargo, las últimas versiones se han hecho más seguras a costa de ser menos sencillas de usar, y si se instala a pelo en Raspbian da errores y problemas, y parece que en otros sistemas también. Al final, he seguido buscando cómo arreglarlo por cabezonería, me da que al final habría sido más fácil usar el terminal, pero se me ha convertido en cuestión personal. Y creo que al final he conseguido solucionarlo siguiendo instrucciones de un blog en francés, nada menos, y del anterior enlace. Vamos a editar el servidor de bases desde el terminal.

Escribimos sudo mysql --user=root mysql para entrar en MariaDB  y a continuación mandamos las siguientes órdenes, cambiando las mayúsculas por los datos que se quieran:
create user 'USUARIODEMARIADB'@'localhost' identified by 'CONTRASEÑA';
grant all privileges on *.* to 'USUARIODEMARIADB'@'localhost' with grant option;
flush privileges;
exit

La primera línea crea un usuario y una contraseña de MariaDB, la segunda le da todos los permisos, la tercera reinicia los permisos para que empiecen a funcionar los de este usuario y con la cuarta salimos de MariaDB.

Ahora ya sí podemos instalar phpMyAdmin con sudo apt-get install phpmyadmin y abrirlo en el navegador acudiendo a la dirección http://192.168.XX.XX/phpmyadmin, cambiando las equis por la información que nos suministre el comando ifconfig (ver entrada anterior):

phpmyadmin-mozilla-firefox_037

 

Podemos entrar en phpMyAdmin con el usuario y contraseña que acabamos de crear, y  crear una nueva base de datos en el menú de la izquierda, con la opción ‘Nuevo’, pero hay una forma todavía más sencilla, pues nos permite crear a la vez la base de datos para Nextcloud y el usuario. En la pantalla de inicio buscamos el enlace ‘Agregar usuario’ y lo seguimos.

phpmyadmin-4-2-12deb2deb8u2-mozilla-firefox_043

En la pantalla que aparece podemos crear el usuario que queramos (‘nextcloud’ en el ejemplo, pero se puede poner lo que se prefiera) y es importante marcar la opción ‘Crear base de datos con el mismo nombre y otorgar todos los privilegios’, con lo que creamos a la vez el usuario y la base. Es importante no olvidar la contraseña que hemos puesto, pues nos hará falta cuando instalemos Nextcloud.

Cuando hayamos terminado, bajamos al final de la página y pulsamos en ‘Continuar’.

phpmyadmin-4-2-12deb2deb8u2-mozilla-firefox_042

Instalación de versiones modernas de Apache y PHP  7

Hay un informático polaco, Mateusz Łukasik, que entre otras cosas se dedica a actualizar un repositorio con aplicaciones para Debian —el sistema en que se basa Raspbian, como se puede apreciar por el nombre— y para el mismo Raspbian. Si utilizamos este repositorio podemos tener versiones algo más modernas del servidor web Apache y de PHP, lo cual significa algo más de seguridad y posiblemente algo más de rapidez.

¿Cómo se hace? Es (relativamente) sencillo. Hay que editar la lista de repositorios. Para ello, abrimos un terminal:

sudo nano /etc/apt/sources.list

En este archivo está la lista de repositorios en los que Debian busca la información de actualización. Nos aparecerá esto:

terminal con /etc/apt/sources.list de RaspbianLo que tenemos que hacer es añadir en cualquier línea que queramos el texto deb http://repozytorium.mati75.eu/raspbian stretch main contrib non-free. Por motivos estéticos, yo lo he hecho así:terminal con /etc/apt/sources.list con mati75Si actualizamos ahora nos va a dar un error, tenemos que añadir las claves GPG, unas «firmas» que confirman —valga la redundancia—que las actualizaciones son de fiar. En la instalación por defecto falta un requisito, el paquete dirmngr así que lo instalamos con sudo apt-get install dirmngr.

Una vez se ha instalado, podemos agregar las claves con estos comandos (sacados de aquí):

sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851

sudo su

gpg --armor --export CCD91D6111A06851 | apt-key add -

Ahora sí actualizamos con estas dos órdenes de una vez:

sudo apt-get update && sudo apt-get dist-upgrade

Y ya tenemos versiones más modernas.

Retoques y mejoras

De inicio, tanto MySQL como MariaDB vienen con ciertas configuraciones de prueba que es mejor eliminar. Para ello escribimos sudo mysql_secure_installation (truco sacado de aquí) y respondemos las preguntas:

mariadb

Se pide, lo primero la contraseña del usuario ‘root’. El error que aparece se debía a que no recordaba qué contraseña había puesto, y tuve que probar dos. Con la nueva versión no hay contraseña de root, así que te propone crear esa contraseña.

mariadb2

Después nos pide eliminar el acceso anónimo, que es una buena idea, y deshabilitar el acceso del usuario root desde otro ordenador que no sea la Raspberry. También sugiera eliminar una base de datos de prueba, que es innecesaria. Decimos que sí (y) a estas tres preguntas.

mariadb3

Por último, sugiere recargar las tablas de privilegios (lo que quiera que eso quiera decir), También aceptamos y listo.

Otros prerrequisitos de Nextcloud

Para poder ver vistas previas de las imágenes que subamos a nuestra nube, necesitamos instalar un programa como ffmpeg:

sudo apt-get install ffmpeg

16 comentarios

2 pings

Saltar al formulario de comentarios

    • Music Alonso el 20/12/2016 a las 3:04
    • Responder

    que tonteria de articulo, yo sin necesidad del repositorio ‘stretch’ ese, ya se instala mariaDB en una version SUPERIOR que la de tu imagen y eso que lo hiciste hace 3 semanas, y para PHP7 otra absurdez, usando repozytorium.mati75.eu te da SIEMPRE la ultima version de PHP en mi caso tengo la 7.0.14 y tu 3 semanas atras aun vas por la 0.12.

    Cuando quieras hacer algo UTIL, pon un repositorio para instalar mariaDB a la version 10.1 y dejate de marear a la gente para intentar subirle sub numeros que como hemos visto en este caso lo unico que consigues es estar mas atrasado que cualquiera que reinstale su PI, y estamos hablando de 3 semanas no del año pasado

    1. ERES SUBNORMAL

  1. Muchas gracias por tu amable comentario. Agradezco infinito que hayas tenido en cuenta que este tutorial es para gente como yo que no tiene mucha idea de informática y me parece digno de encomio que seas tan amable de proponer una mejora.
    Cuando miré repozytorium.mati75.eu no supe encontrar paquetes para arm porque soy, como te habrás dado cuenta, un poco torpe. Espero que no me lo tengas en cuenta.
    Y, puesto que has decidido ayudar a este pobre aficionado a hacer cosas útiles, espero que también me aconsejes qué puedo hacerme hoy de cenar, que no se me ha ocurrido nada.
    Gracias, Music Alonso, desde el fondo de mi inútil corazón.

    [Nota: posteriores comentarios en este tono serán eliminados tan pronto como los vea. Este lo admito porque entre los comentarios desagradables aparece una sugerencia úitl]

    1. Chapó Polkillas jjjj

  2. Polkillas, ni caso, a comentarios tan constructivos. Me parecen tus tutoriales dignos de elogio por el trabajo que has invertido en ello. El que hace estos comentarios, probablemente, nunca ha tenido el valor de hacer un tutorial y exponerlo en internet.
    Sigue así.

  3. Podrías acabar el tuto? Me he quedado a medias….

  4. me parece una información muy buena y con muy practica ya que se advierte hasta de los errores. Enhorabuena, buen articulo.

    1. Hola, xanti. ¡Muchas gracias por tu comentario!

  5. Ah, lo del final. Lo dejé así por si en partes posteriores del tutorial aparecían otros prerrequisitos que se podían instalar en este punto, pero por ahora no ha sido el caso. Puedes continuar con la siguiente entrada.
    Gracias por tu interés.

  6. Gran artículo, solo una pregunta, para poder actualizar php 7 de los repositorios nuevos solo con apt-get update seria necesario o habria que utlizar -t strecht?

    Gracias.

  7. Pues no estoy seguro del todo, pero creo que solo hace falta al instalar, al actualizar basta con apt-get update.

  8. Brutal. Aclara los puntos oscuros que otros tutos ( ya no se si miles o millones los que he podido mirar por ahí ) dejan en el limbo. Contiene las claves para que después de muuuucho tiempo aparezca mi interfaz de phpmyadmin deseando ser destripada por fin. Muchas gracias polkillas! Te debo una.

    1. ¡Muchas gracias por tu comentario!

  9. Hola
    Estoy siguiendo el tutorial y por algún motivo, no entra ip/phpmyadmin
    sin embargo, sí conecta el Apache con sólo la IP
    me he quedado en ese paso…
    A ver si puedes decirme algo
    Saludos y gracias por facilitarnos la vida

    1. Si Apache funciona, el problema tiene que estar en Phpmyadmin. ¿Estás seguro de que se ha instalado bien?
      Si estás usando Raspbian normal, también puedes probar a abrir el navegador y probar con http://localhost/phpmyadmin, a ver qué dice.

      1. Y por cierto, perdona el retraso en contestar.

  1. […] de entradas: index.html, que es el archivo de inicio de Apache, e info.php, el archivo que creamos en una entrada anterior para comprobar el buen funcionamiento de PHP. En realidad, no es una idea especialmente buena tener […]

  2. […] pero es la primera vez que me meto a crear tablas en línea de comandos, sin usar PhpMyAdmin, como hacía antes, así que si estás preocupado por la seguridad te recomiendo que busques un poco más que esto, […]

Responder a GusCancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.