Nowość w phaf 26.11.1: Instalator Windows oraz konektory CSV, Email i REST. Informacje o wersjach → Produkt Spectro Web Solutions ↗ EN PL

Przewodnik instalacji · Windows Server

Wybierz bazę danych aplikacji

SQLite (domyślnie) lub SQL Server — oraz co warto wiedzieć o MySQL.

Baza danych aplikacji przechowuje transakcje phaf, historię wiadomości, śledzone nagłówki, logi aplikacji i ślad audytowy. phaf obsługuje SQLite (domyślnie) i Microsoft SQL Server. Użytkownicy, ustawienia, obszary robocze i klucz szyfrowania zawsze pozostają w folderze danych, niezależnie od wybranej bazy.

Jak phaf wybiera bazę danych

  • Bazę danych ustawia się w sekcji appDb pliku C:\phaf\app\config.json. Bez tej sekcji phaf używa SQLite.
  • Przy każdym uruchomieniu phaf sam tworzy brakujące tabele. Ty dostarczasz tylko pustą bazę danych.
  • Konsola pokazuje używaną bazę, testuje ją i może migrować dane między bazami w Settings › Advanced › Database. Nie zapisuje połączenia: zawsze zmieniasz je w config.json i uruchamiasz ponownie usługę phaf.
  • Jeśli baza danych jest niedostępna — serwer zatrzymany, błędne hasło — phaf i tak się uruchamia i można się zalogować, ale nie przetwarza ani nie odbiera plików, dopóki baza nie wróci. Baner na górze każdej strony podaje przyczynę, a phaf ponawia próbę co 30 sekund.

SQLite (domyślnie)

Nic nie trzeba instalować. phaf tworzy plik bazy C:\phaf\data\db\phaf.db przy pierwszym uruchomieniu. Aby użyć innej nazwy pliku lub folderu, dodaj:

JSON — C:\phaf\app\config.json
{
  "appDirectory": "C:/phaf/data",
  "host": "127.0.0.1",
  "port": 8181,
  "appDb": { "provider": "sqlite", "file": "db/phaf.db" }
}

Względna ścieżka file jest liczona od folderu danych.

Dobre praktyki z SQLite

  • Trzymaj bazę na lokalnym dysku serwera phaf, nigdy na udziale sieciowym.
  • Rób kopię zapasową przy zatrzymanej usłudze phaf (zobacz Kopia zapasowa i przywracanie) — kopiowanie pliku w trakcie zapisu przez phaf może dać bezużyteczną kopię.
  • Gdy wolumen rośnie albo potrzebujesz kopii bez zatrzymywania phaf, przejdź na SQL Server za pomocą asystenta migracji.

SQL Server

Obsługiwane: SQL Server 2016 lub nowszy, w tym Express, na tym samym lub innym serwerze. phaf łączy się przez TCP loginem SQL Server lub kontem Windows.

1. Przygotuj SQL Server

  • Włączony TCP/IP — w SQL Server Configuration Manager › SQL Server Network Configuration › Protocols. W SQL Server Express jest domyślnie wyłączony. Po włączeniu uruchom ponownie usługę SQL Server.
  • Otwarty port — domyślnie TCP 1433. Instancja nazwana używa portu dynamicznego, chyba że ustawisz stały; wtedy potrzebuje też usługi SQL Server Browser (UDP 1434).
  • Uwierzytelnianie — aby używać loginu SQL Server, instancja musi zezwalać na tryb „SQL Server and Windows Authentication mode”.

2. Utwórz bazę danych i login

Poproś swojego DBA o uruchomienie tego skryptu z własnym silnym hasłem. phaf musi odczytywać i zapisywać swoje tabele oraz je tworzyć (db_ddladmin) — wyłącznie we własnej bazie.

SQL
CREATE DATABASE phaf;
GO
CREATE LOGIN phaf_app WITH PASSWORD = '<a strong password>', CHECK_POLICY = ON;
GO
USE phaf;
CREATE USER phaf_app FOR LOGIN phaf_app;
ALTER ROLE db_datareader ADD MEMBER phaf_app;
ALTER ROLE db_datawriter ADD MEMBER phaf_app;
ALTER ROLE db_ddladmin  ADD MEMBER phaf_app;
GO

Aby oddzielić tabele phaf od innych obiektów, nadaj im własny schemat — phaf utworzy go, jeśli nie istnieje, albo możesz utworzyć go wcześniej:

SQL
USE phaf;
CREATE SCHEMA phaf AUTHORIZATION dbo;

3. Zaszyfruj hasło

Nigdy nie zostawiaj hasła do bazy jawnym tekstem w config.json. phaf szyfruje je kluczem tej instalacji:

  1. Zaloguj się do phaf jako administrator (nadal używa SQLite).
  2. Przejdź do Settings › Advanced i kliknij Encrypt a password.
  3. Wpisz hasło konta phaf_app. phaf pokaże wartość zaczynającą się od ENC:v1:. Skopiuj ją.
  4. Zachowaj tę wartość na następny krok.

