序章

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

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

前提条件

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

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

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

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

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

  1. sudo apt update
  2. sudo apt install nginx

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

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

http://your_domain_or_IP

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

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

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

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

  1. sudo apt install mysql-server

注: Debian 9では、MySQLプロジェクトのコミュニティフォークであるMariaDBがデフォルトのMySQLバリアントとしてパッケージ化されています。 MariaDBはほとんどの場合うまく機能しますが、OracleのMySQLにのみ見られる機能が必要な場合は、MySQL開発者が管理するリポジトリからパッケージをインストールして使用できます。 公式MySQLサーバーをインストールするには、チュートリアル Debian9に最新のMySQLをインストールする方法を使用してください。

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

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

  1. sudo mysql_secure_installation

MySQL rootアカウントのパスワードを入力するように求められます。 まだ設定していないので、 ENTER. 次に、そのパスワードを設定するかどうかを尋ねられます。 入力する必要があります y 次に、rootパスワードを設定します。

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

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

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

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

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

次に、をインストールします php-fpmphp-mysql パッケージ:

  1. sudo apt install php-fpm php-mysql

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

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

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

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

まず、に新しいディレクトリを作成します /var/www PHPサイトを保持するには:

  1. sudo mkdir /var/www/your_domain

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

  1. sudo nano /etc/nginx/sites-available/your_domain

これにより、新しい空白のファイルが作成されます。 次の必要最低限の構成で貼り付けます。

/ etc / nginx / sites-available / your_domain
server {
    listen 80;
    listen [::]:80;

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

    server_name your_domain;

    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 によって処理されます php-fpm Nginxが結果をユーザーに送信する前に処理します。

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

Nginxから構成ファイルにリンクして構成をアクティブ化します sites-enabled ディレクトリ:

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

これにより、次にリロードされるときに構成を使用するようにNginxに指示されます。 まず、次のように入力して、構成の構文エラーをテストします。

  1. sudo nginx -t

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

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

  1. sudo systemctl reload nginx

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

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

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

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

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

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

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

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

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

http://your_domain/info.php

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

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

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

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

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

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

結論

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