AWSによるWordPressの構築

未分類

AWSのWordPressを構築する手順のメモです。

作業概要
  • パブリックサブネットにEC2(Webサーバー)を構築する
    • AmazonLinux2にWordPress、Apacheをインストール
  • プライベートサブネットにEC2(DBサーバー)を構築する
    • AmazonLinux2にMariaDBをインストールする
  • NATゲートウェイを構築する
    • プライベートサブネットから外部へ接続するための暫定処置
    • MariaDB構築後は不要となるため削除する
    • NATゲートウェイを起動し続けると料金が発生するため注意が必要
  • 自身の端末からWordPressの初期設定ページ(Webサーバ)にアクセスできるようにする
スポンサーリンク

パブリックサブネットを構築する

ネットワークの構築はまずはじめにVPCを構築します。

VPCの構築手順
  • リージョンを設定する
    • アジアパシフィック(東京)
  • 名前タグ
    • VPC領域
  • IPv4 CIDRブロック
    • 10.0.0.0/16
  • IPv6 CIDRブロック
    • IPv6 CIDRブロックなし

VPCのサブネットの範囲は10.0.0.0〜10.0.255.255までです。

次はこのVPCの中に、パブリックサブネットとプライベートサブネットを構築します。

パブリックサブネットを作成する
  • VPC ID
    • 先程構築した[VPC領域]を選択する
  • サブネット名
    • パブリックサブネット
  • IPv4 CIDRブロック
    • 10.0.1.0/24

続いて、インターネットゲートウェアを作成し、サブネットをインターネットに接続します。

インターネットゲートウェイを作成しVPC領域に接続する
  • インターネットゲートウェイを構築する
    • 任意の名前(未入力でもよい)
  • インターネットゲートウェアを先程作成した[VPC領域]にアタッチする
    • パブリックサブネット
  • IPv4 CIDRブロック
    • 10.0.1.0/24

続いて、ルートテーブルについて確認します。

[VPC領域]を作成したタイミングでデフォルトのルートテーブルが作成され、サブネットを作成したタイミングでデフォルトのルートテーブルが適用されます。

この設定により[10.0.0.0/16]への通信は、VPC領域のルーターに接続され、それ以外の通信は全て破棄されます。

つまり、[10.0.0.0/16]以外への通信をインターゲットゲートウェイに転送するルートテーブルが必要になります。

インターネットへ通信するためのルートテーブルを作成する
  • 名前タグ
    • パブリックルートテーブル
  • VPC
    • VPC領域
  • [サブネットの関連付け]タブ
    • パブリックサブネット
  • [ルート]タブ
    • 送信先
      • 0.0.0.0/0
    • ターゲット
      • インターネットゲートウェイ

 上記の設定をすることで、10.0.0.0〜10.0.255.255以外の通信(つまりVPC領域内以外の通信)は、インターネットゲートウェイを経由して、外部へ転送されるようになります。

スポンサーリンク

WebサーバにApacheをインストールする

以下の手順でWebサーバを構築します。

EC2(Webサーバ)を構築する

Webサーバの構築
  • インスタンスを起動
  • AMI(Amazon Machine Image)
    • Amazon Linux 2 AMIを選択
  • インスタンスタイプ
    • t2.micro
  • インスタンスの詳細設定
    • ネットワーク
      • VPC領域
    • サブネット
      • パブリックサブネット
    • 自動割り当てパブリックIP
      • 有効
    • プライマリIP
      • 10.0.1.10
  • ストレージの追加
    • サイズ
      • 8GiB(デフォルト)
  • タグの追加
    • キー
      • Name
      • Webサーバー
  • セキュリティグループの設定
    • セキュリティグループ名
      • WEB-SG
    • インバウンドルールを編集
      • HTTP(TCP80) 、0.0.0.0/0
      • すべてのICMP-IPv4、任意の場所
  • キーペアの作成
    • 新しいキーペアの作成(my-key)
  • Elastic IP
    • Elastice IPアドレスの割り当て
      • Elastice IPアドレスの関連付け(Webサーバー)

 

Webサーバーへのログイン、Apacheのインストール

 EC2にログインし、Apache(httpd)をインストールします。


# 秘密鍵のパーミッションを変更する
chmod 400 my-key.pem
# ターミナルよりEC2へ接続する(WebサーバーのIPアドレス)
ssh -i my-key.pem ec2-user@0.0.0.0
# Apacheをインストール、起動する
sudo yum -y install httpd
sudo systemctl start httpd.service

DNSを構築する 

DNSを構築する
  • [VPC領域]を選択した状態で[DNSホスト名の編集]を開く
  • DNSホスト名を有効化する
    • 任意の名前(未入力でもよい)
  • インターネットゲートウェアを先程作成した[VPC領域]にアタッチする
    • パブリックサブネット
  • IPv4 CIDRブロック
    • 10.0.1.0/24
スポンサーリンク

プライベートサブネットを構築する

DBサーバーを構築するためのプライベートサブネットを作成します

プライベートサブネットを作成する
  • VPC ID
    • 先程構築した[VPC領域]を選択する
  • サブネット名
    • プライベートサブネット
  • IPv4 CIDRブロック
    • 10.0.2.0/24

続いて、プライベートサブネット上にDBサーバーを構築します。

