Почему служба запросов в моей викибазе, установленная через Docker, не содержит контента, добавленного в основное хранилище викибазы?

Мы установили wikibase-docker с сервером Apache перед ним для обработки SSL и прокси. два vhosts на порты от 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 и является внутренним именем докера.

Чтобы поиск MediaWiki работал, мне пришлось обновить ${DOLLAR}wgServer = WebRequest::detectServer() в LocalSettings.php.template со значением https://api.example.com

Что мне нужно изменить, чтобы заставить его работать? Все ссылки на wikibase.svc в файле docker-compose.yml? Или что-то другое?

Я уже пытался обновить WIKIBASE_HOST= для контейнера wdqs-updater, но это не помогло.


person Herman van Rink    schedule 09.07.2020    source источник
comment
Я также пытался установить только WIKIBASE_SCHEME_AND_HOST=https://api.example.com, но в настоящее время это просто дает мне много ошибок Exception in thread "main" org.wikidata.query.rdf.tool.exception.ContainedException: Non-200 response from triple store: HttpContentResponse[HTTP/1.1 503 Service Unavailable - 0 bytes] body=.   -  person Herman van Rink    schedule 13.07.2020
comment
Я пытался работать с addshore .com/2019/11/, но не совсем понимаю, какие части мне нужны. Простое изменение WIKIBASE_HOST для wqds и wqds-updater привело к большему количеству ошибок. Когда я попытался полностью выполнить контейнер wdqs-new, произошел сбой на этапе «/loadData.sh» с «Ошибка 503 Служба недоступна».   -  person Herman van Rink    schedule 12.08.2020
comment
Что вы установили для WIKIBASE_HOST?   -  person Addshore    schedule 12.08.2020
comment
В контейнерах wqds и wqds-updater для WIKIBASE_HOST установлено значение api.example.com, для wdqs-frontend по-прежнему установлено значение wikibase.svc. Но после изменения этого и перезапуска я все равно получаю «Исключение в потоке main org.wikidata.query.rdf.tool.exception.ContainedException: ответ Non-200 из тройного хранилища: HttpContentResponse [HTTP/1.1 500 Server Error — 8080 bytes] body = ' из контейнера wqds-updater.   -  person Herman van Rink    schedule 13.08.2020
comment
Теперь мне удалось снова заставить это работать, чтобы избавиться от 500 ошибок, которые мне пришлось docker volume rm wikibase-docker_query-service-data (а до этого остановить контейнеры и удалить те, которые используют этот том). Настройка переменных среды, вероятно, была основным решением.   -  person Herman van Rink    schedule 21.08.2020


Ответы (1)


В docker-compose у вас есть список переменных, которые отлично работают на локальном хосте. Когда вам нужно развернуть его в производстве, вам нужно изменить несколько переменных, чтобы определить общедоступное имя хоста, IP и SSL. Я настроил настройку nginx для управления именем хоста и сертификатом SSL.

В моей настройке у меня есть 1 имя хоста для каждой службы, мой Nginx перенаправляет запрос на правильный номер порта для всей викибазы на одном компьютере.

Моя настройка службы запросов для nginx добавляет сертификат ssl и перенаправляет на порт 8282 запрос, отправленный на https://query.example.com

На моей производственной машине мне просто нужно заменить example.com на personaldata.io.

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
person Louis Poncet    schedule 13.08.2020
comment
Спасибо, qs.example.com будет проксированием виртуального хоста на 9191, верно? У меня пока нет vhost для этого. Другие переменные env у меня есть. - person Herman van Rink; 14.08.2020