Debian 9にLAMP(Linux、Apache、MariaDB、またはMySQLとPHP)スタックをインストールします


今週の初め(2017年6月17日)、Debianプロジェクトは、コードネームStretchという新しい安定バージョン(Debian 9)の提供を発表しました。

このリリースで、有名で広く使用されているDebian 8 Jessieは、以前の安定したリポジトリを指定するold-stableステータスを取得しました。新しい安定バージョンのリリースで常に発生するように、Stretchには何百もの新しいパッケージと、何千もの他のパッケージへのアップデートが含まれています。

Debianは世界中のWebサーバーの大部分に電力を供給しているため、この記事では、Debian 9StretchにLAMPスタックをインストールする方法について説明します。

これにより、システム管理者は、ディストリビューションの公式リポジトリの最新の更新を使用して、Stretchの上に新しいWebサーバーをセットアップできます。ベアメタル、仮想マシン、またはVPSにDebian 9をインストールしたか、Jessieからアップグレードしたことを前提としています。

Debian 9StretchへのLAMPのインストール

LAMPの「M」は、スタックのデータベースサーバーであるMariaDBまたはMySQLを表します。選択に応じて、データベースサーバーとその他のコンポーネント(Apache WebサーバーとPHP)を次のようにインストールできます。

# 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

個人的な好みとして、この記事の残りの部分ではMariaDBを使用します。

インストールが完了したら、すべてのサービスが実行されていることを確認しましょう。その場合、次のコマンド。

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

両方でアクティブに戻る必要があります。それ以外の場合は、両方のサービスを手動で開始します。

# systemctl start {apache2,mariadb}

最後に、先に進む前に、mysql_secure_installationを使用してデータベースrootアカウントのパスワードを設定しましょう。これを行う方法がわからない場合は、DebianおよびUbuntuにMariaDB10をインストールする方法のステップ4を参照してください。

Debian 9StretchでのLAMPのテスト

まず、サンプルデータベースを作成してデータを入力します。次に、基本的なPHPスクリプトを使用して、データベースから一連のレコードをJSON形式で取得します。

最後に、Firefoxの開発者ツールを使用して、使用されているApacheのバージョンを確認します。これと同じ情報をで見つけることができましたが。

# apache2 -v

スクリプトを使用する理由は、スタックのすべてのコンポーネントがバンドルされたときに正しく機能していることを確認するためです。

次のコマンドでMariaDBプロンプトを入力してみましょう。

# mysql -u root -p

前のセクションで選択したパスワードを入力します。

次に、LibraryDBという名前のデータベースを次のように作成します。

MariaDB [(none)]> CREATE DATABASE LibraryDB;

AuthorsTBLとBooksTBLという名前の2つのテーブルを追加します。

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スクリプトは、最初にデータベースに接続し、クエリに一致するレコードを取得します。エラーが発生した場合は、何が問題なのかを示唆する説明メッセージが表示されます。

次のスクリプトをbooksandauthors.phpとして/ 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);
?>

所有権をwww-dataに変更し、適切な権限を追加します。

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

最後に、Webブラウザーを開き、スクリプトが存在するURLをポイントします。

http://192.168.0.35/booksandauthors.php

それでおしまい!この記事では、Debian 9にLAMPスタックをインストールしてテストする方法について説明しました。この記事について質問やコメントがある場合は、以下のフォームを使用して遠慮なくお知らせください。