序章

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

このガイドでは、Ubuntu16.04サーバーにLAMPスタックをインストールします。 Ubuntuは最初の要件であるLinuxオペレーティングシステムを満たします。

前提条件

このガイドを開始する前に、サーバーにsudo権限が設定されたroot以外のユーザーアカウントを用意しておく必要があります。 これを行う方法を学ぶには、Ubuntu 16.04チュートリアルの初期サーバーセットアップの手順1〜4を完了します。

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

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

Ubuntuのパッケージマネージャーaptを使用してApacheを簡単にインストールできます。 パッケージマネージャーを使用すると、Ubuntuが管理するリポジトリからほとんどのソフトウェアを簡単にインストールできます。 apt の使用方法について詳しくは、こちらをご覧ください。

ここでは、次のコマンドを入力して開始できます。

  1. sudo apt-get update
  2. sudo apt-get install apache2

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

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

構文警告を抑制するためのグローバルServerNameの設定

次に、/etc/apache2/apache2.confファイルに1行追加して、警告メッセージを抑制します。 無害ですが、ServerNameをグローバルに設定しないと、Apache構成で構文エラーをチェックするときに次の警告が表示されます。

  1. sudo apache2ctl configtest
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

テキストエディットでメイン設定ファイルを開きます。

  1. sudo nano /etc/apache2/apache2.conf

内部のファイルの下部に、プライマリドメイン名を指すServerNameディレクティブを追加します。 サーバーに関連付けられたドメイン名がない場合は、サーバーのパブリックIPアドレスを使用できます。

注:サーバーのIPアドレスがわからない場合は、サーバーのパブリックIPアドレスの検索方法のセクションにスキップして検索してください。

/etc/apache2/apache2.conf
. . .
ServerName server_domain_or_IP

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

次に、次のように入力して構文エラーを確認します。

  1. sudo apache2ctl configtest

グローバルServerNameディレクティブを追加したので、表示されるのは次のとおりです。

Output
Syntax OK

Apacheを再起動して、変更を実装します。

  1. sudo systemctl restart apache2

これで、ファイアウォールの調整を開始できます。

Webトラフィックを許可するようにファイアウォールを調整する

次に、サーバーの初期設定手順に従ってUFWファイアウォールを有効にしたと仮定して、ファイアウォールでHTTPおよびHTTPSトラフィックが許可されていることを確認します。 次のように、UFWにApacheのアプリケーションプロファイルがあることを確認できます。

  1. sudo ufw app list
Output
Available applications: Apache Apache Full Apache Secure OpenSSH

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

  1. sudo ufw app info "Apache Full"
Output
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp

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

  1. sudo ufw allow in "Apache Full"

WebブラウザでサーバーのパブリックIPアドレスにアクセスすると、すぐにスポットチェックを実行して、すべてが計画どおりに行われたことを確認できます(この情報がない場合は、次の見出しの下にある注を参照して、パブリックIPアドレスを確認してください。すでに):

http://your_server_IP_address

情報提供とテストの目的で存在するデフォルトのUbuntu16.04ApacheWebページが表示されます。 次のようになります。

Ubuntu 16.04 Apache default

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

サーバーのパブリックIPアドレスを見つける

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

コマンドラインから、これをいくつかの方法で見つけることができます。 まず、iproute2ツールを使用して、次のように入力して住所を取得できます。

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

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

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

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

IPアドレスの取得に使用する方法に関係なく、Webブラウザのアドレスバーに入力してサーバーにアクセスできます。

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

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

ここでも、aptを使用して、ソフトウェアを取得してインストールできます。 今回は、コンポーネントを相互に通信させるのに役立つ他の「ヘルパー」パッケージもインストールします。

  1. sudo apt-get install mysql-server

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

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

インストール中に、サーバーはMySQLの「root」ユーザーのパスワードを選択して確認するように求めます。 これは、特権が増加したMySQLの管理アカウントです。 サーバー自体のrootアカウントに似ていると考えてください(ただし、現在構成しているのはMySQL固有のアカウントです)。 これが強力で一意のパスワードであることを確認し、空白のままにしないでください。

インストールが完了したら、いくつかの危険なデフォルトを削除し、データベースシステムへのアクセスを少しロックダウンする簡単なセキュリティスクリプトを実行します。 次のコマンドを実行して、インタラクティブスクリプトを開始します。

  1. mysql_secure_installation

