ウェブターミナル

アプリケーションのウェブターミナルを使用すると、アプリケーションのウェブプロセスが実行されているコンテナにコマンドラインでアクセスすることができます。ウェブターミナルを使用して、スクリプトの実行ファイルの読み込みが可能です。問題のデバッグやパフォーマンスの監視、手動でのスクリプト実行(アドホック)に便利です。

ウェブターミナルにアクセスするには、以下が必要になります。

  • アプリケーションのデプロイに少なくとも 1 回成功していること。
  • アプリケーションが正常に動作していること。エラーがある場合、またはアプリケーションが停止している場合、ウェブターミナルは使用できません。
  • 少なくとも1つの有効なIPアドレスを許可リストに追加すること。

現在、ウェブターミナルからアクセスできるプロセスはウェブプロセスのみです。バックグラウンドプロセスやcronジョブはウェブターミナルでは利用できません。

ウェブターミナルとDockerfile

アプリケーションがDockerfileで作成されている場合、Bashがコンテナにインストールされていることを確認してください。ほとんどの場合、ベースイメージ(Ubuntuなど)にはシェルパッケージが含まれており、デフォルトで動作します。合理化されたコンテナでは、シェルパッケージが含まれていない場合があり、それの追加が必要になります。シェルパッケージの追加方法は、ベースイメージにより決定されます。

  • Alpine:apk add bash
  • Ubuntu/Debian:apt install bash
  • Fedora:dnf install bash

認証のセットアップ

許可リストに追加するIPアドレスは一意でなければなりません。すでに許可リストにあるIPアドレスを追加しようとすると、エラーが表示され、重複したIPアドレスを追加することはできません。

IPアドレスの追加

MyKinsta でアプリケーションの「ウェブターミナル」ページに初めてアクセスしたときは、「認証を設定する」をクリックしてIPアドレスを許可リストに追加します。接続元のアドレスを確認するには、「Test your IPv6」などのツールを使用することができます。

許可する最初のIPアドレスを入力します。さらに IP アドレスを追加するには、「追加項目を増やす」をクリックします。許可するIPアドレスをすべて入力したら、「認証を設定する」をクリックします。

IP許可リストにIPアドレスを追加しウェブターミナル認証を設定
IP許可リストにIPアドレスを追加して、ウェブターミナル認証を設定する

今後さらにIPアドレスを追加する必要がある場合は、「ウェブターミナル」ページの許可リストセクションでIPアドレスの追加をクリックして設定することができます。

IPアドレスの削除

許可リストからIPアドレスを削除するには、削除するIPアドレスの横にある「削除」(ゴミ箱)アイコンをクリックし、「IPアドレスを削除」をクリックして削除を確定します。

ウェブターミナルの起動と開始

ウェブターミナルを開くには、まずそれに接続する必要があります。「ウェブターミナルを開始」をクリックして接続を開始します。接続処理の間「ウェブターミナル」ページのオプションは無効になります。

ウェブターミナル接続処理中にウェブターミナルページのオプションが無効に
ウェブターミナル接続の処理中にウェブターミナルページのオプションは無効になる

ウェブターミナルポッドの展開が完了すると、許可リストの上に「ウェブターミナルが稼働しています」と表示されます。「ウェブターミナルを開く」をクリックして、ブラウザの新しいタブでウェブターミナルを開きます。

ウェブターミナルを開く
ウェブターミナルを開く

ターミナルの読み込みの間、「Starting web terminal」ページが表示されることがあります。ターミナルが読み込まれると、通常のターミナルのようにコマンドを実行できます。使用できるコマンドは、アプリケーションに存在する実行可能ファイルによって異なります。

ターミナルのユーザー名

アプリケーションがNixpackで作成されている場合(「ビルド環境」のステップで「Nixpacksを使用してコンテナイメージを設定」を選択)、ターミナルのユーザー名は通常「root」になります。Kinstaは、Railwayによって保守されているオープンソースプロジェクトであるNixpacksを、リポジトリに基づいて自動的に言語を決定しアプリケーション用のコンテナを作成する選択肢の1つとして提供しています。

アプリケーションがBuildpackで作成されている場合(「ビルド環境」のステップで「Buildpacksを使用してコンテナイメージを設定」を選択)、ターミナルのユーザー名は「heroku」である可能性があります。Kinstaは、Herokuによって維持されているオープンソースプロジェクトであるBuildpacksを、リポジトリに基づいて自動的に言語を決定しアプリケーション用のコンテナを作成する選択肢の1つとして提供しています。これがウェブターミナルにも引き継がれる可能性があります。

アプリケーションがDockerfileで作成されている場合(「ビルド環境」のステップで「Dockerfileを使用してコンテナイメージを設定」を選択)、ターミナルのユーザー名は通常「root」になりますが、Dockerfileのセットアップ方法によって異なります。

ウェブターミナルの停止と終了

