LEMPスタック · 2 min read · Sep 10, 2025
Ubuntu 24.04にLEMPスタック(Linux、Nginx、PHP、MariaDB)をインストールする方法

LEMPスタック(Linux、Nginx、MySQL/MariaDB、PHP)は、PHPウェブアプリケーションをホスティングおよび開発するための無料でオープンソースのソフトウェアアプリケーションのグループです。LEMPスタックは、静的および動的ウェブアプリケーションの両方を展開するために使用できます。
このガイドでは、Ubuntu 24.04 “Noble Numbat”にLEMPスタック(Linux、Nginx、MySQL/MariaDB、PHP)をインストールする方法を示します。また、MariaDBサーバーを保護し、ウェブサイトやドメイン名をホストするためのNginxサーバーブロック構成を作成する方法も示します。
前提条件
始める前に、rootユーザーまたはsudo/管理者権限を持つ非rootユーザーでUbuntu 24.04 “Noble Numbat”があることを確認してください。また、UFW(Uncomplicated Firewall)が実行されており、有効になっていることを確認してください。
Nginxウェブサーバーのインストール
Nginxまたはengine-xは、インターネット上で最も人気のあるウェブサーバーです。Nginxは、最小限のシステムリソースで同時に高トラフィックを処理できるため、人気を博しました。この最初のステップでは、UbuntuサーバーにNginxウェブサーバーをインストールします。
パッケージをインストールする前に、次のコマンドでUbuntuパッケージリストを更新およびリフレッシュします。
sudo apt update
次のコマンドでUbuntuマシンにNginxウェブサーバーをインストールします。プロンプトが表示されたら、インストールを確認するためにYを入力します。
sudo apt install nginx
インストールが完了すると、Nginxサービスはシステムで実行され、有効になっているはずです。次のコマンドでNginxサービスを確認します。
sudo systemctl is-enabled nginx
sudo systemctl status nginxNginxサービスが「 enabled 」であり、現在のステータスが「 active (running) 」であることが表示されるはずです。

Nginxにアクセスする前に、UFW(Uncomplicated Firewall)を介してUbuntuサーバーでHTTPおよびHTTPSポートの両方を開く必要があります。
次の「 ufw 」コマンドを実行して、「 Nginx Full 」プロファイルを有効にし、HTTPおよびHTTPSアクセスをUbuntuサーバーに許可します。
sudo ufw allow 'Nginx Full'次のコマンドでUFWルールを確認します。「 Nginx Full 」プロファイルがステータス ‘ALLOW’ で有効になっていることを確認してください。
sudo ufw status
最後に、お好みのウェブブラウザからhttp://192.168.5.30/にアクセスしてNginxインストールにアクセスします。成功した場合、次のようなデフォルトの「 index.html 」ページが表示されるはずです。

MariaDBサーバーのインストール
Nginxをインストールした後、UbuntuにMariaDBサーバーをインストールします。この例では、Ubuntuリポジトリを介してMariaDBをインストールし、その後「 mariadb-secure-installation 」ユーティリティを介してMariaDBインストールを保護します。
UbuntuにMariaDBサーバーをインストールするには、次の「 apt install 」コマンドを実行します。Yを入力してENTERを押してプロセスを進めます。
sudo apt install mariadb-server
インストールが完了したら、次のコマンドでMariaDBサービスを確認します。これにより、MariaDBサービスのステータスが表示されます。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadbMariaDBサービスは「 enabled 」であり、現在のステータスは「 active (running) 」です。

