1

我们已经安装了wikibase-docker,前面有一个 Apache 服务器来处理 SSL 并将两个虚拟主机代理到 Docker 的端口。

在 wdqs-updater 的日志中,我看到:

org.wikidata.query.rdf.tool.rdf.Munger$BadSubjectException: Unrecognized subjects: [https://api.example.com/entity/statement/Q12-caba1d44-46d5-8598-9185-784a75e4cebb, https://api.example.com/entity/statement/Q12-4c77991e-4674-5301-75f1-5b494612b56b, https://api.example.com/wiki/Special:EntityData/Q12, https://api.example.com/entity/Q12].
Expected only sitelinks and subjects starting with http://wikibase.svc/wiki/Special:EntityData/ and [http://wikibase.svc/entity/] 

'wikibase.svc' 名称在 docker-compose.yml 文件中使用,并且是内部 docker 名称。

为了让 MediaWiki 搜索正常工作,我必须${DOLLAR}wgServer = WebRequest::detectServer()LocalSettings.php.template中更新为“https://api.example.com”

我需要更改什么才能使其正常工作?docker-compose.yml 文件中对 wikibase.svc 的所有引用?或者是其他东西?

我已经尝试为 wdqs-updater 容器更新 WIKIBASE_HOST=,但这似乎没有帮助。

4

1 回答 1

1

在 docker-compose 中,您有一个在 localhost 上完美运行的变量列表。当您需要在生产中部署它时,您需要更改一些变量来定义公共主机名、IP 和 SSL。我确实设置了一个 nginx 设置来管理主机名和 SSL 证书。

在我的设置中,每个服务有 1 个主机名,我的 Nginx 将请求转发到同一台机器上所有 wikibase 的正确端口号。

我的 nginx 查询服务设置添加 ssl 证书并将发送到https://query.example.com的请求转发到端口 8282

在我的生产机器上,我“只”需要通过personaldata.io 替换example.com。

server {
       listen 80;
       server_name query.example.com;
       return 301 https://$server_name$request_uri;
       }
server {
       listen 443;
       server_name query.example.com;
       ssl on;
       ssl_certificate     /etc/letsencrypt/live/query.example.com/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/query.example.com/privkey.pem;
       ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers         HIGH:!aNULL:!MD5;  
       access_log /var/log/nginx/query.example.com.log;
location / {
            proxy_pass http://127.0.0.1:8282;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-forwarded-host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
      }

我必须在设置中更改的变量:

QS_PUBLIC_SCHEME_HOST_AND_PORT=https://qs.example.com:443 # Public domain name and port
WIKIBASE_SCHEME=https
WIKIBASE_HOST=wiki.example.com
QS_PUBLIC_SCHEME_HOST_AND_PORT=https://qs.example.com:443
WB_PUBLIC_SCHEME_HOST_AND_PORT=https://wiki.example.com:443
WIKIBASE_SCHEME_AND_HOST=https://wiki.example.com
于 2020-08-13T14:58:17.987 回答