Ingeniería, Investigación y Consultoría Informática

Cómo instalar LAMP en Debian 10 Buster

En éste tutorial o guía paso a paso a paso se describe como instalar el servidor web Apache, la base de datos MariaDB (la implementación libre de MySQL) y el módulo PHP en Apache. LAMP es un acrónimo, que originalmente decía “Linux, Apache, MySQL, PHP”, y se refiere al sistema operativo, servidor web, servidor de bases de datos y el lenguaje sobre el que tienen base innumerables aplicaciones para Internet, como lo son el popular administrador de contenidos WordPress o los servicios de “nube privada” Nextcloud.

Asumimos que ya se ha instalado Debian 10 “Buster”, y que se tiene una cuenta con privilegios sudo.

1: Actualizar Debian 10 Buster

Como siempre, antes de instalar nuevo software es recomendable actualizar el que ya está instalado:

sudo apt update && sudo apt -y upgrade

2: Instalar el servidor de bases de datos MariaDB en Debian 10 Buster

MariaDB es un servidor de bases de datos relacional que se originó a partir de MySQL. Es Software Libre. Con los siguientes comandos se instala también el cliente del servidor (el comando mysql):

sudo apt install -y mariadb-server mariadb-client

Ver que versión se instaló de MariaDB (tu versión puede variar):

$ apt policy mariadb-server
  Installed: 1:10.3.15-1
  Candidate: 1:10.3.18-0+deb10u1
  Version table:
     1:10.3.18-0+deb10u1 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
 *** 1:10.3.15-1 100
        100 /var/lib/dpkg/status

El nombre del servicio para el servidor MariaDB es, indistintamente mysql o mariadb:

$ systemctl status mariadb
● mariadb.service - MariaDB 10.3.15 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-11-21 17:38:04 CST; 17h ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 17826 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 37 (limit: 1168)
   Memory: 185.4M
   CGroup: /system.slice/mariadb.service
           └─17826 /usr/sbin/mysqld

El último paso consiste en correr el script que establece seguridad básica para el servidor de bases de datos. El script pregunta una contraseña para el usuario administrador “root” (no confundir con el administrador del sistema operativo, el usuario “root” del servidor de bases de datos es independiente y su contraseña puede, y debe, ser distinta a la de “root” del sistema operativo), deshabilitar usuarios anónimos, no permitir el acceso a “root” desde fuera del servidor y quitar la base de datos de pruebas “test”.

$ sudo mysql_secure_installation
 NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
       SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 In order to log into MariaDB to secure it, we'll need the current
 password for the root user.  If you've just installed MariaDB, and
 you haven't set the root password yet, the password will be blank,
 so you should just press enter here.
 Enter current password for root (enter for none): 
 OK, successfully used password, moving on…
 Setting the root password ensures that nobody can log into the MariaDB
 root user without the proper authorisation.
 Set root password? [Y/n] Y
 New password: 
 Re-enter new password: 
 Password updated successfully!
 Reloading privilege tables..
  … Success!
 By default, a MariaDB installation has an anonymous user, allowing anyone
 to log into MariaDB without having to have a user account created for
 them.  This is intended only for testing, and to make the installation
 go a bit smoother.  You should remove them before moving into a
 production environment.
 Remove anonymous users? [Y/n] Y
  … Success!
 Normally, root should only be allowed to connect from 'localhost'.  This
 ensures that someone cannot guess at the root password from the network.
 Disallow root login remotely? [Y/n] Y
  … Success!
 By default, MariaDB comes with a database named 'test' that anyone can
 access.  This is also intended only for testing, and should be removed
 before moving into a production environment.
 Remove test database and access to it? [Y/n] Y
 Dropping test database…
 … Success!
 Removing privileges on test database…
 … Success! 
 Reloading the privilege tables will ensure that all changes made so far
 will take effect immediately.
 Reload privilege tables now? [Y/n] Y
  … Success!
 Cleaning up…
 All done!  If you've completed all of the above steps, your MariaDB
 installation should now be secure.
 Thanks for using MariaDB!

Y probamos la conexión al servidor de bases de datos usando el cliente:

$ mysql -u root -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7317
Server version: 10.3.15-MariaDB-1 Debian 10

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)]> SELECT VERSION();
+-------------------+
| VERSION()         |
+-------------------+
| 10.3.15-MariaDB-1 |
+-------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> exit
Bye
$

3: Instalar el servidor web Apache en Debian 10 Buster

Instalamos el servidor web Apache y sus utilerías:

sudo apt install -y apache2 apache2-utils

Comprobamos la versión de Apache (tu versión puede variar):

$ sudo apache2 -v
Server version: Apache/2.4.38 (Debian)
Server built:   2019-04-07T18:15:40

El servicio de Apache se inicia automáticamente cuando se instala, lo comprobamos:

$ systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-11-18 13:01:36 CST; 3 days ago
     Docs: https://httpd.apache.org/docs/2.4/
  Process: 968 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
 Main PID: 19099 (apache2)
    Tasks: 11 (limit: 1168)
   Memory: 424.3M
   CGroup: /system.slice/apache2.service
           ├─ 7754 /usr/sbin/apache2 -k start
           ├─17336 /usr/sbin/apache2 -k start
           ├─17348 /usr/sbin/apache2 -k start

Se puede instruir al servidor Apache que vuelva a leer los archivos de configuración cada vez que se hace un cambio:

sudo systemctl reload apache2

Para habilitar el servicio y que inicie automáticamente cada vez que se reinicie el servidor:

sudo systemctl enable apache2

En un browser, escríbase la dirección IP del servidor y se verá la página por default de Apache:

Página por default de Apache en Debian

4: Instalar PHP en Debain 10 Buster

Instalaremos PHP con las extensiones más comunes:

sudo apt install php libapache2-mod-php php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd  php-mbstring php-curl php-xml php-pear php-bcmath

La versión que se instala es la 7.3, por lo que se usa lo siguiente para habilitar el módulo en Apache:

sudo a2enmod php7.3

Recargamos la configuración de Apache:

sudo systemctl reload apache2

Comprobamos la versión de PHP:

$ php -v
PHP 7.3.11-1~deb10u1 (cli) (built: Oct 26 2019 14:14:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.11-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies

Ahora creamos un pequeño script para probar que PHP esté funcionando en el servidor Apache. El script será puesto en el directorio por default en el que residen los archivos que servirá el servidor web Apache:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php

Y finalmente en un browser, escríbase la dirección IP del servidor añadiendo el nombre del script que acabamos de crear:

http://IPdelServidor o nombre/phpinfo.php

Y se verá la información detallada que provee el escript que creamos sobre la instalación de PHP:

Conclusiones

En ésta guía o tutorial paso a paso logramos instalar lo necesario ya sea para desarrollar sitios o aplicaciones con PHP y el servidor de bases de datos MariaDB, que funciona igual que MySQL. Esto vimos que se conoce con “LAMP” o “LAMP Stack”. LAMP también es el requisito para instalar software como WordPress o Nextcloud, y por ello decidimos incluir en la instalación de PHP los módulos más comunes para que sea más sencillo instalar casi cualquier software que necesite LAMP.

Niebla Research instala, configura y pone a punto servidores virtuales, LAMP, WordPress, Nextcloud y otros. Estoy a tus órdenes en la sección de contacto de mi empresa y en los comentarios para aclarar cualquier duda, error u omisión.

Dejar un comentario

Tu dirección de correo electrónico no será publicada.