MySQLルートアカウントに設定したパスワードを入力するように求められます。 次に、VALIDATE PASSWORD PLUGINを構成するかどうかを尋ねられます。

警告:この機能を有効にすることは、判断の呼びかけのようなものです。 有効にすると、指定された基準に一致しないパスワードがMySQLによって拒否され、エラーが発生します。 これは、phpMyAdmin用のUbuntuパッケージなど、MySQLユーザー資格情報を自動的に構成するソフトウェアと組み合わせて弱いパスワードを使用する場合に問題を引き起こします。 検証を無効のままにしておくのは安全ですが、データベースの資格情報には常に強力で一意のパスワードを使用する必要があります。

y と答えて「はい」と答えるか、他の何かを有効にせずに続行します。

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

パスワード検証のレベルを選択するように求められます。 2 と入力すると、最強のレベルで、数字、大文字と小文字、特殊文字を含まない、またはに基づくパスワードを設定しようとすると、エラーが発生することに注意してください。一般的な辞書の単語。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

パスワード検証を有効にした場合は、既存のルートパスワードのパスワード強度が表示され、そのパスワードを変更するかどうかを尋ねられます。 現在のパスワードに満足している場合は、プロンプトで「no」にnと入力します。

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

残りの質問については、 Y を押し、各プロンプトでEnterキーを押す必要があります。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートrootログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。

この時点で、データベースシステムがセットアップされ、次に進むことができます。

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

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

aptシステムを再び活用してコンポーネントをインストールできます。 PHPコードをApacheサーバーで実行し、MySQLデータベースと通信できるように、いくつかのヘルパーパッケージも含める予定です。

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

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

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

これを行うには、次のコマンドを入力して、root権限を持つテキストエディタで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

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

  1. sudo systemctl status apache2
Sample Output
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago Docs: man:systemd-sysv-generator(8) Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) Tasks: 6 (limit: 512) CGroup: /system.slice/apache2.service ├─13623 /usr/sbin/apache2 -k start ├─13626 /usr/sbin/apache2 -k start ├─13627 /usr/sbin/apache2 -k start ├─13628 /usr/sbin/apache2 -k start ├─13629 /usr/sbin/apache2 -k start └─13630 /usr/sbin/apache2 -k start Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server. Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server... Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2 Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: * Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

PHPモジュールをインストールする

PHPの機能を強化するために、オプションでいくつかの追加モジュールをインストールできます。

PHPモジュールとライブラリで使用可能なオプションを確認するには、apt-cache searchの結果をlessにパイプします。これは、他のコマンドの出力をスクロールできるページャーです。

  1. apt-cache search php- | less

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

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

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

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

  1. apt-cache show package_name

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

たとえば、php-cliモジュールの機能を確認するには、次のように入力します。

  1. apt-cache show php-cli

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

Output
… Description-en: 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-get installコマンドを使用してインストールできます。

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

  1. sudo apt-get install php-cli

複数のモジュールをインストールする場合は、次のようにapt-get installコマンドに従って、スペースで区切って各モジュールを一覧表示します。

  1. sudo apt-get install package1 package2 ...

この時点で、LAMPスタックがインストールおよび構成されています。 ただし、PHPをテストする必要があります。

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

システムがPHP用に適切に構成されていることをテストするために、非常に基本的なPHPスクリプトを作成できます。

このスクリプトをinfo.phpと呼びます。 Apacheがファイルを見つけて正しく提供するには、 webrootと呼ばれる非常に特定のディレクトリに保存する必要があります。

Ubuntu 16.04では、このディレクトリは/var/www/html/にあります。 次のように入力すると、その場所にファイルを作成できます。

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

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

info.php
<?php
phpinfo();
?>

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

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

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

http://your_server_IP_address/info.php

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

Ubuntu 16.04 default PHP info

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

これが成功した場合、PHPは期待どおりに機能しています。

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

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

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

結論

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

次のステップとして、HTTPS経由でサービスを提供することにより、Webサーバーへの接続が保護されていることを確認する必要があります。 ここでの最も簡単なオプションは、 Let’s Encrypt を使用して、無料のTLS/SSL証明書でサイトを保護することです。

その他の人気のあるオプションは次のとおりです。