#mediawiki
#mediawiki
Вопрос:
Я установил mediawiki на сервер Amazon ec2.
На сервере есть только apache, php, mariadb и mediawiki
Я использую mediawiki 1.35, с помощью встроенных VisualEditor и ParsoidPHP
я могу использовать VisualEditor для редактирования новой страницы, но он не сохраняется, и когда я редактирую существующую страницу, я получаю синий индикатор выполнения, за которым следует ошибка:
Ошибка при обращении к серверу Parsoid / RESTBase: (ошибка curl: 28) Был достигнут тайм-аут
Я попытался настроить parsoid, используя инструкцию, которую я нашел в Интернете :
$wgVirtualRestConfig['modules']['parsoid'] = [
// URL to the Parsoid instance - use port 8142 if you use the Debian package - the parameter 'URL' was first used but is now deprecated (string)
'url' => 'http://myIpAddress:8000',
// Parsoid "domain" (string, optional) - MediaWiki >= 1.26
'domain' => 'myIpAddress',
// Parsoid "prefix" (string, optional) - deprecated since MediaWiki 1.26, use 'domain'
'prefix' => 'myIpAddress',
// Forward cookies in the case of private wikis (string or false, optional)
'forwardCookies' => true,
// request timeout in seconds (integer or null, optional)
'timeout' => null,
// Parsoid HTTP proxy (string or null, optional)
'HTTPProxy' => null,
// whether to parse URL as if they were meant for RESTBase (boolean or null, optional)
'restbaseCompat' => null,
];
Лучший эффект, который я получаю, — это 404 или 400. Эта конфигурация не работает.
Я не внес никаких других изменений в настройки.
если я вызову parsoid напрямую:
http://MyIpAddress/api.php?action=visualeditoramp;paction=parseamp;page=Main_Page
Я вижу тайм-аут таким образом:
{
"error": {
"code": "apierror-visualeditor-docserver-http-error",
"info": "Error contacting the Parsoid/RESTBase server: (curl error: 28) Timeout was reached",
"*": "See http://MyIpAddress/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at amp;<https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announceamp;> for notice of API deprecations and breaking changes."
}
}
Комментарии:
1. Это должно работать из коробки, если вы вообще не касаетесь
$wgVirtualRestConfig
.2. Я добавил конфигурацию только после того, как потратил много времени на ошибку. Я получаю сообщение об ошибке, независимо от того, есть она там или нет.
3. Наличие непустой конфигурации для модуля Parsoid приведет к ошибке (хотя обычно я ожидаю другого) — см. Эту проверку .
Ответ №1:
Основываясь на моем тестировании, похоже, что parsoid использует переменную $ wgServer для создания локального подключения к rest.php
Используя curl, я могу подключиться к http://localhost/rest.php/v1/page/Main_Page
Но, не для того, чтобы http://myipaddress/rest.php/v1/page/Main_Page или http://mydomainname/rest.php/v1/page/Main_Page оба эти тайм-аута. Сервер apache не может подключиться к самому
себе, поэтому, теоретически, я должен иметь возможность установить
$wgVirtualRestConfig['modules']['parsoid']['domain']='localhost';
Но это приводит к 404 вместо тайм-аута.
В конце концов, я добавил свое доменное имя в /etc/hosts и указал его на 127.0.0.1, и это работает нормально. Это похоже на взлом, и я должен использовать доменное имя, а не только IP.
Ответ №2:
Мы сталкивались с этой проблемой несколько раз.
В одном случае это был вопрос контроля доступа.
Parsoid выполняет HTTP-запросы к сайту MediaWiki. Мы ограничиваем доступ к определенным действиям, используя расширение Lockdown, и нам пришлось освободить Parsoid, что можно сделать несколькими способами, например:
if (($_SERVER['REMOTE_ADDR'] !== '127.0.0.1') amp;amp; ($_SERVER['REMOTE_ADDR'] !== $_
SERVER['SERVER_ADDR'])) {
# don't lock down any pages for Parsoid, or the VisualEditor will break on them
wfLoadExtension('Lockdown');
}