为什么通过Docker安装的my Wikibase中的查询服务不包含添加到主Wikibase存储的内容?

为什么通过Docker安装的my Wikibase中的查询服务不包含添加到主Wikibase存储的内容?,wikibase,Wikibase,我们在它前面安装了一个Apache服务器来处理SSL,并将两个vhost代理到Docker的端口 api.example.com(收件人) query.example.com(收件人) 在wdqs更新程序的日志中,我看到: org.wikidata.query.rdf.tool.rdf.Munger$BadSubjectException: Unrecognized subjects: [https://api.example.com/entity/statement/Q12-caba1d4

我们在它前面安装了一个Apache服务器来处理SSL,并将两个vhost代理到Docker的端口

  • api.example.com(收件人)
  • query.example.com(收件人)
在wdqs更新程序的日志中,我看到:

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()
,以获得值“https://api.example.com"

我需要改变什么才能让它工作?docker-compose.yml文件中对wikibase.svc的所有引用?还是别的什么


我已经尝试过为wdqs更新程序容器更新WIKIBASE_HOST=,但似乎没有任何帮助。

在docker compose中,您有一个在本地主机上运行良好的变量列表。当您需要在生产环境中部署它时,您需要更改几个变量来定义公共主机名、Ip和SSL。我确实设置了nginx设置来管理主机名和SSL证书

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

nginx的我的查询服务设置添加ssl证书并将请求转发到端口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

我还试着只设置
WIKIBASE\u SCHEME\u和\u HOST=https://api.example.com
但它目前只在线程“main”org.wikidata.query.rdf.tool.Exception.ContainedException中给了我许多
异常:来自triple store的非200响应:HttpContentResponse[HTTP/1.1 503服务不可用-0字节]body=
错误。我尝试过使用,但没有完全理解我需要哪些部分。只需更改wqds和wqds更新程序的
WIKIBASE\u主机
,就会导致更多错误。当我尝试完全遵循wdqs新容器在“/loadData.sh”步骤失败,出现“错误503服务不可用”。您将WIKIBASE_主机设置为什么?wqds和wqds更新程序容器将WIKIBASE_主机设置为
api.example.com
,wdqs前端仍将其设置为
WIKIBASE.svc
。但在更改并重新启动后,我仍然从wqds更新程序容器中获得“线程“main”org.wikidata.query.rdf.tool.Exception.ContainedException:triple store的非200响应:HttpContentResponse[HTTP/1.1 500服务器错误-8080字节]body=”异常。我现在已设法使其再次工作,为了消除500个错误,我必须
docker volume rm wikibase-docker_query-service-data
(在此之前,停止容器并删除使用该卷的容器)设置环境变量可能是主要的解决方案。谢谢,qs.example.com将是9191的vhost代理,对吗?我还没有这方面的报告。我还有其他的环境变量。