序章

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

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

前提条件

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

  • root以外のユーザーがいるDebian8サーバー sudo 特権。 これらの権限を持つユーザーは、Debian8ガイドの初期サーバーセットアップでセットアップできます。

ステップ1—NginxWebサーバーをインストールします

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

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

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

  1. sudo apt-get update
  2. sudo apt-get install nginx

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

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

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

  1. sudo ufw allow 'Nginx HTTP'

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

  1. sudo ufw status

表示された出力に許可されたHTTPトラフィックが表示されます。

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

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

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

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

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

  1. curl -4 icanhazip.com

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

http://server_domain_or_IP

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

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

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

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

  1. sudo apt-get install mysql-server

MySQLシステム内で使用するためのroot(管理)パスワードを提供するように求められ、そのパスワードを確認する必要があります。

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

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

  1. sudo mysql_secure_installation

MySQL rootアカウントに設定したパスワードを入力するように求められます。 次に、そのパスワードを変更するかどうかを尋ねられます。 現在のパスワードに満足している場合は、次のように入力します 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] n
 ... skipping.

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

この時点で、データベースシステムがセットアップされ、保護されています。 PHPを設定しましょう。

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

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

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

これらのパッケージは、ライセンスの問題によりデフォルトのリポジトリでは利用できないため、リポジトリソースを変更してプルする必要があります。

開ける /etc/apt/sources.list テキストエディタで:

  1. sudo nano /etc/apt/sources.list

次に、ソースごとに、 contribnon-free 各ソースへのリポジトリ。 これらの変更を行うと、ファイルは次のようになります。

/etc/apt/sources.list
...
deb http://mirrors.digitalocean.com/debian jessie main contrib non-free
deb-src http://mirrors.digitalocean.com/debian jessie main contrib non-free

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

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

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

  1. sudo apt-get update

次に、をインストールします php5-fpmphp5-mysql モジュール:

  1. sudo apt-get install php5-fpm php5-mysql

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

メインを開く php-fpm ルート権限を持つ構成ファイル:

  1. 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プロセッサを再起動する必要があります。

  1. sudo systemctl restart php5-fpm

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

ステップ4—PHPプロセッサーを使用するようにNginxを構成する

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

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

  1. 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 ディレクティブ index.php ディレクトリが要求されたときに、利用可能な場合は提供されます。
  • 変更することができます server_name サーバーのドメイン名またはパブリックIPアドレスを指すディレクティブ。
  • 実際の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.php index.html index.htm index.nginx-debian.html;

    server_name your_server_ip;

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

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

    location ~ /\.ht {
        deny all;
    }
}

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

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

  1. sudo nginx -t

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

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

  1. sudo systemctl reload nginx

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

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

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

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

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

/var/www/html/info.php
<?php
  phpinfo();
?>

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

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

http://server_domain_or_IP/info.php

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

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

Nginxがページを正しくレンダリングすることを確認した後、作成したファイルを削除することをお勧めします。これにより、許可されていないユーザーに、侵入を試みるのに役立つ構成に関するヒントが実際に与えられる可能性があります。

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

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

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

結論

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