翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: AL2023 にLAMPサーバーをインストールする
次の手順は、 PHPと MariaDB
重要
これらの手順は AL2023 で使用することを目的としています。Ubuntu や Red Hat Enterprise Linux などの別のディストリビューションでLAMPウェブサーバーを設定しようとすると、このチュートリアルは機能しません。Ubuntu については、次の Ubuntu コミュニティドキュメントを参照してください: ApacheMySQLPHP
タスク
ステップ 1: LAMPサーバーを準備する
前提条件
-
このチュートリアルでは、インターネットからアクセスできるパブリックDNS名で、AL2023 を使用して新しいインスタンスを既に起動していることを前提としています。詳細については、「AL2Amazon で 023 EC2」を参照してください。また、 SSH (ポート 22)、 (ポート 80)、 HTTP (ポート 443) HTTPS 接続を許可するようにセキュリティグループを設定している必要があります。これらの前提条件の詳細については、「Amazon EC2ユーザーガイド」の「Linux インスタンスのインバウンドトラフィックの承認」を参照してください。
-
次の手順では、AL2023 で利用可能なPHP最新バージョン、現在 8.1 をインストールします。このチュートリアルで説明されているアプリケーション以外のPHPアプリケーションを使用する場合は、 8.1 との互換性を確認する必要があります。
LAMP サーバーを準備するには
-
インスタンスに接続します。詳細については、「AL2023 インスタンスへの接続」を参照してください。
-
すべてのソフトウェアパッケージが最新の状態であることを確認するため、インスタンスでソフトウェアの更新を実行します。この処理には数分かかりますが、最新のセキュリティアップデートとバグ修正を必ず適用することが重要です。
-y
オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を検査する場合は、このオプションを省略できます。[ec2-user ~]$
sudo dnf upgrade -y
-
AL2023 用の最新バージョンの Apache ウェブサーバーとPHPパッケージをインストールします。
[ec2-user ~]$
sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
-
MariaDB ソフトウェアパッケージをインストールします。dnf install コマンドを使用すると、複数のソフトウェアパッケージと関連するすべての依存関係を同時にインストールできます。
[ec2-user ~]$
sudo dnf install mariadb105-server次のコマンドを使用して、これらのパッケージの現在のバージョンを表示できます。
[ec2-user ~]$
sudo dnf infopackage_name
例:
[root@ip-172-31-25-170 ec2-user]# dnf info mariadb105 Last metadata expiration check: 0:00:16 ago on Tue Feb 14 21:35:13 2023. Installed Packages Name : mariadb105 Epoch : 3 Version : 10.5.16 Release : 1.amzn2023.0.6 Architecture : x86_64 Size : 18 M Source : mariadb105-10.5.16-1.amzn2023.0.6.src.rpm Repository : @System From repo : amazonlinux Summary : A very fast and robust SQL database server URL : http://mariadb.org License : GPLv2 and LGPLv2 Description : MariaDB is a community developed fork from MySQL - a multi-user, multi-threaded : SQL database server. It is a client/server implementation consisting of : a server daemon (mariadbd) and many different client programs and libraries. : The base package contains the standard MariaDB/MySQL client programs and : utilities.
-
Apache ウェブサーバーを起動します。
[ec2-user ~]$
sudo systemctl start httpd
-
systemctl コマンドを使用して、システムがブートするたびに Apache ウェブサーバーが起動するように設定します。
[ec2-user ~]$
sudo systemctl enable httpd
httpd が有効であることは、次のコマンドを実行して確認できます。
[ec2-user ~]$
sudo systemctl is-enabled httpd
-
セキュリティルールを追加して、まだインスタンスへのインバウンド HTTP (ポート 80) 接続を許可していない場合は、インスタンスへの接続を許可します。デフォルトでは、launch-wizard-
N
セキュリティグループは、起動時にインスタンス用に作成されました。セキュリティグループルールを追加しなかった場合、このグループにはSSH接続を許可するルールが 1 つだけ含まれます。で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/
。 ナビゲーションペインで [インスタンス] を選択し、インスタンスを選択します。
-
[セキュリティ] タブで、インバウンドルールを表示します。次のルールが表示されます。
Port range Protocol Source 22 tcp 0.0.0.0/0
警告
0.0.0.0/0
を使用すると、すべてのIPv4アドレスが を使用してインスタンスにアクセスできるようになりますSSH。これはテスト環境で短時間なら許容できますが、実稼働環境で行うのは安全ではありません。本番環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、インスタンスへのアクセスを限定します。 -
HTTP (ポート 80) 接続を許可するインバウンドルールがない場合は、今すぐルールを追加する必要があります。セキュリティグループのリンクを選択します。「Linux インスタンスのインバウンドトラフィックを許可する」の手順を使用して、次の値を持つ新しいインバウンドセキュリティルールを追加します。
-
タイプ: HTTP
-
プロトコル: TCP
-
[Port Range]: 80
-
[Source]: Custom
-
-
ウェブサーバーをテストします。ウェブブラウザで、インスタンスのパブリックDNSアドレス (またはパブリック IP アドレス) を入力します。
/var/www/html
にコンテンツがない場合は Apache テストページが表示され、このページには「正常に動作しました」と表示されます。Amazon EC2コンソールを使用してインスタンスDNSのパブリックを取得できます (パブリック IPv4 DNS 列をチェックし、この列が非表示の場合は、プリファレンス (歯車型のアイコン) を選択し、パブリック IPv4 DNSをオンに切り替えます)。
インスタンスのセキュリティグループに、ポート 80 でのHTTPトラフィックを許可するルールが含まれていることを確認します。詳細については、「セキュリティグループ にルールを追加する」を参照してください。
重要
Amazon Linux を使用していない場合は、それらの接続を許可するようにインスタンスのファイアウォールを設定する必要があるかもしれません。ファイアウォールの設定方法の詳細については、ディストリビューション用のドキュメントを参照してください。
Apache httpd は、Apache ドキュメントルートと呼ばれるディレクトリに維持されるファイルを提供します。Amazon Linux Apache ドキュメントルートは /var/www/html
であり、デフォルトでは root によって所有されます。
ec2-user
アカウントがこのディレクトリで複数のファイルを操作することを許可するには、ディレクトリの所有権とアクセス許可を変更する必要があります。このタスクを行うには、複数の方法があります。このチュートリアルでは、ec2-user
を apache
グループに追加し、/var/www
ディレクトリの所有権を apache
グループに付与し、グループへの書き込み権限を割り当てます。
ファイルの許可を設定するには
-
ユーザー (この場合は
ec2-user
) をapache
グループに追加します。[ec2-user ~]$
sudo usermod -a -G apache
ec2-user
-
ログアウトし、再度ログインして新しいグループを選択し、メンバーシップを確認します。
-
ログアウトします (exit コマンドを使用するか、ターミナルウィンドウを閉じます)。
[ec2-user ~]$
exit
-
apache
グループのメンバーシップを検証するには、インスタンスに再接続して次のコマンドを実行します。[ec2-user ~]$
groups
ec2-user adm wheel apache systemd-journal
-
-
/var/www
とそのコンテンツのグループ所有権をapache
グループに変更します。[ec2-user ~]$
sudo chown -R ec2-user:apache /var/www
-
グループの書き込み許可を追加して、これからのサブディレクトにグループ ID を設定するには、
/var/www
とサブディレクトのディレクトリ許可を変更します。[ec2-user ~]$
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
-
グループ書き込み許可を追加するには、
/var/www
とサブディレクトリのファイル許可を再帰的に変更します。[ec2-user ~]$
find /var/www -type f -exec sudo chmod 0664 {} \;
これで、 ec2-user
(およびapache
グループの将来のメンバー) は Apache ドキュメントルートでファイルを追加、削除、編集できるようになり、静的ウェブサイトやPHPアプリケーションなどのコンテンツを追加できるようになりました。
ウェブサーバーを保護するには (オプション)
HTTP プロトコルを実行しているウェブサーバーは、送受信するデータのトランスポートセキュリティを提供しません。ウェブブラウザを使用してHTTPサーバーに接続すると、アクセスURLsした 、受信したウェブページの内容、送信したHTMLフォームの内容 (パスワードを含む) はすべて、ネットワークパス上の任意の場所で傍受者に表示されます。ウェブサーバーを保護するためのベストプラクティスは、 HTTPS (HTTP Secure) のサポートをインストールすることです。これによりSSL、/TLS 暗号化でデータを保護します。
サーバーHTTPSで を有効にする方法については、「」を参照してくださいチュートリアル: AL2023 で SSL/TLS を設定する。
ステップ 2: LAMPサーバーをテストする
サーバーがインストールされて実行され、ファイルアクセス許可が正しく設定されている場合、ec2-user
アカウントはインターネットから利用可能な/var/www/html
ディレクトリにPHPファイルを作成できる必要があります。
LAMP サーバーをテストするには
-
Apache ドキュメントルートにPHPファイルを作成します。
[ec2-user ~]$
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
このコマンドを実行しようとしたときに「許可が拒否されました」というエラーが表示された場合は、ログアウトし、再度ログインして、ファイルの許可を設定するには で設定した正しいグループ許可を取得します。
-
ウェブブラウザで、先ほど作成したファイルの URL を入力します。URL これはインスタンスのパブリックDNSアドレスで、スラッシュとファイル名が続きます。例:
http://
my.public.dns.amazonaws.com
/phpinfo.phpPHP 情報ページが表示されます。
このページが表示されない場合は、前のステップで
/var/www/html/phpinfo.php
ファイルが正しく作成されたことを確認します。次のコマンドで、必要なパッケージがすべてインストールされたことを確認することもできます。[ec2-user ~]$
sudo dnf list installed httpd mariadb-server php-mysqlnd
必要なパッケージのいずれかが出力に表示されていない場合は、sudo yum install
package
コマンドを使ってインストールします。 -
phpinfo.php
ファイルを削除します。これは有用な情報であることもありますが、セキュリティ上の理由から、インターネット上で公表しないでください。[ec2-user ~]$
rm /var/www/html/phpinfo.php
これで、完全に機能するLAMPウェブサーバーが完成しました。で Apache ドキュメントルートにコンテンツを追加すると/var/www/html
、そのコンテンツはインスタンスのパブリックDNSアドレスで表示できるようになります。
ステップ 3: データベースサーバーをセキュリティで保護する
MariaDB サーバーのデフォルトのインストールには、テストおよび開発に役立ついくつかの機能がありますが、実稼働サーバーでは無効にするか削除する必要があります。mysql_secure_installation コマンドを使用すると、ルートパスワードを設定し、安全でない機能をインストールから削除する手順が案内されます。MariaDB サーバーを使用する予定がない場合でも、この手順を実行することが推奨されます。
MariaDB サーバーをセキュリティで保護するには
-
MariaDB サーバーを起動します。
[ec2-user ~]$
sudo systemctl start mariadb
-
mysql_secure_installation を実行します。
[ec2-user ~]$
sudo mysql_secure_installation
-
プロンプトが表示されたら、ルートアカウントのパスワードを入力します。
-
現在のルートパスワードを入力します。デフォルトでは、ルートアカウントにはパスワードが設定されていません。Enter キーを押します。
-
「
Y
」と入力してパスワードを設定し、安全なパスワードを 2 回入力します。安全なパスワードの作成の詳細については、「」を参照してくださいhttps://identitysafe.norton.com/password-generator/。このパスワードは必ず安全な場所に保管します。 MariaDB のルートパスワードの設定は、データベースを保護するための最も基本的な手段にすぎません。データベース駆動型アプリケーションを構築またはインストールする必要がある場合、通常はそのアプリケーションのデータベースサービスユーザーを作成します。ルートアカウントは、データベース管理以外には使用しないでください。
-
-
「
Y
」と入力して匿名ユーザーアカウントを削除します。 -
「
Y
」と入力してリモートルートログインを無効にします。 -
「
Y
」と入力してテストデータベースを削除します。 -
「
Y
」と入力して権限テーブルを再ロードし、変更を保存します。
-
-
(オプション) MariaDB サーバーをすぐに使用する予定がない場合は、これを停止します。再び必要になったときには再起動できます。
[ec2-user ~]$
sudo systemctl stop mariadb
-
(オプション) ブート時に毎回 MariaDB サーバーを起動させる場合は、次のコマンドを入力します。
[ec2-user ~]$
sudo systemctl enable mariadb
ステップ 4: (オプション) をインストールする phpMyAdmin
phpMyAdminphpMyAdmin
をインストールして設定するには、以下の手順に従ってください。
重要
Apache で SSL/TLS を有効にしていない限り、 phpMyAdmin
を使用してLAMPサーバーにアクセスすることはお勧めしません。有効にしないと、データベース管理者のパスワードやその他のデータがインターネット経由で安全に送信されません。デベロッパーからのセキュリティに関する推奨事項については、 phpMyAdmin 「インストールのセキュリティ保護
をインストールするには phpMyAdmin
-
必要な依存ファイルをインストールします。
[ec2-user ~]$
sudo dnf install php-mbstring php-xml -y
-
Apache を再起動します。
[ec2-user ~]$
sudo systemctl restart httpd
-
php-fpm
を再起動します。[ec2-user ~]$
sudo systemctl restart php-fpm
-
/var/www/html
で Apache ドキュメントルートに移動します。[ec2-user ~]$
cd /var/www/html
-
https://www.phpmyadmin.net/downloads
から最新 phpMyAdmin リリースのソースパッケージを選択します。ファイルディレクトリをインスタンスにダウンロードするには、次の例のようにリンクをコピーして wget コマンドに貼り付けます。 [ec2-user html]$
wget
https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
-
phpMyAdmin
フォルダを作成し、次のコマンドでパッケージを展開します。[ec2-user html]$
mkdir phpMyAdmin && tar -xvzf
phpMyAdmin-latest-all-languages.tar.gz
-C phpMyAdmin --strip-components 1 -
デバイスに保存されている
phpMyAdmin-latest-all-languages.tar.gz
tarball。[ec2-user html]$
rm
phpMyAdmin-latest-all-languages.tar.gz
-
(オプション) MySQL サーバーが実行されていない場合は、今すぐ起動します。
[ec2-user ~]$
sudo systemctl start mariadb
-
ウェブブラウザで、 phpMyAdmin インストールURLの を入力します。URL これは、インスタンスのパブリックDNSアドレス (またはパブリック IP アドレス) の後にスラッシュとインストールディレクトリの名前が続きます。例:
http://
my.public.dns.amazonaws.com
/phpMyAdminphpMyAdmin ログインページが表示されます。
-
以前に作成した
root
ユーザー名と My root SQLパスワードを使用して phpMyAdmin インストールにログインします。インストールは、サービス開始前に設定する必要があります。次の手順に従って、設定ファイルを手動で作成することから始めるのをお勧めします。
-
最小の設定ファイルから開始するには、お気に入りのテキストエディタを使用して新しいファイルを作成し、
config.sample.inc.php
の内容をそのファイルにコピーします。 -
ファイルを を含む phpMyAdmin ディレクトリ
config.inc.php
に として保存しますindex.php
。 -
追加セットアップについては、 phpMyAdmin インストール手順の「セットアップスクリプトの使用
」セクションの「ファイル作成後の手順」を参照してください。
の使用の詳細については phpMyAdmin、「 phpMyAdmin ユーザーガイド
」を参照してください。 -
トラブルシューティング
このセクションでは、新しいLAMPサーバーのセットアップ中に発生する可能性がある一般的な問題を解決するための提案を提供します。
ウェブブラウザを使用してサーバーに接続できません。
以下のチェックを行って、Apache ウェブサーバーが実行されていて、アクセス可能であるかどうかを確認します。
-
ウェブサーバーが実行されていますか?
httpd が有効であることは、次のコマンドを実行して確認できます。
[ec2-user ~]$
sudo systemctl is-enabled httpd
httpd プロセスが実行されていない場合は、LAMP サーバーを準備するには に記載されているステップを繰り返します。
-
ファイアウォールは正しく設定されていますか?
インスタンスのセキュリティグループに、ポート 80 でのHTTPトラフィックを許可するルールが含まれていることを確認します。詳細については、「セキュリティグループ にルールを追加する」を参照してください。
を使用してサーバーに接続できない HTTPS
次のチェックを実行して、Apache ウェブサーバーが をサポートするように設定されているかどうかを確認しますHTTPS。
-
ウェブサーバは正しく設定されていますか?
Apache をインストールすると、サーバーはHTTPトラフィック用に設定されます。をサポートするにはHTTPS、サーバーTLSで を有効にし、SSL証明書をインストールします。詳細については、チュートリアル: AL2023 で SSL/TLS を設定する を参照してください。
-
ファイアウォールは正しく設定されていますか?
インスタンスのセキュリティグループに、ポート 443 でのHTTPSトラフィックを許可するルールが含まれていることを確認します。詳細については、「Linux インスタンスのインバウンドトラフィックを許可する」を参照してください。
関連トピック
インスタンスへのファイルの転送またはウェブサーバーへの WordPress ブログのインストールの詳細については、次のドキュメントを参照してください。
このチュートリアルで使用されているコマンドおよびソフトウェアの詳細については、次のウェブページを参照してください。
-
Apache ウェブサーバー: http://httpd.apache.org/
-
MariaDB データベースサーバー: https://mariadb.org/
-
PHP プログラミング言語: http://php.net/
ウェブサーバーのドメイン名の登録、または、既存のドメイン名をこのホストに移す方法についての詳細は、『Amazon Route 53 デベロッパーガイド』の「Amazon Route 53 のドメインとサブドメインの作成と移行」を参照してください。