問題点

HTTP サービスまたは Web コンソールを誤って停止したため、システムにそれ以上アクセスできません。または、リポジトリがクラッシュし、Web コンソールだけではリポジトリを簡単には修正できません。または、CRX の以前のバージョンから CRX コンソールを探しています。

解決策

このドキュメントには、これらやその他の問題から復元できるようにするテキストベースのコマンドラインシェルのインストール方法が記載されています。

主要なプレーヤー

ソリューションのキーは、Apache Felix Gogo Shell が提供する OSGi フレームワークにコマンドラインインターフェイスを使用することです。OSGi ワールドではいつものように、Gogo Shell はバンドルの集合として、次のようになります。

  • Apache Felix Gogo Runtime -- コアシェルランタイム。このバンドルは、コマンドシェルを実行するためのコア API と統合機能を提供します。
  • Apache Felix Gogo Command -- OSGi フレームワークメンテナンスの基本コマンド。このバンドルは、フレームワークとそのバンドルをイントロスペクトおよび操作するためのコマンドを提供します。
  • Apache Felix Gogo Shell -- テキストシェル機能。このバンドルには、リモート機能の基礎となるローカルシェル (Granite ベースのアプリケーションではデフォルトで無効化) が用意されています。
  • Apache Felix Web Console Gogo Shell Plugin -- Web コンソール内のテキストシェルのサポートこのバンドルは、Web コンソールのテキストシェルを公開することで Gogo シェルバンドルを拡張します。
  • Apache Felix Remote Shell -- テルネットスタイルのテキストシェルのサポート。このバンドルは、TCP/IP を介してテキストシェルを公開することで Gogo シェルバンドルを拡張します。

Gogo シェルについて詳しくは、Apache Felix のサイトから入手可能です。

必須の基本

コアバンドル -- ラインタイム、コマンド、およびシェル -- は不可欠なもので常に必要です。

Web コンソールへのアクセス

Web コンソールへのアクセスが引き続き可能である場合、リモートシェルアクセスには、Web Console Gogo シェルプラグインの使用が推奨されています。

テルネットアクセス

Web コンソールへのアクセスがもはや不可能な場合 -- Http サービスが機能停止していたり、Web コンソール自体が機能していないなど -- リモートシェルバンドルをインストールすることができます。

Web Console Gogo シェルプラグインとは異なり、リモートシェルバンドルでは、実際のリモートアクセスが許可されません。セキュリティ上の理由により、リモートシェルバンドルではデフォルトでローカルホスト (127.0.0.1) のみをリスンします。それは、同じボックスからのアクセスのみ可能です。

セキュリティに関する考慮事項

Web コンソール

Web Console Gogo シェルプラグインへのアクセスは、簡単な認証と基本的アクセス制御を使用して、Web コンソールのすべてと同様に保護されます。例えば、ボックスからの Sling Web コンソールのセキュリティプロバイダーは、管理ユーザーが Web コンソールにアクセスすることのみを可能にします。

したがって、Web コンソールはもちろん、ディスパッチャを通じてテルネットで公開されない必要もあります。

テルネット

リモートシェルバンドルは、アクセスコントロールを一切実装していません。実装されている基本的セキュリティは、デフォルトでローカルホスト (127.0.0.1) へのアクセスのみ可能です。つまり、リモートシェルにテルネット接続できるようになるには、ホストに対するリモートシェル (SSH セッションなど) が必要です。

また、リモートシェルバンドルはデフォルトで、そして時間経過でアクティブであることは意図されていません。バンドルが緊急時にインストールされた場合、潜在的な問題を回避するために緊急問題の解決後に、バンドルをアンインストールする必要があります。通常の機能は、そのリモートシェルバンドルのみに基づいていない必要があります。

インストール

コンテンツパッケージのインストール

JCR リポジトリがまだ操作でき、HTTP 経由でアクセスできる場合、最も簡単な操作はアタッチされている Gogo シェルコンテンツパッケージをインストールすることです。このコンテンツパッケージには、Gogo ランタイム、コマンド、シェルバンドル、および Web Console Gogo シェルプラグインが用意されています。

セキュリティ上の理由からリモートシェルが含まれていないのは、この状況では実際には必要ないからです。

Web コンソールのインストール

JCR リポジトリはもう利用できないが、Web コンソールがアクセス可能の場合、アタッチされた Gogo シェルコンテンツパッケージをダウンロードしてアンパックし、Web コンソールを通して含まれるバンドルをアップロードできます。

再度、リモートシェルバンドルは、セキュリティ上の理由から、そして必ずしも必要ではないので、この場合はインストールしないでください。

緊急のインストール

