ウェブサイト検索

Ubuntu 24.04にLEMPスタック(Linux、Nginx、PHP、MariaDB)をインストールする方法


Ubuntu 24.04にLEMPスタック(Linux、Nginx、PHP、MariaDB)をインストールする方法

このチュートリアルはこれらのOSバージョンのために存在します

  • Ubuntu 24.04 (ノーブル・ナンバット)
  • Ubuntu 22.04 (ジャミー・ジェリーフィッシュ)
  • Ubuntu 20.04 (フォーカルフォッサ)
  • Ubuntu 20.04 (フォーカルフォッサ)
  • Ubuntu 18.04 (ビオニックビーバー)
  • Ubuntu 16.04 (ゼニアル・ゼクサス)

このページで

  1. 前提条件
  2. Nginxウェブサーバーのインストール
  3. MariaDBサーバーのインストール
  4. PHP-FPMのインストール
  5. NginxとPHP-FPMの統合
  6. Nginxサーバーブロック(バーチャルホスト)の作成
  7. サーバーブロックの設定をテストしています
  8. 結論

LEMPスタック(Linux、Nginx、MySQL/MariaDB、PHP)は、PHPウェブアプリケーションをホスティングおよび開発するための無料でオープンソースのソフトウェアアプリケーションのグループです。LEMPスタックは、静的および動的ウェブアプリケーションの両方を展開するために使用できます。

このガイドでは、Ubuntu 24.04 "Noble Numbat" に LEMP スタック(Linux、Nginx、MySQL/MariaDB、PHP)をインストールする方法を説明します。また、MariaDB サーバーを保護する方法や、ウェブサイトやドメイン名をホストするための Nginx サーバーブロック構成を作成する方法も紹介します。

前提条件

始める前に、Ubuntu 24.04「ノーブルナンバット」がルートユーザーまたはsudo/管理者権限のある非ルートユーザーとして使えることを確認してください。また、UFW(簡易ファイアウォール)が実行され、有効になっていることも確認してください。

Nginxウェブサーバーのインストール

Nginx(エンジンエックス)は、インターネット上で最も人気のあるウェブサーバーです。Nginxは同時に高トラフィックを処理でき、最小限のシステムリソースで済むため、人気を博しました。この最初のステップでは、UbuntuサーバーにNginxウェブサーバーをインストールします。

パッケージをインストールする前に、次のコマンドでUbuntuのパッケージリストを更新およびリフレッシュしてください。

sudo apt update

以下のコマンドを使用して、UbuntuマシンにNginxウェブサーバーをインストールしてください。プロンプトが表示されたら、インストールを確認するためにYを入力してください。

sudo apt install nginx

インストールが完了すると、Nginxサービスはシステム上で実行され、有効になっているはずです。以下のコマンドでNginxサービスを確認してください。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Nginxサービスが「有効」であり、現在のステータスが「アクティブ(実行中)」であることを確認してください。

Nginxにアクセスする前に、UFW(Uncomplicated Firewall)を通じてUbuntuサーバーのHTTPおよびHTTPSポートの両方を開く必要があります。

以下のufwコマンドを実行して、HTTPおよびHTTPSのアクセスをUbuntuサーバーで許可するNginx Fullプロファイルを有効にしてください。

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 mariadb

MariaDBサービスは現在のステータス「アクティブ(実行中)」で「有効」です。

MariaDBサーバーをインストールしたら、mariadb-secure-installationを使ってセキュリティを確保する必要があります。これにより、MariaDBのルートパスワードを設定し、ルートユーザーのリモート認証を無効にし、さらに不要なデータベースや権限を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...

nと入力してくださいと言われたら、unix_socket認証に切り替えます。

Switch to unix_socket authentication [Y/n] n
 ... skipping.

Y を入力してMariaDBのrootパスワードを設定します。その後、新しいパスワードを入力し、繰り返します。

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Yを入力して、MariaDBサーバーのインストールからデフォルトの匿名ユーザーを削除してください。

