Anweisungen zur lokalen Installation

Link to Anweisungen zur lokalen Installation copied to clipboard
Not for use with personal data

Dieses Dokument beschreibt den Prozess der Installation von axe DevTools an einem lokalen Standort.

Anforderungen

Stellen Sie vor der Installation von axe DevTools sicher, dass die folgenden Anforderungen erfüllt sind.

Betriebssystem

Axe ist für die Ausführung unter RHEL7 oder RHEL8 konzipiert. Andere Betriebssysteme werden derzeit nicht unterstützt.

Vor der Installation von axe wird erwartet, dass Ihr System wie folgt aktualisiert wurde:

yum update -y

Hardwareanforderungen

Unsere Belastungstests haben bewiesen, dass eine AWS-Instanz t2.micro in der Lage ist, eine kleine Benutzerbasis (ca. 25 Benutzer) zu unterstützen, ohne die Anwendung erheblich zu belasten. Wir empfehlen nicht, Axe auf einem Server bereitzustellen, der nicht über die gleichen Spezifikationen verfügt wie ein [fehlendes Nomen]. t2.micro

Spezifikation Anforderung
CPU-Kerne 1
CPU-Geschwindigkeit 3,3 GHz
RAM 1 GB
Speicher 15 GB

Wenn Sie über eine größere Benutzerbasis verfügen, finden Sie Empfehlungen in der folgenden Tabelle.

Benutzer CPUs Arbeitsspeicher (GB) AWS T2-Größe
100 1 2 klein
300 2 4 mittel
500 4 8 groß
700 8 16 extragroß
1000 8 32 2x extragroß

Auf jeder Maschinengröße werden mindestens 15 GB physischer Speicher (Laufwerksspeicher) benötigt. Wir empfehlen jedoch 30+ GB.

Netzwerkanforderungen

Axe benötigt derzeit keinen ausgehenden Netzwerkzugriff, außer um auf an ihn gerichtete Anfragen zu antworten.

Axe öffnet die folgenden Ports auf dem System, auf dem es bereitgestellt wird:

Portnummer Zugänglich aus dem Internet Zweck
80 ja Eingehender HTTP-Verkehr
443 ja Eingehender HTTPS-Verkehr (nur bei Ausführung im SSL-Modus)
3000 Nein Axe-Server

Wenn Sie PostgreSQL auf derselben Maschine wie axe ausführen möchten, wird dessen Standardport (5432) geöffnet, ist aber vom externen Internet nicht zugänglich.

DNS-Anforderungen

Für axe muss DNS erstellt werden. Dieser DNS kann sich hinter der Firewall Ihres Unternehmens, in Ihrem eigenen privaten Netzwerk oder zugänglich über das öffentliche Internet befinden. Für unseren privaten Axe-Server haben wir einen A Eintrag, der auf eine EC2-Instanz in unserem AWS-Konto verweist.

Das in diesem Dokument verwendete Beispiel-DNS ist: axe.mycompany.com

SELinux-Konfiguration

Für Axe muss ein einzelnes SELinux-Flag deaktiviert werden:

setsebool -P httpd_can_network_connect 1

Dadurch kann NGINX als reverse proxy fungieren und auf ausgehende Netzwerkanforderungen antworten.

Benutzer

Es wird erwartet, dass das Installationsprogramm als root Benutzer ausgeführt wird. Wenn Sie keinen Zugriff sudo su auf den root Benutzer haben, schlägt das Installationsprogramm fehl.

Das Installationsprogramm erstellt die folgenden Benutzer:

Benutzer Zweck
nginx Betreibt den nginx-Dienst
axe Betreibt den Axe-Service
postgres Betreibt den Postgres-Dienst

Keiner dieser Benutzer benötigt erweiterte Berechtigungen.

Abhängigkeiten

Das Axe-Installationsprogramm bündelt alle seine Abhängigkeiten. Der Server, auf dem Axe installiert ist, braucht keinen Zugriff auf das externe Internet, um Axe zum Laufen zu bringen.

Eine Axe-Bereitstellung weist feste Abhängigkeiten von der folgenden Software auf:

  • NGINX - Stellt die Axe-Server Ihrem Netzwerk zur Verfügung
  • PostgreSQL - Datenspeicherung

Der Axe-Server läuft mit Node.js, Node muss jedoch nicht auf dem System installiert sein.

NGINX

NGINX muss installiert/konfiguriert werden, um den Datenverkehr an den Axe-Server weiterzuleiten. Es wurde eine Beispielkonfiguration für NGINX bereitgestellt (siehe axe-nginx-example.conf).

