今までRaspberry Piでwordpressを運用していたのですが、1年ほど運用していたらOSが起動出来なくなるといった事象が度々起こってしまうようになり、wordpressをAWSに移行しました。EC2の無料枠で構築したため、その時の手順等を記載します。

Raspberry Piで運用していた時の問題点

RaspberryPiでのwordpress運用は電気代が安く音も静かでよかったのですが、以下のような問題点があり段々運用が厳しくなってきました・・・

  • データの保存先がSDカードかUSBなのでアクセスが遅く、wordpressのページ表示に時間がかかる
  • SDカードの破損のせいかたまにOSが起動しなくなる。(SDカードのOSを書き直すと治る)

AWSのEC2でwordpressを運用するときの費用

EC2のt2.microを使うことでAWSアカウントを作ってから12ヶ月は無料となりますが、その後は有料になります。

t2.microは1時間あたり0.016$なので、24時間運用すると月額1000円程度となります。これにEBSの料金が多少加算されるといった感じかと思います。

Raspberry Piでの運用では電気料金が月200円弱でしたので、無料枠が終わるとAWSの方が高くなるのかと思います。

AWSのEC2無料枠だけでwordpressを構築する方法

無料枠のEC2 t2.microインスタンスを作ってwordpressを構築し公開するまでの流れを紹介します。

①EC2インスタンスを作成する

AWS管理画面からEC2インスタンスを作成します。ウィザードに従っていくつか項目を選択していくと簡単に作ることができます。

OSはAmazon Linux AMI、インスタンスタイプはt2.microを選択します。

最後にキーペアのダウンローができますが、これはTeratermなどからSSH接続する際に必要になるためダウンロードして大切に保管します。

②インスタンスを起動する

EC2のインスタンス画面から「アクション」->「インスタンスの状態」->「開始」を押してインスタンスを起動します

③セキュリティグループの設定変更

インスタンスは起動しましたが、セキュリティ設定を変更しないとSSH接続に失敗するため、SSH接続元のIPからSSH接続を受けれるように設定します。(設定しないとTeratermだと「ホストに接続できません」といったエラーが発生する)

また、最終的には外からhttpポート(80)へのアクセスも受け付ける必要があるためこれも設定します

EC2ダッシュボードからセキュリティグループを選択し、立ち上げたインスタンスの「インバウンド」タブを開き以下の設定を行います。

  • インバウンドのSSHのソースを「マイIP」に設定
    これで今使っているPCからのSSH接続が許可されます。
  • プロトコル「http」、ポート「80」を任意のソースから受け付けるように追加

④TeratermからSSH接続

Puttyなどでもいいですが、SSHクライアントソフトからSSH接続します。

  • 接続先IP
    EC2ダッシュボードのインスタンスの画面に表示されているIPアドレス
  • ユーザー名
    ec2-user
  • パスフレーズ
    なし
  • RSAキー
    ダウンロードしたキーペアファイルを指定

以上の設定でSSH接続ができます。

⑤必要なソフトのインストール

SSHで接続したらwordpressを動かすために必要なソフトウェアをインストールします。ここからは様々な構成が考えれるため、適当に読み替えて使っていただければと。

私の場合はnginx+php-fpmでwordpressを構築しているため、以下のような感じでインストールしました。

sudo yum install nginx
sudo yum install logwatch
sudo yum install mysql-server
sudo yum install php php-mysql php-fpm
sudo yum install php-mbstring

# MySQLの設定
sudo chkconfig mysqld on
sudo /etc/init.d/mysqld start
/usr/libexec/mysql55/mysql_secure_installation

#wordpressのデータベースとユーザをMySQLに作成
sudo mysql -u root -p[password]
CREATE DATABASE [データベース名];
CREATE USER '[ユーザ名]'@'%' IDENTIFIED BY '[ユーザパスワード]';
GRANT ALL ON [ユーザ名].* TO [データベース名];

# php-fpmの起動設定
sudo chkconfig php-fpm on
sudo /etc/init.d/php-fpm start

#nginxの設定
sudo chkconfig nginx on
sudo /etc/init.d/nginx start

# wordpressフォルダを配置
# /var/www/html以下等に配置
# wp-config.phpを編集しMySQLへの接続情報などを修正

# nginxのconf.dにwordpressへのパスの設定を行う
...
location ~ ^/wordpress/.*\.php {
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
}
...

⑤DDNSにIPを登録

私は無料のDDNSを利用しているため、DDNSに立ち上げたインスタンスのIPアドレスを登録します。
そのためAWSのRoute53などは利用しなくてよいためそこら辺の料金はかからなくなっています。

以上で構築完了

以上で、wordpressブログの構築は完了でブラウザからアクセスしてwordpress画面が表示されるはずです。

実際にアクセスしてみるとRaspberry Piよりも全然早く画面が表示されて快適でした。