MariaDBサーバーをインストールしたら、「 mariadb-secure-installation 」を介してそれを保護する必要があります。これにより、MariaDBのrootパスワードを設定し、rootユーザーのリモート認証を無効にし、MariaDBサーバーインストールから不要なデータベースと権限を削除できます。
以下の「 mariadb-secure-installation 」コマンドを実行してMariaDBサーバーを保護します。
sudo mariadb-secure-installation次に、以下のMariaDBサーバー構成について尋ねられます。
MariaDBのrootパスワードを求められたらENTERを押します。
Enter current password for root (enter for none):
OK, successfully used password, moving on...unix_socket認証に切り替えるように求められたら「 n 」と入力します。
Switch to unix_socket authentication [Y/n] n
... skipping.MariaDBのrootパスワードを設定するためにYを入力します。次に、新しいパスワードを入力し、再度入力します。
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!MariaDBサーバーインストールからデフォルトの匿名ユーザーを削除するためにYを入力します。
Remove anonymous users? [Y/n] Y
... Success!MariaDBのrootユーザーのリモートログインを無効にするためにYを入力します。rootユーザーは常にlocalhostから接続する必要があります。
Disallow root login remotely? [Y/n] Y
... Success!次に、MariaDBサーバーからデフォルトのデータベーステストとその権限を削除するためにYを再度入力します。
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!権限テーブルを再読み込みし、これまでに行ったすべての変更を適用するためにYを入力します。
Reload privilege tables now? [Y/n] Y
... Success!完了すると、次のメッセージが表示されます。
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!PHP-FPMのインストール
PHP-FPM(FastCGI Process Manager)は、PHPのFastCGI実装の代替です。主にNginxをウェブサーバーとして使用する高トラフィックサイトで使用されます。このセクションでは、MySQL/MariaDBドライバー用のmysqli、キャッシング用のopcacheおよびAPCuなどの追加拡張機能を持つPHP-FPMをインストールします。
次のコマンドでUbuntuサーバーにPHP-FPMをインストールします。プロンプトが表示されたらYを入力し、ENTERを押して進めます。
sudo apt install php-fpm php-mysql php-curl php-gd php-json php-intl php-bcmath php-opcache php-apcu php-mbstring php-fileinfo php-xml php-soap php-tokenizer php-zip
インストールが完了すると、PHP-FPMサービスは起動しているはずです。次のコマンドでPHP-FPMサービスのステータスを確認します。
sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpm以下のように、PHP-FPMは「 active (running) 」であり、システム起動時に「 enabled 」です。

Ubuntuでは、デフォルトのPHP-FPMはsockファイルの下で実行されています。PHP-FPMのsockファイルのパスを知ることは重要であり、これはNginxウェブサーバーとの統合に使用されます。
次のコマンドでPHP-FPMのsockファイルの場所を確認します。
ss -pl | grep php次の出力で、PHP-FPMのsockファイルが「 /run/php/php8.3-fpm.sock 」にあることがわかります。
NginxとPHP-FPMの統合
PHP-FPMをインストールしたので、Nginxウェブサーバーと統合する時が来ました。そのためには、PHP-FPMのsockファイルの正確なパスを知っておく必要があり、次にデフォルトのNginxサーバーブロックファイルを修正します。
次のnanoエディタコマンドを使用してサーバーブロック構成「 /etc/nginx/sites-available/default 」を開きます。
sudo nano /etc/nginx/sites-available/default次の行のコメントを解除し、PHP-FPMのsockファイルのパスを新しい場所に変更します。
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}ファイルを保存してエディタを終了します。
次に、Nginx構成を変更した後にこのコマンドを実行してNginxの構文を確認します。
sudo nginx -t適切なNginx構文がある場合、次のような確認が表示されます。

次に、Nginxサービスを再起動してNginxとPHP-FPMの統合を適用するために、次のコマンドを実行します。
sudo systemctl restart nginxNginxが再起動したら、PHPINFOファイルを介して統合を確認できます。次のコマンドを実行して、デフォルトのウェブルートディレクトリ「 /var/www/html/ 」にPHPINFOファイル「 info.php 」を作成します。
echo "" > /var/www/html/info.php最後に、ウェブブラウザに戻り、http://192.168.5.30/info.phpにアクセスします。NginxとPHP-FPMの統合が成功した場合、次のようになります。
Nginxウェブサーバーの下でPHP 8.3がサーバーAPI PHP-FPMで実行されていることがわかります。

