MaxMindDBの警告をエラーログから解決

サーバー環境:VPS、1Panel の Docker を通じて Discourse をデプロイ

app.yml で MaxMind の ID とキーを設定せず、GitHub ミラーから GeoLite2-City.mmdb および GeoLite2-ASN.mmdb を自動的に定期的にダウンロードする場合に適用されます。

エラーログに表示される以下の 2 つの MaxMindDB 警告を解決できます。

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) が見つかりません: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) が見つかりません: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb

手順:

1. ホストマシンに maxmind ディレクトリを作成し、権限を設定

mkdir -p /opt/1panel/apps/discourse/shared/standalone/maxmind && chmod 755 /opt/1panel/apps/discourse/shared/standalone/maxmind && chown 1000:1000 /opt/1panel/apps/discourse/shared/standalone/maxmind

2. GeoLite2-City.mmdb および GeoLite2-ASN.mmdb ファイルをホストマシンにマウントする設定

app.yml を編集し、以下を追加します:

  - volume:
      host: /opt/1panel/apps/discourse/shared/standalone/maxmind/GeoLite2-City.mmdb
      guest: /var/www/discourse/vendor/data/GeoLite2-City.mmdb
  - volume:
      host: /opt/1panel/apps/discourse/shared/standalone/maxmind/GeoLite2-ASN.mmdb
      guest: /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb

3. 1Panel で定期タスクを設定し、毎週 GitHub から GeoLite2-City.mmdb および GeoLite2-ASN.mmdb の地図ファイルをダウンロードして更新

定期タスクのスクリプトは以下の通りです:

cd /opt/1panel/apps/discourse/shared/standalone/maxmind && rm -f GeoLite2-City.mmdb GeoLite2-ASN.mmdb && wget -O GeoLite2-City.mmdb https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb && wget -O GeoLite2-ASN.mmdb https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-ASN.mmdb && chmod 644 GeoLite2-City.mmdb GeoLite2-ASN.mmdb && chown 1000:1000 GeoLite2-City.mmdb GeoLite2-ASN.mmdb