Webサーバの構築
  • インスタンスを起動
  • AMI(Amazon Machine Image)
    • Amazon Linux 2 AMIを選択
  • インスタンスタイプ
    • t2.micro
  • インスタンスの詳細設定
    • ネットワーク
      • VPC領域
    • サブネット
      • プライベートサブネット
    • 自動割り当てパブリックIP
      • 無効化
    • プライマリIP
      • 10.0.2.10
  • ストレージの追加
    • サイズ
      • 8GiB(デフォルト)
  • タグの追加
    • キー
      • Name
      • DBサーバー
  • セキュリティグループの設定
    • セキュリティグループ名
      • WEB-SG
    • インバウンドルールを編集
      • MYSQL/Aurora(TCP3306)、任意の場所
      • すべてのICMP-IPv4、任意の場所
  • キーペアの作成
    • 既存のキーペア(my-key)
  • Elastic IP
    • Elastice IPアドレスの割り当て
      • Elastice IPアドレスの関連付け(Webサーバー)

ネットワーク(NATゲートウェイ)を構築する

 

NATゲートウェイを構築する
  • サブネット
    • パブリックサブネットを選択
  • Elastic IP 割り当て
    • 新しいEIPの作成
      • IPアドレスが確保される
  • ルートテーブルを更新
    • [ルートテーブル]より[メインのルートテーブル]を選択する
    • [ルートの編集]より以下のルートを追加する
      • 送信先
        • 0.0.0.0/0
      • ターゲット
        • NATゲートウェイID

 上記の設定によりプライベートサブネット内のDBサーバーから外部への通信が可能になります。その結果、yum install によるMariaDBなどのインストールも可能になります。

NATゲートウェイを構築する目的はプライベートサブネット内のDBサーバから外部への通信を可能にするための暫定的な処置です。MariaDBインストール後は不要になるため、速やかに削除します。NATゲートウェイは通信の有無に関わらず起動しているだけで費用が発生します。

スポンサーリンク

DBサーバーにMariaDBをインストールする

DBサーバにMariaDBをインストールする

WebサーバーからDBサーバーへ接続します。


# SCPコマンドによりWebサーバーからDBサーバーへ[my-key.pem]ファイルを転送する
scp -i my-key.pem my-key.pem ec2-user@10.0.2.10:~/
# Webサーバーを経由してDBサーバーへSSH接続をする
ssh -i my-key.pem ec2-user@10.0.2.10

DBサーバーにてMariaDBを構築します。


# MariaDBをインストールする
sudo yum -y install mariadb-server
# MariaDBを起動する
sudo systemctl start ariadb
# MariaDBの自動起動を有効化する
suso systemctl enable mariadb

# MariaDBの管理者アカウント[root]のパスワードを変更する
mysqladmin -u root password
# 管理者アカウント[root]でMariaDBへ接続する
mysql -u root -p

hoge


create database wordpress default character set utf8 collate utf8_general_ci;
grant all on wordpress.* to wordpress@"%" identified by 'passwd';
flush privileges;
select user, host from mysql.user;
+-----------+-----------------------------------------+
| user | host |
+-----------+-----------------------------------------+
| wordpress | % |
| root | 127.0.0.1 |
| root | ::1 |
| | ip-10-0-2-10.us-east-2.compute.internal |
| root | ip-10-0-2-10.us-east-2.compute.internal |
| | localhost |
| root | localhost |
+-----------+-----------------------------------------+
7 rows in set (0.00 sec)

exit;

コマンドの詳細は以下の通りです。

コマンド目的備考
create databaseWordPress用のデータベースを作成
grantデータベースへのアクセス権限を付与
flush privileges権限の付与を反映
selectデータベーステーブルを参照

スポンサーリンク

WebサーバにPHPをインストールする

先程、ApacheをインストールしたWebサーバに再度接続し、PHPのインストールをインストールします。


# PHPライブラリのインストール
sudo yum -y install php php-mbstring
# MariaDBのインストール
sudo yum -y install mariadb-server
# データベースへの接続確認
mysql -h 10.0.2.10 -u wordpress-p
# WordPressのダウンロード
wget https://ja.wordpress.org/latest-ja.tar.gz
# ダウンロードしたWordPressファイルの展開し、Apacheのディレクトリに移動
cd ~
tar xzvf latest-ja.tar.gz
cd wordpress
sudo cp -pr * /var/www/html/
sudo chown apache:apache /var/www/html -R
# Apacheの再起動
sudo systemctl start httpd

外部からWebサーバのIPアドレス(またはドメイン)にアクセスすることで、WordPressの初期設定画面に接続できるようになります。

データベース設定画面で以下の情報を入力する事で、データベースと接続します。

データベース情報
  • データベース名
    • create database文により作成したデータベース名(wordpress)
  • ユーザー名
    • grant文により作成したユーザー名(wordpress)
  • パスワード
    • grant文により設定したパスワード(passwd)
  • データベースのホスト名
    • データベースサーバのIPアドレス(10.0.2.10)
  • テーブル接頭辞
    • wp_(デフォルト値)
スポンサーリンク

インストール一覧

AWSへのWordPressのインストールに伴い、インストールしたパッケージ一覧は以下の通りです。

パッケージ内容インストール先
httpd(Apache)WebサーバWeb
phpPHPweb
php-mbstringPHPでマルチバイト文字列を利用web
mariadb-server(mariadb)DBサーバweb/db

タイトルとURLをコピーしました