JCR リポジトリと Web コンソールの両方が操作不可能でアクセス不可能である緊急な問題を解決する場合、Gogo シェルのローカルインストールにフォールバックする必要があります。このインストールでは、ファイルシステムおよびシェルアクセスにアクセスする必要があります。

基本的なインストール手順は次のとおりです。

  1. Granite アプリケーションを実行しているシステムへのテキストベースセッションの取得
  2. Granite アプリケーションフォルダーにインストールフォルダーを作成します (通常 crx-quickstart の下
  3. アタッチされた Gogo シェルコンテンツパッケージをダウンロードしてアンパック
  4. Gogo ランタイム、コマンド、およびシェルバンドルを crx-quickstart/install フォルダーにコピー
  5. アタッチされたリモートシェルバンドルをダウンロードして crx-quickstart/install フォルダーにコピー

Granite ベースのアプリケーションで実行される OSGi インストーラーは crx-quickstart/install フォルダーからバンドルを自動的にピックアップして、それらをインストールして開始します。これが発生するまで数秒間お待ちください。

インストール後、デフォルトではポート 6666 で次をリッスンする Gogo シェルにテルネット接続することができます:

$ テルネットローカルホスト 6666
127.0.0.1... を試行
ローカルホストに接続。
エスケープ文字は「^]」です。
____________________________
Apache Felix Gogo にようこそ

g!

すべてが問題のない場合、コマンドプロンプトを取得 -- g!  -- help(使用可能なコマンドのリストを取得すること)および lb(実行中バンドルを一覧表示すること)などの実行中コマンドを開始できる Gogo シェルから。

Gogo シェルの詳細については、Apache Felix のサイトを参照してください。

停止した HTTP サービスバンドルからの回復

HTTP サービスバンドルの意図しない停止から回復するには、次の手順に従います。

  1. 上のセクション緊急のインストールで前述のとおり Gogo シェルバンドルをインストールします
  2. Telnet コマンド:
    $ telnet localhost 6666
    Trying 127.0.0.1...
    Connected to localhost を使用してシェルセッションを開始します。
    エスケープ文字は「^]」です。
    ____________________________
    Apache Felix Gogo にようこそ

    g!
  3. HTTP サービスバンドルを一覧表示するには、lb コマンドを使用します。このバンドルには名前に http service があるので、次の lb コマンドへの引数としてこれを(引用符で囲まれている)使用することを前提としています :
    g! lb "http service"
    START LEVEL 30
    ID|State |Level|Name
    21|Resolved | 5|Day CQSE HTTP Service (4.1.32)
    g!

  4. 出力から、CQSE HTTP サービスバンドルが有効ではないことがわかります。そのため、次の引数として 21 のバンドルの ID を使用して start コマンドを使用します:
    g! start 21
    g!
  5. 今までのところは良好です。次から結果をチェックしましょう:
    g! lb "http service"
    START LEVEL 30
    ID|State |Level|Name
    21|Active | 5|Day CQSE HTTP Service (4.1.32)
    g!
  6. 他のバンドルも開始されていることをチェックするには lb コマンドを使用してます。特に、次から Web 管理コンソールおよびプラグインがアクティブであることを確認する可能性があります:
    g! lb console
    START LEVEL 30
    ID|State |Level|Name
    24|Active | 5|Apache Felix Web Management Console (3.4.1.R1334005)
    25|Active | 5|Apache Felix Web Console Service Component Runtime/Declarative Services Plugin (1.0.0.R1201749)
    26|Active | 5|Apache Felix Web Console Event Plugin (1.0.2)
    27|Active | 5|Apache Felix Web Console Memory Usage Plugin (1.0.2)
    28|Active | 5|Apache Felix Web Console Package Admin Service Plugin (0.0.1.R1233342)
    55|Active | 15|Apache Sling Web Console Security Provider (1.0.0)
    74|Active | 20|Adobe Granite Workflow Console (0.0.4)
    138|Active | 20|Apache Felix Web Gogo Shell Plugin (0.0.1.R1238480)
    g!
    ここでは、すべてが良好に思われます。したがって、これ以上何も実行されません。
  7. Ctrl-D を入力するとシェルを終了できるようになりました
  8. crx-quickstart/install フォルダーからリモートシェルバンドルを削除して、リモートシェルバンドルのアンインストールができるようになりました(再度必要な場合には、引き続き再度、再インストールできます)。

お使いのブラウザーを使用してアプリケーションにアクセスできるようになりました。

リポジトリへのアクセス

