本文へ移動

レンタルサーバーに置く(PHP版) ​

借りているレンタルサーバーにPHP版のトークン発行サーバーを置き、Axeから使えるようにするまでの手順です。データベースも、コマンドの操作も要りません。ファイルをFTPで上げられれば、コマンドを使わずに進められます。かかる時間は、30分から1時間ほどです(サブドメインや証明書の準備に、待ち時間がかかることがあります)。

例として、エックスサーバー、さくらのレンタルサーバ、ロリポップ!での操作も書いています。ほかのレンタルサーバーでも、同じ名前のメニューを探せば進められます。

0. 用意するもの ​

  • PHP 8.3以上が動き、.htaccessが使えるレンタルサーバー(下の表)
  • SkyWayのアプリケーションIDとシークレットキー(→ SkyWayのアプリを作る)
  • AxeのOrigin(→ 設置の準備)
  • FTPのソフト。このページでは、無料のFileZillaを使います

途中で、次の値を入れたり控えたりします。パソコンの中にメモのファイルを1つ作り、そこに貼り付けながら進めると迷いません(→ 秘密の値の扱い)。

値手に入れるところ使う手順
トークン発行サーバーのURL手順2手順9、10
AxeのOrigin設置の準備手順5
SkyWayのアプリケーションIDSkyWayのアプリを作る手順5
SkyWayのシークレットキーSkyWayのアプリを作る手順5
FTPのホスト、ユーザー、パスワード手順6手順6
もの条件
PHP8.3、8.4、8.5のいずれか。8.2以前では動きません
WebサーバーApache。mod_rewriteが使え、.htaccessでの設定を許している
HTTPSAxeをhttps://で配信するなら、こちらもhttps://で公開する

多くのレンタルサーバー(エックスサーバー、さくらのレンタルサーバ、ロリポップ!など)は、この条件を満たしています。.htaccessが使えないサーバーでは、.envがWebから読めてしまうおそれがあるので、PHP版を使わずVercelに置いてください。

1. PHPの版を8.3以上にする ​

PHP版は、PHP 8.2以前では動きません。レンタルサーバーの管理画面で、使うドメインのPHPの版を8.3以上(8.3、8.4、8.5のどれか)にします。

レンタルサーバー操作
エックスサーバーサーバーパネルの「PHP Ver.切替」で、ドメインの鉛筆のボタンを押し、「変更後のバージョン」を選んで「設定する」
さくらのレンタルサーバコントロールパネルの「スクリプト設定」→「言語バージョン設定」で版を選び、保存する
ロリポップ!ユーザー専用ページの「サーバーの管理・設定」→「PHP設定」で、ドメインごとに版を選ぶ(反映まで5〜10分)

同じドメインで、ほかのPHPのプログラム(WordPressなど)も動かしているときは、そちらが新しい版で動くかも確かめてください。

2. 置く場所を決める ​

トークン発行サーバーを置くURLを決めます。次のどちらでも動きます。

置き方URLの例Axeのbackend.urlに書く値
サブディレクトリの中https://example.com/backend/https://example.com/backend
サブドメインの直下https://backend.example.com/https://backend.example.com

迷ったら、すでに使っているドメインの中にフォルダを作る、サブディレクトリの置き方がかんたんです。フォルダは、手順7でFTPのソフトから作ります。

サブドメインにするときは、先に管理画面でサブドメインを作っておきます。作ってから使えるようになるまで、1時間ほどかかることがあります。

レンタルサーバーサブドメインの作りかた
エックスサーバーサーバーパネルの「サブドメイン設定」→「サブドメインを追加」で名前と置き場所を決め、「確認画面へ進む」→「追加する」
さくらのレンタルサーバコントロールパネルの「ドメイン/SSL」→「ドメイン新規追加」で、「サブドメインを指定する」を選ぶ
ロリポップ!ユーザー専用ページの「サーバーの管理・設定」→「サブドメイン設定」→「新規作成」で、名前と公開フォルダを決める

3. HTTPSで開けるようにする ​

