Serposcope を SSL のサブディレクトリで運用する

Serposcope CentOS 7

Google のランキングを解析できるツールで、無料の Serposcope を CentOS 7 に導入したので、その記録を残す。

構成

  • CentOS Linux release 7.9.2009 (Core)
  • OpenJDK version "1.8.0_282"
  • mysql Ver 15.1 Distrib 5.5.68-MariaDB
  • nginx version: nginx/1.18.0

Srposcope のインストール

基本的には 公式サイトの手順 に従って導入すれば大丈夫ですが、SSL に対応したいので Nginx を通してアクセスするようにします。

そのため、7134 ポートは外部からアクセスできるようにする必要はありません。

Java のインストール

既にインストールされていたので作業はしませんでしたが、入っていない場合は下記を実施。

Serposcope のダウンロード

今回は /usr/share/serposcope に設置するとします。

最新版のダウンロードページ から「jar」版をダウンロードして配置してください。(現在の最新バージョンは 2.12.0)

MySQL の準備

初期状態の H2 embbeded database から MySQL へ変更するため、phpMyAdmin で予め ユーザー(serposcope)と空のデータベース(serposcope)を作成しておきます。

そして、Serposcope を設置したディレクトリに設定ファイル(/usr/share/serposcope/serposcope.conf)を配置し、以下のように記述します。

Serposcope のサービス化

スタートアップ用スクリプトの作成

/usr/local/bin に serposcope-startup.sh を作成し、下記のように記述します。(設定ファイルを読み込んで起動するように設定)

スタートアップスクリプトに実行権限を付与

Unit 定義ファイルを配置

/etc/systemd/system/serposcope.service を作成し、下記を記述。

サービスを自動起動する

この段階でポートを空ければ、http://yourdomain:7134 で運用することができます。

※下記は Firewalld で public ゾーンに 7134 ポートを空ける場合の参考(今回は実施していません)

Serposcope の SSL 化

Nginx のリバースプロキシを使って、SSL で運用するようにします。(Let's Encrypt などで SSL 証明書は取得済みのものとします。)

サブドメインを設定して、https://serposcope.●●●.com でアクセスする場合の Nginx の設定例

サブディレクトリ運用の場合

他の管理ツールはサブドメインではなく、サブディレクトリで運用しているため、気分的に揃えたい。

(サブ)ドメイン直下に配置する場合は正常に表示されますが、サブディレクトリに配置すると表示が崩れます。

さらに、Login ボタンを押してもログインできません。

Seroscope の不完全表示

これは画像や CSS、JS ファイルがルートパスで読み込まれるように記述してあるため、サブディレクトリを無視してドメイン直下のパスから読もうとしているためです。

Login ボタンの action パスもルートパスで記述されているため、ログイン処理に移行されません。

そこで、Nginx の sub_filter を使って出力時のパスを書き換えることで対応しました。

 

Serposcope ログイン画面

CSS なども反映され、ログインもできるようになったので、一見うまくいったように見えましたが、集計結果の画面が「error」となり表示されません。

推測になりますが、呼び出し元の combined.min.js が関数でリンクを生成している様で、sub_filter では書き換えられず、スマートな方法が思いつきませんでした。

エラーになっている部分はルートパスで「/google/○○○」を呼び出しているので、Nginx 側で /google/ のパスをリダイレクトすることで対処。

無理やり感はありますが、一応ちゃんと表示されるようになりました。

Serposcope のモジュール名(今回は Google モジュール)が集計結果のルートパス(/google)になると推測しているので、Yahoo や Bing モジュールを入れた場合は、同様にリダイレクトの設定を追加する必要がでてきます。

サブディレクトリの既存の設定とモジュール名が被った場合は、この方法は使えないとおもいます。

参考にしたサイト

コメント

タイトルとURLをコピーしました