Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Current »

Serwer NGINX jest bardzo wydajnym serwerem HTTP, który obsługuje dla SowaSQL Premium całą komunikację z użytkownikami systemu.

Na system składa się kilka usług, które udostępniane są pod różnymi adresami domenowymi (zwykle jako subdomeny). Na potrzeby dokumentacji przyjmujemy, że podstawową nazwą domenową jest biblioteka-miejska.sowa.pl - a poszczególne usługi będą udostępniane jako subdomeny (oczywiście wszystko może funkcjonować w oparciu o domenę wykupioną przez bibliotekę).

Obowiązkowym punktem konfiguracji jest zabezpieczenie wszystkich stron certyfikatami SSL. W poniższej instrukcji będzie podana metoda wygenerowania bezpłatnych certyfikatów SSL (dzięki Let's Encrypt) - niemniej, jeśli biblioteka posiada certyfikat na własną domenę (np. certyfikat wildcard *.domena) - może użyć gotowych plików certyfikatów i tylko wskazać je w ścieżkach w konfiguracji.


Usługi

Wariant w domenie sowa.pl

Usługi są udostępniane jako subdomeny przydzielonej dla danej biblioteki domeny głównej, np. biblioteka-miejska.sowa.pl

  • brak + www  - katalog OPAC - np. biblioteka-miejska.sowa.pl i www.biblioteka-miejska.sowa.pl
  • cdn - serwer multimediów - np. cdn.biblioteka-miejska.sowa.pl
  • web - aplikacja webowa - np. web.biblioteka-miejska.sowa.pl
  • api - serwer API - np. api.biblioteka-miejska.sowa.pl

Wariant w domenie własnej

Usługi są udostępniane jako subdomeny w domenie własnej biblioteki, np. biblioteka-miejska.com

  • opac - katalog OPAC - np. opac.biblioteka-miejska.com - przy czym biblioteka może już posiadać katalog na innej subdomenie - powinniśmy to zachować.
  • sowa-cdn - serwer multimediów - np. sowa-cdn.biblioteka-miejska.com
  • sowa-web - aplikacja webowa - np. sowa-web.biblioteka-miejska.com
  • sowa-api - serwer API - np. sowa-api.biblioteka-miejska.com

Ustawienie przekierowań

Przekierowanie ruchu HTTP na HTTPS

Zależy nam, by wszystkie usługi działały na bezpiecznym połączeniu, chronionym certyfikatem SSL. Dlatego cały ruch przekierujemy z 80 na 443.

/etc/nginx/sites-available/00-default.conf
server {
  listen      80;
  server_name _;
  root        /dev/null;

  client_max_body_size 256k;

  # Wymagane tylko dla Let's Encrypt
  location /.well-known/ {
    alias /tmp/.well-known/;
  }

  location /status {
    allow 127.0.0.0/8;
    deny  all;
    stub_status;
  }

  location / {
    limit_except GET HEAD {
      deny all;
    }
    return 301 https://$host$request_uri;
  }
}

Przekierowania do lokalnych serwerów usług

/etc/nginx/sites-available/01-sowa-base.conf
upstream opac {
  server 127.0.0.1:8080;
  keepalive 20;
}

upstream strix {
  server 127.0.0.1:7364;
  keepalive 20;
}

upstream sowaipmh {
  server 127.0.0.1:7001;
  keepalive 20;
}

upstream dziupla {
  server 127.0.0.1:9080;
  keepalive 20;
}

Włączenie konfiguracji

rm -f /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/00-default.conf /etc/nginx/sites-enabled/00-default.conf
ln -s /etc/nginx/sites-available/01-sowa-base.conf /etc/nginx/sites-enabled/01-sowa-base.conf
systemctl restart nginx


Certyfikaty SSL

W przypadku konfiguracji dla domeny sowa.pl, będziemy korzystać z darmowych certyfikatów Let's Encrypt. W przypadku domeny własnej - najlepiej, jeśli biblioteka dysponuje własnym certyfikatem.

Ten krok można pominąć, jeśli biblioteka dysponuje certyfikatem z innego źródła, dla wszystkich nazw domenowych, które będą w użyciu.

Instalacja narzędzia certbot

Certbot - https://certbot.eff.org/ - to narzędzie, które bardzo upraszcza proces pozyskiwania certyfikatów SSL z Let's Encrypt.

apt install certbot

Generowanie certyfikatu

certbot certonly --webroot -w /tmp -d biblioteka-miejska.sowa.pl -d www.biblioteka-miejska.sowa.pl -d cdn.biblioteka-miejska.sowa.pl -d web.biblioteka-miejska.sowa.pl -d api.biblioteka-miejska.sowa.pl

Tak wygenerowane certyfikaty będziemy używać w kolejnych krokach podczas generowania konfiguracji usług.

Fragment opcji polecenia site
--ssl-cert=/etc/letsencrypt/live/biblioteka-miejska.sowa.pl/fullchain.pem --ssl-cert-key=/etc/letsencrypt/live/biblioteka-miejska.sowa.pl/privkey.pem

Certyfikat własny

W przypadku własnego certyfikatu (najlepiej typu wildcard dla *.biblioteka-miejska.com), trzeba umieścić na serwerze pliki w wybranym miejscu, np. w /etc/nginx/ssl/

  1. Plik zawierający certyfikat domeny oraz certyfikat pośredni CA (muszą być oba w jednym pliku!) - np. /etc/nginx/ssl/biblioteka-miejska.com-chain.pem
  2. Plik zaawierający klucz prywatny certyfikatu - np. /etc/nginx/ssl/biblioteka-miejska.com.key

Wówczas te certyfikaty będziemy wskazywać podczas konfiguracji usług.

Fragment polecenia site
--ssl-cert=/etc/nginx/ssl/biblioteka-miejska.com-chain.pem --ssl-cert-key=/etc/nginx/ssl/biblioteka-miejska.com.key

Konfiguracja usług

Usługi korzystają z podstawowego serwera NGINX (dla ruchu 80 i 443) oraz dodatkowego serwera Apache, działającego na porcie 8080.

Katalog OPAC

Jest on obsługiwany przez Apache'a (zob. poprzednią stronę), a NGINX zapewnia proxy.

Wymagania

Pakiet sowa.opac powinien być wcześniej zainstalowy. Adres url katalogu należy wpisać do CRM w Zainstalowane wersje → SOWA-WWW


sowizor site add www --ssl-cert=/etc/nginx/ssl/biblioteka-miejska.com-chain.pem --ssl-cert-key=/etc/nginx/ssl/biblioteka-miejska.com.key

Polecenie wygeneruje automatycznie konfigurację zarówno dla apache, jak i dla nginx. Obie te konfiguracje trzeba odpowiednio podlinkować:

  1. Plik dla Apache będzie w postaci: /home/sowa/.sowang/var/lib/sites/apache/biblioteka-miejska.sowa.pl.conf
  2. Plik dla Nginxa będzie w postaci: /home/sowa/.sowang/var/lib/sites/nginx/biblioteka-miejska.sowa.pl.conf
Utworzenie linków
ln -s /etc/apache2/sites-available/biblioteka-miejska.sowa.pl.conf /home/sowa/.sowang/var/lib/sites/apache/biblioteka-miejska.sowa.pl.conf 
ln -s /etc/apache2/sites-enabled/biblioteka-miejska.sowa.pl.conf /etc/apache2/sites-available/biblioteka-miejska.sowa.pl.conf
ln -s /etc/nginx/sites-available/biblioteka-miejska.sowa.pl.conf /home/sowa/.sowang/var/lib/sites/nginx/biblioteka-miejska.sowa.pl.conf
ln -s /etc/nginx/sites-enabled/biblioteka-miejska.sowa.pl.conf /etc/nginx/sites-available/biblioteka-miejska.sowa.pl.conf

systemctl reload apache2
systemctl reload nginx

Serwer API

Posiada on wbudowaną obsługę HTTP i uruchamiany jest na lokalnym porcie 7364, NGINX zapewnia proxy.

Wymagania

Grupa pakietów STRIX powinna być wcześniej zainstalowana. Jeśli usługa API działa na domenie własnej biblioteki, wymagane jest wpisanie adresu url dla API do CRM w Zainstalowane wersje → Strix: host API


sowizor site add api --ssl-cert=/etc/nginx/ssl/biblioteka-miejska.com-chain.pem --ssl-cert-key=/etc/nginx/ssl/biblioteka-miejska.com.key
sudo systemctl reload nginx

Serwer multimediów

Uruchamiany jest w kontenerze docker i również sam obsługuje HTTP, NGINX zapewnia proxy.

Podczas wywołania polecenia należy wpisać adres, np. sowa-cdn.biblioteka-miejska.com

sowizor site add cdn --ssl-cert=/etc/nginx/ssl/biblioteka-miejska.com-chain.pem --ssl-cert-key=/etc/nginx/ssl/biblioteka-miejska.com.key
sudo systemctl reload nginx

Aplikacja Webowa

Jest serwowana bezpośrednio przez NGINX'a.

Wymagania

Pakiet websowa powinien być wcześniej zainstalowany. Adres url websowy należy wpisać do CRM w Zainstalowane wersje → Sowa WEB Klient

Opcję --force w poleceniu wydajemy tylko wówczas, jeśli migracja do strix jeszcze nie była robiona. W takim przypadku, po migracji będzie konieczne ponowne wygenerowanie konfiguracji tym samym poleceniem (ale bez --force)


sowizor site add web --ssl-cert=/etc/nginx/ssl/biblioteka-miejska.com-chain.pem --ssl-cert-key=/etc/nginx/ssl/biblioteka-miejska.com.key --force
sudo systemctl reload nginx
  • No labels