Zaszyfrowana wartość działa tylko w tej instalacji, ponieważ zależy od jej phaf.master_key.

4. Dodaj sekcję appDb

JSON — C:\phaf\app\config.json
{
  "appDirectory": "C:/phaf/data",
  "host": "127.0.0.1",
  "port": 8181,
  "appDb": {
    "provider": "sqlserver",
    "server": "sql01.your-company.local",
    "port": 1433,
    "database": "phaf",
    "schema": "dbo",
    "user": "phaf_app",
    "password": "ENC:v1:…paste the encrypted value…",
    "encrypt": true,
    "trustServerCertificate": false
  }
}
KluczWartość
serverNazwa hosta lub IP SQL Server. Dla instancji nazwanej: "SQL01\\PHAF" (dwa ukośniki wsteczne w JSON).
portDomyślnie 1433.
databaseUtworzona baza danych.
schemadbo lub schemat utworzony dla phaf.
user / passwordLogin i hasło ENC:v1: z kroku 3.
encrypttrue, aby szyfrować połączenie TLS (zalecane).
trustServerCertificatefalse, aby weryfikować certyfikat SQL Server (zalecane). Zobacz niżej.

Szyfrowanie połączenia

encrypttrustServerCertificateWynik
truefalseZalecane. Szyfrowane, a certyfikat jest weryfikowany. SQL Server potrzebuje certyfikatu dla nazwy z server, wystawionego przez urząd, któremu ufa serwer phaf.
truetrueSzyfrowane, ale certyfikat nie jest weryfikowany. Do przyjęcia, dopóki SQL Server ma tylko certyfikat z podpisem własnym.
false—Bez szyfrowania. Używaj tylko wtedy, gdy SQL Server działa na tej samej maszynie co phaf.

Ustaw szyfrowanie jawnie

Jeśli pominiesz encrypt, phaf łączy się bez szyfrowania, a bez trustServerCertificate akceptuje dowolny certyfikat. Zawsze wpisuj oba klucze.

Konto Windows zamiast loginu SQL

Aby łączyć się kontem domenowym, dodaj authScheme i domain oraz użyj nazwy i zaszyfrowanego hasła tego konta. Konto potrzebuje tych samych ról w bazie co powyżej.

JSON
"appDb": {
  "provider": "sqlserver",
  "server": "sql01.your-company.local",
  "database": "phaf",
  "authScheme": "ntlm",
  "domain": "YOURDOMAIN",
  "user": "svc-phaf",
  "password": "ENC:v1:…",
  "encrypt": true,
  "trustServerCertificate": false
}

5. Uruchom ponownie i sprawdź

PowerShell
Restart-Service (Get-Service | Where-Object DisplayName -like 'phaf*').Name

Następnie otwórz Settings › Advanced › Database i kliknij Test: phaf pokaże wersję SQL Server i liczbę wierszy w każdej tabeli.

Przeniesienie istniejących danych do SQL Server

Jeśli phaf działał już na SQLite i chcesz zachować historię, użyj asystenta migracji zamiast zaczynać od pustej bazy. Kopiuje on sześć tabel aplikacji i nigdy nie zmienia bieżącej bazy.

  1. Settings › Advanced › Database › Migrate to another database.
  2. Safe Mode — phaf przestaje wysyłać, przetwarzać i odbierać, i czeka na zakończenie bieżącej pracy.
  3. Cel — wpisz dane SQL Server i kliknij Test connection. To tworzy tabele w bazie docelowej.
  4. Migracja — phaf kopiuje tabele strona po stronie, z postępem dla każdej z nich.
  5. Gotowe — phaf pokazuje blok appDb z już zaszyfrowanym hasłem. Wklej go do config.json i uruchom ponownie usługę phaf.

Aby anulować, kliknij Leave Safe Mode: phaf wraca do pracy na bieżącej bazie.

Zmienne środowiskowe (opcjonalnie)

Zamiast config.json bazę danych można ustawić zmiennymi środowiskowymi systemu, które mają pierwszeństwo: PHAF_APPDB_PROVIDER, PHAF_APPDB_SERVER, PHAF_APPDB_PORT, PHAF_APPDB_DATABASE, PHAF_APPDB_SCHEMA, PHAF_APPDB_USER, PHAF_APPDB_PASSWORD, PHAF_APPDB_AUTHSCHEME, PHAF_APPDB_DOMAIN i PHAF_APPDB_FILE. Jeśli ich używasz, w zmiennej hasła umieść wartość ENC:v1:, a nie jawne hasło.

MySQL i MariaDB

W tej wersji phaf nie może używać MySQL ani MariaDB jako bazy danych aplikacji. Użyj SQLite lub SQL Server. Jeśli MySQL jest dla Ciebie wymaganiem, napisz nam przez propozycję funkcji — dodamy to do planu rozwoju i zaktualizujemy tę stronę, gdy będzie dostępne.