|
Usługi są udostępniane jako subdomeny przydzielonej dla danej biblioteki domeny głównej, np. biblioteka-miejska.sowa.pl
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
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
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.
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; } } |
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; } |
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 |
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.
Certbot - https://certbot.eff.org/ - to narzędzie, które bardzo upraszcza proces pozyskiwania certyfikatów SSL z Let's Encrypt.
apt install certbot |
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.
--ssl-cert=/etc/letsencrypt/live/biblioteka-miejska.sowa.pl/fullchain.pem --ssl-cert-key=/etc/letsencrypt/live/biblioteka-miejska.sowa.pl/privkey.pem |
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/
Wówczas te certyfikaty będziemy wskazywać podczas konfiguracji usług.
--ssl-cert=/etc/nginx/ssl/biblioteka-miejska.com-chain.pem --ssl-cert-key=/etc/nginx/ssl/biblioteka-miejska.com.key |
Usługi korzystają z podstawowego serwera NGINX (dla ruchu 80 i 443) oraz dodatkowego serwera Apache, działającego na porcie 8080.
Jest on obsługiwany przez Apache'a (zob. poprzednią stronę), a NGINX zapewnia proxy.
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ć:
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 |
W przypadku konfiguracji ręcznej (np. rozdzielenie usług między kilka maszyn), należy skonfigurować NGINX i Apache wg poniższych wzorców.
server { listen 443 ssl http2; server_name biblioteka-miejska.sowa.pl; root /dev/null; ssl_certificate /etc/letsencrypt/live/biblioteka-miejska.sowa.pl/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/biblioteka-miejska.sowa.pl/privkey.pem; keepalive_timeout 10m; location / { client_max_body_size 8m; proxy_pass http://opac; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_request_buffering off; } } |
<VirtualHost *:8080> DocumentRoot /home/sowa/sowa.opac/public ServerName biblioteka-miejska.sowa.pl DirectoryIndex index.php ErrorLog /var/log/apache2/biblioteka-miejska.sowa.pl-error.log TransferLog /var/log/apache2/biblioteka-miejska.sowa.pl-access.log LogFormat combined <Directory /home/sowa/sowa.opac/public> Options SymlinksIfOwnerMatch AllowOverride AuthConfig FileInfo Order allow,deny Allow from all Require all granted </Directory> RewriteEngine on </VirtualHost> |
Posiada on wbudowaną obsługę HTTP i uruchamiany jest na lokalnym porcie 7364, NGINX zapewnia proxy.
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 |
W przypadku konfiguracji ręcznej, należy skonfigurować NGINX wg poniższego wzoru:
server { listen 443 ssl http2; server_name api.biblioteka-miejska.sowa.pl; root /dev/null; ssl_certificate /etc/letsencrypt/live/biblioteka-miejska.sowa.pl/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/biblioteka-miejska.sowa.pl/privkey.pem; keepalive_timeout 30m; proxy_send_timeout 600s; proxy_read_timeout 600s; send_timeout 600s; location ~ ^/tmp/([^/]+)/(.+)$ { alias /home/sowa/sowa_sql/katalogi/$1/tmp/$2; } location /icons { alias /home/sowa/sowa_sql/etc/icons; } location /robots.txt { add_header Content-Type text/plain; return 200 "User-agent: * Disallow: / "; } location ~ ^/sowacgi.php.*$ { return 410; } location / { client_max_body_size 4m; proxy_pass http://strix; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_request_buffering off; proxy_buffering off; } } |
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 |
W przypadku konfiguracji ręcznej, należy skonfigurować NGINX wg poniższego wzoru:
server { listen 443 ssl http2; server_name cdn.biblioteka-miejska.sowa.pl; root /dev/null; ssl_certificate /etc/letsencrypt/live/biblioteka-miejska.sowa.pl/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/biblioteka-miejska.sowa.pl/privkey.pem; keepalive_timeout 10m; location / { client_max_body_size 0; proxy_pass http://dziupla; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_request_buffering off; } } |
Jest serwowana bezpośrednio przez NGINX'a.
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 |
W przypadku konfiguracji ręcznej, należy skonfigurować NGINX wg poniższego wzoru:
server { listen 443 ssl http2; server_name web.biblioteka-miejska.sowa.pl; ssl_certificate /etc/letsencrypt/live/biblioteka-miejska.sowa.pl/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/biblioteka-miejska.sowa.pl/privkey.pem; include "/home/sowa/websowa/nginx.conf"; } |