ページを下にスクロールすると、PHP mysqli/mysqlnd拡張機能もインストールされていることがわかります。

最後に、PHPインストールでAPCを介したキャッシングも有効になっていることがわかります。

Nginxサーバーブロック(仮想ホスト)の作成
サーバーブロックは、Nginxウェブサーバーの「仮想ホスト」の別名です。これは、単一のサーバーで複数のウェブサイトやドメイン名をホストするために使用されます。このセクションでは、Nginxサーバーブロックを作成する方法を学びます。
サーバーブロック構成を作成する前に、次のコマンドを実行して新しいウェブルートディレクトリ「 ‘/var/www/newsite/public_html’ 」とカスタム「 index.html 」ページを作成します。
mkdir -p /var/www/newsite/public_html
echo "Welcome to newsite.com" > /var/www/newsite/public_html/index.html次に、次のコマンドを実行して「 /var/www/newsite 」ディレクトリの所有権をユーザー「 www-data 」に変更します。Ubuntuシステムでは、Nginxウェブサーバーは「 www-data 」ユーザーとして実行されています。
sudo chown -R www-data:www-data /var/www/newsite次に、次のnanoエディタコマンドを実行して新しいサーバーブロック構成「 ‘/etc/nginx/sites-available/newsite’ 」を作成します。
sudo nano /etc/nginx/sites-available/newsite以下の構成を挿入し、server_nameオプションをドメイン名に変更し、ウェブルートディレクトリを新しいパス「 /var/www/newsite/public_html 」に変更します。
server {
listen 80;
server_name newsite.com;
root /var/www/newsite/public_html;
index index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location / {
try_files $uri $uri/ =404;
}
}完了したら、ファイルを保存して終了します。
次に、次のコマンドを実行してサーバーブロック構成「 newsite 」を有効にします。このコマンドで、「 /etc/nginx/sites-available/newsite 」ファイルの新しいシンボリックリンクを「 /etc/nginx/sites-enabled/ 」ディレクトリに作成します。
sudo ln -s /etc/nginx/sites-available/newsite /etc/nginx/sites-enabled/サーバーブロックが有効になったら、次の「 nginx 」コマンドを実行してNginxの構文を確認します。
sudo nginx -tエラーがなければ、「 … syntax is ok / … test is successful 」という出力が得られるはずです。
最後に、次のコマンドを実行してNginxウェブサーバーを再起動し、新しいサーバーブロック構成を適用します。これにより、サーバーブロック構成がローカルマシンからアクセス可能になります。
sudo systemctl restart nginx
サーバーブロック構成のテスト
Nginxサーバーブロック構成が成功したことを確認するために、ローカルコンピュータからサーバーブロック構成のドメイン名にアクセスします。パブリックドメイン名を使用している場合は、ドメイン名に直接アクセスします。しかし、ローカルドメインユーザーの場合は、ローカルコンピュータの「hosts」ファイルを編集します。
- LinuxおよびMacOSユーザーは、root/管理者権限で「 /etc/hosts 」ファイルを編集します。
- Windowsユーザーは、管理者として「 C:\Windows\System32\drivers\etc\hosts 」ファイルを編集します。
次のように、サーバーのIPアドレスとドメイン名を追加します。
192.168.5.30 newsite.comファイルを保存して終了します。
次に、ウェブブラウザを開いてhttp://newsite.com/にアクセスします。Nginxサーバーブロック構成が成功した場合、次のように作成したカスタム「index.html」ページが表示されるはずです。

結論
おめでとうございます! Ubuntu 24.04 “Noble Numbat”にLEMPスタック(Linux、Nginx、MySQL/MariaDB、PHP)をインストールしました。また、MariaDBサーバーインストールを保護し、複数のウェブサイトをホストするためのNginxサーバーブロックを作成しました。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。