ターミナルでの作業が終わったら、ブラウザのタブを閉じてウェブターミナルへの接続を終了します。タブを閉じてもターミナルは停止しませんが、再びターミナルを開くには「ウェブターミナルを開く」をクリックし、約30秒待ってから、新しいタブを更新して、再びターミナルを表示する必要があります。

ウェブターミナルを停止するには、「ウェブターミナルを停止」をクリックします。

ターミナルの実行中は、IP許可リストを編集できません。編集する必要がある場合は、ターミナルを停止し、許可リストに変更を加え、ターミナルを再度開いてください。

ウェブターミナルの接続が作成されたまま利用されない場合、接続は24時間後に自動でシャットダウンします。

Nixpacksのバイナリディレクトリ

Nixpacksでは、バイナリディレクトリがアプリケーション言語のデフォルトバイナリディレクトリと異なる場合があります。次の表は、一般的な言語で使用されるバイナリディレクトリを示しています。

言語ディレクトリ
Node.js/nix/var/nix/profiles/default/bin/node
Ruby/nix/var/nix/profiles/default/bin/ruby
Python/nix/var/nix/profiles/default/bin/python
Java/nix/var/nix/profiles/default/bin/java
ScalaScalaには、他のコンパイル済み言語のような特定のデフォルトバイナリパスがありません。Scalaプログラムをコンパイルすると、Java仮想マシン(JVM)上で動作するバイトコードが生成されます。

コンパイルしたScalaクラスは通常、コードのパッケージ構造を反映したディレクトリに格納されます。これはJavaのクラスの構成に似ています。デフォルトでは、Scalaソースファイルをコンパイルすると、コンパイルされた.classファイルはソースコードと同じディレクトリ(パッケージ宣言に基づくサブディレクトリ構造内)に配置されます。

必要に応じて、Nixpackを使用する代わりにDockerfileを使用してScalaのランタイムツールをインストールすることができます。

PHP/nix/var/nix/profiles/default/bin/php
GoGoには、他のコンパイル言語のような特定のデフォルトバイナリパスがありません。Goプログラムをコンパイルすると、通常、結果のバイナリ実行ファイルはソースコードと同じディレクトリにデフォルトで配置されます。

必要であれば、Nixpackを使用する代わりに、Dockerfileを使用してGoのランタイムツールをインストールすることができます。

Buildpacksのバイナリディレクトリ

Buildpacksを使用してMyKinstaにアプリケーションを追加すると、バイナリディレクトリがアプリケーション言語のデフォルトのバイナリディレクトリと異なる場合があります。次の表は、各Buildpack言語で使用されるバイナリディレクトリを示しています。

言語ディレクトリ
Node.js/layers/heroku_nodejs-engine/dist/bin/node
Ruby/usr/bin/ruby
Python/usr/bin/python
Java/layers/heroku_jvm/openjdk/bin/java
ScalaScalaには、他のコンパイル済み言語のような特定のデフォルトバイナリパスはありません。Scalaプログラムをコンパイルすると、Java仮想マシン(JVM)上で動作するバイトコードが生成されます。

コンパイルしたScala クラスは通常、コードのパッケージ構造を反映したディレクトリに格納されます。これはJavaのクラスの構成に似ています。デフォルトでは、Scalaソースファイルをコンパイルすると、コンパイルされた.classファイルはソースコードと同じディレクトリ(パッケージ宣言に基づくサブディレクトリ構造内)に配置されます。

必要に応じて、buildpackの代わりにDockerfileを使ってScalaのランタイムツールをインストールすることができます。

PHP/ワークスペース/.heroku/php/bin/php
GoGoには、他のコンパイル言語のような特定のデフォルトバイナリパスがありません。Goプログラムをコンパイルすると、結果のバイナリ実行ファイルは通常、デフォルトでソースコードと同じディレクトリに置かれます。

必要であれば、buildpackの代わりにDockerfileを使ってGoのランタイムツールをインストールすることができます。

トラブルシューティング

  • ウェブターミナルを開いたときに、ターミナル画面の代わりに「Error 1016 – Origin DNS」ページが表示される場合、これはDNSの伝搬に若干の遅れがあるためです。ターミナル画面が表示されるまで1分ほど待ち、ページを更新してください。数分以上経っても問題が解決しない場合は、サポートまでご連絡ください。
  • 403:ウェブターミナルを開いたときに「403:Forbidden」エラーが表示された場合は、IPアドレスが許可リストに含まれていないことを意味します。ウェブターミナルを停止し、IPアドレスを追加して、再度ウェブターミナルを起動してください。
  • 以下のERRO[0000] exec failedエラーのようなエラーは、コンテナにシェルパッケージがないことを示しています。ウェブターミナルを実行するには、そのパッケージをコンテナに追加する必要があります。

    ERRO[0000] exec failed: container_linux.go:425: starting container process caused: exec: “bash”: executable file not found in $PATH
    command terminated with exit code 1

この記事は役に立ちましたか?