AxeをHTTPS(https://)で配信しているなら、トークン発行サーバーもHTTPSで開ける必要があります。http://のままだと、ブラウザが通信を止めます。

ブラウザで、手順2で決めた場所のドメイン(例:https://example.com/)を開きます。鍵のマークが出て、警告なしに開ければ、そのままで構いません。証明書のエラーが出るときは、管理画面で無料の証明書を設定します。

レンタルサーバー無料の証明書の設定
エックスサーバーサーバーパネルの「SSL設定」で、ドメインに独自SSLを追加する
さくらのレンタルサーバコントロールパネルの「ドメイン/SSL」で、そのドメインの「SSL」から無料SSLを設定する
ロリポップ!ユーザー専用ページの独自SSLの画面で、「独自SSL(無料)を設定する」を選ぶ

設定してから使えるようになるまで、1時間ほどかかることがあります。

4. 配布物を取ってきて展開する ​

  1. リリースのページを開きます。
  2. ページの下のほうのAssetsの中から、udonarium-axe-backend-<版>.zipを押してダウンロードします。
  3. ダウンロードしたzipを展開します。Windowsでは、zipを右クリックしてすべて展開を選び、展開を押します。Macでは、zipをダブルクリックします。

「Source code」のzipではありません

同じところにある「Source code (zip)」は、開発に使うファイル一式です。設置には、udonarium-axe-backend-<版>.zipのほうを使ってください。

展開したフォルダには、次のものが入っています。

text
(展開したフォルダ)
 ├─ .env.example   設定ファイルのひな形
 ├─ .htaccess      URLの振り分けと、見られては困るファイルを守る設定
 ├─ index.php      入口
 ├─ src/           本体のプログラム
 ├─ LICENSE
 ├─ CHANGELOG.md
 └─ CONTRIBUTING.md

Macでは、名前が.で始まるファイル(.env.example、.htaccess)がFinderで見えません。command+shift+.(ピリオド)を押すと見えるようになります。

5. .envを作る ​

.envは、PHP版の設定ファイルです。ひな形の.env.exampleを開いて書き換え、.envという名前で保存します。テキストエディターの使いかたは、設置の準備にあります。

  1. 展開したフォルダの.env.exampleを、テキストエディターで開きます。

  2. 次の4つの行の値を書き換えます。#で始まる行は説明なので、そのままで構いません。

    dotenv
    SKYWAY_APP_ID="SkyWayのアプリケーションID"
    SKYWAY_SECRET="SkyWayのシークレットキー"
    SKYWAY_UDONARIUM_LOBBY_SIZE=3
    ACCESS_CONTROL_ALLOW_ORIGIN="https://axe.example.com"
    • 値は"(ダブルクォート)で囲んだままにします。囲まないと、値の中に;があったときに、そこから後ろが切り捨てられます。
    • ACCESS_CONTROL_ALLOW_ORIGINには、AxeのOriginを書きます。末尾に/は付けません。2つ以上あるときはカンマで区切ります。
    • SKYWAY_UDONARIUM_LOBBY_SIZEは3のままで構いません。
  3. 同じフォルダに、.envという名前で保存します。

    • Windowsのメモ帳では、ファイル→名前を付けて保存で、ファイル名を.env、ファイルの種類をすべてのファイル、エンコードをUTF-8にして保存します。
    • Macのテキストエディットでは、ファイル→複製を選ぶと、同じ中身の新しいウインドウが開きます。そのウインドウでファイル→保存を選び、名前を.envにして、展開したフォルダに保存します。「.」で始まる名前はシステム用だという確認が出たら、「.」を使うほうのボタンを押します。

保存したら、フォルダの中に.envと.env.exampleの2つがあることを確かめます。.env.txtのように、後ろに.txtが付いていないかも見てください(→ 設置の準備)。

それぞれの値の意味は設定項目にあります。

6. FileZillaでサーバーにつなぐ ​

FileZillaを入れる ​

  1. FileZillaの公式サイトを開き、Download FileZilla Clientから、使っているパソコン(WindowsかMac)向けのものをダウンロードします。
  2. ダウンロードしたものを開き、案内に従って入れます。

Windowsの入れる画面では、ほかのソフトも一緒に入れるよう勧められることがあります。要らなければ、断って進めて構いません。

FTPの接続先を調べる ​

レンタルサーバーの管理画面や、契約したときのメールに、FTPの接続先が書いてあります。

レンタルサーバーホストユーザーパスワード
エックスサーバーsv***.xserver.jpのようなサーバー名FTPユーザー名サーバーパスワード
さくらのレンタルサーバ初期ドメイン(アカウント名.sakura.ne.jp)アカウント名サーバーパスワード
ロリポップ!ftp.lolipop.jpFTP・WebDAVアカウントFTP・WebDAVパスワード
  • エックスサーバーは、契約したときの「サーバーアカウント設定完了」のメールと、サーバーパネルの「サブFTPアカウント設定」の「FTPソフト設定」に書いてあります。管理画面にログインするパスワードとは別です。
  • ロリポップ!は、ユーザー専用ページの「アカウント情報」に書いてあります。

つなぐ ​

  1. FileZillaを開き、メニューのファイルからサイト マネージャーを開きます。

  2. 新しいサイトを押し、名前(例:レンタルサーバー)を付けます。

  3. 一般のタブで、次のように入れます。

    欄入れるもの
    プロトコルFTP - ファイル転送プロトコル
    ホスト調べたホスト
    ポート空のまま
    暗号化明示的な FTP over TLS が必要
    ログオン タイプ通常
    ユーザー調べたユーザー
    パスワード調べたパスワード
  4. 接続を押します。

  5. 初めてつなぐときは、不明な証明書の画面が出ます。ホストの名前が、調べたものと同じかを確かめ、今後は常にこの証明書を信用するにチェックを入れてOKを押します。

つながると、左にパソコンの中(ローカル サイト)、右にサーバーの中(リモート サイト)が出ます。

つながらないときは、次を確かめます。

  • ホスト、ユーザー、パスワードに、前後の空白が入っていないか。
  • パスワードが、管理画面にログインするものではなく、FTPのものか。
  • 暗号化を使用可能なら明示的な FTP over TLS を使用に変えると、つながるか(暗号化に対応していないサーバーのとき)。

隠しファイルを表示する ​

名前が.で始まるファイル(.env、.htaccess)は、そのままではFileZillaに出てこないことがあります。メニューのサーバーから強制的に隠しファイルを表示を選んで、チェックを入れておきます。

7. アップロードする ​

サーバーの置き場所を開く ​

右(リモート サイト)で、公開しているフォルダを開きます。

レンタルサーバー公開しているフォルダ
エックスサーバー<ドメイン名>/public_html/
さくらのレンタルサーバwww/
ロリポップ!つないだときに最初に開くフォルダ(public_htmlは無い)

サブディレクトリに置くときは、公開しているフォルダの中で、何もないところを右クリックしてディレクトリの作成を選びます。名前をbackendにして作り、ダブルクリックで開きます。

サブドメインに置くときは、手順2でサブドメインの置き場所に決めたフォルダを開きます。

ファイルを上げる ​

FileZillaなどのFTPのソフトの画面の、左右の分かれかた(実際の画面ではなく、配置のイメージです)
  1. 左(ローカル サイト)で、手順4で展開し、手順5で.envを作ったフォルダを開きます。
  2. 左の下の一覧で、そのフォルダの中身をすべて選びます(一覧を1回押してから、WindowsではCtrl+A、Macではcommand+A)。
  3. 選んだものを、右の下の一覧へドラッグします。

フォルダごとではなく、中身を上げます。右の一覧のその場所に、index.php、.htaccess、.env、srcが並んでいれば合っています。index.phpが、1つ深いフォルダの中に入っていないかを確かめてください。

.htaccessと.envがあるかを確かめる

右の一覧に.htaccessと.envが見えないときは、隠しファイルの表示がオフになっています。手順6の「隠しファイルを表示する」を済ませてから、もう一度上げてください。

8. パーミッションを設定する ​

パーミッションは、サーバーの中で、そのファイルを誰が読めるかの設定です。.envにはシークレットキーが書いてあるので、自分(とPHP)だけが読めるようにします。

  1. 右の一覧で.envを右クリックし、パーミッションの変更を選びます。
  2. 属性値の欄に600と入れて、OKを押します。

ほかのファイルとフォルダは、ふつうはアップロードしたときに、ファイルが644、フォルダが755になっています。右の一覧の、パーミッションを示す列で確かめ、違っていたら、同じように属性値を書き換えます。

対象パーミッション
フォルダ(src/など)755
ファイル(.php、.htaccessなど)644
.env600

.envは必ず600に

644のままだと、同じサーバーを使っているほかの利用者から読まれるおそれがあります。

SSHが使えるサーバーなら、設置したフォルダで次のコマンドを実行すれば、まとめて設定できます。

sh
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
chmod 600 .env

9. 動いているか確かめる ​

ブラウザで、置いた場所のURLの後ろに/v1/statusを付けたものを開きます。

text
https://example.com/backend/v1/status

OKとだけ表示されれば、成功です。ほかのものが表示されたときは、困ったときの表で、表示されたものから原因を探してください。

トークンが発行できるかは、Axeから部屋に入ってみれば分かります(手順10)。ターミナルが使えるなら、Macのターミナルで次のコマンドでも確かめられます。Originには、.envに書いたOriginを使います。

sh
curl -X POST https://example.com/backend/v1/skyway2023/token \
  -H "Origin: https://axe.example.com" \
  -H "Content-Type: application/json" \
  -d '{"formatVersion":1,"channelName":"test-room","peerId":"test-peer"}'

{"token":"eyJ..."}が返れば、Axeから使えます。

10. Axeにつなぐ ​

Axeを配信している場所のassets/config.jsonを開き、backend.urlに、このサーバーのURL(手順2の表の右の列)を書きます。書きかたは設置の準備にあります。

json
{
  "backend": {
    "url": "https://example.com/backend"
  }
}

書き換えたconfig.jsonを配信先に置き直したら、Axeを開き、部屋を作ります。ほかのブラウザ(または別の人)から同じ部屋に入れれば、完成です。config.jsonのほかの項目は、Axeの設定にあります。

もっと安全にしたいとき ​

公開フォルダの外にファイルを置けるサーバーなら、.envを公開フォルダの外に置けます。.htaccessに次の1行を足すと、PHP版は、その場所の.envを最初に読みます。

apache
SetEnv ENV_PATH /home/user/secret/.env
  • 場所は、公開フォルダ(public_htmlやwww)の外にします。中に置くと、Webから読めてしまうおそれがあります。
  • 書いた場所に.envが無いと、index.phpと同じ場所の.envを探し、それも無ければすべてのリクエストに500を返します。

index.phpの1つ上に置かない

PHP版は、index.phpと同じ場所に.envが無いと、1つ上のフォルダの.envも読みます。けれども、サブディレクトリやサブドメインに置いたときは、1つ上のフォルダは公開フォルダの中です(public_html/backend/ならpublic_html/)。そこには付属の.htaccessの守りが届かないので、.envを置くと、https://example.com/.envのようなURLで誰にでも読まれてしまいます。公開フォルダの外に置くときは、ENV_PATHで場所を書いてください。

更新するとき ​

  1. 新しい版のzipを取ってきて展開します(手順4)。
  2. FileZillaでサーバーにつなぎ、展開したフォルダの中身を、前と同じ場所に上げます(手順7)。
  3. ターゲット ファイルは既に存在していますの画面が出たら、上書きを選び、常にこのアクションを使用するにチェックを入れてOKを押します。
  4. /v1/statusを開き、OKが返るかを確かめます。

配布物のzipには.envが入っていないので、上げても.envはそのまま残ります。新しい版で設定項目が増えたときは、リリースノートと.env.exampleを見比べて、足りない項目を.envに書き足します。

前の版でdocs/やREADME.mdを上げていたときは、サーバーから消して構いません。いまの配布物には入っていません。

MITライセンスで公開しています