Linux で LNMP を展開する

LinuxBeginner
オンラインで実践に進む

はじめに

LNMP は、Linux、Nginx、MySQL、PHP の 4 つのオープンソースソフトウェアコンポーネントを組み合わせたものです。このスタックは、動的な Web アプリケーションとウェブサイトを動作させるためによく使用されます。以下は、各コンポーネントの概要です。

  • Linux:スタックの残りの部分の基礎を提供するオペレーティングシステム。
  • Nginx:大量のトラフィックを処理し、静的コンテンツを効率的に提供できる高性能な Web サーバーおよびリバースプロキシ。
  • MySQL:人気のあるリレーショナルデータベース管理システムで、Web アプリケーション用のデータを格納および取得するための信頼性の高い方法を提供します。
  • PHP:Web 開発に広く使用されるスクリプト言語で、動的な HTML コンテンツを生成するサーバーサイドコードを記述できます。

これらのコンポーネントは一緒になって、現代の Web アプリケーションを構築および展開するための強力で柔軟なプラットフォームを形成します。LNMP は LAMP(Linux、Apache、MySQL、および PHP)に似ていますが、Web サーバーとして Apache の代わりに Nginx を使用しています。Nginx はその速度と効率で知られており、トラフィックの多いサイトやアプリケーションに人気のある選択肢になっています。

Nginx をインストールする

さて、Linux システムに Nginx をインストールする具体的な手順は以下の通りです。

  1. パッケージリストを更新する:サーバー上のパッケージリストを更新するには、次のコマンドを実行します。
sudo apt-get update
  1. 次のコマンドを使用して Nginx をインストールする:
sudo apt-get install nginx
  1. Nginx が正常にインストールされたかどうかを確認する
nginx -v

次の画像は、Nginx が正常にインストールされ、現在インストールされているバージョンが 1.18.0 であることを示しています。

nginx version: nginx/1.18.0

MySQL をインストールする

Linux システムに MySQL をインストールする具体的な手順は以下の通りです。

  1. MySQL をインストールするには、次のコマンドを使用します。
sudo apt update
sudo apt-get install mysql-server
  1. MySQL サーバーがインストールされているかどうかを確認する:
mysql --version

次の図は、MySQL が正常にインストールされていることを示しています。

mysql  Ver 8.0.35-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
  1. MySQL が起動しているかどうかを確認し、起動していない場合は、次のコマンドで起動します。
sudo systemctl status mysql
sudo systctl start mysql

PHP をインストールする

Linux システムに PHP をインストールする具体的な手順は以下の通りです。

  1. PHP と関連モジュールをインストールする:PHP とその関連モジュールをインストールするには、次のコマンドを使用します。
sudo apt update
sudo apt-get install php8.1-fpm php-mysql

これにより、PHP FastCGI プロセスマネージャ (php-fpm) と PHP 用の MySQL 拡張機能 (php-mysql) がインストールされます。

  1. PHP のバージョンを確認する。
sudo php -v

次の図は、PHP が正常にインストールされていることを示しています。

PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)

Nginx を設定する

Nginx をインストールしたら、他のコンポーネントと連携するように設定する必要があります。そのための手順は以下の通りです。

  1. Nginx の設定ファイル /etc/nginx/sites-available/default を編集する:
sudo vim /etc/nginx/sites-available/default
  1. 既存のコンテンツを以下のものに置き換える:
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 _;

     location / {
            index index.php index.html index.htm;
        }

     location ~ \.php$ {
            fastcgi_pass unix:/run/php/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
}
  1. Nginx の設定が正しいかどうかを確認する:
sudo nginx -t
  1. nginx を再読み込みする
sudo nginx -s reload

MySQL を設定する

  1. 次のコマンドを実行して MySQL にアクセスします。
sudo mysql
  1. 次のコマンドを実行してルートユーザーのパスワードを設定します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234'
  1. 次のコマンドを実行して MySQL データベースから退出します。
exit

PHP を設定する

  1. PHP の情報を表示するための新しい phpinfo.php ファイルを作成して編集する。
sudo vim /var/www/html/phpinfo.php

以下のコンテンツを記入する。

<?php echo phpinfo();?>

ヒント:/var/www/html はサイトのルートディレクトリで、cat /etc/nginx/sites-enabled/default コマンドを実行することで確認できます。

  1. PHP-FPM を起動する:インストールが完了したら、次のコマンドを使用して PHP-FPM サービスを起動します。
sudo systemctl start php8.1-fpm

ヒント:PHP-FPM サービスの正確な名前は、Linux のディストリビューションや PHP のバージョンによって異なる場合があります。

  1. 起動時に PHP-FPM を自動起動に設定する:サーバーが起動する際に PHP-FPM が自動的に起動するようにするには、次のコマンドを実行します。
sudo systemctl enable php8.1-fpm

検証する

ブラウザのアドレスバーに http://127.0.0.1/phpinfo.php と入力してアクセスします。

アクセス結果は以下の通りで、PHP の設定情報ページが正常に表示され、LNMP 環境が正常に展開されたことがわかります。

PHP info page displayed

または、curl コマンドを使用して確認することもできます。

curl http://127.0.0.1/phpinfo.php -I

まとめ

これらの手順を完了すると、LNMP スタックを正常に展開できたはずです。ウェブサイトのコードを /var/www/html ディレクトリに配置し、ウェブサイトにアクセスして正常に動作することを確認できます。