Cómo Instalar LAMP en Debian 9

Cómo Instalar LAMP en Debian 9

En este tutorial vamos a aprender cómo instalar LAMP en Debian 9 ó, 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 CMS como WordPress. Como versión de Linux ya habrás notado que vamos a usar la última versión de Debian.

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.

Para seguir los pasos de este tutorial necesitarás un sistema Debian 9 y un usuario con permisos de root o sudo.

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.

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 && apt -y upgrade

Y ya podemos instalar todos los paquetes:

~$ sudo apt 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:

~$ systemctl status apache2 mariadb
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-12-04 21:34:36 CET; 2h 14min ago
  Process: 9713 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
 Main PID: 8764 (apache2)
    Tasks: 7 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─8764 /usr/sbin/apache2 -k start
           ├─9718 /usr/sbin/apache2 -k start
           ├─9719 /usr/sbin/apache2 -k start
           ├─9720 /usr/sbin/apache2 -k start
           ├─9721 /usr/sbin/apache2 -k start
           ├─9722 /usr/sbin/apache2 -k start
           └─9723 /usr/sbin/apache2 -k start

● mariadb.service - MariaDB 10.1.37 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-12-04 21:34:08 CET; 2h 14min ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 7889 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 27 (limit: 4915)
   CGroup: /system.slice/mariadb.service
           └─7889 /usr/sbin/mysqld

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

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.0/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]

[...]

;date.timezone =

[...]

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

[...]

[Date]

[...]

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 /etc/php/7.0/apache2/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:

<?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:

instalar lamp en debian 9
Servidor web Apache con PHP funcionando correctamente

 

Configurar rápidamente MariaDB

La configuración por defecto de MariaDB viene sin usuarios anónimos y sin bases de datos de pruebas, pero el usuario root no tiene contraseña, por lo que es importante asignarle una. El problema es que el usuario root viene configurado con el plugin de autenticación unix_socket, por lo que mientras no lo desactivemos no conseguiremos que MariaDB solicite la contraseña o la tenga en cuenta.

En primer lugar desactivaremos el plugin unix_socket para el usuario root. Conectaremos al servicio MariaDB con el cliente mysql:

~$ sudo mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
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.


> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
> update user set plugin = '' where User='root';
Query OK, 1 row affected (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 0
> set password for 'root'@'localhost' = password('rootpassword');
Query OK, 0 rows affected, 1 warning (0.00 sec)

> flush privileges;
Query OK, 0 rows affected (0.01 sec)

> exit
Bye
~$

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:

~$ 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 posible problema con la seguridad, 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;
Query OK, 1 row affected (0.01 sec)

> create user usuario@localhost identified by '1234';
Query OK, 0 rows affected (0.01 sec)

> grant all privileges on pruebas.* to usuario@localhost;
Query OK, 0 rows affected (0.00 sec)

> flush privileges;
Query OK, 0 rows affected (0.01 sec)

> exit
Bye
~$

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, con el siguiente contenido:

<?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:

como instalar lamp en debian 9
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 un CMS como WordPress, 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 CMS como WordPress y similares. 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 (3 votos, promedio: 5,00 de 5)
Cargando…

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