cre8cre8
AskMe♥

自分のIPアドレスしかアクセスできないようにして
AWS(AmazonLinux)EC2に開発用WordPressをインストールする

不特定多数にアクセスされるのが怖くてAWSに手を出せないのなら、自分しかアクセスできないようにすればいいじゃない!! (あたいってば天才ねっ!!)
Hello everybody、うp主のたくみんです。最近社畜と英語の勉強してたら更新できませんでした。I'm sorryやで。

さて、今回は、開発用のWordPressをAWSのEC2(AmazonLinux)に導入してみましょう。
皆さん、次のようなAWSのお悩みがありませんか?

・ AWSを使ってみたいけど、使い方がわからない
・ 重量課金制のサービスなので、セキュリティが...
・ AWSの勉強をしたいのだけど、なにをすればいいかわからない
なんか興味がある(ここが大事)

安心してください。はいてますよWordPressインストールした上にAWSもちょっっっっぴり詳しくなれますよ。
(しかも、自分のオンリーワン(アクセスできない的な意味で)のWordPressです。そうです。自分しかアクセスできないのです。安心(?)ですね。)

当記事は少し難し目の内容となっております。
また、重量課金制のサービスであるAWSで構築する以上、料金がかかります。
AWSの無料枠をなるべく使うように解説をしていますが、無料枠が適用される条件(例えば、会員登録して最初の1年間など)がありますので、
下記の作業をする際は、料金が発生することがあるというのにご同意お願いします。

また、AWSのアカウントを持っている前提で書いてます。
持っていない方はお手数ですが、ご登録お願いしますね♡
それでは、さっそくやってみましょう!

もし、わからないことなどございましたら、お気軽にお尋ねくださいね。

さっそくAWSへログイン使用

ログインするとこのような画面になります。
それでは、左上のEC2の箇所を押してみましょう。

すると、EC2を管理できるダッシュボードが開きます。
0 Running Instancesを押します。

このような画面になります。
それでは、左上のサイドバーの隣にある青いボタンのLaunch Instanceを押します!

インスタンスを作成しよう

STEP 1: Choose an Amazon Machine Iamge (AMI)

Amazon Linux AMI 2016.03.1 (HVM), SSD Volume Type - ami-29160d47の欄にあるSelectを押します。

STEP 2: Choose an Instance Type

General purpose | t2.micro... の欄の Next: Configure Instance Details 押します。

STEP 3: Configure Instance Details

自分の環境からWordPressへアクセスするために、Public IPをEnableに設定し、
その後、Next Add Storageを押します。

STEP 4: Add Storage

今回は自分しかアクセス出来ない開発用WordPressのためストレージの容量はそのまま(デフォルト)でよいと思います。
たくさん使う人はここで調整しましょう。(ただし、AWSの料金が追加でかかる場合があります。もちろんデフォルトでもかかります。AWSは従量課金です。)

STEP 5: Tag Instance

わかりやすくするためにインスタンスに名前をつけます。
KeyにNameとあるので、Valueのところに"wordpress"と入力します。

STEP 6: Configure Security Group

ここが今回の重要部分!自分のアクセスのみを許可するので、画像のように
TypeはSSH、ProtocolとPort RangeはデフォルトのTCPと22のままで、
そして、SourceはMy IPにしてください。

さらに、自分のデバイスのブラウザからWordPressにアクセスするために、Add Ruleを押して、HTTPを選択し、
ProtocolとPort Rangeはそのままで、SourceはMy IPと設定してください。
このSourceの設定がアクセス元になります。My IPだと自分だけになります。


(厳密に言うと同じIPアドレスを割り当てられていた場合、例えば会社など複数人が同じIPを使う場合では、会社からの接続に限り他のコンピュータ、デバイスからアクセスできます。)

STEP 7: Review Instance Launch

このEC2インスタンスを立てますよ〜っという確認画面です。
上記設定通りになっているか、確認しましょう。
確認後、OKでしたら、右下のLaunchボタンを押します。

【重要】Select an existing key pair or create a new key pair
キーペアを作成します。キーペアとはEC2のLinuxへアクセスするために必要なものです。
イメージとしては名前の通り「鍵」で、持ち主のみLinuxへアクセスしてコマンドを打つことができるようになります。
つまり、これが他に漏れてしまうと、Linuxが乗っ取られる可能性があるので、細心の注意をしてください。
(お家の鍵を盗まれて侵入されると好き勝手できる感じです)



