susunshunのお粗末な記録

お粗末に丁寧に生きる

AWSでブログサーバ構築(WordPress)

近年AWSがいろんなシステムで使われてるね。
個人的に興味がありポチポチいじって遊んでます。(業務で使ってみたい)

「名前は知ってるけど実際どういう風に使われてるの。。。?」という人が意外と多いのではと思い、今回は最も単純な構成でAWSを使いWordPressのサーバを構築するよ。

必要なもの

AWSのアカウント(無料で作れます)
・PC(OS問いません)、今回はMacで説明します
・ネット環境

構成

本来はDBサーバとWebサーバは分けるべきですが、今回はまずはやってみようということで一台のサーバにDBとWebサーバを入れます。

大まかな手順

  1. 前準備
  2. インスタンス作成
  3. インスタンスSSHで接続しよう
  4. 必要SW導入(Apache, php, MySql, WordPress

ではやりましょう!

前準備

KeyPairの作成

まずはマネジメントコンソールでEC2を選択。

[KeyPair] > [Create Key Pair]

Key pair名を入力

【設定値】
KayPair:任意の値

[create]を押すと自動で何かダウンロードされると思います。
これは後でインスタンスにアクセスするための秘密鍵ですので無くさないようにしましょう。(再発行はできません。)

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

セキュリティグループとはざっくり言うとファイアウォールみたいなものです。指定したポートやIPによりアクセス制限を掛けます。

今回は最低限の設定としてSSHとhttpのポートを開けます。

[Security Group] > [Create Security Group]

Security Groupを設定します。

【設定値】
Security Group Name:任意の値
Description:任意の値
VPC:デフォルト値で大丈夫です
Security Group Rule:SSHとhttp

前準備は以上です。

インスタンス作成

EC2インスタンス=サーバです。インスタンスを作成します。

[Instance] > [Launch Instance]

まずはAMIを選択します。UbuntuやCent OS、RedHat等よりどりみどりですが今回はAmazonLinuxを使用。

次にPCのスペックを選びますが、無料枠はmicroのみです。

Step3はデフォルト設定のまま

ストレージの設定
【設定値】
Size:8GB
Volume Type:Magnetic

Instance名を設定

【設定値】
Value:任意の値

前準備で作成したセキュリティグループをここで紐付けます

そのまま次へ

警告が出ていますがこれはセキュリティグループでIPアドレスによる制限をかけていないためです。実際に構築を行うときは環境に応じてIPアドレスで制限を行うよう、セキュリティグループを設定しましょう。

[Launch]を選択すると次のポップアップが出ることがあります。
SSDの使用を促すものなので、ここではこれに従いSSDを選択しましょう。

次にKey Pairを選択します。前準備で作成したものを使用しましょう。

【設定値】
Select a key pair:前準備で作成したKey Pair名

インスタンスの設定は以上です![View Instances]から設定を確認しましょう。

インスタンスSSHで接続しよう

SSH接続を行うために、パブリックDNSを確認しましょう。

Macなのでターミナルから接続を行います。

まずはKeyPairの権限を変更しておきましょう。
所有者は読み書き可能.所有者以外はファイルに対する権限は付与しません。

chmod 600 【Key Pair】


例)
chmod 600 /Users/apple/Desktop/mykey_tokyo.pem

以下のコマンドからSSHインスタンスに接続します。

ssh -i 【Key Pair】 ec2-user@【パブリックDNS


例)
ssh -i /Users/apple/Desktop/mykey_tokyo.pem ec2-user@ec2-XX-XX-XXX-XXX.ap-northeast-1.compute.amazonaws.com

これで接続ができました!

必要SW導入(Apache, php, MySql, WordPress

パッケージのアップデート

sudo yum -y update

apache,php, mysql(とmbstring)のインストール

sudo yum -y install httpd mysql-server php php-mysql php-mbstring

オプションでつけている"-y"は、yesかnoかを求められる際に全てyesとしてコマンドを実行するものです。都度yesと入力しても良いですが面倒なので"-y"はつけといた方がよいでしょう

apachemysqlサーバを起動しましょう

sudo /etc/init.d/httpd start
sudo /etc/init.d/pysqld start

【補足】サービスの自動起動

デフォルトの設定では、OSの再起動を行うたびapachemysqlは上記のコマンドで起動しなければいけません。それは手間なのでOSが立ち上がった際に自動でサービスが立ち上がるようにしておきましょう。

sudo /sbin/chkconfig mysqld on
$ sudo /sbin/chkconfig httpd on

最後にWordPressの導入

・ファイルのダウンロード
wget http://ja.wordpress.org/latest-ja.tar.gz ~/

・ファイルの解凍
tar zxvf ~/latest-ja.tar.gz

・解凍したWordPressPressのコンテンツを公開ディレクトリに配置
sudo cp -r ~/wordpress/* /var/www/html/

・コンテンツの所有者をapacheに変更
sudo chown apache:apache -R /var/www/html

WordPressで使用するDBの設定を行いましょう。

・ログイン
mysql -u root

・DBの生成
mysql> create database wordpress;

・ユーザ作成
mysql> grant all privileges on wordpress. * to "【ユーザ名(任意の値)】"@"localhost" identified by "【パスワード(任意の値)】";


例)
grant all privileges on wordpress. * to "wpuser"@"localhost" identified by "wppassword";

・変更を反映
mysql> flush privileges;
mysql> quit;

これでいちおうWordPressを用いたブログサーバの構築は完了です!

確認として以下URLにブラウザからアクセスしてみましょう

http://【Public DNS】/wp-admin/setup-config.php

正しく設定されていれば以下の画面が表示されます

今回は以上となりますがいかがだったでしょうか。(最後の方は書くのが面倒になってきて雑になってますごめんなさい)

たったこれだけの作業で極小規模ながら一つのシステムが作れてしまうあたり、SIerで働く身としては仕事でやることががっつり減ってしまうので冷や汗ものです。。。

余談ですが、アメリカと日本ではSIerの意味合いが違います。アメリカではユーザ(SIerから見たお客さん)は「できることは自分たちでやっちゃえ」スタンスなので、AWSをはじめとするクラウドサービスの台頭により、お客さん自らでインフラ構築をしてしまうことも少なくないそうです。

気が向いたらWebサーバとDBサーバ別々に立てる構成やロードバランサ(ELB)を使った負荷分散構成についても書きたいと思います。

もう月曜か。。。鬱だ。