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
appDbplikuC:\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.jsoni 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:
{
"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.
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;
GOAby 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:
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:
- Zaloguj się do phaf jako administrator (nadal używa SQLite).
- Przejdź do Settings › Advanced i kliknij Encrypt a password.
- Wpisz hasło konta
phaf_app. phaf pokaże wartość zaczynającą się odENC:v1:. Skopiuj ją. - 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
{
"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
}
}| Klucz | Wartość |
|---|---|
server | Nazwa hosta lub IP SQL Server. Dla instancji nazwanej: "SQL01\\PHAF" (dwa ukośniki wsteczne w JSON). |
port | Domyślnie 1433. |
database | Utworzona baza danych. |
schema | dbo lub schemat utworzony dla phaf. |
user / password | Login i hasło ENC:v1: z kroku 3. |
encrypt | true, aby szyfrować połączenie TLS (zalecane). |
trustServerCertificate | false, aby weryfikować certyfikat SQL Server (zalecane). Zobacz niżej. |
Szyfrowanie połączenia
| encrypt | trustServerCertificate | Wynik |
|---|---|---|
true | false | Zalecane. Szyfrowane, a certyfikat jest weryfikowany. SQL Server potrzebuje certyfikatu dla nazwy z server, wystawionego przez urząd, któremu ufa serwer phaf. |
true | true | Szyfrowane, 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.
"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ź
Restart-Service (Get-Service | Where-Object DisplayName -like 'phaf*').NameNastę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.
- Settings › Advanced › Database › Migrate to another database.
- Safe Mode — phaf przestaje wysyłać, przetwarzać i odbierać, i czeka na zakończenie bieżącej pracy.
- Cel — wpisz dane SQL Server i kliknij Test connection. To tworzy tabele w bazie docelowej.
- Migracja — phaf kopiuje tabele strona po stronie, z postępem dla każdej z nich.
- Gotowe — phaf pokazuje blok
appDbz już zaszyfrowanym hasłem. Wklej go doconfig.jsoni 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.