Amazon LightsailにiOSのAPNsプッシュ通知のためのサーバーを構築する

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

iOSアプリにPHPからプッシュ通知(APNs)したいため、Amazon LightsailにPHPが動作するサーバーを立ち上げる手順MEMO。

今まで使ってきませんでしたが、コンソールがかなりシンプルでかなり好き。AWS EC2、DigitalOcean、エックスサーバーVPS、さくらVPS、と見てきましたが、導入のしやすさ、見た目のシンプルさ、コストパフォーマンス、スケーラビリティ等の面からもかなりオススメ。従量制でなく月額固定なのも良し(基本的には従量課金で、上限が固定されてる形のようです)。

サーバーの構築は

iOSアプリにPHPからプッシュ通知(APNs)したいため、XserverのVPSにPHPが動作するサーバーを立ち上げる手順MEMO。(iO...

ほぼ上記の流れと同様ですが、ドメインとDNS部分のみ、ここでMEMOしておきます。

上記MEMO内の

  • ドメイン
  • パケットフィルタ設定
  • DNS

部分がAWSだと以下に置き換わるかなと思います。データベース(MySQLとPostgreSQL)を独立させて導入(最低$15/月。最初の3ヶ月無料)できますが、ここでは触れません。

サインナップとプラン選択

AWS の仲間なのでAWSコンソールにサインイン後、Lightsailのダッシュボードに移動。他のAWSサービスから独立していて、見た目もかなりシンプルな作り。表示言語は、サイト下部から日本語も選べます。

Image01

インスタンスの作成

  • インスタンスロケーション:東京
  • プラトフォーム:Linux OSのみ
  • Ubuntu 22.04 LTS
  • SSHキーペアの変更:デフォルトキーをダウンロード
  • インスタンスプランの選択:$5 USD/月
    • メモリ:1GB(インスタンス内にMySQLを作る場合最低でも1GB)
    • Processing:2 vCPU
    • ストレージ:40GB SSD
    • 転送:2 TB

Image02

Image03

ドメインとDNS

DNSゾーン:ドメイン設定(Route 53)

Amazon Route 53でドメインの登録を行うとLightsailに登録済みドメインとして現れます。Route 53でドメイン登録を行う際、以下のような連絡先情報を聞かれます。

RegistDomain

画面の最下部にある「プライバシーの保護」のチェックを入れておくと、WHOISに表示されなくなるとのことです。

RegistDomain2

DNSゾーンの作成

Lightsailに戻ると「ドメインとDNS」ページに登録済みドメインとしてRoute53で取得したドメインが表示されています(15日以内に連絡先メールを確認して検証を済ませましょう)。

Dns zone

右上の「DNSゾーンの作成」を押すと「Amazon Route 53 で登録されているドメインを使用」があるので、プルダウンから選択し、「DNS ゾーンの作成」を押します。

Dns zone2

DNSゾーンを作成すると、この時点でネームサーバーを割り当てるようで、ネムサーバーが表示されます。これはRoute 53でドメイン登録した時のものとは若干アドレスが異なるものとなっているので、改めてドメインのネームサーバーを設定し直します。(Route 53でドメインを先に取得してからLightsailに来たので、この状態になったのかも。Lightsailで直接Route53のドメインを取得するとこうならないのかもです)

Dns zone3

一致するドメインがアカウントに存在します。この DNS ゾーンのネームサーバーに一致するようにドメインのネームサーバーを更新します。

「ドメインに移動」

というところの「ドメインに移動」を押すか、ドメインとDNSページの登録済みドメインのメニューから「管理」を選ぶと、Route 53のドメインをLightsail上で表示する画面になるので、そこで「ネームサーバーを編集」を押して編集状態に入ります。

Dns zone4

「Lightsail ネームサーバーを使用」という便利なボタンがあるので、そのボタンを押し、上記で割り当てられたネームサーバーに書き換え、「保存」を押します。

Dns zone5

1分ほど更新中と表示され、「Lightsailを使用してドメインのDNSレコードを管理しています。」と表示されるようになります。

「ドメインの割り当て」について下記の「DNSゾーン:ドメイン設定(別のレジストラ)」と同じ作業をしておきます。

DNSゾーン:ドメイン設定(別のレジストラ)

サイドメニューの「ドメインとDNS」→「DNSゾーンの作成」→「別のレジストラからドメインを使用」を選択し、ドメイン名を入力し「DNSゾーンの作成」

ドメインの割り当て

「割り当てを追加」してドメイン名を選択

  • hoge.com
  • hoge.comのすべてのサブドメイン

の2つに対してリソースを割り当てますが、リソースを選択のプルダウンが押しにくいので注意。作成したインスタンスが選択できるはずです。

静的IPアドレスが最初は選択できないので、「静的IPをアタッチする」でダイアログを出し、静的IPの指定で任意の名前をつけて「作成およびアタッチ」。これによってインスタンスを再起動するなどしても変動しないIPを割り当てられます。

その後、まず、静的IPアドレスを選択して「割り当てる」

これによってDNSレコードにAレコードが追加されていることも確認できると思います。

すべてのサブドメインについても同様に割り当てると、「*.hoge.com」のAレコードに静的IPが割り当てられます。

ついでに「IPv6アドレス」についても割り当てると、AAAAレコードが追加されます。

※ここをやっておかないと SSL 設定時Some challenges have failed. というエラーが出ます。

ネットワーキング:ファイアウォール

作成したインスタンスを選択し「ネットワーキング」を見ると「IPv4ファイアウォール」が表示されますが、「SSH」「HTTP」のみなので「HTTPS」も追加しておきましょう。

 ネームサーバ

ここではムームードメインで取得したドメインと紐付けます。

サイドメニュー「ドメインとDNS」から作成したDNSゾーンを表示すると、このインスタンスのネームサーバ情報が表示されます。

  • ns-xxxx.awsdns-xx.org
  • ns-xxx.awsdns-xx.net
  • ns-xxxx.awsdns-xx.co.uk
  • ns-xxx.awsdns-xx.com

ムームードメインでネームサーバを登録

ドメイン管理しているサービスでネームサーバを登録します。以下はムームードメインの例です。

ムームードメインのコンパネで対象となるドメインを選択し、「ネームサーバ設定変更」をクリック。「取得したドメインで使用する」でネームサーバ1から4までに上記で表示されたアドレスを入力。

Image04

浸透しているかを確認するには、

nslookup -type=NS example.com

を行ってanswerにawsdnsのアドレスが表示されるかを確認します。

ここまで準備できたら、あとはこれとほぼ同じ流れでサーバー構築できると思います。SSLの設定は上記の割り当て等を先にやってからで。

iOSアプリにPHPからプッシュ通知(APNs)したいため、XserverのVPSにPHPが動作するサーバーを立ち上げる手順MEMO。(iO...