Tutorial

Cómo instalar la pila Linux, Apache, MariaDB, PHP (LAMP) en Debian 9

ApachePHPLAMP StackMariaDBDebian 9Databases

Introducción

Una pila “LAMP” es un grupo de aplicaciones de software de código abierto que se instalan normalmente juntas para permitir que un servidor aloje aplicaciones web y sitios web dinámicos. Este término es en realidad un acrónimo que representa al sistema operativo Linux y al servidor web Apache. Los datos del sitio se almacenan en una base de datos MariaDB y el contenido dinámico se procesa mediante PHP.

En esta guía, instalaremos una pila LAMP en un servidor Debian 9.

Requisitos previos

Para completar este tutorial, deberá disponer de un servidor de Debian 9 con una cuenta de usuario sudo no root y un firewall básico. Esto se puede configurar usando nuestra guía de configuración inicial de servidores para Debian 9.

Paso 1: Instalar Apache y actualizar el firewall

El servidor web Apache está entre los más populares del mundo. Cuenta con una completa documentación y se ha usado extensamente durante gran parte de la historia de la Web, lo que lo convierte en una gran opción para alojar un sitio web.

Instale Apache usando apt, el administrador de paquetes de Debian:

  • sudo apt update
  • sudo apt install apache2

Ya que este es un comando sudo, estas operaciones se ejecutan con privilegios root. Le pedirá su contraseña de usuario normal para verificar sus intenciones.

Una vez que introduzca su contraseña, apt le indicará los paquetes que planea instalar y el espacio adicional que ocuparán en el disco duro. Pulse Y y luego ENTER para continuar. Con esto, la instalación continuará.

A continuación, suponiendo que seguió las instrucciones de configuración inicial del servidor instalando y habilitando el firewall UFW, asegúrese de que su firewall permita el tráfico HTTP y HTTPS.

Cuando se instala en Debian 9, UFW se carga con perfiles de app que puede usar para ajustar la configuración de su firewall. Vea la lista completa de perfiles de aplicaciones ejecutando lo siguiente:

  • sudo ufw app list

Los perfiles WWW se utilizan para administrar los puertos usados por servidores web:

Output
Available applications: . . . WWW WWW Cache WWW Full WWW Secure . . .

Si inspecciona el perfil WWW Full, este muestra que permite el tráfico a los puertos 80 y 443.

  • sudo ufw app info "WWW Full"
Output
Profile: WWW Full Title: Web Server (HTTP,HTTPS) Description: Web Server (HTTP,HTTPS) Ports: 80,443/tcp

Permita el tráfico HTTP y HTTPS para este perfil:

  • sudo ufw allow in "WWW Full"

Puede realizar una comprobación de inmediato para verificar que todo está en orden visitando la dirección IP pública de su servidor en su navegador web.

http://your_server_ip

Verá la página web predeterminada de Apache de Debian 9, que se encuentra allí para fines informativos y de prueba. Debería tener un aspecto similar a este:

Página predeterminada de Apache de Debian 9

Si ve esta página, su servidor web estará correctamente instalado y el acceso a él será posible a través de su firewall.

Si no conoce la dirección IP pública de su servidor, hay varias formas de encontrarla. Por lo general, es la dirección que utiliza para establecer conexión con su servidor a través de SSH.

Existen varias formas de hacerlo desde la línea de comandos. Primero, podría usar las herramientas de iproute2 para obtener su dirección IP escribiendo esto:

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Esto nos brindará dos o tres líneas. Todas estas direcciones son correctas, pero su computadora puede usar una de ellas. Por ello, no dude en probarlas todas.

Un método alternativo consiste en usar la utilidad curl para contactar a una parte externa a fin de que le indique su evaluación del servidor. Esto se hace solicitando a un servidor específico su dirección IP:

  • sudo apt install curl
  • curl http://icanhazip.com