Create a new key pairを選択し、キーペアにわかりやすいよう名前をつけます。
今回のサンプルでは、"WordPress-keypair"としています。
名前を付け終わったら、"Download Key Pair"を押します。
秘密の鍵を一度だけダウンロードできます。一度だけですので無くさないようにしてください。かと言って上記の通り漏れると大変なものでもあるので、コピーなども慎重に考えてやりましょう。(例えば、ファイル共有サーバや誰でもアクセスできるところ(USBや外付けHDD)に保存しないようにしてください。)

STEP 8: Launch Status



インスタンスをAWSが作成しています。しばしコーヒーでも飲んで待ちましょう。(わりとはやいです)
Your instances are now launchingと緑色ででたら成功です。
EC2のダッシュボードへ戻ってみましょう。

例の手順通りに進めた場合はWordPress/t2.microでEC2インスタンスができています。
インスタンスの初期化のため、Instance Stateが"pending"になっています。


これが"running"になるまで、2杯めのコーヒーでも飲んでしばらく待ちましょう。(こちらはちょっと長いです)
"running"になったら、下部のDescriptionの箇所にある"Public IP"の欄を見てください。
このサンプルでは、52.192.104.19になってますね。
この先のステップでWordPressをインストールするために必要になってきますので、ひかえてください。

sshを使ってAmazonLinuxにログインしWordPressをインストールするための設定をしよう

Windowsの方はTera TermやPoderosaを使ってsshを使用します。
MacやLinuxの人はsshコマンドを使います。
(Tera Term/Poderosaの使い方は気分が乗れば別記事に書きます。macユーザなもので...)

ターミナルを開いて、sshコマンドを打ってAmazonLinuxへログインしよう

先ほど控えた"Public IP"と、ダウンロードした秘密鍵の出番です!

Shell
1mkdir ~/.ssh
2mv ~/Download/WordPress-keypair.pem ~/.ssh
3chmod 600 ~/.ssh/WordPress-keypair.pem
4ssh -i ~/.ssh/WordPress-keypair.pem ec2-user@52.192.104.19

上記コマンドの簡単に解説をします。
まず、1行目の mkdir ~/.ssh はホームディレクトリに .ssh ディレクトリを作成します。
次の2行目の処理はダウンロードした秘密鍵を .ssh ディレクトリに移動します。
(例では、 ~/Download/WordPress-keypair.pem としてますが、実際にダウンロードしたファイルパスに変更してください)
3行目の chmod 600 ~/.ssh/WordPress-keypair.pem では、自分のみ秘密鍵にアクセスできるようにします。
そして... 4行目の ssh でAmazonLinuxでログインするのですぅ〜

ログインができたら、Apache/PHP/MySQLをインストールして起動しよう

Shell
1#!/bin/bash
2
3# Get WordPress
4curl -LO https://ja.wordpress.org/wordpress-latest-ja.tar.gz
5tar xzf wordpress-latest-ja.tar.gz
6mv wordpress html
7
8# Install to need packages
9sudo yum install -y httpd mysql-server php php-mysql
10
11# Move public directory in WordPress
12sudo rm -rf  /var/www/html
13sudo mv html /var/www/html
14
15# Change permission for apache reading
16sudo chown apache /var/www/html
17
18# Lunch MySQL and Apache
19sudo service mysqld start
20sudo service httpd  start
21
22# Initial Secure MySQL
23mysql_secure_installation
24
25# Initial Database
26mysql -uroot -p -e 'CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8'
27mysql -uroot -p -e "GRANT ALL ON wordpress.* TO 'dev'@'localhost' IDENTIFIED BY 'devdevdev'"

Github Gistにもこのシェルスクリプト書いています。よければどうぞ。
【Githug Gist】install_wordpress.sh

mysql_secure_installationを実行したときの入力例

