前書き

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

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

前提条件

このガイドを完了するには、 `+ sudo +`権限を持つ非rootユーザーのDebian 9サーバーが必要です。 Debian 9での初期サーバー設定ガイドで、これらの権限を持つユーザーを設定できます。

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

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

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

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

sudo apt update
sudo apt install nginx

Debian 9では、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ブラウザーでそれぞれを順番に試すことができます。

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

http://

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

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

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

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

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

sudo apt install mysql-server

これで、MySQLデータベースソフトウェアがインストールされましたが、設定は完了していません。

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

sudo mysql_secure_installation

MySQL * root アカウントのパスワードを入力するよう求められます。 これはまだ設定していませんので、 `+ ENTER `を押してください。 次に、そのパスワードを設定するかどうかを尋ねられます。 「 y +」と入力してから root *パスワードを設定する必要があります。

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

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

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

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

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

次に、 + php-fpm`および + php-mysql`パッケージをインストールします。

sudo apt install php-fpm php-mysql

PHPコンポーネントがインストールされました。 次に、それらを使用するようにNginxを構成します。

手順4-PHPプロセッサを使用するためのNginxの構成

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

これはサーバーブロックレベルで行います(サーバーブロックはApacheの仮想ホストに似ています)。 デフォルトのNginx設定をそのままにして、代わりに新しい設定ファイルと新しいWebルートディレクトリを作成して、PHPファイルを保持します。 サーバーが応答するドメイン名またはホスト名に基づいて、構成ファイルとディレクトリに名前を付けます。

まず、PHPサイトを保持するために、 `+ / var / www +`に新しいディレクトリを作成します。

sudo mkdir /var/www/

次に、Nginxの `+ sites-available +`ディレクトリで新しい構成ファイルを開きます。

sudo nano /etc/nginx/sites-available/

これにより、新しい空のファイルが作成されます。 次のベアボーン構成に貼り付けます。

/ etc / nginx / sites-available / your_domain

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

   root /var/www/;
   index index.php index.html index.htm;

   server_name ;

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

   location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
   }
}

これは、ポート80でリッスンし、作成したWebルートからファイルを提供する非常に基本的な構成です。 `+ server_name `の後に指定された名前へのリクエストにのみ応答し、 ` .php `で終わるファイルはすべて、Nginxが結果をユーザーに送信する前に ` php-fpm +`プロセスによって処理されます。

カスタマイズが完了したら、ファイルを保存して閉じます。

Nginxの `+ sites-enabled +`ディレクトリから設定ファイルにリンクして設定を有効にします:

sudo ln -s /etc/nginx/sites-available/.conf /etc/nginx/sites-enabled/

これにより、Nginxは次回リロードされたときに設定を使用するようになります。 最初に、次のように入力して構成の構文エラーをテストします。

sudo nginx -t

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

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

sudo systemctl reload nginx

次に、新しいWebルートディレクトリにファイルを作成して、PHPの処理をテストします。

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

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

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

sudo nano /var/www//info.php

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

/var/www/your_domain/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コンテンツを提供するための非常に柔軟な基盤が得られます。