Cómo instalar LAMP en Debian 9 Stretch

Cómo instalar LAMP en Debian 9 Stretch

En este tutorial vamos a aprender cómo instalar LAMP en Debian 9 Stretch ó, para ser más exactos, cómo crear un servidor con Linux, Apache, MariaDB y PHP para tener la base sobre la que instalar aplicaciones web o alojar sitios gracias a cualquiera de los muchos CMS disponibles. Como versión de Linux ya habrás notado que vamos a usar la versión 9 de Debian (Stretch).

Partiendo de una nueva instalación básica de Debian 9 si tienes tiempo puedes revisar entradas anteriores para llegar a este resultado:

Pero si tienes algo de prisa, en esta entrada tienes la receta completa y resumida.

Antes de instalar LAMP en Debian 9

Para seguir los pasos de esta guía de instalación LAMP en Debian 9 Stretch necesitarás cumplir estos requisitos:

  • Un sistema Debian 9 Stretch actualizado.
  • Acceso a línea de comandos con un usuario con permisos de sudo o el mismo root (menos recomendable).
  • Conexión a Internet.

Si estás consultando este tutorial es porque ya los cumples, así que pongámonos manos a la obra.

Cómo instalar LAMP en Debian 9

Para una instalación sencilla y rápida usaremos los paquetes presentes en los repositorios oficiales de Debian, por lo que el software que instalaremos será Apache, PHP y MariaDB. Si prefirieras MySQL en lugar de MariaDB se necesitan repositorios adicionales, todo lo tienes explicado en la entrada sobre la instalación de MySQL en Debian.

PHP 7.3

Si necesitas una versión de PHP superior a la 7.0 entonces sí que debemos instalar un repositorio adicional. Sigue estos pasos sólo si quieres disfrutar de PHP 7.3 y las próximas versiones.

Instala el paquete apt-transport-https:

~$ sudo apt -y install apt-transport-https

Descarga la clave pública para comprobar las firmas del nuevo repositorio:

~$ sudo wget -O /etc/apt/trusted.gpg.d/php-sury.org.gpg https://packages.sury.org/php/apt.gpg

Crea el nuevo archivo para la información del repositorio:

~$ sudo nano /etc/apt/sources.list.d/php-sury.org.list

Añade esta línea al nuevo archivo:

deb https://packages.sury.org/php/ stretch main

Guarda los cambios y cierra el archivo.

Cómo instalar Apache, MariaDB y PHP en Debian 9

Los paquetes que necesitaremos para la instalación son apache2, mariadb-server, php y php_mysql. Realmente podríamos instalar sólo mariadb-server y php, ya que apache2 es una dependencia de php, es decir, que se instala automáticamente si no está presente.

Empezaremos actualizando el sistema:

~$ sudo apt update && sudo apt -y upgrade

Y ya podemos instalar todos los paquetes:

~$ sudo apt -y install apache2 mariadb-server php php-mysql

Estado de los servicios tras la instalación

Una vez descargados, desempaquetados e instalados los paquetes y sus dependencias podemos comprobar en qué estado se encuentran los servicios. Veremos que tanto el servicio de Apache como el de MariaDB están iniciados mediante el comando systemctl status apache2 mariadb:

instalar lamp en debian 9 stretch

Ambos servicios no sólo están funcionando, sino que están activados para iniciar con el sistema, cada vez que este sea reiniciado.

Configurar el firewall

Si tienes activado el firewall UFW necesitarás añadir algunas reglas para tu sistema LAMP en Debian 9.

Para permitir el protocol HTTP estándar:

~$ sudo ufw allow http

Y si piensas ofrecer conexión segura, habrá que permitir también el protocolo HTTPS seguro:

~$ sudo ufw allow https

Cómo configurar LAMP en Debian 9

Con los servicios con la configuración por defecto, es necesario realizar algunos pequeños ajustes. En realidad es poca cosa, en unos instantes lo tendremos todo listo.

