AWSのサブディレクトリをルートのように見せかける設定

前回の記事で、http://example.co.jp/wordpress/ にワードプレスを公開しました。
しかしながら、このままでは嫌だという方もいらっしゃることと思います。
今回はこれを再インストールすることなく http://example.co.jp/ でワードプレスにアクセスできるように設定します。

本来AWSのRoute 53を使えば簡単にできることなのですが、Route 53は無料枠には含まれていません。それで今回はRoute 53は使わずに無料枠の範囲内でできる設定をしていきます。

注意:今回からコマンドプロンプトから立ち上げるテキストエディタの使用が必須になります。このブログでは vi を強くオススメします。Windowsのテキストエディタに慣れている人にはちょっと難しいかもしれませんが、頑張って使い方を覚えてください。vi については他の人の記事を参考にしてください。
参考:viエディタの使い方viの使い方/基本操作、などなど

サブディレクトリ /wordpress/ を ルートディレクトリであるかのように見せかける設定に入ります。

SSHでログインする

まずはEC2にSSHでログインしてください。TeraTermなりPuttyなりを使います。

Last login: ??? ???  ? ??:??:?? ???? from ???????????.jp

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2016.09-release-notes/
[ec2-user@ip-???-???-???-??? ~]$

今回はこのSSH画面での操作がメインとなります。

.htaccess ファイルを作成する

アドレスのリライトを有効にします。

$ sudo vi /var/www/html/.htaccess

このファイルを次のように変更(または新規作成)します。

RewriteEngine on
RewriteBase /
RewriteRule ^$ wordpress/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ wordpress/$1 [L]

設定ファイルの変更

AWSの場合、このままではRewriteエンジンが動いてくれません。
Apacheの設定ファイルに変更を加えます。

$ sudo vi /etc/httpd/conf/httpd.conf

ここで、

AllowOverride None

となっている行を探し、次のように変更します。

AllowOverride All

変更を加えたら、Apacheを再起動します。

$ sudo service httpd restart

ワードプレスの設定変更

次はブラウザからワードプレスへログインしてダッシュボードへアクセスしてください。

左のサイドメニューから「設定」→「一般」を開きます。

サイトメニューを変更します。他の項目は触らないようにしてください。

特に「WordPressアドレス(URL)」を変更するとログインできなくなって、データベースの初期化が必要になってしまい、データを全部消すことになります。

サイトメニュー: http://example.co.jp/

example.co.jp は独自ドメインです。ご自分のドメインに置き換えてください。変更したら「変更を保存」ボタンをクリックします。

これで http://example.co.jp/ でワードプレスが表示されるようになります。

管理画面は今まで通りのURLで構いません。

1年間無料のAWSを使ってワードプレスを動かしてみた

アマゾンウェブサービス(AWS:Amazon Web Service)が現在1年間無料で使える仕様になっています。

まずはこちらをご覧いください。→  「AWSを無料でお試しください

今回このAWSを使ってワードプレスを動かすまでを記そうと思います。

AWSの申込み

まずはAWSアカウントを作成します。先程のリンクから「いますぐ申し込む」をクリックしてください。
アカウント作成にはクレジットカードと認証用の電話番号が必要です。
アカウント作成の詳細についてはアマゾンのサイト「AWSアカウント作成の流れ」が詳しいのでこちらを参考にしてください。

AWSの管理画面にログインする

AWSの管理画面はAWSマネジメントコンソールと言います。

この中から必要な機能だけを使うわけです。いっぱい機能があって迷いますが、今回の目的はワードプレスを動かすことなので、最小限の機能しか使いません。

仮想サーバの構築

仮想サーバの構築にはEC2を利用します。マネージメントコンソールを下の方へスクロールして「ソリューションの構築」を表示させます。
この中の「仮想マシンの起動」をクリックしてください。

AWSでは仮想マシンの実体のことをインスタンスと呼びます。インスタンスは何個でも作成できますが、無料枠で使うなら1個までです(停止しない場合)。

