Instale LAMP (Linux, Apache, MariaDB o MySQL y PHP) Stack en Debian 9


A principios de esta semana (17 de junio de 2017), el proyecto Debian anunció la disponibilidad de la nueva versión estable (Debian 9) con nombre en código Stretch.

Con esta versión, Debian 8 Jessie, conocido y ampliamente utilizado, ganó el estado estable anterior, que designa el repositorio estable anterior. Como siempre sucede con el lanzamiento de una nueva versión estable, Stretch incluye cientos de paquetes nuevos y actualizaciones para miles de otros.

Dado que Debian impulsa un gran porcentaje de servidores web en todo el mundo, en este artículo explicaremos cómo instalar la pila LAMP en Debian 9 Stretch.

Esto permitirá a los administradores del sistema configurar nuevos servidores web sobre Stretch utilizando las actualizaciones recientes de los repositorios oficiales de la distribución. Se supone que se ha actualizado de Jessie.

Instalación de LAMP en Debian 9 Stretch

La "M" en LAMP significa MariaDB o MySQL, el servidor de base de datos de la pila. Dependiendo de su elección, puede instalar el servidor de base de datos y los otros componentes (el servidor web Apache y PHP) de la siguiente manera.

# aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb-common php php-mysqli
# aptitude update && aptitude install apache2 mysql-server mysql-client mysql-common php php-mysqli

Como preferencia personal, usaré MariaDB en el resto de este artículo.

Una vez que se complete la instalación, asegurémonos de que todos los servicios se estén ejecutando. Si es así, los siguientes comandos.

# systemctl is-active apache2
# systemctl is-active mariadb

debe volver a estar activo para ambos. De lo contrario, inicie ambos servicios manualmente:

# systemctl start {apache2,mariadb}

Finalmente, antes de continuar, usemos mysql_secure_installation para configurar la contraseña para la cuenta raíz de la base de datos. Si no sabe cómo hacer esto, puede consultar el paso 4 en Cómo instalar MariaDB 10 en Debian y Ubuntu.

Prueba de LAMP en Debian 9 Stretch

Para comenzar, crearemos y completaremos una base de datos de muestra. A continuación, utilizaremos un script PHP básico para recuperar un conjunto de registros de la base de datos en formato JSON.

Finalmente, usaremos las herramientas de desarrollo de Firefox para verificar la versión de Apache que se está utilizando. Aunque podríamos averiguar esta misma información con.

# apache2 -v

la razón por la que usamos una secuencia de comandos es para asegurarnos de que todos los componentes de la pila funcionan correctamente cuando se agrupan.

Ingresemos el indicador de MariaDB con el siguiente comando.

# mysql -u root -p

e ingresando la contraseña que se eligió en la sección anterior.

Ahora crearemos una base de datos llamada LibraryDB de la siguiente manera:

MariaDB [(none)]> CREATE DATABASE LibraryDB;

y agregue dos tablas llamadas AuthorsTBL y BooksTBL:

MariaDB [(none)]> USE LibraryDB;
CREATE TABLE AuthorsTBL (
AuthorID INT NOT NULL AUTO_INCREMENT,
FullName VARCHAR(100) NOT NULL,
PRIMARY KEY(AuthorID)
);

MariaDB [(none)]> CREATE TABLE BooksTBL (
BookID INT NOT NULL AUTO_INCREMENT,
AuthorID INT NOT NULL,
ISBN VARCHAR(100) NOT NULL,
Title VARCHAR(100) NOT NULL,
Year VARCHAR(4),
PRIMARY KEY(BookID),
FOREIGN KEY(AuthorID) REFERENCES AuthorsTBL(AuthorID)
);

Por razones de seguridad, crearemos una cuenta especial para acceder a nuestra base de datos:

MariaDB [(none)]> CREATE USER 'librarian'@'localhost' IDENTIFIED BY 'Today123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON LibraryDB.* TO 'librarian'@'localhost';

El último paso ahora consiste en completar las tablas con Autores y Libros:

MariaDB [(none)]> INSERT INTO AuthorsTBL (FullName) VALUES ('Paulo Coelho'), ('Isabel Allende'), ('Jorge Luis Borges');
MariaDB [(none)]> INSERT INTO BooksTBL (AuthorID, ISBN, Title, Year) VALUES
(1, '9788576653721', 'El alquimista', '1988'),
(1, '9780061194740', 'El peregrino', '1987'),
(2, '9789500720380', 'La casa de los espiritus', '1982'),
(3, '9789875666481', 'El Aleph', '1945');

El siguiente script PHP se conectará primero a la base de datos y recuperará los registros que coincidan con la consulta. Si ocurre un error, se mostrará un mensaje descriptivo para darnos una pista sobre lo que está mal.

Guarde el siguiente script como booksandauthors.php en/var/www/html:

<?php
	// Show PHP version
	echo "Current PHP version: " . phpversion() .  "\r\n";

	// Connect to database
	$connection = mysqli_connect("localhost","librarian","Today123","LibraryDB") or die("Error " . mysqli_error($connection));

	// SQL query
	$sql = "SELECT A.ISBN, A.Title,
        	A.Year, B.FullName
        	FROM BooksTBL A JOIN AuthorsTBL B
        	ON A.AuthorID = B.AuthorID;";
	$result = mysqli_query($connection, $sql) or die("Error " . mysqli_error($connection));

	// Populate an array with the query results
	$libraryarray = array();
	while($row = mysqli_fetch_assoc($result))
	{
    	$libraryarray[] = $row;
	}

	// Convert to JSON
	echo json_encode($libraryarray);
?>

Cambie la propiedad a www-data y agregue los permisos adecuados:

# chown www-data:www-data /var/www/html/booksandauthors.php
# chmod 600 /var/www/html/booksandauthors.php

Finalmente, abra un navegador web y apúntelo a la URL donde reside el script.

http://192.168.0.35/booksandauthors.php

¡Eso es! En este artículo, hemos explicado cómo instalar y probar la pila LAMP en Debian 9. Si tiene preguntas o comentarios sobre este artículo, no dude en hacérnoslo saber mediante el formulario a continuación.