前書き

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

このガイドでは、オペレーティングシステムが提供するパッケージを使用して、DebianサーバーにLEMPスタックをインストールします。

前提条件

このガイドを完了するには、次のものが必要です。

  • `+ sudo +`特権を持つ非rootユーザーを持つDebian 8サーバー。 Debian 8での初期サーバー設定ガイドでこれらの権限を持つユーザーを設定できます。

手順1-Nginx Webサーバーのインストール

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

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

このセッションで初めて `+ apt +`を使用するので、ローカルパッケージインデックスを更新することから始めます。 その後、サーバーをインストールできます。

sudo apt-get update
sudo apt-get install nginx

Debian 8では、Nginxはインストール時に実行を開始するように設定されています。

`+ ufw `ファイアウォールを実行している場合、Nginxへの接続を許可する必要があります。 必要なトラフィックを許可する最も制限の厳しいプロファイルを有効にする必要があります。 サーバーのSSLをまだ設定していないため、このガイドでは、ポート「+80」のトラフィックのみを許可する必要があります。

これを有効にするには、次のように入力します。

sudo ufw allow 'Nginx HTTP'

次のように入力して、変更を確認できます。

sudo ufw status

表示された出力で許可されたHTTPトラフィックが表示されるはずです。

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

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

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

これにより、いくつかのIPアドレスが出力されます。 Webブラウザーでそれぞれを順番に試すことができます。

別の方法として、インターネット上の他の場所から表示されるアクセス可能なIPアドレスを確認できます。

curl -4 icanhazip.com

Webブラウザーで受信したアドレスの1つを入力します。 Nginxのデフォルトのランディングページに移動します。

http://

image:https://assets.digitalocean.com/articles/lemp_debian8/THcJfIl.png [Nginxデフォルトページ]

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

ステップ2-MySQLをインストールしてサイトデータを管理する

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

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

sudo apt-get install mysql-server

MySQLシステム内で使用するルート(管理)パスワードを指定するよう求められます。そのパスワードを確認する必要があります。

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

インストールを保護するために、安全でないデフォルトを変更するかどうかを尋ねる簡単なセキュリティスクリプトを実行できます。 次のように入力してスクリプトを開始します。

sudo mysql_secure_installation

MySQL * root *アカウントに設定したパスワードの入力を求められます。 次に、そのパスワードを変更するかどうかを尋ねられます。 現在のパスワードに満足している場合は、プロンプトで「no」に「+ N +」を入力します。

Using existing password for root.

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n]
... skipping.

スクリプトが尋ねる残りの質問については、各プロンプトで `+ Y `を押し、続いて ` ENTER +`キーを押す必要があります。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールがロードされるため、MySQLは変更をすぐに反映します。

この時点で、データベースシステムのセットアップとセキュリティ保護が完了しました。 PHPをセットアップしましょう。

ステップ3-処理のためにPHPをインストールする

ページを提供するためにNginxがインストールされ、データを保存および管理するためにMySQLがインストールされました。 ただし、動的コンテンツを生成できるものはまだありません。 そこでPHPが登場します。

Nginxには他のWebサーバーのようなネイティブPHP処理が含まれていないため、「fastCGIプロセスマネージャー」の略である「+ fpm +」をインストールする必要があります。 Nginxに、処理のためにこのソフトウェアにPHPリクエストを渡すように指示します。 また、PHPがMySQLデータベースバックエンドと通信できるようにする追加のヘルパーパッケージもインストールします。 インストールにより、必要なPHPコアファイルが取り込まれ、機能します。

これらのパッケージは、ライセンスの問題のためデフォルトのリポジトリでは利用できません。そのため、それらを取り込むにはリポジトリソースを変更する必要があります。

テキストエディタで `+ / etc / apt / sources.list +`を開きます。

sudo nano /etc/apt/sources.list

次に、各ソースに対して、各ソースに「+ contrib 」および「 non-free +」リポジトリを追加します。 これらの変更を行った後、ファイルは次のようになります。

/etc/apt/sources.list

...
deb http://mirrors.digitalocean.com/debian jessie main
deb-src http://mirrors.digitalocean.com/debian jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://mirrors.digitalocean.com/debian jessie-updates main
deb-src http://mirrors.digitalocean.com/debian jessie-updates main

ファイルを保存して終了します。 次に、ソースを更新します。

sudo apt-get update

次に、 + php5-fpm`および + php 5-mysql`モジュールをインストールします。

sudo apt-get install php5-fpm php5-mysql

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

ルート権限でメインの `+ php-fpm +`設定ファイルを開きます:

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

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

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

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

/etc/php5/fpm/php.ini

cgi.fix_pathinfo=0

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

ここで、次のように入力してPHPプロセッサを再起動するだけです。

sudo systemctl restart php5-fpm

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

ステップ4-PHPプロセッサーを使用するためのNginxの構成

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

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

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

現在、コメントを削除すると、Nginxのデフォルトのサーバーブロックファイルは次のようになります。

/ etc / nginx / sites-available / default

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;
   index index.html index.htm index.nginx-debian.html;

   server_name _;

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

サイトのこのファイルに変更を加える必要があります。

  • 最初に、ディレクトリが要求されたときに、利用可能な場合、+ index.phpという名前のファイルが提供されるように、+ index.phpの最初の値として+ index.phpを追加する必要があります。

  • サーバーのドメイン名またはパブリックIPアドレスを指すように、 `+ server_name`ディレクティブを変更できます。

  • 実際のPHP処理では、PHPリクエストを処理するファイルのセグメントのコメントを外すだけです。 これは、 `+ location〜\ .php $ `ロケーションブロック、含まれる ` fastcgi-php.conf `スニペット、および ` php-fpm +`に関連付けられたソケットになります。

  • また、 `+ .htaccess +`ファイルを処理するロケーションブロックのコメントを外します。 Nginxはこれらのファイルを処理しません。 これらのファイルのいずれかがたまたまドキュメントルートに到達した場合、それらは訪問者に提供されるべきではありません。

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

/ etc / nginx / sites-available / default

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;
   index  index.html index.htm index.nginx-debian.html;

   server_name ;

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









}

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

次のように入力して、構成ファイルの構文エラーをテストします。

sudo nginx -t

エラーが報告された場合は、戻ってファイルを再確認してから続行してください。

準備ができたら、Nginxをリロードして必要な変更を加えます。

sudo systemctl reload nginx

手順5-PHPファイルを作成して構成をテストする

これでLEMPスタックが完全にセットアップされました。 NginxがPHPプロセッサに `+ .php +`ファイルを正しく渡すことができることを検証するためにテストできます。

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

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

新しいファイルに次の行を入力または貼り付けます。 これは、サーバーに関する情報を返す有効なPHPコードです。

/var/www/html/info.php

<?php
 phpinfo();
?>

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

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

http:///info.php

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

image:https://assets.digitalocean.com/articles/lemp_debian8/ZP3DpyX.png [PHPページ情報]

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

Nginxがページを正しく表示することを確認したら、作成したファイルを削除することをお勧めします。実際には、許可されていないユーザーに設定に関するヒントを与え、侵入を試みるのに役立ちます。

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

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

後で必要な場合は、いつでもこのファイルを再生成できます。

結論

これで、DebianサーバーでLEMPスタックが設定されました。 これにより、訪問者にWebコンテンツを提供するための非常に柔軟な基盤が得られます。