![見出し画像](https://assets.st-note.com/production/uploads/images/53703836/rectangle_large_type_2_5dfbfe5b7524253cef9a9cc5681fa0ad.jpg?width=1200)
レガシーな個人ホームページを少しモダンにせよ!
個人のホームページを持っているのですが、公開したい情報もないですし、放置しすぎて恥ずかしいので、少しモダンにしたいと思います。
今までの構成
まずドメインですが、スタードメインで.jpを持っています。
のようにホームページへアクセスします。サブドメインなしです。いまだにSSLに対応していません(汗)。スタードメインは更新が安くておすすめです。
次にサーバですが、さくらのVPS 1Gを借りて、ubuntu上にnginxとphp-fpmでPHPアプリケーションを動かしています。PHPフレームワークは、BEAR.Sundayというモダンフレームワークを使っています。さくらのVPSも安くておすすめです。一応PHPアプリケーションなのですが、99%静的コンテンツです。
AWSという存在
仕事でオンプレからAWSに移行しているということで、個人でもAWSアカウントを持っています。そうなると、さくらのVPSからAWSへ移行したいという考えが湧いてきます。コスト的にはさくらのVPSが安いかもしれないけど、AWSでいいじゃない?という軽いノリです。
ドメイン移管
いろいろ調べると、Zone Apex(サブドメインなし)の場合は ドメインをRoute 53でホスティングしていないと対応していないという記事を発見しました。そこで、Route 53へ.jpドメインの移管を検討しますが、1年で約1万円とかなり高くなると知り、スタードメインのままで強行することにしました。最悪サブドメイン付ければいいので。
構成図
構成はいたってシンプルです。Route 53にホストゾーンを追加して、静的コンテンツ公開用のバケットに向けるだけです。コンテンツはCloud9からアップロードします。CloudFrontやSSL対応は次回にします。
S3バケット作成
静的コンテンツを保持するS3バケットを用意します。バケット名はドメイン名にします。ここ重要です。必ずドメイン名にしてください。外部に公開するので「ブロックパブリックアクセス」をオフにします。
作成したバケットを選択して、「プロパティ」タブを表示します。一番下の「静的ウェブサイトホスティング」の「編集」ボタンを押します。有効に変更します。URLの最後が/(スラッシュ)でアクセスされた時に表示するファイルを「インデックスドキュメント」で指定します。エラードキュメントはエラー時に表示するページです。とりあえずindex.htmlにしておきます。
Cloud9からコンテンツをアップロード
Cloud9で新しい環境を作ります。デフォルトで作成するだけで、使ってないときに勝手に停止してくれるEC2が作成され、ターミナルからAWS CLIが使えるようになります。index.htmlやcssなどを作成し、aws s3 cpコマンドでS3にアップロードします。
$ aws s3 cp index.html s3://bucket-name
Route 53にホストゾーン追加
いよいよ独自ドメインでアクセスしたときにAWSに向くようにしていきます。「ホストゾーンの追加」でドメイン名を入れて「パブリックホストゾーン」を選択して作成します。ホストゾーンを追加後、「レコードを追加」というオレンジのボタンがあるので選択します。サブドメインなしなので、レコード名は空のままにします。レコードタイプはA。トラフィックのルーティング先にある「エイリアス」のトグルスイッチをオンにします。S3へ向けたいのでS3を選択します。リージョンを選択します。すると、先程作成したバケットが選択できるようになるので、それを選択します。最後に「レコードを作成」ボタンで完了です。
スタードメイン側の設定でネームサーバを変更する
スタードメインにログインして、ネームサーバを変更します。「ドメイン管理ツール」から「ネームサーバの確認・変更」へ進みます。AWS側に作成したホストゾーンのNSレコードの値4つを全部設定していきます。最後のドットは不要みたいです。設定が終わったら、反映されるまでしばらく待ちます。
動作確認
するとどうでしょう?http://exampledomain.jpにアクセスするとS3のindex.htmlが表示されるではありませんか!後で勉強したのですが、
Zone ApexレコードをAWSサービスに関連付けるには、ALIASレコードを指定する
だそうです。ここ試験にでます!以上です。
SSL化やCloudFrontに続く予定です。