RESTBase/Instalacja

This page is a translated version of the page RESTBase/Installation and the translation is 81% complete.
Outdated translations are marked like this.

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
You can also use 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 to www.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ń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:
     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's rest.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, to localhost jest prawidłowym adresem URL. Parsoid/JS used http://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 add storage_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.

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_";

Zobacz też