Installer LAMP (Linux, Apache, MariaDB eller MySQL og PHP) Stack på Debian 9


Tidligt i denne uge (17. juni 2017) annoncerede Debian-projektet tilgængeligheden af den nye stabile version (Debian 9) med kodenavnet Stretch.

Med denne udgivelse fik den velkendte og meget anvendte Debian 8 Jessie status som gammel, hvilket angiver det tidligere stabile lager. Som det altid sker med udgivelsen af en ny stabil version, inkluderer Stretch hundreder af nye pakker og opdateringer til tusinder af andre.

Da Debian driver en stor procentdel af webservere over hele verden, forklarer vi i denne artikel, hvordan du installerer LAMP-stakken i Debian 9 Stretch.

Dette giver systemadministratorer mulighed for at oprette helt nye webservere oven på Stretch ved hjælp af de seneste opdateringer til distributionens officielle arkiver. Det antages, at du har opgraderet fra Jessie.

Installation af LAMP i Debian 9 Stretch

“M” i LAMP står for MariaDB eller MySQL, databaseserveren til stakken. Afhængigt af dit valg kan du installere databaseserveren og de andre komponenter (Apache-webserveren og PHP) som følger.

# 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

Som en personlig præference vil jeg bruge MariaDB i resten af denne artikel.

Når installationen er afsluttet, så lad os sikre os, at alle tjenester kører. I så fald følgende kommandoer.

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

skal vende tilbage aktivt for begge. Ellers skal du starte begge tjenester manuelt:

# systemctl start {apache2,mariadb}

Endelig, inden vi fortsætter, lad os bruge mysql_secure_installation til at opsætte adgangskoden til databasens rodkonto. Hvis du ikke ved, hvordan du gør dette, kan du henvise til trin 4 i Sådan installeres MariaDB 10 på Debian og Ubuntu.

Test af LAMP på Debian 9 Stretch

Til at begynde med skal vi oprette og udfylde en eksempeldatabase. Dernæst bruger vi et grundlæggende PHP-script til at hente et sæt poster fra databasen i JSON-format.

Endelig vil vi bruge Firefox's udviklerværktøjer til at verificere den version af Apache, der bruges. Selvom vi kunne finde ud af de samme oplysninger med.

# apache2 -v

grunden til, at vi bruger et script, er at sikre, at alle stakkens komponenter fungerer korrekt, når de er samlet.

Lad os gå ind i MariaDB-prompten med følgende kommando.

# mysql -u root -p

og indtaste den adgangskode, der blev valgt i det foregående afsnit.

Nu opretter vi en database med navnet LibraryDB som følger:

MariaDB [(none)]> CREATE DATABASE LibraryDB;

og tilføj to tabeller med navnet AuthorsTBL og 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)
);

Af sikkerhedsmæssige årsager opretter vi en særlig konto for at få adgang til vores database:

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

Det sidste trin består nu i at udfylde tabellerne med forfattere og bøger:

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');

Følgende PHP-script opretter først forbindelse til databasen og henter de poster, der matcher forespørgslen. Hvis der opstår en fejl, vises en beskrivende besked for at give os et tip om, hvad der er galt.

Gem følgende script som booksandauthors.php under/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);
?>

Skift ejerskab til www-data, og tilføj de relevante tilladelser:

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

Endelig skal du åbne en webbrowser og pege den på den URL, hvor scriptet befinder sig.

http://192.168.0.35/booksandauthors.php

Det er det! I denne artikel har vi forklaret, hvordan du installerer og tester LAMP-stakken på Debian 9. Hvis du har spørgsmål eller kommentarer til denne artikel, tøv ikke med at fortælle os ved hjælp af nedenstående formular.