[初心者向け]Amazon Linux 2にLAMP環境を構築してみる

VPC上に起動したAmazon Linux 2にLAMP環境を構築してみました。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Bonjour、AWS事業本部のニシヤマです。

以前、VPCの作成からAmazon Linux 2(64 ビット x86)のEC2インスタンスを起動したブログを書きました。今回はその続きとしてAmazon Linux 2にLAMP環境を構築してみたいと思います。

はじめに

今回はAmazon Linux 2で起動したEC2内部の作業になります。そのため、前回の手順で作成した以下の構成が起動されている前提で進めます。

LAMP環境の構築手順は以下のチュートリアルを参考に進めます。

チュートリアル: Amazon Linux 2 に LAMP ウェブサーバーをインストールする

また、本ブログで御紹介する手順を利用する場合は別途セキュリティや可用性など検討してください。

LAMP環境構築

今回LAMP環境の構築となりますが、Amazon Linux 2の場合LAMPの「M」はMySQLではなくMariadbとなりますのでご注意ください。それでは始めて行きます。

パッケージの最新化

EC2にSSHにログインしてまずは全てのソフトウェアパッケージを最新化します。

$ sudo yum update -y

PHP、MariaDBクライアントのインストール

次にamazon-linux-extrasコマンドを利用してAmazon Linux Extras リポジトリからPHP7.2関連のパッケージと、MariaDBクライアントをインストールします。

$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2

amazon-linux-extrasコマンドって何?という方は以下のブログをご参照ください。

Amazon Linux 2のExtras Library(amazon-linux-extras)を使ってみた

Apache、MariaDBのインストール

次はApacheと、MariaDBをインストールします。これらのパッケージはAmazon Linux Extras リポジトリには無いので、yumコマンドでインストールします。

$ sudo yum install -y httpd mariadb-server

必要なパッケージのインストールが完了しました。

Apacheの起動、自動起動有効化

Apacheを起動し、自動起動も有効にします。

$ sudo systemctl start httpd
$ sudo systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
$ sudo systemctl is-enabled httpd
enabled

セキュリティグループの開放

セキュリティグループで80番(HTTP)ポートを開放します。

「EC2」メニューに移動します。左のメニューでセキュリティグループをクリックします。

フィルタでVPC ID等で絞り込んでEC2にアタッチされているセキュリティグループをクリックします。

インバウンドルールのタブでインバウンドルールの編集をクリックして下さい。

インバウンドルールを編集画面でルールを追加をクリックします。タイプにHTTP、ソースは今回は接続元を制限するためマイIPを選択します。自動で自分のPCのグローバルIPアドレスが入力されます。

あとは右下のルールを保存をクリックして変更を保存します。

もし、インターネットに公開する場合は任意の場所を選択してください。

Apacheの動作確認

それではブラウザで立ち上げたEC2のパブリック DNS名か、IPv4 パブリック IPでアクセスしてみて下さい。以下のページが表示されればApacheの動作確認は完了です。

PHPの動作確認

続いてドキュメントルート(/var/www/html)配下にphpinfo.phpを作成して下さい。

ブラウザでhttp://<EC2のパブリック DNS名またはIPv4 パブリック IP>/phpinfo.phpにアクセスして以下の様なページが表示されればPHPの動作確認も完了です。

動作確認が完了したらphpinfo.phpは削除しておきましょう。

$ rm /var/www/html/phpinfo.php

MariaDBの起動、自動起動有効化と初期設定

次にMariaDBを起動してmysql_secure_installationコマンドを利用してrootアカウントのパスワード設定などセキュリティ向上のための設定を実施します。

$ sudo systemctl start mariadb
$ sudo mysql_secure_installation
〜〜省略〜〜
Set root password? [Y/n] Y      
New password: <パスワードを入力>
Re-enter new password: <同じパスワードを入力>
Password updated successfully!
〜〜省略〜〜
Remove anonymous users? [Y/n] Y
 ... Success!
〜〜省略〜〜
Disallow root login remotely? [Y/n] Y
 ... Success!
〜〜省略〜〜
Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
〜〜省略〜〜
Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

mysql_secure_installationコマンドでは順番に対話式に以下の確認・設定をしています。

  1. rootアカウントのパスワードをセットするか
  2. 匿名ユーザーアカウントを削除するか
  3. リモートルートログインを無効にするか
  4. テストデータベースを削除するか
  5. 権限テーブルを再ロードし変更を保存するか

最後にMaridaDBの自動起動を有効化しておきます。

$ sudo systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl is-enabled mariadb
enabled

以上でLAMP環境の構築が完了しました!

補足

今回はHTTPのみアクセス可能な環境の構築手順を御紹介しましたが、HTTPSを利用する場合は以下のチュートリアルも参照してみてください。

チュートリアル: Amazon Linux に SSL/TLS を設定する

おわりに

いかがでしたでしょうか。 初歩的な内容となりますが前回前々回のブログと合わせていただくことでVPCの作成からLAMP環境の構築の流れをご紹介することができました。 あとは構築したサーバにセットアップすることでPHPアプリケーションを動かすことが可能になります。この記事がどなたかのお役に立てば幸いです。

参考