自分の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 | |
---|---|
1 | mkdir ~/.ssh |
2 | mv ~/Download/WordPress-keypair.pem ~/.ssh |
3 | chmod 600 ~/.ssh/WordPress-keypair.pem |
4 | ssh -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 |
4 | curl -LO https://ja.wordpress.org/wordpress-latest-ja.tar.gz |
5 | tar xzf wordpress-latest-ja.tar.gz |
6 | mv wordpress html |
7 |
|
8 | # Install to need packages |
9 | sudo yum install -y httpd mysql-server php php-mysql |
10 |
|
11 | # Move public directory in WordPress |
12 | sudo rm -rf /var/www/html |
13 | sudo mv html /var/www/html |
14 |
|
15 | # Change permission for apache reading |
16 | sudo chown apache /var/www/html |
17 |
|
18 | # Lunch MySQL and Apache |
19 | sudo service mysqld start |
20 | sudo service httpd start |
21 |
|
22 | # Initial Secure MySQL |
23 | mysql_secure_installation |
24 |
|
25 | # Initial Database |
26 | mysql -uroot -p -e 'CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8' |
27 | mysql -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 |
2 | NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL |
3 | SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! |
4 |
|
5 |
|
6 | In order to log into MySQL to secure it, we'll need the current |
7 | password for the root user. If you've just installed MySQL, and |
8 | you haven't set the root password yet, the password will be blank, |
9 | so you should just press enter here. |
10 |
|
11 | Enter current password for root (enter for none): |
12 | OK, successfully used password, moving on... |
13 |
|
14 | Setting the root password ensures that nobody can log into the MySQL |
15 | root user without the proper authorisation. |
16 |
|
17 | Set root password? [Y/n] n |
18 | ... skipping. |
19 |
|
20 | By default, a MySQL installation has an anonymous user, allowing anyone |
21 | to log into MySQL without having to have a user account created for |
22 | them. This is intended only for testing, and to make the installation |
23 | go a bit smoother. You should remove them before moving into a |
24 | production environment. |
25 |
|
26 | Remove anonymous users? [Y/n] y |
27 | ... Success! |
28 |
|
29 | Normally, root should only be allowed to connect from 'localhost'. This |
30 | ensures that someone cannot guess at the root password from the network. |
31 |
|
32 | Disallow root login remotely? [Y/n] y |
33 | ... Success! |
34 |
|
35 | By default, MySQL comes with a database named 'test' that anyone can |
36 | access. This is also intended only for testing, and should be removed |
37 | before moving into a production environment. |
38 |
|
39 | Remove test database and access to it? [Y/n] y |
40 | - Dropping test database... |
41 | ... Success! |
42 | - Removing privileges on test database... |
43 | ... Success! |
44 |
|
45 | Reloading the privilege tables will ensure that all changes made so far |
46 | will take effect immediately. |
47 |
|
48 | Reload privilege tables now? [Y/n] y |
49 | ... Success! |
50 |
|
51 | Cleaning up... |
52 |
|
53 |
|
54 |
|
55 | All done! If you've completed all of the above steps, your MySQL |
56 | installation should now be secure. |
57 |
|
58 | Thanks 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のインストールが成功です。
開発者およびデザイナーの皆様はここから、さらにプラグインやテーマ導入だったり、カスタマイズしたりと
まだまだ続きここがゴールではないですが、長い長い作業本当にお疲れ様でした。