チュートリアル: Azure Linux VM に LAMP スタックをインストールする

適用対象: ✔️ Linux VM

この記事では、Apache Web サーバー、MySQL、PHP (LAMP スタック) を Azure 上の Ubuntu VM にデプロイする方法について説明します。 LAMP サーバーの動作を確認するために、WordPress サイトをインストールし、構成することもできます。 このチュートリアルで学習する内容は次のとおりです。

  • Ubuntu VM を作成する
  • Web トラフィック用にポート 80 を開く
  • Apache、MySQL、および PHP をインストールする
  • インストールと構成を確認する
  • WordPress のインストール

このセットアップは、簡単なテストまたは概念実証のためのものです。 運用環境の推奨事項を含め、LAMP スタックの詳細については、Ubuntu ドキュメントを参照してください。

このチュートリアルでは、Azure Cloud Shell で CLI を使用します。このバージョンは常に更新され最新になっています。 Cloud Shell を開くには、コード ブロックの上部にある [使ってみる] を選択します。

CLI をローカルにインストールして使用する場合、このチュートリアルでは、Azure CLI バージョン 2.0.30 以降を実行している必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

リソース グループを作成する

az group create コマンドを使用して、リソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。

次の例では、環境変数を使用してリソース グループを作成し、一意性を確保するためにランダムなサフィックスを追加します。

export REGION="eastus2"
export RANDOM_SUFFIX="$(openssl rand -hex 3)"
export MY_RESOURCE_GROUP_NAME="myResourceGroup${RANDOM_SUFFIX}"
az group create --name "${MY_RESOURCE_GROUP_NAME}" --location $REGION

結果:

{
  "id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupxxxxx",
  "location": "eastus",
  "name": "myResourceGroupxxxxx",
  "properties": {
      "provisioningState": "Succeeded"
  }
}

仮想マシンの作成

az vm create コマンドで VM を作成します。

次の例では、環境変数を使用して VM を作成します。 既定のキーの場所にまだ存在しない場合は、 myVM という名前の VM が作成され、SSH キーが作成されます。 特定のキーのセットを使用するには、--ssh-key-value オプションを使用します。 このコマンドは、管理者ユーザー名として azureuser も設定します。 後でこの名前を使って VM に接続します。

export MY_VM_NAME="myVM${RANDOM_SUFFIX}"
export IMAGE="Ubuntu2204"
export ADMIN_USERNAME="azureuser"
az vm create \
    --resource-group "${MY_RESOURCE_GROUP_NAME}" \
    --name $MY_VM_NAME \
    --image $IMAGE \
    --admin-username $ADMIN_USERNAME \
    --generate-ssh-keys

VM が作成されると、Azure CLI によって次の例のような情報が表示されます。 publicIpAddress を書き留めておきます。 このアドレスは、後の手順で VM にアクセスするために使われます。

{
  "fqdns": "",
  "id": "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "40.68.254.142",
  "resourceGroup": "myResourceGroup"
}

Web トラフィック用にポート 80 を開く

Azure にデプロイされている Linux VM に対しては、既定で SSH 接続のみが許可されます。 この VM は Web サーバーとして使用することになるため、インターネットからのポート 80 を開放する必要があります。 az vm open-port コマンドを使用して、目的のポートを開きます。

az vm open-port --port 80 --resource-group "${MY_RESOURCE_GROUP_NAME}" --name $MY_VM_NAME

VM へのポートを開く方法の詳細については、ポートの開放に関するページを参照してください。

VM への SSH 接続

VM のパブリック IP アドレスが未確認である場合は、az network public-ip list コマンドを実行します。 後の複数の手順で、この IP アドレスが必要になります。

export PUBLIC_IP=$(az network public-ip list --resource-group "${MY_RESOURCE_GROUP_NAME}" --query [].ipAddress -o tsv)

ssh コマンドを使用して、仮想マシンとの SSH セッションを作成します。 ご使用の仮想マシンの正しいパブリック IP アドレスに置き換えてください。

Apache、MySQL、および PHP をインストールする

次のコマンドを実行して、Ubuntu パッケージ ソースを更新し Apache、MySQL、および PHP をインストールします。 コマンドの最後にあるキャレット (^) に注意してください。これは、lamp-server^ パッケージ名の一部です。

ssh -o StrictHostKeyChecking=no azureuser@$PUBLIC_IP "sudo apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-get -y install lamp-server^"

パッケージやその他の依存関係をインストールすることが求められます。 このプロセスにより、MySQL で PHP を使用するための必要最小限の PHP 拡張機能がインストールされます。

Apache を確認する

次のコマンドで Apache のバージョンを確認します。

ssh -o StrictHostKeyChecking=no azureuser@$PUBLIC_IP "apache2 -v"

Apache がインストールされ、VM に対しポート 80 が開かれると、Web サーバーにインターネットからアクセスできるようになります。 Apache2 Ubuntu の既定ページを表示するには、Web ブラウザーを開いて、VM のパブリック IP アドレスを入力します。 VM に対する SSH で使用したパブリック IP アドレスを使用します。

Apache の既定のページ

MySQL を確認してセキュリティで保護する