Shell
1$ mysql_secure_installation
2NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
3      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
4
5
6In order to log into MySQL to secure it, we'll need the current
7password for the root user.  If you've just installed MySQL, and
8you haven't set the root password yet, the password will be blank,
9so you should just press enter here.
10
11Enter current password for root (enter for none):
12OK, successfully used password, moving on...
13
14Setting the root password ensures that nobody can log into the MySQL
15root user without the proper authorisation.
16
17Set root password? [Y/n] n
18 ... skipping.
19
20By default, a MySQL installation has an anonymous user, allowing anyone
21to log into MySQL without having to have a user account created for
22them.  This is intended only for testing, and to make the installation
23go a bit smoother.  You should remove them before moving into a
24production environment.
25
26Remove anonymous users? [Y/n] y
27 ... Success!
28
29Normally, root should only be allowed to connect from 'localhost'.  This
30ensures that someone cannot guess at the root password from the network.
31
32Disallow root login remotely? [Y/n] y
33 ... Success!
34
35By default, MySQL comes with a database named 'test' that anyone can
36access.  This is also intended only for testing, and should be removed
37before moving into a production environment.
38
39Remove test database and access to it? [Y/n] y
40 - Dropping test database...
41 ... Success!
42 - Removing privileges on test database...
43 ... Success!
44
45Reloading the privilege tables will ensure that all changes made so far
46will take effect immediately.
47
48Reload privilege tables now? [Y/n] y
49 ... Success!
50
51Cleaning up...
52
53
54
55All done!  If you've completed all of the above steps, your MySQL
56installation should now be secure.
57
58Thanks for using MySQL!
59

さぁ、ブラウザを起動して有名(?)なWordPress5分インストールプロセスを開始しましょう

さぁ、Public IPのアドレス(サンプルでは http://52.192.104.19)にアクセスするのです!

STEP1: WordPressへようこそ!


(っ'ヮ'c)ウゥッヒョオアアァ!! ここまでくればもうあと少しです!
下記のインストールステップを実行しましょう!

STEP2: WordPressをインストールするためのデータベース(MySQL)の情報を入力します


ログインができたら、Apache/PHP/MySQLをインストールして起動しよう
のステップの箇所で自分で入力したデータを入れてくださいね。
今回の私のサンプルの場合はこのようになりました。

データベース名: wordpress
ユーザ名: dev
パスワード: devdevdev
データベースのホスト名: localhost
テーブル接頭辞: wp_

STEP3: インストールを実行

"インストールを実行"ボタンを押すと、WordPressがインストールされます。
ポチッと景気よく押しましょう。

STEP4: サイトのタイトル、WordPress管理者の設定


サイトのタイトルと管理者アカウントのログイン情報を設定します。
上記にも書いていますが、これらの変更はあとで変更することもできます。
そんなに深く悩まず、さくさくっといきましょう♪
重要: 自分でパスワードを設定しなかった場合はWordPressが自動で複雑なパスワードを用意してくれます。ログイン時に必要になりますので必ずひかえておいてください。

サンプルでは、次のデータを設定しました。
サイトのタイトル: Takuuuuuuuuuuu☆MI
ユーザ名: takumi
パスワード: WordPressがデフォルトで作ってくれたパスワード
メールアドレス: sample@sample.cre8cre8.com

STEP5:


WordPressのインストールが完了しました!
ログインボタンをクリックして、WordPressログイン画面に移動しましょう!

開発用WordPressにログイン

最初のほうにも書きましたが、自分のネットワークからのみアクセスできるように設定していますので、
設定したIPアドレスとことなるネットワークからアクセスした場合、何も表示されません。

STEP1: ログイン


先ほどのWordPressインストール時に設定したログイン情報でログインします。

STEP2: 管理画面にアクセスできましたか?




いつもの管理画面にアクセスできたらWordPressのインストールが成功です。
開発者およびデザイナーの皆様はここから、さらにプラグインやテーマ導入だったり、カスタマイズしたりと
まだまだ続きここがゴールではないですが、長い長い作業本当にお疲れ様でした。

≪ 前の記事
str を全く使った覚えがないのに
[TypeError: 'str' object is not callable] がでてドハマリした結果、 str を使っていたのを見失っていた午後7時くらいのできごと
次の記事 ≫
スマホアプリを作るために5分でWebAPIを作る方法を全力で超親切に解説する

いいねやコメントを送っていただけると中の人がしっぽ振って大喜びします♪

あなたへのおすすめの記事