Independientemente del método que utilice para obtener su dirección IP, escríbala en la barra de direcciones de su navegador web para ver la página predeterminada de Apache.

Paso 2 - Instalar MariaDB

Ahora que su servidor web está listo, es el momento de instalar MariaDB. MariaDB es un sistema de administración de bases de datos. Básicamente, organizará y brindará acceso a bases de datos en las que su sitio puede almacenar información.

MariaDB es una ramificación de MySQL creada por la comunidad. En Debian 9, el servidor de MySQL predeterminado es MariaDB 10.1, y mysql-server, que normalmente se utiliza para instalar MySQL, es un paquete de transición que instalará MariaDB. Sin embargo, se recomienda instalar MariaDB usando el paquete real del programa: mariadb-server.

Una vez más, utilice apt para adquirir e instalar este software:

  • sudo apt install mariadb-server

Nota: En este caso, no es necesario que ejecute sudo apt update antes del comando. Esto se debe a que recientemente lo ejecutó en los comandos anteriores para instalar Apache y el índice de paquetes de su computadora debería estar actualizado.

Este comando, además, le mostrará una lista de los paquetes que se instalarán y el espacio que ocuparán en el disco. Ingrese Y para continuar.

Cuando se complete la instalación, ejecute una secuencia de comandos de seguridad sencilla que viene con MariaDB previamente instalada. Con esto, se eliminarán algunos ajustes predeterminados y se bloqueará el acceso a su sistema de bases de datos. Inicie la secuencia de comandos interactiva ejecutando lo siguiente:

  • sudo mysql_secure_installation

Con esto, verá una serie de solicitudes mediante las cuales podrá realizar cambios en las opciones de seguridad de su instalación de MariaDB. En la primera solicitud se pedirá que introduzca la contraseña root de la base de datos actual. Esta es una cuenta administrativa de MariaDB que tiene mayores privilegios. Considérela como algo similar a la cuenta root para el propio servidor (aunque la que está configurando ahora sea una cuenta específica de MariaDB). Debido a que acaba de instalar MariaDB y aún no realizó aún cambios en la configuración, el espacio de esta contraseña estará en blanco. Por ello, pulse ENTER en la solicitud.

En la siguiente solicitud se pregunta si desea configurar una contraseña root de la base de datos. Escriba N y pulse ENTER. En Debian, la cuenta root para MariaDB está estrechamente vinculada al mantenimiento del sistema automatizado, por tanto no deberíamos cambiar los métodos de autenticación configurados para esa cuenta. Hacer esto permitiría que una actualización de paquetes dañara el sistema de bases de datos eliminando el acceso a la cuenta administrativa. Más tarde, se explicará la manera configurar de forma opcional una cuenta administrativa adicional para el acceso con contraseña si la autenticación del socket no es apropiada para su caso de uso.

Desde allí, puede pulsar Y y luego ENTER para aceptar los valores predeterminados para todas las preguntas siguientes. Con esto, se eliminarán algunos usuarios anónimos y la base de datos de prueba, se deshabilitarán las credenciales de inicio de sesión remoto de root y se cargarán estas nuevas reglas para que MariaDB aplique de inmediato los cambios que realizó.

En las nuevas instalaciones en sistemas Debian, el usuario root de MariaDB está configurado para autenticarse usando el complemento unix_socket de forma predeterminada en lugar de una contraseña. Esto proporciona una mayor seguridad y utilidad en muchos casos, pero también puede generar complicaciones cuando necesita otorgar derechos administrativos a un programa externo (por ejemplo, phpMyAdmin).

Debido a que el servidor utiliza la cuenta root para tareas como la rotación de registros y el inicio y la deteneción del servidor, es mejor no cambiar los detalles de autenticación root de la cuenta. La modificación de las credenciales de la cuenta en /etc/mysql/debian.cnf puede funcionar al principio, pero las actualizaciones de paquetes pueden sobrescribir esos cambios. En vez de modificar la cuenta root, los encargados del mantenimiento de paquetes recomiendan crear una cuenta administrativa independiente si necesita configurar un acceso basado en contraseña.

