前書き

「LAMP」スタックは、サーバーが動的なWebサイトやWebアプリをホストできるようにするために通常一緒にインストールされるオープンソースソフトウェアのグループです。 この用語は、実際には A pache Webサーバーを使用する L inuxオペレーティングシステムを表す頭字語です。 サイトデータは M ariaDBデータベースに保存され、動的コンテンツは P HPによって処理されます。

このガイドでは、Debian 9サーバーにLAMPスタックをインストールします。

前提条件

このチュートリアルを完了するには、ルート以外の `+ sudo +`対応のユーザーアカウントと基本的なファイアウォールを備えたDebian 9サーバーが必要です。 これはhttps://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-9[Debian 9の初期サーバーセットアップガイド]を使用して設定できます。

手順1-Apacheのインストールとファイアウォールの更新

Apache Webサーバーは、世界で最も人気のあるWebサーバーの1つです。 十分に文書化されており、ウェブの歴史の大半で広く使用されているため、ウェブサイトをホストするためのデフォルトの選択肢として最適です。

Debianのパッケージマネージャー、 `+ apt +`を使用してApacheをインストールします。

sudo apt update
sudo apt install apache2

これは「+ sudo +」コマンドであるため、これらの操作はルート権限で実行されます。 意図を確認するために、通常のユーザーのパスワードを求められます。

パスワードを入力すると、「+ apt 」はインストールする予定のパッケージとそれらが占有する追加ディスク容量を通知します。 ` Y `を押して ` ENTER +`を押して続行すると、インストールが続行されます。

次に、UFWファイアウォールをインストールして有効にしてサーバーの初期セットアップ手順を実行したと仮定して、ファイアウォールがHTTPおよびHTTPSトラフィックを許可していることを確認します。

Debian 9にインストールすると、UFWには、ファイアウォール設定の調整に使用できるアプリプロファイルがロードされます。 次を実行して、アプリケーションプロファイルの完全なリストを表示します。

sudo ufw app list

`+ WWW +`プロファイルは、Webサーバーが使用するポートを管理するために使用されます。

OutputAvailable applications:
. . .
 WWW
 WWW Cache
 WWW Full
 WWW Secure
. . .

「+ WWW Full 」プロファイルを調べると、ポート「+80」および「443」へのトラフィックが有効になっていることがわかります。

sudo ufw app info "WWW Full"
OutputProfile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)

Ports:
 ,

このプロファイルの着信HTTPおよびHTTPSトラフィックを許可します。

sudo ufw allow in “WWW Full”

ウェブブラウザでサーバーのパブリックIPアドレスにアクセスすると、すぐにスポットチェックを行って、すべてが計画どおりに進んだことを確認できます。

http://

デフォルトのDebian 9 Apache Webページが表示されます。これは、情報提供およびテスト目的であります。 これは次のようになります。

image:http://assets.digitalocean.com/how-to-install-lamp-debian-9/small_apache_default_debian9.png [Debian 9 Apache default]

このページが表示される場合、Webサーバーは正しくインストールされており、ファイアウォールを介してアクセスできます。

サーバーのパブリックIPアドレスがわからない場合は、いくつかの方法で見つけることができます。 通常、これはSSH経由でサーバーに接続するために使用するアドレスです。

コマンドラインからこれを行うには、いくつかの異なる方法があります。 まず、次のように入力して、 `+ iproute2 +`ツールを使用してIPアドレスを取得できます。

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

これにより、2〜3行戻ります。 これらはすべて正しいアドレスですが、お使いのコンピューターはそのうちの1つしか使用できない可能性があるため、お気軽に各アドレスを試してください。

別の方法は、 `+ curl +`ユーティリティを使用して外部のパーティに連絡し、_it_がサーバーをどのように見ているかを伝えることです。 これは、特定のサーバーにあなたのIPアドレスを尋ねることによって行われます:

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

IPアドレスの取得に使用する方法に関係なく、Webブラウザのアドレスバーに入力してデフォルトのApacheページを表示します。

ステップ2-MariaDBのインストール

Webサーバーが稼働しているので、MariaDBをインストールします。 MariaDBはデータベース管理システムです。 基本的に、サイトが情報を保存できるデータベースを整理し、アクセスを提供します。

MariaDBは、コミュニティが構築したMySQLのフォークです。 Debian 9では、デフォルトのMySQLサーバーはMariaDB 10.1であり、通常MySQLのインストールに使用される `+ mysql-server `パッケージは、MariaDBを実際にインストールする移行パッケージです。 ただし、プログラムの実際のパッケージ ` mariadb-server`を使用してMariaDBをインストールすることをお勧めします。