Die erforderlichen RPMs zur Installation von NGINX sind im Axe-Installationsprogramm enthalten. So installieren Sie NGINX:

# Install the RPM.
yum install -y ./rpms/nginx/*.rpm
# Overwrite default configuration.
cp axe-nginx-example.conf /etc/nginx/nginx.conf
# Start NGINX and ensure it runs at system startup.
systemctl start nginx
systemctl enable nginx

PostgreSQL

Der Axe-Server verwendet PostgreSQL zur Datenspeicherung. Dem Installationsprogramm muss eine gültige Verbindung zu PostgreSQL bereitgestellt werden.

Axe unterstützt sowohl ein externes PostgreSQL (z. B. ein von AWS gehostetes RDS) als auch einen PostgreSQL-Server, der auf derselben Maschine ausgeführt wird.

Die erforderlichen RPMs zur Installation von PostgreSQL sind im Axe-Installationsprogramm enthalten. So installieren Sie PostgreSQL:

# Install the RPM.
yum install -y ./rpms/postgres/*.rpm
# Initialize PostgreSQL DB.
postgresql-14-setup initdb

# https://www.cyberciti.biz/faq/psql-fatal-ident-authentication-failed-for-user/
sed -i 's/ident/trust/g' /var/lib/pgsql/14/data/pg_hba.conf
sed -i 's/peer/trust/g' /var/lib/pgsql/14/data/pg_hba.conf

# Start PostgreSQL and ensure it runs at system startup.
systemctl start postgresql-14
systemctl enable postgresql-14

Ausführen des Installationsprogramms

Das Installationsprogramm muss als root Benutzer root ausgeführt werden. Bestätigen Sie, dass Sie der root Benutzer sind, indem Sie Folgendes ausführen:

whoami

Wenn Sie das Installationsprogramm zuvor extrahiert haben, löschen Sie unbedingt das migrations Verzeichnis:

rm -f installer/migrations/*.sql

Das Installationsprogramm wird als einzelne (Archiv-)Datei geliefert: installer.tar.gz. Um das Archiv zu extrahieren, führen Sie Folgendes aus:

mkdir installer
tar -xvzf ./installer.tar.gz -C ./installer

Das Ergebnis ist eine Struktur ähnlich der folgenden:

.
└── installer
    ├── axe-nginx-example.conf
    ├── axe-service
    ├── installer
    ├── migrations
    │   ├── 0000-00-00-baseline.sql
    │   └── [...]
    └── rpms
        ├── nginx
        └── postgres

Nach dem Extrahieren besteht der nächste Schritt darin, das installer/installer Programm auszuführen.

Installer-Konfiguration

Zum Konfigurieren des Installationsprogramms werden viele Konfigurationsflags benötigt. In der folgenden Tabelle werden die einzelnen CLI-Flags erläutert, die an das installer Programm übergeben werden.

Option Beschreibung
axe-database-name Datenbankname für Axe
axe-Datenbank-Passwort Passwort für die Axe-Datenbank
Master-Datenbank-Name Name der Masterdatenbank
Master-Datenbank-Benutzer Benutzer für die Masterdatenbank
Masterdatenbankpasswort Passwort für den Master-Datenbankbenutzer
Masterdatenbankhost Host für die Masterdatenbank
Master-Datenbank-Port Port für die Masterdatenbank (Standard ist 5432)
Datenbank-Verschlüsselungsschlüssel 32-stelliger Schlüssel zur Datenbankverschlüsselung
Datenbank-Verschlüsselungs-Initialisierungsvektor 16 Zeichen IV für Datenbankverschlüsselung
Migrationsverzeichnis Verzeichnis mit Axe-Datenbankmigrationen
axe-user Name für den Systembenutzer, der den Axe-Dienst ausführen wird
Erweiterungs-ID ID der Google Chrome-Erweiterung für die Axe-Erweiterung
Adresse Adresse (URL), die der Axe-Dienst übernehmen wird
Cookie-Geheimnisse Geheimnisse zum signieren von Axe-Cookies (durch Kommas getrennte Liste)
Erlaubte E-Mail-Domänen Whitelist für E-Mail-Domänen (durch Kommas getrennte Liste)
Auth-Dienst-URL Legen Sie die Adresse auf ein vorhandenes Auth-Service-Deployment fest.
auth-service-realm Realm-Name, den Axe verwenden wird
Auth-Service-Admin-Benutzername Benutzername für einen vorhandenen „Master“-Realm-Administrator
Auth-Service-Admin-Passwort Passwort für einen bestehenden „Master“-Realm-Administrator
auth-service-axe-admin-username Benutzername für den Axe-Administratorbenutzer
auth-service-axe-admin-password Passwort für den Axe-Admin-Benutzer
auth-service-public-client-id Öffentliche Client-ID für diese Axe-Bereitstellung
auth-service-confidential-client-id Vertrauliche Client-ID für diese Axe-Bereitstellung
auth-service-admin-client-id Client-ID für einen vorhandenen Admin-Client (normalerweise „admin-cli“)
ml-service-API-Schlüssel API-Schlüssel für den Deque Machine Learning Service
ml-service-URL URL für den Deque Machine Learning Service
ml-service-timeout Anforderungstimeout (in ms) für den Deque Machine Learning Service
Geteilt mit Überschreibt Test- und Problemfreigabe. Entweder „Benutzer“ oder „jeder“.
Abrechnungsservice-URL URL für den Abrechnungsdienst (optional)
migrieren-zu-abrechnung Migrieren vorhandener Benutzer zum Abrechnungsdienst
Abrechnungsservice-Administratoren Bestimmte Benutzer während der Migration zum Abrechnungsdienst zu Administratoren machen (optional; erfordert --billing-service-url und --migrieren-zu-abrechnung)
Selbstsigniertes SSL akzeptieren Selbstsignierte TLS/SSL-Zertifikate akzeptieren (optional)
Maximale Migrationskonkurrenz Maximale Anzahl von Anforderungen während der Migration von Benutzern zum Abrechnungsdienst (optional, standardmäßig 20)
Prüfprotokoll aktivieren Die Überwachungsprotokollfunktion aktivieren oder deaktivieren
SMTP-Host SMTP-Host zum Versenden von E-Mails
SMTP-Port SMTP-Port zum Senden von E-Mails
SMTP-Benutzername SMTP-Benutzername zum Senden von E-Mails
SMTP-Passwort SMTP-Passwort zum Senden von E-Mails

Hinweise zu Konfigurationsflags

  • --migration-directory sollte auf das Verzeichnis verweisen, in das das Installations-Tarball extrahiert wurde plus /migrations. Das kann durchaus sein $PWD/migrations.
  • --address ist der vorkonfigurierte DNS für die Axe-Installation.
  • --allowed-email-domains kann festgelegt werden, wenn Ihre axe-Installation nur die Nutzung von bestimmten E-Mail-Domänen zulassen soll (z. B. „*@mycompany.com“).
  • --extension-id Standardmäßig werden alle bekannten axe-Erweiterungs-IDs verwendet (einschließlich Chrome und Edge).
  • --database-encryption-key **muss ** 32 Zeichen lang sein.
  • --database-encryption-iv **muss ** 16 Zeichen lang sein.

Umgebungsvariablen

Jedes dieser Konfigurationsflags kann durch Umgebungsvariablen im folgenden Format gesetzt werden:

AXE_DEVTOOLS_INSTALLER_{flag name}

Wobei {flag name} die Variante in Großbuchstaben und Unterstrichen des Konfigurationsflags ist. Beispielsweise kann --auth-service-admin-client-id durch die Verwendung der Umgebungsvariable AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_CLIENT_ID bereitgestellt werden.

Zusätzlich wird eine .env Datei im selben Arbeitsverzeichnis geladen, aus dem das Installationsprogramm ausgeführt wird. Dadurch wird Folgendes ermöglicht:

echo 'AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_CLIENT_ID=my-admin-client' > .env
./installer

Beispielkonfiguration

Beispielkonfigurationen für die Installation von axe DevTools.

Befehlszeilenflags

./installer \
  --axe-database-name="axe" \
  --axe-database-password="secret" \
  --master-database-name="postgres" \
  --master-database-user="postgres" \
  --master-database-password="postgres" \
  --master-database-host="localhost" \
  --master-database-port="5432" \
  --database-encryption-key="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
  --database-encryption-iv="bbbbbbbbbbbbbbbb" \
  --extension-id="lhdoppojpmngadmnindnejefpokejbdd" \
  --address="https://axe.mycompany.com" \
  --cookie-secrets="foo,bar" \
  --auth-service-url="https://auth.mycompany.com" \
  --auth-service-admin-username="admin" \
  --auth-service-admin-password="SECRET" \
  --auth-service-admin-client-id="admin-cli" \
  --auth-service-axe-admin-password="SECRET" \
  --auth-service-axe-admin-username="axe-admin" \
  --auth-service-realm="axe" \
  --auth-service-public-client-id="onprem_public" \
  --auth-service-confidential-client-id="onprem_confidential" \
  --migration-directory="./migrations" \
  --ml-service-api-key="AAAAAAAAAAAAAA" \
  --ml-service-url="http://axe.mlservice.com" \
  --ml-service-timeout=50000 \
  --shared-with="users" \
  --billing-service-url="http://axe.billing.service.url" \
  --migrate-to-billing="true" \
  --billing-service-admins="admin1@deque.com" \
  --accept-self-signed-ssl="true" \
  --max-migration-concurrency=20 \
  --enable-audit-log="false" \
  --smtp-host="http://smtp.host" \
  --smtp-port="8125" \
  --smtp-username="user" \
  --smtp-password="password"

Umgebungsvariablen (.env)

AXE_DEVTOOLS_INSTALLER_AXE_DATABASE_NAME="axe"
AXE_DEVTOOLS_INSTALLER_AXE_DATABASE_PASSWORD="secret"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_NAME="postgres"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_USER="postgres"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_PASSWORD="postgres"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_HOST="localhost"
AXE_DEVTOOLS_INSTALLER_MASTER_DATABASE_PORT="5432"
AXE_DEVTOOLS_INSTALLER_DATABASE_ENCRYPTION_KEY="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
AXE_DEVTOOLS_INSTALLER_DATABASE_ENCRYPTION_IV="bbbbbbbbbbbbbbbb"
AXE_DEVTOOLS_INSTALLER_MIGRATION_DIRECTORY="./migrations"
AXE_DEVTOOLS_INSTALLER_AXE_USER="axe"
AXE_DEVTOOLS_INSTALLER_EXTENSION_ID="lhdoppojpmngadmnindnejefpokejbdd"
AXE_DEVTOOLS_INSTALLER_ADDRESS="https://axe.mycompany.com"
AXE_DEVTOOLS_INSTALLER_COOKIE_SECRETS="foo,bar"
AXE_DEVTOOLS_INSTALLER_ALLOWED_EMAIL_DOMAINS=""
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_URL="https://auth.mycompany.com"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_REALM="axe"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_PASSWORD="secret"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_USERNAME="admin"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_AXE_ADMIN_USERNAME="axe-admin"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_AXE_ADMIN_PASSWORD="secret"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_PUBLIC_CLIENT_ID="onprem_public"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_CONFIDENTIAL_CLIENT_ID="onprem_confidential"
AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_CLIENT_ID="admin-cli"
AXE_DEVTOOLS_INSTALLER_ML_SERVICE_API_KEY="your-api-key"
AXE_DEVTOOLS_INSTALLER_ML_SERVICE_URL="https://axe-ml.deque.com"
AXE_DEVTOOLS_INSTALLER_ML_SERVICE_TIMEOUT="30000"
AXE_DEVTOOLS_INSTALLER_SHARED_WITH="users"
AXE_DEVTOOLS_INSTALLER_BILLING_SERVICE_URL="http://axe-billing.service.com"
AXE_DEVTOOLS_INSTALLER_MIGRATE_TO_BILLING="true"
AXE_DEVTOOLS_INSTALLER_BILLING_SERVICE_ADMINS="admin1@deque.com"
AXE_DEVTOOLS_INSTALLER_ACCEPT_SELF_SIGNED_TLS="false"
AXE_DEVTOOLS_INSTALLER_SMTP_HOST="http://smtp.host"
AXE_DEVTOOLS_INSTALLER_SMTP_PORT="8125"
AXE_DEVTOOLS_INSTALLER_SMTP_USERNAME="user"
AXE_DEVTOOLS_INSTALLER_SMTP_PASSWORD="password"
AXE_DEVTOOLS_INSTALLER_ENABLE_AUDIT_LOG="false"

Notizen

Protokollierung

Protokolle werden derzeit gesendet an stdio Die Protokolle werden basierend auf Ihrer Systemkonfiguration rotiert (nicht von Axe selbst vorgegeben).

Diese können mit journalctl abgerufen werden. Zum Beispiel:

journalctl -u axe
-- Logs begin at Tue 2020-05-05 13:51:35 UTC, end at Tue 2020-05-05 14:14:34 UTC. --
May 05 13:54:45 c8df7dc28ee3 systemd[1]: Started Axe Enterprise Service.
May 05 13:54:45 c8df7dc28ee3 axe-service[766]: {"config":{"extensionURL":"https://chrome.google.com/webstore/detail/axe/lhdoppojpmngadmnindnejefpokejbdd","port":"3000","assetC
DN":"","connection":{"host":"localhost","database":"walnut","user":"walnut","password":"<redacted>"},"defaultOrganization":{"name":"Axe Organization","realm":"axe"},"keycloak"
:{"url":"https://localhost","publicClientId":"axe-public","realm":{"username":"admin","password":"<redacted>","client_id":"axe-confidential","client_secret":"<redacted>"}},"ro
leLockPrefix":"team-","trackingID":"UA-132342340-1","datadog":{"host":"localhost","port":8125,"prefix":"axepro.server."}},"level":"info","message":"Starting application"}
May 05 13:54:45 c8df7dc28ee3 axe-service[766]: {"connection":{"host":"localhost","database":"walnut","user":"walnut","password":"<redacted>"},"level":"info","message":"Connect
ing to database"}
May 05 13:54:46 c8df7dc28ee3 axe-service[766]: {"message":"Connected to database","level":"info"}
May 05 13:54:46 c8df7dc28ee3 axe-service[766]: {"port":"3000","level":"info","message":"listening"}

Systemstatus

Um den gesamten Systemstatus anzuzeigen, verwenden Sie systemctl:

systemctl status

Um den Status des Axe-Dienstes anzuzeigen, gehen Sie wie folgt vor:

systemctl status axe

Starten/Stoppen von Axe-Diensten

Um einen Dienst zu starten/stoppen, verwenden Sie systemctl:

systemctl stop axe
systemctl start axe

Selbstsignierte TLS/SSL-Zertifikate

Wenn selbstsignierte TLS/SSL-Zertifikate verwendet werden, muss AXE_DEVTOOLS_INSTALLER_ACCEPT_SELF_SIGNED_TLS=true oder --accept-self-signed-tls=true festgelegt werden.

Machine Learning (ML)

Standardmäßig sind die ML-Erweiterungen der Axe DevTools Extensions aktiviert.

Um die ML-Funktionalität auszuführen, kommuniziert der axe DevTools Server (axe Account Portal) mit dem ML service , das wiederum mit dem Sagemaker instance kommuniziert. Sagemaker führt die maschinelle Bildverarbeitungsinferenz durch, mit der der manuelle Arbeitsaufwand in IGTs reduziert wird. Der ML-Dienst verarbeitet alle Bilddaten, die für Inferenzen und andere Zwecke verwendet werden – wie etwa Screenshots von Problemen – und speichert die Daten für die langfristige Verwendung.

SageMaker speichert keine Daten und es wird daher allen Kunden empfohlen, ihren Instanzen die Kommunikation mit dem zentral gehosteten Modell zu erlauben. Ein Kunde kann die Deaktivierung dieser Funktion beantragen. In diesem Fall verlieren sie den Zugriff auf die ML-Modellerweiterungen im Produkt, die ihnen bei der Optimierung ihrer Tests und der Automatisierung ansonsten manueller Aufgaben helfen können. Die freigegebenen Problem-Screenshots und die Farbkontrastanalyse würden auch ohne SageMaker weiterhin funktionieren.

Private und lokale Instanz können ML-Funktionen unterstützen, indem die Instanz über die Umgebungsvariable ML_SERVICE (die URL des ML-Dienstes) auf eine ML-Dienstinstanz verweist (diese kann geteilt oder nicht geteilt werden) und die Umgebungsvariable ML_SERVICE_API_KEY mit einem gültigen API-Schlüssel festgelegt wird.

Funktionen für maschinelles Lernen

  • Screenshots des Problems (können auf der Seite „Problem teilen“ angezeigt werden)
  • Automatisches Tool zur Überprüfung des Farbkontrasts
  • Automatische Elementrollenerkennung
  • Automatische Erkennung der Eingabebezeichnung

Authentifizierung

Deque SSO ist erforderlich, damit sich Benutzer bei der Anwendung anmelden können. Dieser SSO-Dienst kann zwischen mehreren Deque-Produkten gemeinsam genutzt und auf verschiedene Arten eingerichtet werden. Wie oben dokumentiert, gibt es eine Reihe von Umgebungsvariablen AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_*, die es der axe DevTools-Erweiterung ermöglichen, Benutzern die Anmeldung bei der Anwendung zu ermöglichen.