Para hacerlo, crearemos una nueva cuenta llamada admin con las mismas capacidades que la cuenta root, pero configurada para la autenticación de contraseñas. Para hacer esto, abra la instrucción de MariaDB desde su terminal:

  • sudo mariadb

Ahora, podremos crear un nuevo usuario con privilegios root y acceso basado en contraseña. Cambie el nombre de usuario y la contraseña según sus preferencias:

  • GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Vacíe los privilegios para garantizar que se guarden y estén disponibles en la sesión actual:

  • FLUSH PRIVILEGES;

Después de esto, cierre el shell de MariaDB:

  • exit

Ahora, en cualquier momento que desee acceder a su base de datos como su nuevo usuario administrativo, deberá autenticarse como ese usuario con la contraseña que acaba de configurar usando el siguiente comando:

  • mariadb -u admin -p

En este momento, el sistema de base de datos está configurado y puede proceder a instalar PHP, el componente final de la pila LAMP.

Paso 3: Instalar PHP

PHP es el componente de su configuración que procesará código para mostrar contenido dinámico. Puede ejecutar secuencias de comandos, establecer conexión con sus bases de datos de MariaDB para obtener información y entregar el contenido procesado a su servidor web para su visualización.

Una vez más, utilice el sistema apt para instalar PHP. Además, incluye algunos paquetes de helper esta vez para que el código de PHP pueda ejecutarse con el servidor Apache y comunicarse con su base de datos de MariaDB:

  • sudo apt install php libapache2-mod-php php-mysql

Con esto, PHP debería instalarse sin problemas. Lo probaremos en un momento.

En la mayoría de los casos, le convendrá modificar la forma en que Apache presenta los archivos cuando se solicita un directorio. Actualmente, si un usuario solicita un directorio del servidor, Apache buscará primero un archivo llamado index.html. Queremos indicar al servidor web que priorice los archivos PHP respecto de otros. Por ello, haga que Apache busque primero un archivo index.php.

Para hacer esto, escriba este comando a fin de abrir el archivo dir.conf en un editor de texto con privilegios root:

  • sudo nano /etc/apache2/mods-enabled/dir.conf

Tendrá un aspecto similar a este:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Mueva el archivo de índice PHP (resaltado arriba) a la primera posición después de la especificación DirectoryIndex, como se muestra a continuación:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Cuando termine, guarde y cierre el archivo pulsando CTRL+X. Confirme que desea guardar los cambios escribiendo Y y luego pulse ENTER para verificar la ubicación en la que se guardará el archivo.

Después de esto, reinicie el servidor web Apache para que se reconozcan sus cambios. Hágalo escribiendo lo siguiente:

  • sudo systemctl restart apache2

También puede verificar el estado del servicio apache2 usando systemctl:

  • sudo systemctl status apache2
Sample Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 22221 (apache2) Tasks: 6 (limit: 4915) CGroup: /system.slice/apache2.service ├─22221 /usr/sbin/apache2 -k start ├─22222 /usr/sbin/apache2 -k start ├─22223 /usr/sbin/apache2 -k start ├─22224 /usr/sbin/apache2 -k start ├─22225 /usr/sbin/apache2 -k start └─22226 /usr/sbin/apache2 -k start

Para mejorar la funcionalidad de PHP, tendrá la opción de instalar algunos módulos adicionales. Para ver las opciones disponibles para módulos y bibliotecas PHP, canalice los resultados de apt search en less, un localizador que le permite desplazarse por el resultado de otros comandos:

  • apt search php- | less

Utilice las teclas de flecha para desplazarse arriba y abajo, y pulse Q para salir.

Como resultado, obtendrá todos los componentes opcionales que puede instalar. Verá una breve descripción de cada uno:

Output
Sorting... Full Text Search... bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64 Tracks usage of TCP/IP and builds html files with graphs bluefish/stable 2.2.9-1+b1 amd64 advanced Gtk+ text editor for web and software development cacti/stable 0.8.8h+ds1-10 all web interface for graphing of monitoring systems cakephp-scripts/stable 2.8.5-1 all rapid application development framework for PHP (scripts) ganglia-webfrontend/stable 3.6.1-3 all cluster monitoring toolkit - web front-end haserl/stable 0.9.35-2+b1 amd64 CGI scripting program for embedded environments kdevelop-php-docs/stable 5.0.3-1 all transitional package for kdevelop-php kdevelop-php-docs-l10n/stable 5.0.3-1 all transitional package for kdevelop-php-l10n … :

En Internet podrá obtener más información sobre lo que hace cada módulo. También puede consultar la descripción extensa del paquete escribiendo lo siguiente:

  • apt show package_name

Verá muchos resultados; habrá un campo llamado Description, que tendrá una explicación más larga de la funcionalidad que proporciona el módulo.

Por ejemplo, para saber qué hace el módulo php-cli, puede escribir lo siguiente:

  • apt show php-cli

Junto con una gran cantidad de información, encontrará algo similar a esto:

Output
… Description: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Debian's default PHP version (currently 7.0). …

Si después de investigar decide que desea instalar un paquete, puede hacerlo usando el comando apt install como lo ha hecho con el otro software.

Si determina que necesita php-cli, puede escribir lo siguiente:

  • sudo apt install php-cli

Si desea instalar más de un módulo, puede hacerlo enumerando cada uno de ellos, separados por un espacio, con el comando apt install, como se muestra a continuación:

  • sudo apt install package1 package2 ...

En este punto, su pila LAMP estará instalada y confgurada. Antes de realizar más cambios o implementar una aplicación, sería útil probar de forma proactiva su configuración PHP en caso de que haya problemas que deban abordarse.

Paso 4: Probar el procesamiento de PHP en su servidor web

A fin de verificar que su sistema esté configurado de forma adecuada para PHP, cree una secuencia de comandos PHP muy básica llamada info.php. Para que Apache encuentre este archivo y lo presente correctamente, debe guardarse en un directorio muy específico llamado web root.

En Debian 9, este directorio se encuentra en /var/www/html/. Cree el archivo en esa ubicación ejecutando lo siguiente:

  • sudo nano /var/www/html/info.php

Con esto se abrirá un archivo vacío. Añada el siguiente texto, que es el código PHP válido, dentro del archivo:

/var/www/html/info.php
<?php
phpinfo();
?>

Cuando termine, guarde y cierre el archivo.

Ahora puede probar si su servidor web puede mostrar correctamente el contenido generado por esta secuencia de comandos PHP. Para probar esto, visite esta página en su navegador web. Necesitará de nuevo la dirección IP pública de su servidor.

La dirección que le convendrá visitar es la siguiente:

http://your_server_ip/info.php

La página a la que llegue debería tener un aspecto similar a este:

Información de PHP predeterminada de Debian 9

En esta página se proporciona información básica sobre su servidor desde la perspectiva de PHP. Es útil para la depuración y para asegurarse de que sus ajustes se apliquen correctamente.

Si puede ver esta página en su navegador, su PHP funcionará como se espera.

Probablemente desee eliminar este archivo tras esta prueba, ya que podría proporcionar información sobre su servidor a usuarios no autorizados. Para hacer esto, ejecute el siguiente comando:

  • sudo rm /var/www/html/info.php

Siempre puede recrear esta página si necesita acceder a la información posteriormente.

Conclusión

Ahora que dispone de una pila LAMP instalada, tiene muchas opciones respecto de lo que puede hacer a continuación. Básicamente, instaló una plataforma que le permitirá instalar la mayoría de los tipos de sitios y recursos de software web en su servidor.

Creative Commons License