序章

LEMPソフトウェアスタックは、動的WebページおよびWebアプリケーションを提供するために使用できるソフトウェアのグループです。 これは、NginxWebサーバーを備えたLinuxオペレーティングシステムを表す頭字語です。 バックエンドデータはMySQLに保存され、動的処理はPHPによって処理されます。

このガイドでは、Ubuntu14.04サーバーにLEMPスタックをインストールする方法を示します。 Ubuntuオペレーティングシステムが最初の要件を処理します。 残りのコンポーネントを稼働させる方法について説明します。

注: LEMPスタックは、起動時にこのスクリプトをユーザーデータに追加することで、ドロップレットに自動的にインストールできます。 ドロップレットユーザーデータの詳細については、このチュートリアルをご覧ください。

前提条件

このチュートリアルを完了する前に、サーバー上にsudo権限を持つ通常の非rootユーザーアカウントが必要です。 このタイプのアカウントを設定する方法については、 Ubuntu14.04初期サーバー設定の手順1〜4を完了することで学ぶことができます。

アカウントを利用できるようになったら、そのユーザー名でサーバーにサインインします。 これで、このガイドで概説されている手順を開始する準備が整いました。

1. NginxWebサーバーをインストールします

サイト訪問者にWebページを表示するために、最新の効率的なWebサーバーであるNginxを採用します。

この手順で取得するすべてのソフトウェアは、Ubuntuのデフォルトのパッケージリポジトリから直接取得されます。 これは、aptパッケージ管理スイートを使用してインストールを完了することができることを意味します。

このセッションでaptを使用するのはこれが初めてなので、ローカルパッケージインデックスを更新することから始める必要があります。 次に、サーバーをインストールできます。

sudo apt-get update
sudo apt-get install nginx

Ubuntu 14.04では、Nginxはインストール時に実行を開始するように構成されています。

Webブラウザでサーバーのドメイン名またはパブリックIPアドレスにアクセスすることにより、サーバーが稼働しているかどうかをテストできます。

サーバーを指すドメイン名がなく、サーバーのパブリックIPアドレスがわからない場合は、端末に次のいずれかを入力してドメイン名を見つけることができます。

 ip addr show eth0 |  grep inet |  awk'{print $ 2;  }'|  sed's//。*$//'
  111.111.111.111 fe80 :: 601:17ff:fe61:9801

または、以下を使用してみてください。

カール http://icanhazip.com
  111.111.111.111

Webブラウザに表示される行の1つを試してください。 Nginxのデフォルトのランディングページに移動するはずです:

http:// server_domain_name_or_IP

上記のページが表示されている場合は、Nginxが正常にインストールされています。

2. MySQLをインストールしてサイトデータを管理する

Webサーバーができたので、データベース管理システムであるMySQLをインストールして、サイトのデータを保存および管理する必要があります。

次のように入力すると、これを簡単にインストールできます。

sudo apt-get install mysql-server

MySQLシステム内で使用するためのroot(管理)パスワードを提供するように求められます。

これでMySQLデータベースソフトウェアがインストールされましたが、その構成はまだ完全ではありません。

まず、データベースと情報を格納するために必要なディレクトリ構造を生成するようにMySQLに指示する必要があります。 これを行うには、次のように入力します。

sudo mysql_install_db

次に、いくつかの安全でないデフォルトを変更するように促す簡単なセキュリティスクリプトを実行する必要があります。 次のように入力してスクリプトを開始します。

sudo mysql_secure_installation

インストール時に選択したMySQLルートパスワードを入力する必要があります。

次に、そのパスワードを変更するかどうかを尋ねられます。 MySQLルートパスワードに満足している場合は、「N」を入力して「いいえ」を入力し、「ENTER」を押します。 その後、一部のテストユーザーとデータベースを削除するように求められます。 安全でないデフォルト設定を削除するには、これらのプロンプトで「ENTER」を押すだけです。

スクリプトが実行されると、MySQLを使用できるようになります。

3. 処理のためにPHPをインストールする

これで、ページを提供するためにNginxがインストールされ、データを保存および管理するためにMySQLがインストールされましたが、これら2つの部分を接続し、動的コンテンツを生成するための何かが必要です。 これにはPHPを使用できます。

Nginxには他のWebサーバーのようなネイティブPHP処理が含まれていないため、「fastCGIプロセスマネージャー」の略であるphp5-fpmをインストールする必要があります。 処理のためにこのソフトウェアにPHPリクエストを渡すようにNginxに指示します。

このモジュールをインストールできます。また、PHPがデータベースバックエンドと通信できるようにする追加のヘルパーパッケージを取得します。 インストールにより、必要なPHPコアファイルが取得されます。 次のように入力してこれを行います。

sudo apt-get install php5-fpm php5-mysql

PHPプロセッサを構成する

これでPHPコンポーネントがインストールされましたが、セットアップをより安全にするために、構成を少し変更する必要があります。

ルート権限でメインのphp5-fpm構成ファイルを開きます。

sudo nano /etc/php5/fpm/php.ini

