<環境>
サーバ:RockyLinux9.3
FESS:14.17.0
OpenSearch:2.17.0
Drupal:10.3.6
playwright:1.49.1
Drupalで作成されたWebページのクロールを行いたいです。
Drupalで生成されるWebサイトは、「 JavaScriptで生成されるページ」にあたると思われるため、下記サイトで紹介されているようにPlaywrightを利用したクロールが必要という認識です。
実際、Playwrightを構築する前にクロールを実行しても、クロールジョブのエラーは出ませんが、「fess-crawler.log」に「[IndexUpdater] INFO Processing no docs in indexing queue」と出力されインデックスが生成されていませんでした。
そこで、playwrightを用いたWebページのクロールを試したいのですが、私がFESSを構築している環境が「RockyLinux9.3」であり、dockerを使用してのFESS・playwrightインストールや利用が出来ない状態です。(諸事情があり、dockerの利用に切り替えることも難しい)
上記サイトでは、dockerを利用した手順のみのご紹介でしたが、RHEL系のLinux環境においてもplaywrightを用いたWebページのクロールが可能であれば、設定手順をご教授いただけないでしょうか?
現状、FESSを構築しているLinux環境にnode.jsをインストールしたうえで、playwrightもインストールしています。
クロール設定時のオプションとして「client.crawlerClients=playwright:http://.,playwright:https://.」を設定したうえでクローラーを実行してみましたが結果は変わりませんでした。
サーバにインストールしたplaywrightをFESSが利用するための設定があったりするのであればお伺いしたいです。
長文かつ稚拙な説明で大変恐縮でございます。
どうぞよろしくお願いいたします。
PlaywrightはJava版が動くようにインストールしていただく必要があると思います。
Fessは、オープンソースとして提供しているので、提供しているDocker版以外でのPlaywrightの利用方法をドキュメント化する予定はない状況です。ですので、ドキュメント化してくれるボランティアの人が現れるか、商用サポートを利用していただくか、などになると思います。
ご回答ありがとうございます。
まずは、Java版が動くPlaywrightをインストールして挙動を確認してみます。それを踏まえて、docker版でのFESS構築を検討してみます。
度々失礼いたします。
私の力量では、RockyLinux上でrpm版FESSにplaywrightをインストールし挙動を確認することが難しかったため、docker版での使用を検討しなおしています。
docker版を使用する際は、dockerコンテナを稼働させるのみでOKで、playwrightの別途インストールや設定は基本不要という認識で良いでしょうか。
また、playwrightを利用したいが為にdocker版を利用する場合、dockerのホストOS(現状はRockyLinux9.3ですが)に制約はございますでしょうか?
下記のplaywrightインストールガイドを確認したところ、システム要件(LinuxOS)は「Debian 12, Ubuntu 22.04, Ubuntu 24.04, on x86-64 and arm64 architecture」との記載で、RockyLinuxを含むRHEL系が記載されていませんでした。そのため、ホストOSも変更する必要があるのか?と思った次第です。
Installation | Playwright Java
Playwrightに必要なものは、このDockerfileでインストールされます。JavaのPlaywrightはFessに含まれています。ホスト側のOSが影響があるのかは、Dockerが利用できるのか?になります。
ご回答ありがとうございます。
RockyLinux9.3上でDockerが使用できることを確認したため、FESSに関してもdocker上で利用できるようドキュメントを参考にさせていただきながら進めて参ります。
たびたび恐れ入ります。
下記サイトの手順を参考に、docker環境でのFESS起動とplaywrightによるクロール実施を進めています。
簡単導入! OSS全文検索サーバFess入門(50) JavaScriptで生成されるページのクロール | TECH+(テックプラス)
以下の手順にてFESS+OpenSearchを起動させることができ、管理者画面にアクセスできました。
1.compose.yamlファイルの書き換え
2.Dockerfileの生成
3.build
→サイト通りに「docker compose -f compose.yaml build」と実行すると"service “fess01” depends on undefined service “search01”: invalid compose project"と怒られてしまう
→「docker compose -f compose.yaml -f compose-opensearch2.yaml build」としたことでうまくいった
4.起動
→サイト通りに「docker compose -f compose.yaml -f compose-opensearch2.yaml up -d」と実行して成功
ただ、以下の点について挙動がおかしく感じており、ログを見ても特段のエラーも発生していないように思えるため、ご質問した次第です。
①管理者画面が1分2分でログアウトされてしまう
クロールの設定などをしていて、数十秒間が空いてボタンを押したりするとログアウトしてログインページに戻されてしまいます。以前、dockerではない環境で操作していた時はそのようなことが無かったため、何かがおかしいのかもと不安な状態です。
②クロールが「実行中」のまま終わらない
Default Crawlerや自身で作成したジョブを即時クロール実行して、従来であれば10分もすれば完了していたクロールのステータスが「実行中」のまま何時間も続いています。
現在、クロール設定をしているのはサンプルのWebページ「https://fess.codelibs.org/jstest/」のみであり、そこまで時間がかかるはずがないと思われるため、何かしらがうまくいっていないように感じています。特にクロールのエラーが出ているわけではないため対処に困っております。
以上2点について、些細なことでも結構ですので知見を共有いただけますと幸いです。私自身、dockerに触れるのがこの作業が初のため、docker環境の面で疑われる点がございましたらご指摘いただけますと幸いです。
連投失礼いたします。
上記の「②クロールが「実行中」のまま終わらない」について、
一晩明けて確認したところ「失敗」というステータスに変わっており、「No response from Job.」という表示がございました。
引き続き、些細なことでも結構ですので知見をご共有いただけますと幸いです
docker logsなどで、それぞれのコンテナのログを確認するのが良いと思います。
ご助言ありがとうございます。
dockerコンテナのログを確認してみます。
度々恐れ入ります。
docker logsから特段解決に至りそうな情報が見当たらなかったため、dockerコンテナの起動からやり直しています。
下記連載で気になるところがあったので質問させてください。
playwrightを使用するにあたって、以下の手順でコンテナの起動が可能と記載されています。
①compose.yamlファイルの一部修正
②playwrightディレクトリを作成して、Dockerfileを作成
③compose.yamlのあるディレクトリで、dockerイメージをビルド
④私はOpenSearchを使うので、compose.yamlとcompose-opensearch2.yamlを指定してコンテナ起動
しかし③にて、記載の通り「docker compose -f compose.yaml build」と実行すると「service “fess01” depends on undefined service “search01”: invalid compose project」というエラーが表示されます。
私は「compose-opensearch2.yaml」も併せて指定する必要があると思い、「docker compose -f compose.yaml -f compose-opensearch2.yaml build」とするとエラーが出ることなくビルドに成功しました。
この私の独断で進めたビルドの仕方に問題はありますでしょうか?本来であれば、ここでは「docker compose -f compose.yaml build」でエラー無くビルドできないといけないのでしょうか。
ご教授いただければ幸いです。
#docker compose -f compose.yaml build
service “fess01” depends on undefined service “search01”: invalid compose project
#docker compose -f compose.yaml -f compose-opensearch2.yaml build
[+] Building 0.0s (0/1) docker:default
[+] Building 0/0
[+] Building 49.7s (7/7) FINISHED docker:default
=> [fess01 internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 354B 0.0s
=> [fess01 internal] load metadata for Package fess · GitHub 1.7s
=> [fess01 internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> CACHED [fess01 1/2] FROM ghcr.io/codelibs/fess:14.17.0@sha256:0d7521364b4cfdc7da26e36721608838e873b33 0.0s
=> => resolve ghcr.io/codelibs/fess:14.17.0@sha256:0d7521364b4cfdc7da26e36721608838e873b335b99ba58ea57c9 0.0s
=> [fess01 2/2] RUN apt-get update && apt-get install -y libatk1.0-0 libatk-bridge2.0-0 libxkbc 47.9s
=> [fess01] exporting to image 0.1s
=> => exporting layers 0.1s
=> => writing image sha256:9df36de121ec222d3006fbea73130a051d5b057c69fba4f9446d318a317b0919 0.0s
[+] Building 1/1 Docker Hub Container Image Library | App Containerization 0.0s
Service fess01 Built 49.7s
①管理者画面が1分2分でログアウトされてしまう
クロールの設定などをしていて、数十秒間が空いてボタンを押したりするとログアウトしてログインページに戻されてしまいます。以前、dockerではない環境で操作していた時はそのようなことが無かったため、何かがおかしいのかもと不安な状態です。
本件について、ホストマシンで「docker logs -f fess01」を実行しながら管理者画面を操作していると、唐突に以下のようなエラーログが出力され、コマンドが終了することが分かりました。このログが出力された後に、管理者画面で何か操作をすると、ログイン画面に戻されてしまう模様です。
「docker ps」のSTATUSを確認すると、FESSのコンテナのみ「up」の継続時間が上記エラーが出てからの時間のため、勝手に再起動されてしまっているのでしょうか…
{“@timestamp”:“2024-12-18T08:08:51.127Z”,“log.level”: “ERROR”,“message”:“Fess is not available.”, “ecs.version”: “1.2.0”,“service.name”:“fess”,“event.dataset”:“app”,“process.thread.name”:“bootstrap”,“log.logger”:“run.sh”}
そのエラーログは結果であって、原因はそれ以前に何かしらの問題が発生しているように思います。たぶん、そのエラーは、Fessのプロセスが何かの理由で終了していたので、そのヘルスチェック的なやつがエラーとして、コンテナを終了させているようにも思います。
ご指摘ありがとうございます。
FESSのログをもう少し隈なく確認してみることにします。
playwrightを利用するためのdocker起動手順については問題ないという認識でよろしいでしょうか。私の起動手順を再掲いたします。
参考にした記事: 簡単導入! OSS全文検索サーバFess入門(50) JavaScriptで生成されるページのクロール | TECH+(テックプラス)
①compose.yamlファイルの一部修正
②playwrightディレクトリを作成して、Dockerfileを作成
③compose.yamlのあるディレクトリで、dockerイメージをビルド
④私はOpenSearchを使うので、compose.yamlとcompose-opensearch2.yamlを指定してコンテナ起動
しかし③にて、記事記載の通り「docker compose -f compose.yaml build」と実行すると「service “fess01” depends on undefined service “search01”: invalid compose project」というエラーが表示されます。
私は「compose-opensearch2.yaml」も併せて指定する必要があると思い、「docker compose -f compose.yaml -f compose-opensearch2.yaml build」とするとエラーが出ることなくビルドに成功しました。
upのときと同じ-fオプションにして、buildしてください。
1 Like