繰り返しになりますが、 `+ apt +`を使用してこのソフトウェアを取得してインストールします。

sudo apt install mariadb-server

このコマンドも、インストールされるパッケージのリストと、それらが占有するディスク容量を表示します。 続行するには「+ Y +」を入力します。

インストールが完了したら、MariaDBにプリインストールされている簡単なセキュリティスクリプトを実行します。これにより、安全でないデフォルト設定が削除され、データベースシステムへのアクセスがロックダウンされます。 次を実行して、インタラクティブスクリプトを開始します。

sudo mysql_secure_installation

これにより、一連のプロンプトが表示され、MariaDBインストールのセキュリティオプションを変更できます。 最初のプロンプトでは、現在のデータベースの* root パスワードを入力するよう求められます。 これは、MariaDBの管理アカウントであり、権限が増加しています。 サーバー自体の root *アカウントに似ていると考えてください(ただし、現在構成しているアカウントはMariaDB固有のアカウントです)。 MariaDBをインストールしたばかりで、まだ構成を変更していないため、このパスワードは空白になるため、プロンプトで「+ ENTER +」を押すだけです。

次のプロンプトでは、データベースの* root パスワードを設定するかどうかを尋ねられます。 「+ N 」と入力し、「 ENTER +」を押します。 Debianでは、MariaDBの root *アカウントは自動化されたシステムメンテナンスと密接に結びついているため、そのアカウントに設定された認証方法を変更しないでください。 これを行うと、管理アカウントへのアクセスを削除することにより、パッケージの更新がデータベースシステムを破壊する可能性があります。 ソケット認証がユースケースに適さない場合、パスワードアクセス用の追加の管理アカウントをオプションで設定する方法については後で説明します。

そこから、「+ Y 」を押してから「 ENTER +」を押して、後続のすべての質問のデフォルトを受け入れることができます。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモート* root *ログインが無効になり、MariaDBが行った変更がすぐに反映されるようにこれらの新しいルールがロードされます。

Debianシステムへの新規インストールでは、* root * MariaDBユーザーは、パスワードではなくデフォルトで `+ unix_socket +`プラグインを使用して認証するように設定されています。 これにより、多くの場合、セキュリティと使いやすさが向上しますが、外部プログラム(phpMyAdminなど)の管理者権限を許可する必要がある場合にも事態が複雑になります。

サーバーは、ログのローテーションやサーバーの起動と停止などのタスクに* root アカウントを使用するため、 root *アカウントの認証詳細を変更しないことをお勧めします。 `+ / etc / mysql / debian.cnf +`のアカウント認証情報の変更は最初は機能するかもしれませんが、パッケージの更新はそれらの変更を上書きする可能性があります。 * root *アカウントを変更する代わりに、パッケージ管理者は、パスワードベースのアクセスを設定する必要がある場合は、個別の管理アカウントを作成することをお勧めします。

そのためには、* root *アカウントと同じ機能を持つが、パスワード認証用に設定された「+ admin +」という新しいアカウントを作成します。 これを行うには、ターミナルからMariaDBプロンプトを開きます。

sudo mariadb

これで、* root *特権とパスワードベースのアクセス権を持つ新しいユーザーを作成できます。 ユーザー名とパスワードを好みに合わせて変更します。

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

特権をフラッシュして、それらが保存され、現在のセッションで使用できることを確認します。

FLUSH PRIVILEGES;

これに続いて、MariaDBシェルを終了します。

exit

これで、新しい管理ユーザーとしてデータベースにアクセスするときはいつでも、次のコマンドを使用して設定したパスワードでそのユーザーとして認証する必要があります。

mariadb -u  -p

この時点で、データベースシステムがセットアップされ、LAMPスタックの最終コンポーネントであるPHPのインストールに進むことができます。

ステップ3-PHPのインストール

PHPは、動的コンテンツを表示するためのコードを処理するセットアップのコンポーネントです。 スクリプトを実行し、MariaDBデータベースに接続して情報を取得し、処理されたコンテンツをWebサーバーに渡して表示できます。

もう一度、 `+ apt +`システムを活用してPHPをインストールします。 さらに、PHPコードをApacheサーバーで実行してMariaDBデータベースと通信できるように、今回はいくつかのヘルパーパッケージを含めます。

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

これにより、PHPが問題なくインストールされます。 これをすぐにテストします。

ほとんどの場合、ディレクトリが要求されたときにApacheがファイルを提供する方法を変更する必要があります。 現在、ユーザーがサーバーにディレクトリを要求すると、Apacheは最初に `+ index.html `というファイルを探します。 他のファイルよりもPHPファイルを優先するようWebサーバーに指示するため、Apacheが最初に ` index.php +`ファイルを探すようにします。

