どーも、こんばんは!かーずです。
ながらくお待たせいたしました。
前回の記事では、2年越しの「WEBサーバーの設置(EC2)」を行いました!
最初から手順を確認したい方は第1回目へ。
ここからは、作成したWebサーバを利用して、アプリケーションを導入していきましょ~!
それでは、レッツゴー (^^)/
目次
※作成時のAWS環境は [2022年3月] になります。
Webサーバへの接続
アプリケーションを導入するために、まずはサーバへの接続を行いましょう。
ターミナルソフトを利用してサーバへアクセスします。
「TeraTerm」や、「Rlogin」といったターミナルソフトを利用すると良いですね。
特に、「Rlogin」は私の超オススメターミナルソフトなので、以下の記事を参考にぜひインストールしてみてください!
超便利なターミナルソフト!RLoginの使用方法をご紹介 [Windows]
接続に必要な情報としては以下になります。
項目 | 接続情報(値) | 説明 |
---|---|---|
IPアドレス | 123.111.222.333 | 前回に作成したサーバのグローバルIPアドレスです (※IPアドレスはサンプルです) |
ログインユーザー | ec2-user | Amazon Linux 2 で作成されたサーバの初期ユーザーです |
キーペア | ba-chi-key.pem | 前回に作成したサーバのキーペアです (※ファイル名は任意です) |
接続ポート | 22 (SSH) | サーバへ接続する際に必要となるポート番号です |
ちゃんと接続情報を設定するとこんな感じで、プロンプトが返ってきます!
Webアプリケーションの導入 [Apache], [PHP]
サーバへの接続確認はできましたか?
次は、アプリケーションの導入をしていきます!
・・・と、その前に。
サーバを構築したあとは、カーネルというオペレーティングシステム(OS)の基本機能の役割を担うソフトウェアをアップデートしましょう。
そもそも、サーバへ接続すると以下のような画面になっていると思います。
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
25 package(s) needed for security, out of 40 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-XXX-XXX-XXX-XXX ~]$
>Run “sudo yum update” to apply all updates.
と記載されていますね。
なので、そのままサーバに対して以下のコマンドを打ち込んでアップデートしましょう。
$ sudo yum -y update
※ [-y] というコマンドオプションは、アップデート内容の確認を飛ばすことを明示的に表記しています。
プロンプトが返ってきて、「Complete!」 と表示されればアップデート完了です。
それでは、「Apache」、「PHP」のインストールをしていきましょう!
・Apacheのインストール
Apache のインストールは以下のコマンドを実施します。
sudo yum -y install httpd
※ [-y] というコマンドオプションは、インストール内容の確認を飛ばすことを明示的に表記しています。
プロンプトが返ってきて、 「Complete!」 と表示されれば Apache のインストールが完了です!
※今回の手順では、[Apache v2.4] をインストールしています。
では、本当にインストールされたかどうか確認しましょう。
以下のコマンドを実施します。
$ httpd -v
Server version: Apache/2.4.XX ()
Server built: MM DD YYYY XX:XX:XX
※マイナーバージョン、ビルド時刻はマスクしています。
無事、インストールされていることが確認できました。
インストール直後では、Apache が起動していないためアプリケーションを立ち上げる必要があります。
そのため、まずは以下のコマンドを実行して起動や、起動確認、起動状態を有効化する設定を行います。
[1] Apache [httpd] サービスの起動確認を実施
$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd.service(8)
[Active: inactive (dead)] となっているため、Apache は起動していないことが確認できます。
[2] Apache [httpd] サービスを起動
$ sudo systemctl start httpd
[3] サーバの起動時にも Apache [httpd] サービスが自動起動されるよう設定
$ sudo systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[4] Apache [httpd] サービスの起動確認を再実施
$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since XXX 2022-XX-XX XX:XX:XX UTC; 24s ago
Docs: man:httpd.service(8)
Main PID: 6668 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"
CGroup: /system.slice/httpd.service
├─6668 /usr/sbin/httpd -DFOREGROUND
├─6669 /usr/sbin/httpd -DFOREGROUND
├─6670 /usr/sbin/httpd -DFOREGROUND
├─6671 /usr/sbin/httpd -DFOREGROUND
├─6672 /usr/sbin/httpd -DFOREGROUND
└─6673 /usr/sbin/httpd -DFOREGROUND
XXX XX XX:XX:XX ip-XXX-XXX-XXX-XXX.ap-northeast-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
XXX XX XX:XX:XX ip-XXX-XXX-XXX-XXX.ap-northeast-1.compute.internal systemd[1]: Started The Apache HTTP Server.
[Active: active (running) since XXX 2022-XX-XX XX:XX:XX UTC; 24s ago] となり、Apache の起動や、プロセスの確認ができるかと思います!
また、以下の行にて自動起動が有効になっていることも確認できます。
>Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
※上記の赤字の部分です。
起動確認ができたところで、ブラウザを使用してサーバのグローバルIPアドレスを打ち込んでみましょう。
以下の図のように、アドレスバーにIPアドレスを打ちます。
Apache のデフォルトページが確認できました!!
※便宜上、[123.111.222.333] というIPアドレスを使用してアクセス確認を実施しています(しっかりと自分のサーバアドレスを入力ください。)
※ページが確認できない場合、前回の記事の設定が上手くできていない可能性があります。
・PHPのインストール
Apache のインストールが完了し、ブラウザからもWebサイトへアクセスできました。
次は、PHP をインストールしてみましょう。
PHP のインストールは以下のコマンドを実施します。
$ sudo amazon-linux-extras install -y php7.4
※ [-y] というコマンドオプションは、インストール内容の確認を飛ばすことを明示的に表記しています。
以下の内容が出力されます。
Complete!
...
XX php7.4=latest enabled [ =stable ]
...
[php7.4=latest] が [enabled] となっていればインストール完了です!
※今回の手順では、[PHP v7.4] をインストールしています。
また、Amazon Linux Extras を利用して PHP をインストールしています。
※[Amazon Linux Extras] とは?(AWS公式FAQへ)
PHP が無事にインストールされたかどうか確認しましょう。
以下のコマンドを実施します。
$ php -v
PHP 7.4.XX (cli) (built: XXX XX XXXX XX:XX:XX) ( NTS )
Copyright (c) The PHP Group
Zend Engine vX.X.X, Copyright (c) Zend Technologies
※マイナーバージョン、ビルド時刻はマスクしています。
インストールされていることが確認できましたね!
※PHP は Apache のようにアプリケーションを起動する必要はありません。
PHPプログラムの動作確認
Apache と同様にブラウザで PHP プログラムの動作確認を行いましょう!!
ですが、Apache の動作確認とは違いちゃんと Web サーバへ PHP プログラムを配置しなければなりません。
前提として、Apache をインストールした場合に Web アプリケーションのプログラムが動作する、ドキュメントルートと呼ばれるディレクトリがあります。
特に設定を変えていない場合では、Apache のドキュメントルートは以下のディレクトリパスとなります。
ディレクトリパス: /var/www/html
ここに、HTML や CSS、JavaScript、PHP などのファイルを配置することで、ブラウザなどからアクセスした際に表示されます。
では、早速ドキュメントルートディレクトリに PHP プログラムを設置していきましょう!
以下のコマンドを実施して、index.php
ファイルを設置します。
$ echo "<?php phpinfo() ?>" | sudo tee /var/www/html/index.php
このコマンドは、/var/www/html/
のディレクトリに index.php
を追加して、
そのファイルに <?php phpinfo() ?>
を記載するといったようなコマンドになります。
それでは、ブラウザのアドレスバーに以下のように入力して PHP プログラムの動作確認を行ってみましょう。
http://(サーバのグローバルIPアドレス)/index.php
・・・。
・・・・・・。
あれ・・・・・?
テキストとして、 だけ表示されてしまっていますね・・・。
それも、そのはず。
今回の手順では、「Apache のインストール後に、PHP を導入」しましたね。
PHP プログラムが動作し、ブラウザに表示されるためには、Apache が PHP プログラムを動作させるための命令を走らせます。
これは、Apache に「PHP プログラム実行せよ。」という命令があった際に PHP モジュールを読み込み、実行させるからですね。
PHP が「インタープリタ型言語」と呼ばれている所以でもありますね。
※本来は、コンパイルという動作など細かい知識が必要ですがニュアンスだけでも伝われば嬉しいです。
・・・話が逸れてしまいました。
それでは、どうやって PHP プログラムを実行させればよいのでしょうか?
基本としては、Apache に PHP モジュールを読み込ませればいいですよね。
勘の良い方は薄々気がついているかと思いますが、今回の問題点としては「Apache の起動後に、PHP をインストール」したことです。
元々、Apache のアプリケーションを立ち上げた段階では、PHP は導入されていなかったためサーバ上に PHP モジュール自体、存在しませんでした。
Apache の起動後に、PHP をインストールしたため、Apache からすると「PHP モジュールが読み込まれていない状態」で起動されています。
そのため、PHP モジュールを読み込ませるためには一度 Apache を再起動しなければなりません。
※Windows などでも、ソフトウェアをインストールしたときに再起動が必要だったりしますよね?
それと同じようなイメージです。
では、Apache を再起動しましょう。
以下のコマンドを実施します。
$ sudo systemctl restart httpd
次に、もう一度ブラウザを更新してみましょう。
すると、どうでしょう・・・?
PHP Info が表示されました!!(※事務所の都合上、ほぼ全面モザイクです。)
これで、Apache + PHP の動作環境が整いました!
DNSの設定(Route 53)
注意事項
本項目は、事前に Route53 という AWS サービスを利用してドメイン契約を行っている前提で話が進みます。
お名前.com など別のレジストラで購入されたドメインや、そもそもドメインを契約していない場合は本手順通りに実施できませんのでご留意ください。
注意事項
本項目は、事前に Route53 という AWS サービスを利用してドメイン契約を行っている前提で話が進みます。
お名前.com など別のレジストラで購入されたドメインや、そもそもドメインを契約していない場合は本手順通りに実施できませんのでご留意ください。
ようやく、ここまで来れましたね・・・。
あと一息です。最後まで頑張りましょう。。。
久しぶりの AWS Console 画面ですね。
なんか、色々 UI が変わりましたね。
はい・・・、長らくお待たせしてしまい本当にすみませんでした。。
まず、AWS Console 上で
① [Route53] と検索します。
② [Route53] をクリックします。
Route53 へ遷移します。
① 「ホストゾーン」をクリックします。
② 契約しているドメイン名をクリックします。
① 「レコードを作成」をクリックします。
① [レコード名] に [www] と入力
② [値] に [サーバのグローバルIPアドレス] を入力
※その他の部分についてはデフォルト設定で問題ありません。
もし、画像と異なる場合は合わせていただければと思います。
③ 「レコードを作成」をクリックします。
① 先程の DNS レコードが確認できます。
それでは、上記で作成した DNS レコードを使用して、ブラウザから確認をしてみます!
http://www.[ドメイン名]/index.php
※接続できない場合は、世界中の DNS サーバにレコードを登録したことが伝播されていないためです。しばらくお待ち下さい。
Route53 は、素晴らしい権威 DNS サーバなので、5分も待たなくても反映されることでしょう!
確認できましたね!!!!
注意事項
AWSは環境を作成した時点で課金されてしまうサービスも存在します。
そのため、AWSを触るために一時的に作成した環境は必ず削除しましょう。
まとめ
ここまで、本当にお疲れさまでした!!
いかがでしたでしょうか。
AWS の EC2 を始めとしたサービスを利用して、Web サーバを構築してみました。
SSL証明書の適用(HTTPS化)や、Apache の httpd.conf の設定など、セキュリティ関係の設定はもちろん、ちゃんとした Web サーバであるためにはログ管理や、サーバメトリクスの監視など・・・。
まだまだやることがいっぱいあります。
本当は、これらの作業も含めて網羅的なブログとして記事をかけると良いのですが、あまりにも膨大であるが故に、部分部分で必要なところを調べて、実装して・・・というようなことをやらなければなりません。
慣れるまでは、この3部に分けたサーバ構築をじっくり理解しながら学んでいくことも大事だと思います。
書き始めたらキリがないほどなので、本記事の目的であった「Webサーバの構築」という内容は第3部をもって、幕を閉じます。
ここまで見ていただき、ありがとうございました!!:D