Configuración rápida de PHP

Para ajustar la configuración por defecto de PHP para Apache, debemos editar el archivo /etc/php/7.X/apache2/php.ini:, donde X será 0 ó 3 dependiendo de si has elegido la versión nativa PHP 7.0 de Debian o PHP 7.3 del repositorio de sury.org. En este ejemplo nos decantaremos por PHP 7.3:

~$ sudo nano /etc/php/7.3/apache2/php.ini

Algo que es muy recomendable es ajustar la zona horaria del servidor, a través de la cláusula date.timezone del archivo de configuración. Por defecto no viene configurada ninguna zona:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
...

En este ejemplo configuraremos la zona horaria de España peninsular:

date.timezone = Europe/Madrid

Los valores para cualquier zona horaria que necesites los puedes encontrar en http://php.net/manual/es/timezones.php.

Información sobre errores

La configuración por defecto de PHP en cuanto a información de errores del código de las aplicaciones web está orientada a entornos de producción. Esto significa que cuando PHP encuentra un error en una aplicación la detiene sin informar en el navegador sobre qué está ocurriendo. Un comportamiento así es el adecuado para un servidor de producción, pero para un servidor de desarrollo preferiremos que PHP nos ayude a depurar los errores con mensajes de error.

Sólo si el servidor LAMP que estás preparando es para pruebas o desarrollo y quieres obtener los posibles mensajes de error en el navegador, buscaremos las siguientes cláusulas en php.ini y cambiaremos sus valores por los que te muestro en este ejemplo:

...
error_reporting = E_ALL
...
display_errors = On
...
display_startup_errors = On
...

Después de hacer cualquier cambio en la configuración de PHP hay que recargar la configuración de Apache manualmente:

~$ sudo systemctl reload apache2

Comprobación rápida del funcionamiento de PHP

Si a estas alturas no puedes esperar a ver si PHP y Apache están correctamente integrados, lo comprobaremos con un pequeño script de PHP, que guardaremos, por ejemplo, en /var/www/html/info.php:

~$ sudo nano /var/www/html/info.php

El contenido será solamente este:

<?php
        phpinfo();

Como la raíz de documentos web de Apache se encuentra por defecto en /var/www/html/ este archivo info.php será accesible desde direcciones como http://localhost/info.php, http://127.0.0.1/info.php o desde el exterior del servidor mediante su dirección IP o nombre de dominio cualificado (si lo tiene) añadiendo /info.php:

como instalar lamp en debian 9 stretch
Servidor LAMP funcionando correctamente en Debian 9 Stretch

 

Configurar rápidamente MariaDB

La configuración por defecto de MariaDB viene sin usuarios anónimos y sin bases de datos de pruebas. Además, el usuario root no tiene contraseña, ya que está configurado con el plugin de autenticación unix_socket, lo que implica que sólo se podrá acceder desde la cuenta de Debian 9 de root o cualquier otro usuario con privilegios de sudo.

Si consideras que es importante que el usuario root de MariaDB inicie sesión con contraseña, habrá que desactivar el plugin unix_socket.

Conectaremos al servicio MariaDB con el cliente mysql:

~$ sudo mysql

Desactivamos el plugin de autenticación, limpiando el contenido de ese campo (lo que provocará que se use el plugin por defecto, que es el que usa contraseña):

> update mysql.user set plugin='' where user='root';

Y asignamos una contraseña para root:

> set password for root@localhost = password('XXXXXXXX');

Sólo queda actualizar los permisos de la tabla de usuarios y salir del cliente:

> flush privileges;
> exit

Hemos accedido como root sin contraseña, hemos desactivado el plugin unix_socket y hemos asignado una contraseña para root. A partir de este momento no es posible acceder como root si no se especifica la contraseña:

~$ sudo mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
~$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 33
Server version: 10.1.37-MariaDB-0+deb9u1 Debian 9.6

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Solucionado este detalle, continuamos.