1.まずはこのインスタンスの名前を決めましょう。何でもいいですが、覚えやすいのがいいでしょう。
インスタンスの名前を入力したら「続行」をクリックします。

2.次にオペレーションシステムの選択ですが、これは「Amazon Linux AMI」がいいでしょう。これはCentOSをベースにAmazonがカスタマイズしたOSです。ほとんどCentOSなので扱いやすいと思います。
OSを選択したら「続行」をクリックしてください。

3.インスタンスタイプを選びます。無料枠で使うなら「t2.micro」一択です。「続行」をクリックします。

4.キーペアの作成に入ります。EC2で作成するインスタンスへの接続は公開鍵認証で行われます。その際に必要となる秘密鍵を作成するのです。忘れたら大変なので、どこか安全な場所に記録しておきましょう。
キーを入力したら「ダウンロード」ボタンをクリックしてください。
すると警告が出ますので、よく読んで「OK!ダウンロードを開始」をクリックします。
ダウンロード先は安全な場所がいいでしょう。今後ログインするときに必要となります。
ダウンロードが済んだら「このインスタンスを作成」をクリックします。

5.ステータスが「進行中」から「完了しました。」へ変わったら完了です。完了まで1分程度かかることと思います。
完了したら「EC2 コンソールに進む」をクリックしてEC2のコンソールへと進みます。

6.コンソール下側のウィンドウで「ステータスチェック」タブをクリックします。ステータスが「システムの接続性チェックに合格しました」と「インスタンスの接続姓チェックに合格しました」へ変化したらすべて完了です。

セキュリティグループの作成

セキュリティグループを変更しないとこのインスタンスへ接続できません。セキュリティグループとは、早い話がファイアーウォールです。
httpプロトコルで使用するポート80番を次の手順で開放します。

1.コンソール左のメニューから「ネットワーク&セキュリティ」の中の「セキュリティグループ」を選択します。

2.次にコンソール上側にあるインスタンスの名前にチェックを入れます。先程付けた名前です。

3.コンソール下側から「インバウンド」タブをクリックします。

4.「編集」ボタンをクリックします。

5.「ルールの追加」をクリックします。ここで間違ってもSSHを削除しないでください。

6.次の設定を追加します。繰り返しになりますが、SSHだけは削除しないでください。

タイプ  プロトコル  ポート範囲  送信元
HTTP   TCP        80        任意の場所  0.0.0.0/0, ::/0
MySQL  TCP        3306      任意の場所  0.0.0.0/0, ::/0

7.「保存」ボタンをクリックします。

以上でセキュリティグループの編集が完了しました。

インスタンスへログインする

コンソール画面にパブリックDNSが表示されていますので、よく探してみてください。これが現在の接続アドレスとなります。ログインするにはSSH接続クライアントが必要です。私はWindowsで動作するTeraTermを使用していますが、他のSSH接続クライアントでも構いません。

初期設定では、ユーザ名は ec2-user、パスワードはSSHで認証するので空欄となります。SSHでの接続に関してはお使いのSSH接続クライアントの説明書を参照してください。ここで先程ダウンロードしたファイルが必要になります。

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2016.09-release-notes/
[ec2-user@ip-???-???-???-??? ~]$

と表示されればログイン完了です。

Apacheのインストール

仮想サーバができましたので、次はApacheをインストールします。

$ sudo yum -y install httpd

オプションの -y はすべての質問に YES と答えるという意味です。
何やらいろいろ表示されますが、「Complete!」と表示されれば終了です。
インストールが終わったらApacheを起動させます。

$ sudo service httpd start

システムがブートするたびにApacheが起動するように設定しておきます。

$ sudo chkconfig httpd on

正常に起動しているかブラウザからアクセスしてみましょう。
アクセス先は先程のパブリックDNSです。?は伏せ字です。

http://ec2-???-???-???-???.ap-northeast-1.compute.amazonaws.com