次のコマンドを使用して MySQL のバージョンを確認します (大文字の V パラメーターに注意)。

ssh -o StrictHostKeyChecking=no azureuser@$PUBLIC_IP "mysql -V"

ルート パスワードの設定など、MySQL のインストールをセキュリティで保護するには、 sudo mysql_secure_installation コマンドを実行します。 このコマンドを実行すると、MySQL のインストールをセキュリティで保護するために役立ついくつかの質問に答えるメッセージが表示されます。

必要に応じてValidate Password プラグインを設定することもできます (推奨)。 次に、MySQL のルート ユーザーに使用するパスワードを設定し、その他、環境のセキュリティ設定を構成します。 質問にはすべて "Y" (はい) で答えることをお勧めします。

MySQL の機能 (MySQL データベースの作成、ユーザーの追加、構成設定の変更) を試したい場合は、MySQL にログインします。 このチュートリアルを完了するにあたって、この手順は必須ではありません。 これを行うには、VM で sudo mysql -u root -p コマンドを使用し、プロンプトが表示されたらルート パスワードを入力します。 このコマンドは、SSH 経由で VM に接続し、MySQL コマンド ライン クライアントをルート ユーザーとして起動します。

完了したら「\q」と入力して、mysql プロンプトを終了します。

PHP を確認する

次のコマンドで PHP のバージョンを確認します。

ssh -o StrictHostKeyChecking=no azureuser@$PUBLIC_IP "php -v"

さらにテストする場合は、ブラウザーで表示する簡単な PHP 情報ページを作成できます。 次のコマンドは、PHP 情報ページを作成します。 sudo sh -c 'echo \"<?php phpinfo\(\)\; ?>\" > /var/www/html/info.php

ここで作成した PHP 情報ページを確認できます。 ブラウザーを開き、http://yourPublicIPAddress/info.php に移動します。 IP アドレスは、実際の VM のパブリック IP アドレスに置き換えてください。 以下の画像のようなページが表示されます。

PHP 情報ページ

WordPress のインストール

実際のスタックを試す場合は、サンプル アプリをインストールします。 以下の手順では、具体的な例として、オープン ソースの WordPress プラットフォームをインストールして、Web サイトとブログを作成しています。 その他、Drupal や Moodle などのワークロードで試してもかまいません。

ここで行う WordPress のセットアップは、概念実証だけを目的としています。 推奨されるセキュリティ設定で運用環境に最新の WordPress をインストールする場合は、WordPress のドキュメントをご覧ください。

WordPress パッケージのインストール

次のコマンドを実行します。

sudo apt install wordpress

WordPress の構成

MySQL と PHP を使うように WordPress を構成します。

作業ディレクトリに wordpress.sql というテキスト ファイルを作成し、WordPress 用の MySQL データベースを構成します。

sudo sensible-editor wordpress.sql

次のコマンドを追加します。yourPassword は、ご自分で選ばれたデータベース パスワードに置き換えます (他の値はそのままでかまいません)。 前にパスワードの強度を検証するために MySQL セキュリティ ポリシーをセットアップした場合は、パスワードが強度の要件を満たすことを確認します。 ファイルを保存します。

CREATE DATABASE wordpress;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress.*
TO wordpress@localhost
IDENTIFIED BY 'yourPassword';

次のコマンドを実行してデータベースを作成します。

cat wordpress.sql | sudo mysql --defaults-extra-file=/etc/mysql/debian.cnf

wordpress.sql ファイルにはデータベースの資格情報が含まれているので、使った後で削除します。

sudo rm wordpress.sql

PHP を構成するには、次のコマンドを実行して任意のテキスト エディターを開き、/etc/wordpress/config-localhost.php というファイルを作成します。

sudo sensible-editor /etc/wordpress/config-localhost.php

このファイルに次の行をコピーします。yourPassword は、実際の WordPress データベースのパスワードに置き換えてください (他の値はそのままでかまいません)。 そのうえでファイルを保存します。

<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'yourPassword');
define('DB_HOST', 'localhost');
define('WP_CONTENT_DIR', '/usr/share/wordpress/wp-content');
?>

WordPress のインストールを Web サーバーのドキュメント ルートに移動します。

sudo ln -s /usr/share/wordpress /var/www/html/wordpress

sudo mv /etc/wordpress/config-localhost.php /etc/wordpress/config-default.php

これで WordPress のセットアップを完了し、プラットフォーム上で公開することができます。 ブラウザーを開き、http://yourPublicIPAddress/wordpress に移動します。 IP アドレスは、実際の VM のパブリック IP アドレスに置き換えてください。 以下の画像のようなページが表示されます。

WordPress のインストール ページ

次の手順

このチュートリアルでは、Azure に LAMP サーバーを展開しました。 以下の方法について学習しました。

  • Ubuntu VM を作成する
  • Web トラフィック用にポート 80 を開く
  • Apache、MySQL、および PHP をインストールする
  • インストールと構成を確認する
  • LAMP サーバーに WordPress をインストールする

TLS/SSL 証明書を使用して Web サーバーをセキュリティ保護する方法については、次のチュートリアルに進んでください。