Remove anonymous users? [Y/n] Y
 ... Success!

Yを入力してMariaDBのrootユーザーのリモートログインを無効にしてください。rootユーザーは常にlocalhostから接続する必要があります。

Disallow root login remotely? [Y/n] Y
 ... Success!

もう一度Yを入力して、MariaDBサーバーからデフォルトのデータベーステストとその権限を削除してください。

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プロセスマネージャー)は、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は「アクティブ(実行中)」であり、システム起動時に「有効」です:

Ubuntuでは、デフォルトのPHP-FPMはsockファイルの下で実行されています。PHP-FPMのsockファイルのパスを知ることは重要で、これはNginxウェブサーバーとの統合に使用されます。

次のコマンドを使ってPHP-FPMソケットファイルの場所を確認してください。

ss -pl | grep php

次の出力では、PHP-FPMのソックファイルが「/run/php/php8.3-fpm.sock」にあることがわかります。

NginxとPHP-FPMの統合

PHP-FPMをインストールしたので、次はそれをNginxウェブサーバーと統合する時です。そのためには、PHP-FPMのソックファイルの正確なパスを知っておく必要があり、次にデフォルトのNginxサーバーブロックファイルを変更します。

次のnanoエディタコマンドを使って、サーバーブロックの設定'/etc/nginx/sites-available/default'を開いてください。

sudo nano /etc/nginx/sites-available/default

以下の行のコメントを外し、新しい場所にPHP-FPMソックファイルのパスを変更してください。

 # 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コマンドを実行してください。Nginxの設定を変更した後にこのコマンドを実行する必要があります。

sudo nginx -t

正しいNginxの構文があれば、次のような確認メッセージが表示されるはずです:

次に、以下のコマンドを実行してNginxサービスを再起動し、NginxとPHP-FPMの統合を適用します。

sudo systemctl restart nginx

Nginxを再起動した後、PHPINFOファイルを通じて統合を確認できます。以下のコマンドを実行して、デフォルトのウェブルートディレクトリ「/var/www/html/」にPHPINFOファイル「info.php」を作成してください。

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

最後に、ウェブブラウザに戻り、http://192.168.5.30/info.phpにアクセスしてください。NginxとPHP-FPMの統合が成功していれば、以下の内容が表示されるはずです:

下記に示すように、PHP 8.3はNginxウェブサーバーの下でサーバーAPI PHP-FPMとともに動作しています。

ページを下にスクロールすると、PHP mysqli/mysqlnd拡張もインストールされているのが見えます。

最後に、あなたのPHPインストールでAPCによるキャッシングが有効になっていることも確認できます。

Nginxサーバーブロック(バーチャルホスト)の作成

サーバーブロックは、Nginxウェブサーバーの「バーチャルホスト」の別名に過ぎません。これは、1つのサーバーで複数のウェブサイトやドメイン名をホストするために使用されます。このセクションでは、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

エラーがない場合、出力は「...構文は正しいです/...テストは成功しました」となるはずです。

最後に、以下のコマンドを実行してNginxウェブサーバーを再起動し、新しいサーバーブロックの設定を適用します。これで、あなたのサーバーブロックの設定はローカルマシンからアクセス可能になるはずです。

sudo systemctl restart nginx

サーバーブロックの設定をテストしています

Nginxサーバーブロックの設定が成功することを確認するために、ローカルコンピューターからサーバーブロック設定のドメイン名にアクセスします。パブリックドメイン名を使用している場合は、そのドメイン名を直接訪問します。しかし、ローカルドメインユーザーの場合は、ローカルコンピューターの「hosts」ファイルを編集します。

  • LinuxおよびMacOSユーザーは、ルート/管理者権限で/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 "ノーブルナンバット" にLEMPスタック(Linux、Nginx、MySQL/MariaDB、およびPHP)をインストールしました。また、MariaDBサーバーのインストールを保護し、複数のウェブサイトをホストするためのNginxサーバーブロックを作成しました。

関連記事: