웹사이트 검색

Debian 11/10/9에 LAMP 스택을 설치하는 방법


(2021년 8월 14일), Debian 프로젝트는 코드명 Bullseye라는 새로운 안정 버전(Debian 11)의 출시를 발표했습니다.

이번 릴리스에서 잘 알려지고 널리 사용되는 Debian 10 Buster는 이전 안정 저장소를 지정하는 오래된 안정 상태를 얻었습니다. 새로운 안정 버전이 출시될 때 항상 그렇듯이 Bullseye에는 수백 개의 새로운 패키지와 수천 개의 다른 패키지에 대한 업데이트가 포함되어 있습니다.

Debian은 전 세계의 많은 웹 서버를 지원하므로 이 문서에서는 Debian 11에 LAMP 스택을 설치하는 방법과 이전 Debian 10에서도 작동하는 방법을 설명합니다. 및 Debian 9 릴리스.

이를 통해 시스템 관리자는 배포 공식 저장소에 대한 최신 업데이트를 사용하여 Bullseye 위에 새로운 웹 서버를 설정할 수 있습니다. 베어메탈, 가상 머신, VPS에 Debian 11 최소 서버를 설치했거나 Debian 10에서 Debian 11로 업그레이드했다고 가정합니다.

데비안에 LAMP 설치하기

LAMP의 “M”은 스택용 데이터베이스 서버인 MariaDB 또는 MySQL을 나타냅니다. 선택 사항에 따라 데이터베이스 서버와 기타 구성 요소(Apache 웹 서버 및 PHP)를 다음과 같이 설치할 수 있습니다.

Debian에 MariaDB와 함께 LAMP 설치

apt update && apt install apache2 mariadb-server mariadb-client mariadb-common php php-mysqli

Debian에 MySQL과 함께 LAMP 설치

apt update && apt install apache2 mysql-server mysql-client mysql-common php php-mysqli

개인적 선호에 따라 이 글의 나머지 부분에서는 MariaDB를 사용하겠습니다.

설치가 완료되면 모든 서비스가 실행되고 있는지 확인하겠습니다. 그렇다면 다음 명령을 실행하세요.

systemctl is-active apache2
systemctl is-active mariadb

두 가지 모두에 대해 활성 상태를 반환해야 합니다. 그렇지 않으면 두 서비스를 모두 수동으로 시작합니다.

systemctl start {apache2,mariadb}

데비안에서 MariaDB 보호

마지막으로, 계속하기 전에 mysql_secure_installation을 사용하여 데이터베이스 루트 계정의 비밀번호를 설정하고, 익명 사용자를 제거하고, 원격으로 루트 로그인을 허용하지 않고, 테스트 데이터베이스를 제거해 보겠습니다.

mysql_secure_installation

데비안에서 LAMP 테스트하기

시작하려면 샘플 데이터베이스를 만들고 채우겠습니다. 다음으로 기본 PHP 스크립트를 사용하여 데이터베이스에서 JSON 형식의 레코드 세트를 검색합니다.

마지막으로 Firefox의 개발자 도구를 사용하여 사용 중인 Apache 버전을 확인합니다. 우리는 이와 동일한 정보를 찾을 수 있지만.

apache2 -v

Server version: Apache/2.4.51 (Debian)
Server built:   2021-10-07T17:49:44

우리가 스크립트를 사용하는 이유는 스택의 모든 구성 요소가 함께 묶였을 때 제대로 작동하는지 확인하기 위한 것입니다.

데이터베이스 생성 및 채우기

다음 명령으로 MariaDB 프롬프트를 입력해 보겠습니다.

mysql -u root -p

이전 섹션에서 선택한 비밀번호를 입력하세요.

이제 다음과 같이 LibraryDB라는 데이터베이스를 생성하겠습니다.

MariaDB [(none)]> CREATE DATABASE LibraryDB;

AuthorsTBLBooksTBL이라는 두 개의 테이블을 추가합니다.

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

보안상의 이유로 당사는 데이터베이스에 접근하기 위한 특별 계정을 생성합니다:

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

이제 마지막 단계는 저자도서로 테이블을 채우는 것입니다.

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

PHP 스크립트를 사용하여 데이터베이스 연결 테스트

다음 PHP 스크립트는 먼저 데이터베이스에 연결하고 쿼리와 일치하는 레코드를 검색합니다. 오류가 발생하면 무엇이 잘못되었는지에 대한 힌트를 제공하기 위해 설명 메시지가 표시됩니다.

다음 스크립트를 /var/www/html 아래에 booksandauthors.php로 저장합니다.

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

소유권을 www-data로 변경하고 적절한 권한을 추가합니다.

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

마지막으로 웹 브라우저를 열고 스크립트가 있는 URL을 지정합니다.

http://192.168.0.35/booksandauthors.php

그게 다야! 이 문서에서는 Debian 11에서 LAMP 스택을 설치하고 테스트하는 방법을 설명했습니다. 이 기사에 대한 질문이나 의견이 있는 경우 주저하지 말고 아래 양식을 사용하여 알려주십시오.