RESTBase/Installation/pl

From MediaWiki.org
Jump to navigation Jump to search

Pobieranie RESTBase ze źródła[edit]

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.

Z katalogu \home\TY\RESTBase\project (np. na UBUNTU), zainstaluj zależności Node przy użyciu npm (część nodejs):

npm install

Konfiguracja[edit]

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: truea Maxima)
     - 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/YOUR_WIKI_WEBSITE}:
  • TWOJA_STRONA_WIKI/YOUR_WIKI_WEBSITE 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 to www.mediawiki.org. Jest używany jako ścieżka identyfikatora w przypadku, gdy używasz tego samego serwera dla wielu wiki.
   action:
     # XXX Check API URL!
     apiUriTemplate: http://PUNKT-KOŃCOWY_TWOJEJ_WIKI/YOUR_WIKI_API_ENDPOINT
     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 The endpoint/Punkt końcowy.
  • baseUriTemplate 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:
     # XXX Check Parsoid URL! localhost is the default configuration/Sprawdź URL Parsoida! localhost jest domyślną konfiguracją
     host: http://SERWER_TOWJEGO_PAROIDA:PORT/YOUR_PARSOID_SERVER:PORT
  • TWÓJ_SERWER_PARSOID:PORT/YOUR_PARSOID_SERVER:PORT na hoście: i pattern: wpisy muszą odpowiadać adresowi URL i portowi serwera Parsoid. Jeśli twoje serwery Parsoid i RESTBase znajdują się na tym samym komputerze, to localhost jest prawidłowym adresem URL.
   table:
     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).

Jeśli chcesz obsługiwać żądania z wielu stron wiki na tym samym serwerze RESTBase, powinieneś skopiować i powtórzyć całą sekcję /{domain:TWOJA_WIKI/YOUR_WIKI_WEBSITE}:, w razie potrzeby zmieniając konfigurację.

Uruchom serwer i przetestuj[edit]

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_SERWER_RESTBASE(YOUR_RESTBASE_SERVER):7231/TWOJA_STRONA_WIKI(YOUR_WIKI_WEBSITE)/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(YOUR_RESTBASE_SERVER):7231/TWOJA_STRONA_WIKI(YOUR_WIKI_WEBSITE)/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[edit]

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(YOUR_RESTBASE_SERVER:)7231/TWOJASTRONA_WIKI(YOUR_WIKI_WEBSITE)/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/TWOJA_STRONA_WIKI(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.

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[edit]

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 /lib/systemd/system/, (/etc/systemd/system/ dla CentOS 7 i /usr/lib/systemd/system/ dla openSUSE) i nazwij go restbase.service.

[Unit]
Description=Mediawiki RESTBase Service
Documentation=https://www.mediawiki.org/wiki/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=/path_to_restbase-master
ExecStart=/usr/bin/node /path_to_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

Jeśli kiedykolwiek zmienisz skrypt restbase.service, to musisz go ponownie załadować,

sudo systemctl --system daemon-reload

Proxy prosi o RESTBase z twojego serwera WWW[edit]

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[edit]

Jeśli używasz Apache, możesz zrobić plik restbase.conf i umieścić w /etc/httpd/conf.d z YOUR_RESTBASE_SERVER/TWÓJ_SERWER_RESTBASE.

# Restbase.conf : usually on /etc/httpd/conf.d/

<VirtualHost *:80>
          ProxyPreserveHost On
          ProxyPass /YOUR_WIKI_WEBSITE/ http://localhost:7231/YOUR_WIKI_WEBSITE/
          ProxyPassReverse /YOUR_WIKI_WEBSITE/ http://localhost:7231/YOUR_WIKI_WEBSITE/
          # Alternate configuration like WMF to have URLS like //example.com/api/rest_v1/
          # ProxyPass /api/rest_v1/ http://localhost:7231/YOUR_WIKI_WEBSITE/
          # ProxyPassReverse /api/rest_v1/ http://localhost:7231/YOUR_WIKI_WEBSITE/

          # MediaWiki is located here:
          DocumentRoot /var/www/html

</VirtualHost>

Nginx[edit]

W ogólnej konfiguracji:

upstream restbase {
	server localhost:7231;
	keepalive 32;
}

# Hack nginx nie dekoduje znaku / w tytułach stron, powodując
# Hack so nginx doesn't decode the / character in page titles, causing
# błędy na stronach o tym tytule./errors on pages with that title. https://stackoverflow.com/a/20514632
map $request_uri $restbasequery {
        default "xx";
        "~/YOUR_WIKI_WEBSITE/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 /YOUR_WIKI_WEBSITE/v1/ {
# Alternatywna konfiguracja, taka jak WMF, aby mieć adresy URL podobne
# Alternate configuration like WMF to have URLS like //example.com/api/rest_v1/
# lokalizacja /api/rest_v1/ {
# location /api/rest_v1/ {

        proxy_pass http://restbase/YOUR_WIKI_WEBSITE/v1/$restbasequery;
}

Testowanie[edit]

Powinieneś ponownie uruchomić httpd (kodem apachectl restart lub w jakiś sposób). Teraz przeglądarce możesz nawigować do

http://YOUR_WIKI_WEBSITE/YOUR_WIKI_WEBSITE/v1/

(alternatywny adres URL, np. konfiguracja WMF):

http://YOUR_WIKI_WEBSITE/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://YOUR_WIKI_WEBSITE/YOUR_WIKI_WEBSITE/v1/page/html/";
$wgVisualEditorFullRestbaseURL = "http://YOUR_WIKI_WEBSITE/YOUR_WIKI_WEBSITE/";
# Alternate URL scheme
# $wgVisualEditorRestbaseURL = "http://YOUR_WIKI_WEBSITE/api/rest_v1/page/html/";
# $wgVisualEditorFullRestbaseURL = "http://YOUR_WIKI_WEBSITE/api/rest_";