サーバー環境: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
