#はじめに
AWSの仮想サーバー構築用クラウドサービス「EC2」を用いて、PHPサイトを立ち上げた時に調べたことのまとめ。
全体の流れ・用語等についての記事であるため、具体的な手順については割愛しています。
#目次
- 全体の流れ
- 項目別の詳細
- 用語
- 参考文献
#全体の流れ
- AWSにサインアップ
- EC2インスタンスを作成
- インスタンスをSSH接続で操作する
- Apache・PHP・MariaDBをインストール
- テスト用PHPファイルをアップロード
- Elastic IPを割り当て
- 各種設定を変更
#項目別の詳細
####1. AWSにサインアップ・2. EC2インスタンスを作成
手順通りに進めるだけなので割愛。
####3. インスタンスをSSH接続で操作する
作成したインスタンスを操作する際には、端末からSSH接続をする。
SSHクライアントとして、今回はTera Termを使用する。
接続画面ではホストにパブリックDNS、ユーザーにec2-user、認証方式にSSHを選択し、インスタンス作成時に取得した秘密鍵を指定する。
####4. Apache・PHP・MariaDBをインストール
Tera Termのターミナル画面からApache、PHP、MariaDBをインストールする。
まずはApacheから。
sudo -i // 管理者権限に切り替え(exitで戻す)
yum install httpd //httpd(Apacheの別名)をインストール
systemctl start httpd //Apacheを起動
systemctl status httpd //動作状況を確認
続いてPHP。
yum install php //PHPをインストール
sudo chown -R ec2-user /var/www/html //指定されたDirの所有者をユーザーに変更
//RオプションでDir下のすべてを変更できる
MariaDB。
yum install mariadb mariadb-server //MariaDBをインストール
systemctl start mariadb //起動、こちらもstatusで状態を確認できる
####5. テスト用PHPファイルをアップロード
お馴染みのindex.phpでハローワールドを出力してみる。
<?php
echo "Hello, World.";
指定ホストにアクセスしてちゃんと画面に出力されれば成功。
####6. Elastic IPを割り当て
インスタンスに割り当てられたパブリックIP,パブリックDNSなどは、定期的に行われる再起動によって変動する。その度にAWSコンソールに行ってホストをコピペするのは非合理的なので、その変動を吸収するためのElastic IPというものを設定する。
インスタンスに紐づけることで、そのElastic IPからのアクセスが可能になり、IPが固定化される。
なお、使用料金は紐づけたインスタンスが稼働している間は発生しない。細かい手順は割愛。
####7. 各種設定を変更
最期に、実際に開発をするにあたり必要な機能や設定を変更する。
- インスタンス再起動時、ApacheとMariaDBを自動で起動するように設定
systemctl enable httpd
systemctl enable mariadb
- データベース設定
update mysql.user set password=password('新しいパスワード') where user='ユーザー'; //ユーザーのパスワードを設定
grant all privileges on データベース.*to ユーザー@ホスト; //データベース内の全テーブルへのアクセス権を付与
flush privileges; //設定変更を反映
- PDO使用設定
デフォルトではPDOの設定が有効化されていないため、そのままPDOを使おうとするとエラーが出る。
sudo yum install php-pdo //pdo.soをインストール
sudo yum install php-mysql //mysqlのドライバをインストール
extension=pdo.so //追加
extension=pdo_mysql.so //追加
#用語
導入する中で様々な用語に出くわしたので、その備忘録。
####リージョン
「地域」。物理サーバーの設置場所を指す。
####AMI(Amazon Machine Image)
サーバー構築用のソフトウェア(OS,サーバーアプリなど)のセット。
####EBS(Elastic Block Store)
インスタンスの内部ストレージ。HDDのようなもの。
####VPC(Virtual Private Cloud)
利用者ごとに与えられる、仮想ネットワーク空間。
####yum
UNIX系のパッケージ管理コマンド。
####セキュリティグループ
EC2インスタンス内に適用できるAWSのファイアウォール。
####IAMユーザー
IAM(AWSサービスへのアクセスを認可できるサービス)で設定されたユーザー。
#参考文献
AWS EC2(Amazon Linux)にPHP7.4をインストール
AWS EC2上にPHPサイトを立ち上げて、独自ドメインでアクセスできるようにするまでの全手順
Elastic IPの設定