Para comprobar que PHP puede trabajar con bases de datos MariaDB, vamos a crear una base y un usuario de pruebas en MariaDB que posteriormente emplearemos en un pequeño script PHP. Conectamos a MariaDB Server con el cliente de consola mysql y creamos la base, el usuario y los permisos de este sobre la base:

> create database pruebas;
> create user usuario@localhost identified by '1234';
> grant all privileges on pruebas.* to usuario@localhost;
> flush privileges;
> exit

Ya tenemos todo configurado y listo para probarlo.

Cómo comprobar el servidor LAMP Debian

Para comprobar que todos los elementos de nuestro servidor LAMP Debian encajan unos con otros, escribiremos un pequeño archivo PHP para testear el funcionamiento. Lo podemos crear en una ruta fácilmente accesible desde el navegador, como /var/www/html/test.php:

~$ sudo nano /var/www/html/test.php

El contenido sería el siguiente:

<?php
$enlace = mysqli_connect("127.0.0.1", "usuario", "1234", "pruebas");

if (!$enlace) {
    echo "Error: No se pudo conectar a MySQL." . PHP_EOL;
    echo "errno de depuración: " . mysqli_connect_errno() . PHP_EOL;
    echo "error de depuración: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "<h1>Éxito: ¡Se realizó una conexión apropiada a MySQL!</h1>" . PHP_EOL;
echo "<h2>Información del host: " . mysqli_get_host_info($enlace) . "</h2>" . PHP_EOL;

mysqli_close($enlace);

Hemos empleado los datos de conexión del ejemplo anterior. Si has creado una base y un usuario distintos, cámbialos en el script PHP.

Al introducir la URL correspondiente en el navegador veremos algo como esto:

instalacion de la pila lamp en debian 9 stretch
Comprobación del funcionamiento del nuevo servidor LAMP en Debian 9

 

Y si obtenemos esta pantalla en lugar de un mensaje de error, es que todo ha funcionado como esperábamos. Ya estamos listos para empezar a desarrollar nuestras aplicaciones web o a instalar tu CMS favorito, por ejemplo.

Conclusión

Ahora que ya sabes cómo instalar LAMP en Debian 9 estás listo para desarrollar aplicaciones complejas basadas en frameworks como Yii, CodeIgniter, etc. o instalar el CMS de tu elección. Un servidor LAMP siempre es el cimiento sobre el que se basan estos sistemas, por lo que es interesante saber desplegarlo de forma rápida y eficaz.

Es cierto que existen paquetes «todo en uno» que realizan estas tareas de forma más automatizada, pero muchos preferimos conocer cómo funciona cada pieza del sistema y cómo configurarla de forma específica.

Si te ha quedado alguna duda, o tienes preguntas o sugerencias sobre nuevos artículos, déjame un mensaje.

Y si has encontrado verdaderamente útil este artículo, ¡siempre puedes invitarme a un café!

 

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (7 votos, promedio: 5,00 de 5)
Cargando…

Esta entrada tiene 4 comentarios

  1. falto instalar el cliente mysql

    1. ¡Hola! El cliente de consola es una de las dependencias del servidor, por lo tanto está disponible al instalar todos los paquetes para la pila LAMP.

  2. Hola Chacho muchas gracias por tu aporte, me sirvió.
    Un tema, en el código del archivo test.php no utilizas el cierre de php (), yo lo puse y cuando corrí el programa me dio error, cuando lo saque, medio el mensaje de que todo esta bien conectado, por que sucede esto ??.
    Saludos;

    1. ¡Hola, Gustavo! Se considera buena práctica no aplicar la etiqueta de cierre en los archivos que contienen exclusivamente código. En cualquier caso, he colocado dicha etiqueta ?> al final del ejemplo test.php y funciona correctamente.

Deja un comentario

Cerrar menú

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información

ACEPTAR
Aviso de cookies