以上でApacheのインストールが終わりました。

 

データベースのインスタンスを作成する

ここで一旦EC2コンソールからAWSマネジメントコンソールに戻ってください。「サービス」メニューをクリックします。

1.コンソールからRDSをクリックします。

2.「今すぐ始める」ボタンをクリックします。

3.「無料利用枠のみの対象」にチェックを入れます。
エンジンの選択では「MySQL」を選択して、「選択」ボタンをクリックしてください。

4.インスタンスの仕様を決めます。

DBエンジン : mysql
ライセンスモデル :  General Public License
DBエンジンのバージョン : 5.6.27
DBインスタンスのクラス : db.t2.micro – 1 vCPU, 1GiB RAM
マルチAZ配列 : 選択できません
ストレージタイプ : 汎用(SSD)
ストレージ割り当て : 5 GB
設定
  DBインスタンス識別子 : [名前を付けます(例:rds-mysql-server)]
  マスターユーザの名前 : root(これは推奨されません。他の名前にしましょう)
  マスターパスワード : [マスターユーザのパスワード]
  マスターパスワードの確認 : [マスターユーザのパスワード]

設定入力が終わったら「次のステップ」をクリックします。

5.インスタンスの詳細設定を行います。

ネットワーク&セキュリティ
  VPC : デフォルトVPC
  サブネットグループ : default
  パブリック・アクセス : いいえ
  アベイラビリティゾーン : ap1-northeaset-1a
  VPCセキュリティグループ : [EC2で作成したインスタンス]
データベースの設定
  データベースの名前 : [データベース名(例:wordpress1)]
  データベースのポート : 3306
  DBパラメータグループ : default.mysql5.6
  オプショングループ : default:mysql-5-6
  タグをスナップショットへコピー : チェック入れない
バックアップ
  バックアップの保存期間 : そのままで構いません
  バックアップウィンドウ : そのままで構いません
モニタリング
  拡張モニタリングを有効にする : いいえ
メンテナンス
  マイナーバージョン自動アップグレード : はい
  メンテナンスウィンドウ : 指定なし

6.入力が終わったら「DBインスタンスの作成」をクリックしてください。

7.インスタンスの作成には数分かかることもありますので、ここで一服しておきましょう。

8.「DBインスタンスの表示」をクリックして、DBインスタンスを表示させます。

9.「エンドポイント」を記録しておきます。これがサーバアドレスとなります。

10.「DBインスタンスの起動」をクリックします。

以上でデータベースの作成が完了しました。

EC2インスタンスにMySQLをインストールする

SSH端末に戻ってMySQLをインストールします。

$ sudo yum –y mysql

今回も何やら表示されますが、「Complete!」が表示されたらインストールの完了です。

MySQLの確認

データベースに接続できるか確認します。

$ mysql –h [エンドポイント] –u [マスターユーザ名] –p [データベース]

パスワードを聞かれますので入力します。次のように表示されたらインストール成功です。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.6.27-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

もし何も表示されないかエラーが表示されるようでしたらセキュリティグループを見直してみてください。

mysqlを終了するには quit と入力します。

mysql> quit

PHPのインストール

$ sudo yum install –y php php-devel php-mysql php-mbstring php-gd

例によって-yオプションはすべての質問にYESと答えるものです。これも「Complete!」が表示されればインストール成功です。

$ sudo service httpd restart

でApacheを再起動します。以上でPHPのインストールが完了しました。

ワードプレスのインストール

$ wget http://ja.wordpress.org/latest-ja.tar.gz

途中いろいろメッセージが出ますが「Complete!」が表示されたら成功です。

$ sudo tar zxvf latest-ja.tar.gz -C /var/www/html/

これもファイル名が色々出ますが、エラー以外は気にしなくて構いません。エラーの場合はタイプミスが考えられます。

$ sudo chown -R apache /var/www/html/wordpress/