CRX 2.3.18(CQ 5.5 Update 1 に含まれる)で開始すると、gogo シェルを使用してリポジトリにアクセスできます。これは、上述の Telnet コマンドを使用するか、または Web ブラウザー(http://localhost:4502/system/console/gogo)を使用して行なうことができます。CRX 関連のすべてのコマンドには crx: プレフィックスを付けます。crx:help と入力すると、これらを一覧表示できます

利用可能なコマンド:
add 新しいノードまたは子ノードのエントリを追加します。
bundlecheck はノードバンドルをチェックします
cd 現在のワークノードを変更します。
check リポジトリをチェックします
checkin ノードにチェックインします。
checkout ノードのチェックアウトを実行します。
clone ノートのクローンを作成します。
connect CRXRepository に接続します。
cp ノードをコピーします。
echo コンソールへの引数を印刷します
help このヘルプを印刷します
login リポジトリのログインを実行します。
logout リポジトリでログアウトを実行します。
ls プロパティのノードのリストを印刷します。
mixin ノードの Mixin ノードタイプのセットを操作します。
mv ノードを移動します。
patch アイテム状態の低レベルデータをパッチします。
print ノードやプロパティの定義を印刷します。
pwd 現在のパスを印刷します。
refresh ノード、プロパティまたはセッションを更新します
rm ノードやプロパティを削除します。
save ノード、プロパティまたはセッションを保存します
spool       ワークスペースのスプール(コピー)を行います。
stat ノードやプロパティの低レベル(永続化)情報を印刷します。
workspace ワークスペースの管理

パス:
パスは次のいずれかで指定できます
- cwd を基準として(すなわち './foo/bar')
- 絶対的(すなわち '/foo/bar')
- または uuid- 相対的(すなわち '[cafebabe-cafe-babe-cafe-babecafebabe]/foo/bar')

すべてのコマンドの詳細を一覧表示するには「help -d」を使用し、または
特定のコマンドには「help <cmd>」を使用します。

リポジトリの不整合を修正するには、次を試してみることができます:

  1. コンソールを開始
    $ ローカルホスト 6666 テルネット接続
    127.0.0.1... を試行
    ローカルホストに接続します。
    エスケープ文字は「^]」です。
    ____________________________
    Apache Felix Gogo にようこそ
  2. 管理者の資格情報を使用してデフォルトのワークスペースにログインします
    g! crx:login admin 管理者は
    ワークプレイスに管理者として正常にログインしました crx.default
  3. bundlecheck メソッドの説明を表示します
    g! crx:help bundlecheck
    サマリ:
    bundlecheck [オプション] [パス | uuid]

    説明:
    現在のノードのバンドル、指定されたノードパスのバンドル、
    ノード UUID のバンドルまたは保存されているすべてのバンドル(階層情報には無関係)のいずれかをチェックします。このコマンドは
    バンドルのパーシスタンスマネージャーでのみ動作します(例: DB バンドルおよび TarPM)。

    オプション:
    -a PM ストレージのすべてのバンドルをチェック(-r は適用されない)
    -r サブノードの再帰的チェック
    -f 欠落した子ノードのエラーの修正を試行
    -p ノードパスの印刷および親の関係の確認(低速)
    -x ノード参照の確認(低速)
    -X ノード参照のチェックおよび無効なものの削除(低速)
    -e エラーの印字のみ(高速)
    -o <file> 出力をファイルへダンプします。
    - l <path>親のないノードをこのロスト+ファウンド親ノードに移動します
  4. ルートディレクトリを表示します
    g! crx:ls
    + /
    + bin
    + rep:repoPolicy
    + rep:policy
    + jcr:system
    + var
    + libs
    + etc
    + apps
    + home
    + tmp
    + content
    - sling:resourceType
    - jcr:mixinTypes
    - sling:target
    - jcr:primaryType
  5. lost+found フォルダーを作成します
    g! crx:add lost+found
  6. sessiong を保存します
    g! crx:save
  7. ルートディレクトリ構造を再チェックします(lost+ found フォルダーを確認します)
    g! crx:ls

    + /
    + bin
    + rep:repoPolicy
    + rep:policy
    + jcr:system
    + var
    + libs
    + etc
    + apps
    + home
    + tmp
    + content
    + lost+found
    - sling:resourceType
    - jcr:mixinTypes
    - sling:target
    - jcr:primaryType

  8. 次の bundlecheck を実行します:
    g! crx:bundlecheck -rfel lost+found
    ノード b006af08-d78c-44b3-b847-58472e7962cc を親のないノードの親として使用する。
    今までのところ、1000 個のノードをチェックしてエラーは 0 です。
    ...
    66000 個のノードをチェックしてエラーは 0 です。
    66717 個のノードの整合性チェックを 110015 ミリ秒で終了しました。
    エラーはありません。

ダウンロード

* org.apache.felix.shell.remote-1.1.2.jar
リモートシェル(telnetd)バンドル。Web コンソールにアクセスできない場合にのみインストールされます。不要な場合にはアンインストールします。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー