レンタルサーバーに置く(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のアプリケーションID | SkyWayのアプリを作る | 手順5 |
| SkyWayのシークレットキー | SkyWayのアプリを作る | 手順5 |
| FTPのホスト、ユーザー、パスワード | 手順6 | 手順6 |
| もの | 条件 |
|---|---|
| PHP | 8.3、8.4、8.5のいずれか。8.2以前では動きません |
| Webサーバー | Apache。mod_rewriteが使え、.htaccessでの設定を許している |
| HTTPS | Axeを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. 配布物を取ってきて展開する
- リリースのページを開きます。
- ページの下のほうのAssetsの中から、
udonarium-axe-backend-<版>.zipを押してダウンロードします。 - ダウンロードしたzipを展開します。Windowsでは、zipを右クリックしてすべて展開を選び、展開を押します。Macでは、zipをダブルクリックします。
「Source code」のzipではありません
同じところにある「Source code (zip)」は、開発に使うファイル一式です。設置には、udonarium-axe-backend-<版>.zipのほうを使ってください。
展開したフォルダには、次のものが入っています。
(展開したフォルダ)
├─ .env.example 設定ファイルのひな形
├─ .htaccess URLの振り分けと、見られては困るファイルを守る設定
├─ index.php 入口
├─ src/ 本体のプログラム
├─ LICENSE
├─ CHANGELOG.md
└─ CONTRIBUTING.mdMacでは、名前が.で始まるファイル(.env.example、.htaccess)がFinderで見えません。command+shift+.(ピリオド)を押すと見えるようになります。
5. .envを作る
.envは、PHP版の設定ファイルです。ひな形の.env.exampleを開いて書き換え、.envという名前で保存します。テキストエディターの使いかたは、設置の準備にあります。
展開したフォルダの
.env.exampleを、テキストエディターで開きます。次の4つの行の値を書き換えます。
#で始まる行は説明なので、そのままで構いません。dotenvSKYWAY_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のままで構いません。
- 値は
同じフォルダに、
.envという名前で保存します。- Windowsのメモ帳では、ファイル→名前を付けて保存で、ファイル名を
.env、ファイルの種類をすべてのファイル、エンコードをUTF-8にして保存します。 - Macのテキストエディットでは、ファイル→複製を選ぶと、同じ中身の新しいウインドウが開きます。そのウインドウでファイル→保存を選び、名前を
.envにして、展開したフォルダに保存します。「.」で始まる名前はシステム用だという確認が出たら、「.」を使うほうのボタンを押します。
- Windowsのメモ帳では、ファイル→名前を付けて保存で、ファイル名を
保存したら、フォルダの中に.envと.env.exampleの2つがあることを確かめます。.env.txtのように、後ろに.txtが付いていないかも見てください(→ 設置の準備)。
それぞれの値の意味は設定項目にあります。
6. FileZillaでサーバーにつなぐ
FileZillaを入れる
- FileZillaの公式サイトを開き、Download FileZilla Clientから、使っているパソコン(WindowsかMac)向けのものをダウンロードします。
- ダウンロードしたものを開き、案内に従って入れます。
Windowsの入れる画面では、ほかのソフトも一緒に入れるよう勧められることがあります。要らなければ、断って進めて構いません。
FTPの接続先を調べる
レンタルサーバーの管理画面や、契約したときのメールに、FTPの接続先が書いてあります。
| レンタルサーバー | ホスト | ユーザー | パスワード |
|---|---|---|---|
| エックスサーバー | sv***.xserver.jpのようなサーバー名 | FTPユーザー名 | サーバーパスワード |
| さくらのレンタルサーバ | 初期ドメイン(アカウント名.sakura.ne.jp) | アカウント名 | サーバーパスワード |
| ロリポップ! | ftp.lolipop.jp | FTP・WebDAVアカウント | FTP・WebDAVパスワード |
- エックスサーバーは、契約したときの「サーバーアカウント設定完了」のメールと、サーバーパネルの「サブFTPアカウント設定」の「FTPソフト設定」に書いてあります。管理画面にログインするパスワードとは別です。
- ロリポップ!は、ユーザー専用ページの「アカウント情報」に書いてあります。
つなぐ
FileZillaを開き、メニューのファイルからサイト マネージャーを開きます。
新しいサイトを押し、名前(例:
レンタルサーバー)を付けます。一般のタブで、次のように入れます。
欄 入れるもの プロトコル FTP - ファイル転送プロトコル ホスト 調べたホスト ポート 空のまま 暗号化 明示的な FTP over TLS が必要 ログオン タイプ 通常 ユーザー 調べたユーザー パスワード 調べたパスワード 接続を押します。
初めてつなぐときは、不明な証明書の画面が出ます。ホストの名前が、調べたものと同じかを確かめ、今後は常にこの証明書を信用するにチェックを入れてOKを押します。
つながると、左にパソコンの中(ローカル サイト)、右にサーバーの中(リモート サイト)が出ます。
つながらないときは、次を確かめます。
- ホスト、ユーザー、パスワードに、前後の空白が入っていないか。
- パスワードが、管理画面にログインするものではなく、FTPのものか。
- 暗号化を使用可能なら明示的な FTP over TLS を使用に変えると、つながるか(暗号化に対応していないサーバーのとき)。
隠しファイルを表示する
名前が.で始まるファイル(.env、.htaccess)は、そのままではFileZillaに出てこないことがあります。メニューのサーバーから強制的に隠しファイルを表示を選んで、チェックを入れておきます。
7. アップロードする
サーバーの置き場所を開く
右(リモート サイト)で、公開しているフォルダを開きます。
| レンタルサーバー | 公開しているフォルダ |
|---|---|
| エックスサーバー | <ドメイン名>/public_html/ |
| さくらのレンタルサーバ | www/ |
| ロリポップ! | つないだときに最初に開くフォルダ(public_htmlは無い) |
サブディレクトリに置くときは、公開しているフォルダの中で、何もないところを右クリックしてディレクトリの作成を選びます。名前をbackendにして作り、ダブルクリックで開きます。
サブドメインに置くときは、手順2でサブドメインの置き場所に決めたフォルダを開きます。
ファイルを上げる
- .env
- .env.example
- .htaccess
- index.php
- src/
- LICENSE
- CHANGELOG.md
- CONTRIBUTING.md
- .env
- .env.example
- .htaccess
- index.php
- src/
- LICENSE
- CHANGELOG.md
- CONTRIBUTING.md
- 左(ローカル サイト)で、手順4で展開し、手順5で
.envを作ったフォルダを開きます。 - 左の下の一覧で、そのフォルダの中身をすべて選びます(一覧を1回押してから、Windowsでは
Ctrl+A、Macではcommand+A)。 - 選んだものを、右の下の一覧へドラッグします。
フォルダごとではなく、中身を上げます。右の一覧のその場所に、index.php、.htaccess、.env、srcが並んでいれば合っています。index.phpが、1つ深いフォルダの中に入っていないかを確かめてください。
.htaccessと.envがあるかを確かめる
右の一覧に.htaccessと.envが見えないときは、隠しファイルの表示がオフになっています。手順6の「隠しファイルを表示する」を済ませてから、もう一度上げてください。
8. パーミッションを設定する
パーミッションは、サーバーの中で、そのファイルを誰が読めるかの設定です。.envにはシークレットキーが書いてあるので、自分(とPHP)だけが読めるようにします。
- 右の一覧で
.envを右クリックし、パーミッションの変更を選びます。 - 属性値の欄に
600と入れて、OKを押します。
ほかのファイルとフォルダは、ふつうはアップロードしたときに、ファイルが644、フォルダが755になっています。右の一覧の、パーミッションを示す列で確かめ、違っていたら、同じように属性値を書き換えます。
| 対象 | パーミッション |
|---|---|
フォルダ(src/など) | 755 |
ファイル(.php、.htaccessなど) | 644 |
.env | 600 |
.envは必ず600に
644のままだと、同じサーバーを使っているほかの利用者から読まれるおそれがあります。
SSHが使えるサーバーなら、設置したフォルダで次のコマンドを実行すれば、まとめて設定できます。
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
chmod 600 .env9. 動いているか確かめる
ブラウザで、置いた場所のURLの後ろに/v1/statusを付けたものを開きます。
https://example.com/backend/v1/statusOKとだけ表示されれば、成功です。ほかのものが表示されたときは、困ったときの表で、表示されたものから原因を探してください。
トークンが発行できるかは、Axeから部屋に入ってみれば分かります(手順10)。ターミナルが使えるなら、Macのターミナルで次のコマンドでも確かめられます。Originには、.envに書いたOriginを使います。
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の表の右の列)を書きます。書きかたは設置の準備にあります。
{
"backend": {
"url": "https://example.com/backend"
}
}書き換えたconfig.jsonを配信先に置き直したら、Axeを開き、部屋を作ります。ほかのブラウザ(または別の人)から同じ部屋に入れれば、完成です。config.jsonのほかの項目は、Axeの設定にあります。
もっと安全にしたいとき
公開フォルダの外にファイルを置けるサーバーなら、.envを公開フォルダの外に置けます。.htaccessに次の1行を足すと、PHP版は、その場所の.envを最初に読みます。
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で場所を書いてください。
更新するとき
- 新しい版のzipを取ってきて展開します(手順4)。
- FileZillaでサーバーにつなぎ、展開したフォルダの中身を、前と同じ場所に上げます(手順7)。
- ターゲット ファイルは既に存在していますの画面が出たら、上書きを選び、常にこのアクションを使用するにチェックを入れてOKを押します。
/v1/statusを開き、OKが返るかを確かめます。
配布物のzipには.envが入っていないので、上げても.envはそのまま残ります。新しい版で設定項目が増えたときは、リリースノートと.env.exampleを見比べて、足りない項目を.envに書き足します。
前の版でdocs/やREADME.mdを上げていたときは、サーバーから消して構いません。いまの配布物には入っていません。