このファイルで探しているのは、cgi.fix_pathinfoを設定するパラメーターです。 これはセミコロン(;)でコメントアウトされ、デフォルトで「1」に設定されます。

これは、PHPファイルが完全に一致しない場合に、見つけることができる最も近いファイルを実行しようとするようにPHPに指示するため、非常に安全でない設定です。 これにより、基本的に、ユーザーは、実行を許可されるべきではないスクリプトを実行できるようにPHPリクエストを作成できます。

次のように、行のコメントを解除して「0」に設定することにより、これらの条件の両方を変更します。

cgi.fix_pathinfo=0

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

ここで、次のように入力してPHPプロセッサを再起動する必要があります。

sudo service php5-fpm restart

これにより、行った変更が実装されます。

4. PHPプロセッサを使用するようにNginxを構成する

これで、必要なすべてのコンポーネントがインストールされました。 まだ行う必要がある唯一の構成変更は、動的コンテンツにPHPプロセッサを使用するようにNginxに指示することです。

これはサーバーブロックレベルで行います(サーバーブロックはApacheの仮想ホストに似ています)。 次のように入力して、デフォルトのNginxサーバーブロック構成ファイルを開きます。

sudo nano /etc/nginx/sites-available/default

現在、コメントが削除されているため、Nginxのデフォルトのサーバーブロックファイルは次のようになります。

サーバー{リッスン80default_server; リッスン[::]:80 default_server ipv6only = on;
root /usr/share/nginx/html;
index index.html index.htm;

server_name localhost;

location / {
    try_files $uri $uri/ =404;
}

}

私たちのサイトのためにこのファイルにいくつかの変更を加える必要があります。

  • まず、index.phpオプションをindexディレクティブの最初の値として追加して、ディレクトリが要求されたときにPHPインデックスファイルを提供できるようにする必要があります。
  • また、サーバーのドメイン名またはパブリックIPアドレスを指すようにserver_nameディレクティブを変更する必要があります。
  • 実際の構成ファイルには、エラー処理ルーチンを定義するコメント付きの行がいくつか含まれています。 その機能を含めるためにコメントを外します。
  • 実際のPHP処理では、別のセクションの一部のコメントを解除する必要があります。 また、try_filesディレクティブを追加して、NginxがPHPプロセッサに不正なリクエストを渡さないようにする必要があります。

以下のテキストでは、必要な変更が赤で示されています。

サーバー{リッスン80default_server; リッスン[::]:80 default_server ipv6only = on;
root /usr/share/nginx/html;
index <span class="highlight">index.php</span> index.html index.htm;

server_name <span class="highlight">server_domain_name_or_IP</span>;

location / {
    try_files $uri $uri/ =404;
}

<span class="highlight">error_page 404 /404.html;</span>
<span class="highlight">error_page 500 502 503 504 /50x.html;</span>
<span class="highlight">location = /50x.html {</span>
    <span class="highlight">root /usr/share/nginx/html;</span>
<span class="highlight">}</span>

<span class="highlight">location ~ \.php$ {</span>
    <span class="highlight">try_files $uri =404;</span>
    <span class="highlight">fastcgi_split_path_info ^(.+\.php)(/.+)$;</span>
    <span class="highlight">fastcgi_pass unix:/var/run/php5-fpm.sock;</span>
    <span class="highlight">fastcgi_index index.php;</span>
    <span class="highlight">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</span>
    <span class="highlight">include fastcgi_params;</span>
<span class="highlight">}</span>

}

上記の変更を行ったら、ファイルを保存して閉じることができます。

Nginxを再起動して、必要な変更を加えます。

sudo service nginx restart

5. 構成をテストするためのPHPファイルを作成する

これで、LEMPスタックが完全にセットアップされました。 Nginxが.phpファイルをPHPプロセッサに正しく渡すことができることを確認するためにテストする必要があります。

これを行うには、ドキュメントルートにテストPHPファイルを作成します。 テキストエディタのドキュメントルート内にinfo.phpという新しいファイルを開きます。

sudo nano /usr/share/nginx/html/info.php

これを新しいファイルに入力できます。 これは、サーバーに関するフォーマットされた情報を返す有効なPHPコードです。

<?php
phpinfo();
?>

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

これで、サーバーのドメイン名またはパブリックIPアドレスに続いて/info.phpにアクセスすることにより、Webブラウザーでこのページにアクセスできます。

http:// server_domain_name_or_IP /info.php

サーバーに関する情報を含むPHPによって生成されたWebページが表示されます。

このようなページが表示された場合は、Nginxを使用してPHP処理を正常に設定しています。

これをテストした後、作成したファイルを削除するのがおそらく最善です。これは、許可されていないユーザーに、侵入を試みるのに役立つ可能性のある構成に関するヒントを実際に与える可能性があるためです。 後で必要になった場合は、いつでもこのファイルを再生成できます。

今のところ、次のように入力してファイルを削除します。

sudo rm /usr/share/nginx/html/info.php

結論

これで、Ubuntu14.04サーバーでLEMPスタックが構成されているはずです。 これにより、訪問者にWebコンテンツを提供するための非常に柔軟な基盤が提供されます。

ジャスティン・エリングウッド