このコマンドでワードプレスファイル(ディレクトリも含めて)のオーナーをapacheに変更します。これによってApacheがワードプレスの設定を読み書きできるようにします。

インストールで不要になったファイルを削除しておきましょう。

$ rm latest-ja.tar.gz

独自ドメインでの運用

URLがこのままでは長すぎますので、独自ドメインで運用しましょう。

ドメイン取得は、お名前.comムームードメインなどで、お好きなドメインを取得してください。

ここでは例として example.co.jp を取得したものとします。

1.EC2ダッシュボードにアクセスします。

2.左側のメニューから「Elastic IP」をクリックしてください。

3.「新しいアドレスの割り当て」をクリックしてIPアドレスを取得します。

4.「割り当て」をクリックします。取得したIPアドレスは忘れないようにどこかへ記録しておきましょう。

5.次に、コンソール上部の「アクション」メニューから「アドレスの関連付け」を行います。

6.リソースタイプやインスタンスなどを設定します。

リソースタイプ : インスタンス
インスタンス : [EC2のインスタンス]
プライベートIP : [選べるものから選択]
再関連付け : チェック外す

入力が終わったらプライベートIPを記録しておき、「関連付け」をクリックします。関連付けが終わるとIPアドレスが割り当てられますので、今までのURLは無効になります。SSH接続していたらこれも切断されますので、再度SSHでログインしてください。

7. ドメインを取得したドメイン管理事業者(お名前.comやムームードメインなど)のDNSサーバに、6で割り当てられたプライベートIPを設定します。

8. DNSの反映までに10分から半日くらいかかることがありますので、反映されるまで待ちましょう。
反映されたか確認するには次のコマンドを使います。

$ nslookup example.co.jp

これで http://example.co.jp/wordpress/ でワードプレスにアクセスできるようになりました。

ワードプレスの設定

http://example.co.jp/wordpress/ へアクセスします。

「さあ、始めましょう!」をクリックします。

次にデータベース接続のための設定をします。

データベース名 : [RDSに作成したデータベース名(例:wordpress1)]
ユーザ名 : [マスターユーザ(例:root)]rootは推奨されません!
パスワード : [マスターパスワード]
データベースのホスト名 : [RDSエンドポイント]
テーブル接頭辞 : wp1_

以上を設定したら「送信」ボタンをクリックします。

注意!マスターユーザを使用することはセキュリティ上推奨されません。ユーザを別途作成してそのユーザを使うことを強くオススメします。

準備が整ったら「インストール実行」をクリックします。これでワードプレスのインストールが完了しました。

サイトのタイトル : [ご自分でお決めください]
ユーザー名 : [ワードプレスにログインするユーザー名]
パスワード : [デフォルトのままで結構です(ただし、忘れないように!)]
メールアドレス : [ご自分のメールアドレス]
検索エンジンでの表示 : チェック入れない

入力が完了したら「ワードプレスのインストール」をクリックします。全部OKならログイン画面が表示されますのでログインして、カスタマイズなり投稿なりしてみてください。

以上で、AWSへのワードプレス導入がすべて完了しました。

自宅WEBサーバを独自ドメインで公開してみた

テスト環境(βテスト)を知人に見せようと思ったのですが、テスト中のサイトを公のサーバに置くのはちょっと気が引けてしまいます。そこで、自宅内のWEBサーバを公開して、それをチェックしてもらうことにしました。これはその時のメモです。

流れとしては、
1.ポートの開放
2.ポート開放の確認
3.ドメイン取得
4.ネームサーバ設定
5.DDNSの設定
6.DDNS更新設定
となります。

準備

サーバを公開するのですから、Webサーバは必要になります。
今回Ubuntuをインストールしたマシンに 192.168.1.16 という固定のIPアドレスを割り振ってサーバに仕立て上げました。
アドレスはDHCPサーバの管理外のアドレスを使いましょう。

1.ポートの開放

我が家ではPR-400NEを使用しています。というか他に選択肢がありませんでした。宅内IPアドレスは192.168.1.1でした。

