RESTBase/Instalacja
Pobieranie RESTBase ze źródła
Możesz wykonać tę operację z dowolnego folderu, w którym masz uprawnienia.
Pobierz z git:
git clone https://github.com/wikimedia/restbase.git
Możesz też pobrać plik ZIP z repozytorium projektu i wyodrębnić go.
Install node dependencies
RESTBase has been tested with node.js version 10.
Z katalogu \home\TY\RESTBase\project (np. na UBUNTU), zainstaluj zależności Node przy użyciu npm (część nodejs):
npm install
npm install restbase
but in this case, you should set the environment variable APP_BASE_PATH
to YOUR_INSTALLATION_FOLDER/node_modules/restbase
before run the server and be careful with slightly different file positions including server.js
described below.
Konfiguracja
Skopiuj przykładową konfigurację:
cp config.example.yaml config.yaml
Edytuj plik config.yaml w tych częściach:
x-sub-request-filters:
allow:
- pattern: http://localhost/w/api.php
forward_headers: true
- pattern: http://localhost:8142
forward_headers: true
- pattern: /^https?:\/\//
- Nie musisz niczego zmieniać ani martwić się tą sekcją, chyba że uruchomisz prywatną wiki (zobacz pytania).
paths:
/{domain:TWOJA_STRONA_WIKI}:
TWOJA_STRONA_WIKI
jest podstawową domeną twojej wiki (lub identyfikator, jeśli masz kilka wiki na różnych ścieżkach tej samej domeny). Na przykład, dla MediaWiki jest towww.mediawiki.org
. Jest używany jako ścieżka identyfikatora w przypadku, gdy używasz tego samego serwera dla wielu wiki. For use with Parsoid in MediaWiki 1.35+, the domain must match exactly the host portion of your wiki's$wgServer
configuration.
action:
# XXX Check API URL!
apiUriTemplate: http://PUNKT-KOŃCOWY_TWOJEJ_WIKI
baseUriTemplate: "{{'http://127.0.0.1:7231/{domain}/v1'}}"
PUNKT-KOŃCOWY_TWOJEJ_WIKI/YOUR_WIKI_API_ENDPOINT
jest lokalizacjąapi.php
Twojej wiki. Na przykład, punktem końcowym API MediaWiki jest mediawiki.org/w/api.php. Zobacz Punkt końcowybaseUriTemplate
jest punktem końcowym, ponieważ można uzyskać do niego dostęp z Internetu. Jeśli serwer proxy obsługuje ruch bezpośrednio z apache/nginx do tej usługi, to możesz użyć adres URL taki jak"{{'http://{domain}/api/rest_v1'}}"
. Zalecane dla osób (aby uniknąć problemów), które nie mają dostępu do niestandardowych portów.
/parsoid:
x-modules:
- path: sys/parsoid.js
options:
# XXX Check Parsoid URL! .../rest.php is the default configuration
# Parsoid/JS used http://localhost:8142
parsoidHost: http://YOUR_WIKI_REST_ENDPOINT
- For MediaWiki 1.35 and later,
YOUR_WIKI_REST_ENDPOINT
is the location of your wiki'srest.php
. For example, MediaWiki's REST endpoint is mediawiki.org/w/rest.php. See REST API . - In MediaWiki 1.34 and earlier, using Parsoid/JS , the
parsoidHost:
entry must correspond to the URL and port of your Parsoid server. Jeśli twoje serwery Parsoid i RESTBase znajdują się na tym samym komputerze, tolocalhost
jest prawidłowym adresem URL. Parsoid/JS usedhttp://localhost:8142
as its default.
table:
storage_groups:
- name: default
domains: /./
backend: sqlite
dbname: db.sqlite3
- dbname: RESTBase, do przechowywania danych z pamięci podręcznej, użyje domyślnie bazy danych sqlite. Plik w skrypcie przykładowym ma nazwę db.sqlite3 i znajduje się w tym samym katalogu folderu RESTBase. Jeśli chcesz uruchomić RESTBase jako usługę później, będziesz mógł umieścić bazę danych w innym folderze, w którym użytkownik uruchamiający usługę miałby uprawnienia do zapisu. W tym celu możesz zmienić linię na:
dbname: /var/lib/restbase/db.sqlite3
(oraz mieć zapewnienie, że konto użytkownika, na którym działa usługa, ma uprawnienia do pisania na nim). Please note: You must manually addstorage_groups
parameter since they introduced storage groups for SQLite (see T225579).
- In MediaWiki 1.35 and later you need to call Parsoid via your
LocalSettings.php
file in case the VisualEditor is not installed for the wiki:
wfLoadExtension(
'Parsoid',
'vendor/wikimedia/parsoid/extension.json' // Add absolute path here in case of issues with your job queue
);
Jeśli chcesz obsługiwać żądania z wielu stron wiki na tym samym serwerze RESTBase, powinieneś skopiować i powtórzyć całą sekcję /{domain:TWOJA_STRONA_WIKI}:
, w razie potrzeby zmieniając konfigurację.
Uruchom serwer i przetestuj
Aby przetestować, czy działa, w folderze RESTbase uruchom:
node server.js
Do testowania, gdy jest uruchomiony, na innym terminalu wykonaj:
curl http://TWÓJ_RESTBASE_SERWER:7231/TWOJA_STRONA_WIKI/v1/page/html/Main_Page
Powinieneś zobaczyć zawartość HTML strony głównej.
W przeglądarce możesz także przetestować, przechodząc do http://TWÓJ_RESTBASE_SERWER:7231/TWOJA_STRONA_WIKI/v1/
np. http://localhost:7231/v1/ powinieneś zobaczyć stronę zatytułowaną Wikimedia REST API.
Na tej stronie możesz przetestować wszystkie metody i zmienne RESTBase.
W przypadku innych testów patrz GitHub.
Jeśli port RESTBase jest zablokowany
Jeśli nie widzisz strony (Twoja przeglądarka mówi, że nie może się połączyć), Twój port serwera RESTBase może być zablokowany. Wykonaj następujące czynności:
curl http://TWÓJ_RESTBASE_SERWER:7231/TWOJA_STRONA_WIKI/v1/
- Jeśli dostaniesz
{"items":["page","transform"]}
, Twój port serwera RESTBase jest ok. - Jeśli nie dostałeś
{"items":["page","transform"]}
, następnie zrób:curl http://localhost:7231/YOUR_WIKI_WEBSITE/v1/
- Jeśli dostaniesz
{"items":["page","transform"]}
serwer RESTBase nie jest zły, ale nie możesz uzyskać dostępu do portu.
- Jeśli dostaniesz
Aby ominąć blokadę, możesz ustawić proxypass na konfiguracji httpd swojego Apache. Zobacz sekcję Proxy prosi o RESTBase z twojego serwera WWW instrukcji.
Automatyczne uruchamianie serwera RESTBase
Utwórz nowego użytkownika dla usługi RESTBase (opcjonalnie, ale zaleca się, aby nie uruchamiać go jako root) i utworzyć katalog domowy dla tego użytkownika:
sudo useradd --home=/var/lib/restbase -M --user-group --system --shell=/usr/sbin/nologin -c "RESTBase for MediaWiki" restbase
sudo mkdir -p /var/lib/restbase
sudo chown restbase:restbase /var/lib/restbase
Do instalowania serwera RESTBase jako usługi z systemd, utwórz ten plik w katalogu sudo systemctl edit --force --full restbase.service
, ($3 dla CentOS 7 i $4 dla openSUSE) i nazwij go $5.
[Unit]
Description=Mediawiki RESTBase Service
Documentation=https://www.mediawiki.org/wiki/Special:MyLanguage/RESTBase
Wants=local-fs.target network.target
After=local-fs.target network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
User=restbase
Group=restbase
WorkingDirectory=/ścieżkę_do_restbase-master
ExecStart=/usr/bin/node /ścieżkę_do_restbase-master/server.js
KillMode=process
Restart=on-success
PrivateTmp=true
StandardOutput=syslog
Zastąp ścieżkę_do_restbase-master
ścieżką do katalogu projektu twojej bazy.
Aby automatycznie uruchomić serwer RESTBase podczas uruchamiania systemu,
systemctl enable restbase.service
Aby kontrolować serwer RESTBase,
sudo systemctl start|stop|restart|status restbase.service
Proxy prosi o RESTBase z twojego serwera WWW
Aby niektóre funkcje działały poprawnie, RESTBase musi być dostępny dla użytkowników witryny. Posiadanie RESTBase na niestandardowym porcie http jest problematyczne dla niektórych użytkowników za firmowym proxy lub zaporą. Aby rozwiązać ten problem, a szczególnie w celu obsługi zgłoszeń do RESTBase za pośrednictwem protokołu HTTPS, powinieneś skonfigurować serwer proxy odwrotnego zapisu na swoim serwerze WWW, który przekierowałby żądania w danej ścieżce Twojej wiki do serwera RESTBase.
Apache
Jeśli używasz Apache, możesz zrobić plik restbase.conf
i umieścić w /etc/httpd/conf.d
z TWÓJ_RESTBASE_SERWER
.
# Restbase.conf : usually on /etc/httpd/conf.d/
<VirtualHost *:80>
AllowEncodedSlashes NoDecode
ProxyPreserveHost On
ProxyPass /TWOJA_STRONA_WIKI/ http://localhost:7231/TWOJA_STRONA_WIKI/ nocanon
ProxyPassReverse /TWOJA_STRONA_WIKI/ http://localhost:7231/TWOJA_STRONA_WIKI/
# Alternate configuration like WMF to have URLS like //example.com/api/rest_v1/
# ProxyPass /api/rest_v1/ http://localhost:7231/TWOJA_STRONA_WIKI/v1/ nocanon
# ProxyPassReverse /api/rest_v1/ http://localhost:7231/TWOJA_STRONA_WIKI/v1/
# MediaWiki is located here:
DocumentRoot /var/www/html
</VirtualHost>
Nginx
W ogólnej konfiguracji:
upstream restbase {
server localhost:7231;
keepalive 32;
}
# Hack so nginx doesn't decode the / character in page titles, causing
# errors on pages with that title. https://stackoverflow.com/a/20514632
map $request_uri $restbasequery {
default "xx";
"~/TWOJA_STRONA_WIKI/v1/(?<xrestbasequery>.*)$" "$xrestbasequery";
# Alternate configuration like WMF to have URLS like //example.com/api/rest_v1/
#"~/api/rest_v1/(?<xrestbasequery>.*)$" "$xrestbasequery";
}
W środku bloku server
:
location /TWOJA_STRONA_WIKI/v1/ {
# Alternate configuration like WMF to have URLS like //example.com/api/rest_v1/
# location /api/rest_v1/ {
proxy_pass http://restbase/TWOJA_STRONA_WIKI/v1/$restbasequery;
}
Configuring config.yaml for WMF like URLS
If you don't want to get a fetch error when using WMF like URLS, you should add x-host-basePath
to the spec
module like so:
paths:
/{domain:TWOJA_STRONA_WIKI}/{api:v1}:
x-modules:
- spec:
info:
version: 1.0.0
title: Wikimedia REST API
description: Welcome to your RESTBase API.
x-route-filters:
- path: ./lib/normalize_title_filter.js
options:
redirect_cache_control: 's-maxage=0, max-age=86400'
x-host-basePath: /api/rest_v1
Testowanie
Powinieneś ponownie uruchomić httpd (kodem apachectl restart
lub w jakiś sposób).
Teraz przeglądarce możesz nawigować do:
http://TWOJA_STRONA_WIKI/TWOJA_STRONA_WIKI/v1/
(alternatywny adres URL, np. konfiguracja WMF):
http://TWOJA_STRONA_WIKI/api/rest_v1/
powinieneś zobaczyć stronę zatytułowaną Wikimedia REST API.
I w tym ustawieniu powinieneś dodać poniżej LocalSettings.php
dla VisualEditor.
$wgVisualEditorRestbaseURL = "http://TWOJA_STRONA_WIKI/TWOJA_STRONA_WIKI/v1/page/html/";
$wgVisualEditorFullRestbaseURL = "http://TWOJA_STRONA_WIKI/TWOJA_STRONA_WIKI/";
# Alternate URL scheme
# $wgVisualEditorRestbaseURL = "http://TWOJA_STRONA_WIKI/api/rest_v1/page/html/";
# $wgVisualEditorFullRestbaseURL = "http://TWOJA_STRONA_WIKI/api/rest_";