序章

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

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

前提条件

このチュートリアルを完了するには、ルート以外のDebian9サーバーが必要です。 sudo-有効なユーザーアカウントと基本的なファイアウォール。 これは、Debian9初期サーバーセットアップガイドを使用して構成できます。

ステップ1—Apacheのインストールとファイアウォールの更新

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

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

  1. sudo apt update
  2. sudo apt install apache2

これは sudo コマンドの場合、これらの操作はroot権限で実行されます。 それはあなたの意図を確認するためにあなたの通常のユーザーのパスワードを尋ねます。

パスワードを入力したら、 apt インストールする予定のパッケージと、それらが使用する追加のディスク容量が表示されます。 プレス Y とヒット ENTER 続行すると、インストールが続行されます。

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

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

  1. sudo ufw app list

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

Output
Available applications: . . . WWW WWW Cache WWW Full WWW Secure . . .

あなたが検査する場合 WWW Full プロファイル、それはそれがポートへのトラフィックを可能にすることを示しています 80443:

  1. sudo ufw app info "WWW Full"
Output
Profile: WWW Full Title: Web Server (HTTP,HTTPS) Description: Web Server (HTTP,HTTPS) Ports: 80,443/tcp

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

  1. sudo ufw allow in "WWW Full"

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

http://your_server_ip

情報提供とテストの目的でそこにあるデフォルトのDebian9ApacheWebページが表示されます。 次のようになります。

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

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

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

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

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

別の方法は、 curl itがサーバーをどのように認識しているかを外部の関係者に問い合わせるユーティリティ。 これは、特定のサーバーにIPアドレスを尋ねることによって行われます。

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

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

ステップ2—MariaDBをインストールする

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

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

繰り返しますが、 apt このソフトウェアを入手してインストールするには:

  1. sudo apt install mariadb-server

:この場合、実行する必要はありません sudo apt update コマンドの前。 これは、Apacheをインストールするために上記のコマンドで最近実行したためであり、コンピューターのパッケージインデックスはすでに最新である必要があります。

このコマンドも、インストールされるパッケージのリストと、それらが使用するディスク容量を表示します。 入る Y 続ける。

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

  1. sudo mysql_secure_installation

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

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

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

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

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

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

  1. sudo mariadb

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

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

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

  1. FLUSH PRIVILEGES;

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

  1. exit

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

  1. mariadb -u admin -p

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

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

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

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

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

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

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

これを行うには、このコマンドを入力して、 dir.conf ルート権限を持つテキストエディタのファイル:

  1. 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.php index.xhtml index.htm
</IfModule>

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

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

終了したら、を押してファイルを保存して閉じます CTRL+X. 次のように入力して保存を確認します Y そしてヒット ENTER ファイルの保存場所を確認します。

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

  1. sudo systemctl restart apache2

の状態を確認することもできます apache2 を使用したサービス systemctl:

  1. 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、他のコマンドの出力をスクロールできるページャー:

  1. apt search php- | less

矢印キーを使用して上下にスクロールし、を押します Q やめること。

結果は、インストールできるすべてのオプションのコンポーネントです。 それぞれについて簡単に説明します。

Output
Sorting... 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 … :

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

  1. apt show package_name

たくさんの出力があり、1つのフィールドが Description これには、モジュールが提供する機能のより長い説明があります。

たとえば、何を見つけるために php-cli モジュールはそうします、あなたはこれをタイプすることができます:

  1. 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 必要なものです。次のように入力できます。

  1. sudo apt install php-cli

複数のモジュールをインストールする場合は、次のようにスペースで区切って各モジュールをリストすることでインストールできます。 apt install 次のようなコマンド:

  1. sudo apt install package1 package2 ...

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

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

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

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

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

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

/var/www/html/info.php
<?php
phpinfo();
?>

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

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

訪問したいアドレスは次のとおりです。

http://your_server_ip/info.php

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

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

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

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

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

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

結論

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