前書き

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

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

前提条件

このガイドを始める前に、サーバーに `+ sudo +`権限が設定された別の非rootユーザーアカウントが必要です。 Ubuntu 16.04の初期サーバーセットアップの手順1〜4を完了すると、これを行う方法を学習できます。 。

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

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

Ubuntuのパッケージマネージャーである `+ apt +`を使用して、Apacheを簡単にインストールできます。 パッケージマネージャーを使用すると、Ubuntuが管理するリポジトリからほとんどのソフトウェアを簡単にインストールできます。 https://www.digitalocean.com/community/articles/how-to-manage-packages-in-ubuntu-and-debian-with-apt-get-apt-cache [使用方法 `+ここでapt + `]。

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

sudo apt-get update
sudo apt-get install apache2

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

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

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

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

sudo apache2ctl configtest
Output
Syntax OK

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

sudo nano /etc/apache2/apache2.conf

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

Note

/etc/apache2/apache2.conf

. . .
ServerName

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

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

sudo apache2ctl configtest

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

OutputSyntax OK

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

sudo systemctl restart apache2

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

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

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

sudo ufw app list
OutputAvailable applications:



 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:

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

sudo ufw allow in "Apache Full"

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

http://

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

image:http://assets.digitalocean.com/articles/how-to-install-lamp-ubuntu-16/small_apache_default.png [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

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

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

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

mysql_secure_installation

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

はいの場合は* 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:

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

Using existing password for root.

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

残りの質問については、各プロンプトで* 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

<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 - 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

多くの出力があり、モジュールが提供する機能のより長い説明がある `+ 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

この時点で、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

<?php
phpinfo();
?>

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

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

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

http:///info.php

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

image:https://assets.digitalocean.com/articles/how-to-install-lamp-ubuntu-16/small_php_info.png [Ubuntu 16.04デフォルトのPHP情報]

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

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

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

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

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

結論

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

次のステップとして、HTTPS経由でWebサーバーに接続することにより、Webサーバーへの接続が保護されていることを確認する必要があります。 ここで最も簡単なオプションは、https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04 [Let’s Encryptを使用]を保護することです無料のTLS / SSL証明書を持つサイト。

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

:記載されている16.04のドキュメントへの上記のリンクを更新します。