これを行うには、次のコマンドを入力して、root権限でテキストエディターで `+ dir.conf`ファイルを開きます。

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

これは次のようになります。

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
   DirectoryIndex index.html index.cgi index.pl  index.xhtml index.htm
</IfModule>

PHPインデックスファイル(上で強調表示)を、次のように `+ DirectoryIndex +`仕様の後の最初の位置に移動します。

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
   DirectoryIndex  index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

終了したら、 `+ CTRL + X `を押してファイルを保存して閉じます。 「 Y 」と入力して保存を確認し、「 ENTER +」を押してファイルの保存場所を確認します。

この後、変更が認識されるようにApache Webサーバーを再起動します。 これを入力してこれを行います。

sudo systemctl restart apache2

`+ systemctl `を使用して ` apache2 +`サービスのステータスを確認することもできます:

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

PHPの機能を強化するには、いくつかの追加モジュールをインストールするオプションがあります。 PHPモジュールおよびライブラリで利用可能なオプションを確認するには、 `+ apt search `の結果を、他のコマンドの出力をスクロールできるページャーである ` less +`にパイプします。

apt search php- | less

矢印キーを使用して上下にスクロールし、 `+ Q +`を押して終了します。

結果は、インストール可能なすべてのオプションコンポーネントです。 それぞれの簡単な説明が表示されます:

OutputSorting...
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
…
:

各モジュールの機能の詳細については、それらの詳細についてインターネットで検索できます。 または、次のように入力して、パッケージの長い説明を確認します。

apt show

多くの出力があり、モジュールが提供する機能のより長い説明がある `+ Description +`と呼ばれる1つのフィールドがあります。

たとえば、 `+ php-cli +`モジュールが何をするかを調べるには、次のように入力できます。

apt show php-cli

大量の他の情報とともに、次のようなものが見つかります。

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).
…

調査した後、パッケージをインストールすることに決めた場合は、他のソフトウェアで行っているように `+ apt install +`コマンドを使用してインストールできます。

`+ php-cli +`が必要なものであると判断した場合は、次のように入力できます。

sudo apt install php-cli

複数のモジュールをインストールしたい場合は、次のように、 `+ apt install +`コマンドの後にスペースで区切って各モジュールをリストすることでそれを行うことができます:

sudo apt install

この時点で、LAMPスタックがインストールおよび構成されます。 ただし、さらに変更を行ったり、アプリケーションをデプロイする前に、対処すべき問題がある場合に備えて、PHP構成を事前にテストしておくと役立ちます。

ステップ4-WebサーバーでのPHP処理のテスト

システムがPHP用に適切に設定されていることをテストするには、 `+ info.php +`という非常に基本的なPHPスクリプトを作成します。 Apacheがこのファイルを見つけて正しく提供するには、_web root_という非常に特定のディレクトリに保存する必要があります。

Debian 9では、このディレクトリは `+ / var / www / html / +`にあります。 次を実行して、その場所にファイルを作成します。

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

これにより、空のファイルが開きます。 有効なPHPコードである次のテキストをファイル内に追加します。

/var/www/html/info.php

<?php
phpinfo();
?>

終了したら、ファイルを保存して閉じます。

これで、WebサーバーがこのPHPスクリプトによって生成されたコンテンツを正しく表示できるかどうかをテストできます。 これを試すには、Webブラウザーでこのページにアクセスしてください。 サーバーのパブリックIPアドレスが再び必要になります。

訪問するアドレスは次のとおりです。

http:///info.php

訪れるページは次のようになります。

image:https://assets.digitalocean.com/how-to-install-lamp-debian-9/small_php_info_debian9.png [Debian 9のデフォルトPHP情報]

このページは、PHPの観点から見たサーバーに関する基本的な情報を提供します。 デバッグや、設定が正しく適用されていることを確認するのに役立ちます。

ブラウザでこのページが表示される場合、PHPは期待どおりに機能しています。

実際にサーバーに関する情報を許可されていないユーザーに提供する可能性があるため、このテスト後にこのファイルを削除することをお勧めします。 これを行うには、次のコマンドを実行します。

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

後で情報に再度アクセスする必要がある場合は、いつでもこのページを再作成できます。

結論

LAMPスタックがインストールされたので、次に何をするかについて多くの選択肢があります。 基本的に、サーバーにほとんどの種類のWebサイトとWebソフトウェアをインストールできるプラットフォームをインストールしました。