Ubuntu 16.04にLinux、Apache、MySQL、PHP(LAMP)スタックをインストールする方法

前書き

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

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

前提条件

このガイドを開始する前に、サーバーにsudo特権が設定されたroot以外のユーザーアカウントを用意しておく必要があります。 initial server setup for Ubuntu 16.04のステップ1〜4を完了することで、これを行う方法を学ぶことができます。

ステップ1:Apacheをインストールしてファイアウォールで許可する

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

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

目的のために、次のコマンドを入力して開始できます。

sudo apt-get update
sudo apt-get install apache2

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

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

グローバルServerNameを設定して構文警告を抑制する

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

sudo apache2ctl configtest
OutputAH00558: 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

テキスト編集でメイン構成ファイルを開きます。

sudo nano /etc/apache2/apache2.conf

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

Note

[.note]#サーバーのIPアドレスがわからない場合は、how to find your server’s public IP addressのセクションにスキップして見つけてください。

/etc/apache2/apache2.conf

. . .
ServerName server_domain_or_IP

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

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

sudo apache2ctl configtest

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

OutputSyntax OK

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

sudo systemctl restart apache2

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

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

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

sudo ufw app list
OutputAvailable applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

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

sudo ufw app info "Apache Full"
OutputProfile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
  80,443/tcp

このプロファイルの着信トラフィックを許可:

sudo ufw allow in "Apache Full"

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

http://your_server_IP_address

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

Ubuntu 16.04 Apache default

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

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

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

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

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

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

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

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

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

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

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

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

sudo apt-get install mysql-server

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

繰り返しますが、インストールされるパッケージのリストと、それらが占有するディスク容量が表示されます。 続行するには、Yを入力してください。

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

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

mysql_secure_installation

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

[.warning]#Warning:この機能を有効にすることは、判断の呼びかけのようなものです。 有効にすると、指定された基準に一致しないパスワードが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

パスワード検証を有効にした場合、既存のルートパスワードのパスワード強度が表示され、そのパスワードを変更するかどうかを尋ねられます。 現在のパスワードに問題がない場合は、プロンプトで「いいえ」に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キーを押す必要があります。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールがロードされ、MySQLが行った変更がすぐに反映されます。

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

ステップ3:PHPをインストールする

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

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

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ファイルを開きます。

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

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

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


    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

上で強調表示されているPHPインデックスファイルを、次のようにDirectoryIndex指定の後の最初の位置に移動します。

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


    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

終了したら、Ctrl-Xを押してファイルを保存して閉じます。 Yと入力して保存を確認してから、Enterを押してファイルの保存場所を確認する必要があります。

この後、変更を認識させるためにApache Webサーバーを再起動する必要があります。 これを行うには、次のように入力します。

sudo systemctl restart apache2

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

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にパイプします。これは、他のコマンドの出力をスクロールできるページャーです。

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]
…
:

各モジュールの機能に関する詳細情報を取得するには、インターネットを検索するか、次のように入力してパッケージの長い説明を見ることができます。

apt-cache show package_name

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

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

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が必要であると判断した場合は、次のように入力できます。

sudo apt-get install php-cli

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

sudo apt-get install package1 package2 ...

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

ステップ4:WebサーバーでPHP処理をテストする

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

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

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

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

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

info.php

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

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

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

http://your_server_IP_address/info.php

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

Ubuntu 16.04 default PHP info

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

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

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

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

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

結論

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

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

その他の一般的なオプションは次のとおりです。

Note:上記のリンクを16.04ドキュメントに更新します。

Related