まずはPR-400NEにログインします。ブラウザを使って http://192.168.1.1/ にアクセスします。

ユーザ名は user で、パスワードは初回アクセスした時に設定したパスワードとなります。

ログインしたら、「詳細設定」→「ワンタッチ設定」と進みます。

Webサーバ : チェック入れる 
WebサーバのIPアドレス : 192.168.1.16

入力し終わったら「設定」ボタンをクリックします。

画面がリロードされたら、左上の「保存」ボタンを押してください。

2.ポート開放の確認

LAN内から直接WAN側のIPアドレスで確認しようとしてもできません。(理由は話すと長くなりますからご自分で調べてみてください。)それで、WAN側からチェックしてもらう必要があります。

まず、サーバー監視/ネットワーク監視サービス CMAN でIPアドレスを調べます。

こちらにアクセスしてみてください。→ https://www.cman.jp/network/support/go_access.cgi

いきなりWAN側のIPアドレスが表示されます。これがあなたに割り当てられたグローバルIPアドレスです。

次に、HTTPが通るかチェックを行います。IPアドレスの表示されている場所のすぐ下にある「HTTP確認」をクリックします。

そのまま何も考えずに「HTTP疎通チェック」ボタンをクリックします。

ページが変わったら「確認結果」の「HTTPステータス」を見ます。「HTTP/1.1 200 OK」ならWAN側に公開されています。

もし、ダメなら1.からやり直してみてください。

3.ドメイン取得

今回ドメインの取得にムームードメインを使いました。知人に見せる程度なので無料ドメインでもよかったのですが、後々使うことも考えたら、年間100円程度の出費は大したことありません。ムームードメインは下のバナーからどうぞ。ドメインが年間50円からあります。

今回は asibe.win を取ってみました。何でも良かったんですが。

ドメイン取得の方法は他の方がたくさん書いてありますので、そちらを参考にしてください。

注意点としては、DNSの設定で「取得したドメインで使用する※上級者向け」を選択することです。

4.ネームサーバ設定

ムームードメインでドメインが取得できたら、ネームサーバを設定しなければなりません。

DDNSとして運用しますので、ネームサーバにMyDNSを使います。ムームードメインのネームサーバの欄に次の設定を行います。

ネームサーバ1 : ns0.mydns.jp
ネームサーバ2 : ns1.mydns.jp
ネームサーバ3 : ns2.mydns.jp

入力し終わったら「ネームサーバ設定変更」ボタンをクリックしてください。

5.DDNSの設定

MyDNSにログインします。登録が済んでない人は、ちゃっちゃと済ませます。そして「DOMAIN INFO」をクリックします。

出てきた画面を下の方にスクロールして、Domainの設定項目まで見ます。

Domain : (FQDN)
asibe.win
MX : (Hostname, Priority. FQDN)
asibe.win

今回はWEBサーバを公開するだけですので、他の項目は空欄で構いません。

後々メールの送受信をしたいとか、www.asibe.win でアクセスしたいとか、出てきたら設定しましょう。

設定した後、DNSが反映されるまでに10分から長くて半日くらいかかることもあります。辛抱強く待ちましょう。

6.DDNS更新設定

次のコマンドを実行します。

# crontab -e

起動したエディタを使用して、次の行を最後に追加します。

45 * * * * wget --spider --http-user=[マスターID] --http-passwd=[パスワード] http://www.mydns.jp/login.html > /dev/null

長いのでタイプミスに気を付けてください。毎時45分にMyDNSに更新通知を行います。

7.DNSの確認

nslookupコマンドを使ってDNSが反映されているか、確認します。

# nslookup asibe.win

asibe.winのところはご自分で取得された独自ドメインを入れてください。

Name:   asibe.win
Address:  xxx.xxx.xxxx.xxx

と表示され(xxxはIPアドレス)、自分のIPアドレスと同じになったことが確認できます。

以上で設定は終わりです。