Linux、Nginx、MySQL、PHP(LEMPスタック)をDebian9にインストールする方法
序章
LEMPソフトウェアスタックは、動的WebページおよびWebアプリケーションを提供するために使用できるソフトウェアのグループです。 これは、NginxWebサーバーを備えたLinuxオペレーティングシステムを表す頭字語です。 バックエンドデータはMySQLデータベースに保存され、動的処理はPHPによって処理されます。
このガイドでは、オペレーティングシステムが提供するパッケージを使用して、DebianサーバーにLEMPスタックをインストールします。
前提条件
このガイドを完了するには、sudo
権限を持つroot以外のユーザーがいるDebian9サーバーが必要です。 これらの権限を持つユーザーは、Debian9ガイドの初期サーバーセットアップでセットアップできます。
ステップ1—NginxWebサーバーをインストールする
サイト訪問者に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)
次に、Webブラウザでサーバーのドメイン名またはパブリックIPアドレスにアクセスして、サーバーが稼働しているかどうかをテストします。 サーバーを指すドメイン名がなく、サーバーのパブリックIPアドレスがわからない場合は、端末に次のいずれかを入力してドメイン名を見つけることができます。
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をインストールして、サイトのデータを保存および管理する必要があります。
次のように入力すると、これを簡単にインストールできます。
sudo apt install mysql-server
注: Debian 9では、MySQLプロジェクトのコミュニティフォークであるMariaDBがデフォルトのMySQLバリアントとしてパッケージ化されています。 MariaDBはほとんどの場合うまく機能しますが、OracleのMySQLにのみ見られる機能が必要な場合は、MySQL開発者が管理するリポジトリからパッケージをインストールして使用できます。 公式MySQLサーバーをインストールするには、チュートリアル Debian9に最新のMySQLをインストールする方法を使用してください。
これでMySQLデータベースソフトウェアがインストールされましたが、その構成は完了していません。
インストールを保護するために、安全でないデフォルトを変更するかどうかを尋ねるセキュリティスクリプトを実行できます。 次のように入力してスクリプトを開始します。
sudo mysql_secure_installation
MySQL rootアカウントのパスワードを入力するように求められます。 まだ設定していないので、ENTER
を押してください。 次に、そのパスワードを設定するかどうかを尋ねられます。 y
と入力してから、rootパスワードを設定する必要があります。
スクリプトが尋ねる残りの質問については、y
を押してから、各プロンプトでENTER
キーを押す必要があります。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。
この時点で、データベースシステムがセットアップされ、保護されています。 PHPを設定しましょう。
ステップ3—処理のためのPHPのインストール
これで、ページを提供するためにNginxがインストールされ、データを保存および管理するためにMySQLがインストールされました。 ただし、動的コンテンツを生成できるものはまだありません。 そこでPHPが登場します。
Nginxには他のWebサーバーのようなネイティブPHP処理が含まれていないため、「fastCGIプロセスマネージャー」の略であるfpm
をインストールする必要があります。 処理のためにこのソフトウェアにPHPリクエストを渡すようにNginxに指示します。 PHPがMySQLデータベースバックエンドと通信できるようにする追加のヘルパーパッケージもインストールします。 インストールは、それを機能させるために必要なPHPコアファイルをプルします。
次に、php-fpm
およびphp-mysql
パッケージをインストールします。
sudo apt install php-fpm php-mysql
これで、PHPコンポーネントがインストールされました。 次に、それらを使用するようにNginxを構成します。
ステップ4—PHPプロセッサを使用するようにNginxを構成する
これで、必要なすべてのコンポーネントがインストールされました。 まだ必要な唯一の構成変更は、動的コンテンツにPHPプロセッサを使用するようにNginxに指示することです。
これはサーバーブロックレベルで行います(サーバーブロックはApacheの仮想ホストに似ています)。 デフォルトのNginx構成をそのままにして、代わりにPHPファイルを保持するための新しい構成ファイルと新しいWebルートディレクトリを作成します。 サーバーが応答するドメイン名またはホスト名にちなんで、構成ファイルとディレクトリに名前を付けます。
まず、/var/www
に新しいディレクトリを作成して、PHPサイトを保持します。
sudo mkdir /var/www/your_domain
次に、Nginxのsites-available
ディレクトリにある新しい構成ファイルを開きます。
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
で終わるファイルは、Nginxが結果をユーザーに送信する前にphp-fpm
プロセスによって処理されます。
カスタマイズが完了したら、ファイルを保存して閉じます。
Nginxのsites-enabled
ディレクトリから構成ファイルにリンクして構成をアクティブ化します。
sudo ln -s /etc/nginx/sites-available/your_domain.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/your_domain/info.php
次の行を入力するか、新しいファイルに貼り付けます。 これは、サーバーに関する情報を返す有効なPHPコードです。
/var/www/your_domain/info.php
<?php phpinfo(); ?>
終了したら、ファイルを保存して閉じます。
これで、サーバーのドメイン名またはパブリックIPアドレスに続いて/info.php
にアクセスすることにより、Webブラウザーでこのページにアクセスできます。
http://your_domain/info.php
サーバーに関する情報を含むPHPによって生成されたWebページが表示されます。
このようなページが表示された場合は、Nginxを使用してPHP処理を正常に設定しています。
Nginxがページを正しくレンダリングすることを確認した後、作成したファイルを削除することをお勧めします。これにより、許可されていないユーザーに、侵入を試みるのに役立つ構成に関するヒントが実際に与えられる可能性があります。
今のところ、次のように入力してファイルを削除します。
sudo rm /var/www/html/info.php
後で必要になった場合は、いつでもこのファイルを再生成できます。
結論
これで、DebianサーバーにLEMPスタックが構成されているはずです。 これにより、訪問者にWebコンテンツを提供するための非常に柔軟な基盤が提供されます。