オンプレミスインストール手順
このドキュメントは、オンプレミス環境にaxe DevToolsをインストールする手順について説明します。
要件
axeをインストールする前に、次の要件が満たされていることを確認してください。
オペレーティングシステム
AxeはRHEL7またはRHEL8で動作するように設計されています。他のオペレーティングシステムは現在サポートされていません。
axeのインストール前に、システムが以下のコマンドを通じて更新されていることが期待されます:
yum update -yハードウェア要件
弊社のロードテストにより、AWS t2.micro が小規模ユーザー基盤(約25ユーザー)のサポートが可能であり、アプリケーションに大きな負荷をかけないことが実証されています。以下のスペックに準拠していないサーバーへのaxeの展開は推奨しません。 t2.micro。
| スペック | 要件 |
|---|---|
| CPUコア | 1 |
| CPU速度 | 3.3 GHz |
| RAM | 1 GB |
| ストレージ | 15 GB |
より大規模なユーザーベースの場合は、以下の表をご参照ください。
| ユーザー | CPU | RAM (GB) | AWS T2 サイズ |
|---|---|---|---|
| 100 | 1 | 2 | small |
| 300 | 2 | 4 | medium |
| 500 | 4 | 8 | large |
| 700 | 8 | 16 | xlarge |
| 1000 | 8 | 32 | 2xlarge |
どのマシンサイズでも、最低15 GBの物理的ストレージ(ドライブスペース)が必要です。ただし、30 GB以上を推奨します。
ネットワーク要件
axeは、現在のところ、要求に応答する以外のネットワークアクセスを必要としません。
axeは、デプロイされたシステム上で以下のポートを開きます:
| ポート番号 | インターネットからアクセス可能 | 目的 |
|---|---|---|
| 80 | はい | 着信HTTPトラフィック |
| 443 | はい | 着信HTTPSトラフィック(SSLモードで実行する場合のみ) |
| 3000 | いいえ | Axeサーバー |
PostgreSQLをAxeと同じマシンで実行する予定の場合、その標準ポート(5432)は開放されますが、外部インターネットからのアクセスはできません。
DNS要件
Axe用のDNSを作成する必要があります。このDNSは、会社のファイアウォールの背後、自分のプライベートネットワーク内、またはパブリックインターネットにアクセス可能である可能性があります。私たちのプライベートAxeサーバーでは、 A レコードがAWSアカウント内のEC2インスタンスを指しています。
このドキュメントで使用されている例のDNSは axe.mycompany.comです。
SELinux設定
Axeには、1つのSELinuxフラグを無効にする必要があります。
setsebool -P httpd_can_network_connect 1これにより、NGINXが リバースプロキシ として機能し、出力ネットワーク要求に応答できるようになります。
ユーザー
インストーラーは、 root ユーザーとして実行することが期待されています。もし、 sudo su ユーザーに root できない場合、インストーラーは失敗します。
インストーラーは、次のユーザーを作成します。
| ユーザー | 目的 |
|---|---|
| nginx | nginxサービスを実行 |
| axe | axeサービスを実行 |
| postgres | postgresサービスを実行 |
これらのユーザーのいずれも昇格された権限は必要ありません。
依存関係
Axeインストーラーは、すべての依存関係をバンドルしています。Axeがインストールされるサーバーは、 インターネットアクセス がなくてもAxeの稼働に必要なものを取得する必要はありません。
Axeの展開には、次のソフトウェアが必須依存関係となります。
- NGINX - Axeサーバーをネットワークに公開
- PostgreSQL - データストレージ
AxeサーバーはNode.jsを介して実行されますが、システムにNodeをインストールする必要はありません。
NGINX
NGINXは、Axeサーバーへのトラフィックを転送するようにインストール/設定する必要があります。NGINXの設定例が提供されています(詳しくは axe-nginx-example.conf)。
NGINXをインストールするために必要なRPMは、axeインストーラーに含まれています。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 nginxPostgreSQL
axeサーバーはデータストレージにPostgreSQLを使用します。インストーラーに有効なPostgreSQL接続を提供する必要があります。
Axeは、外部のPostgreSQL(例: AWSがホストするRDS)や、同じマシン上で動作するPostgreSQLサーバーの両方をサポートしています。
PostgreSQLをインストールするために必要なRPMは、axeインストーラーに含まれています。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インストーラーの実行
インストーラーは root ユーザーとして実行する必要があります。以下を実行して、 root ユーザーであることを確認してください。
whoami以前にインストーラーを抽出した場合は、 migrations ディレクトリをクリアしてください。
rm -f installer/migrations/*.sqlインストーラーは、単一の(アーカイブ)ファイルとして提供されます: installer.tar.gz。アーカイブを抽出するには、次を実行します。
mkdir installer
tar -xvzf ./installer.tar.gz -C ./installerこれにより、以下のような構造になります:
.
└── installer
├── axe-nginx-example.conf
├── axe-service
├── installer
├── migrations
│ ├── 0000-00-00-baseline.sql
│ └── [...]
└── rpms
├── nginx
└── postgres抽出後、次のステップは installer/installer プログラムを実行することです。
インストーラーの設定
インストーラーを設定するには、多くの設定フラグが必要です。以下の表は、CLIに渡される各フラグについて説明します。 installer プログラム。
| オプション | 説明 |
|---|---|
| axe-database-name | Axeのためのデータベース名 |
| axe-database-password | Axeデータベースのパスワード |
| master-database-name | マスターデータベース名 |
| master-database-user | マスターデータベースのユーザー |
| master-database-password | マスターデータベースユーザーのパスワード |
| master-database-host | マスターデータベースのホスト |
| master-database-port | マスターデータベースのポート(デフォルトは5432) |
| database-encryption-key | データベース暗号化用の32文字のキー |
| database-encryption-iv | データベース暗号化用の16文字のIV |
| migration-directory | Axeデータベースマイグレーションが含まれるディレクトリ |
| axe-user | axe-serviceを実行するシステムユーザーの名前 |
| extension-id | Axe拡張のためのGoogle Chrome拡張ID |
| address | Axeサービスが想定するアドレス(URL) |
| port | Axeサービスがリッスンするポート(デフォルトは3000) |
| cookie-secrets | Axeクッキー署名用の秘密(カンマ区切りのリスト) |
| allowed-email-domains | メールドメインのホワイトリスト(カンマ区切りのリスト) |
| auth-service-url | 既存の認証サービスデプロイメントのアドレスを設定 |
| auth-service-realm | Axeが使用するレルム名 |
| auth-service-admin-username | 既存の「マスター」レルム管理者のユーザー名 |
| auth-service-admin-password | 既存の「マスター」レルム管理者のパスワード |
| auth-service-axe-admin-username | Axe管理者ユーザーのユーザー名 |
| auth-service-axe-admin-password | Axe管理者ユーザーのパスワード |
| auth-service-public-client-id | このAxeデプロイメントの公開クライアントID |
| auth-service-confidential-client-id | このAxeデプロイメントの機密クライアントID |
| auth-service-admin-client-id | 既存の管理クライアントのクライアントID(通常「admin-cli」) |
| ml-service-api-key | Deque機械学習サービス用のAPIキー |
| ml-service-url | Deque機械学習サービスのURL |
| ml-service-timeout | Deque機械学習サービスのリクエストタイムアウト(ミリ秒) |
| shared-with | テストと問題の共有を上書きします。「users」または「anyone」のいずれか。 |
| mobile-app-url | モバイルダッシュボードのURLを設定 |
| api-keys | サービス間APIキー(カンマ区切り) |
| cors-domains | CORSドメイン(カンマ区切り) |
| billing-service-url | 請求サービスのURL(オプション) |
| migrate-to-billing | 既存のユーザーを請求サービスに移行 |
| billing-service-admins | 請求サービスへの移行中に特定のユーザーを管理者にする(オプション; --billing-service-urlと--migrate-to-billingが必要) |
| accept-self-signed-ssl | 自己署名のTLS/SSL証明書を受け入れる(オプション) |
| max-migration-concurrency | ユーザーを請求サービスに移行する際に行うリクエストの最大数(オプション; デフォルトは20) |
| enable-audit-log | 監査ログ機能を有効または無効にする |
| smtp-host | メール送信用のSMTPホスト |
| smtp-port | メール送信用のSMTPポート |
| smtp-username | メール送信用のSMTPユーザー名 |
| smtp-password | メール送信用のSMTPパスワード |
| from-email-address | 送信メールの送信元として使用するメールアドレス |
設定フラグの注意事項
--migration-directoryは、インストーラーのtarballが展開されたディレクトリを指している必要があります。さらに/migrations。これはおそらく$PWD/migrations。--addressは、axeインストールのために事前に設定されたDNSです。--allowed-email-domains設定可能 です。あなたのaxeインストールが特定のメールドメインの使用のみを許可するべき場合 (例*@mycompany.com)。--extension-idのデフォルトは、すべての 既知の axe 拡張ID(ChromeやEdgeを含む)です。--database-encryption-key必ず 32文字である必要があります。--database-encryption-iv必ず 16文字である必要があります。
環境変数
これらの設定フラグは、次の形式の環境変数によって設定できる場合があります:
AXE_DEVTOOLS_INSTALLER_{flag name} {flag name} は、設定フラグのスネークケース大文字表記です。たとえば、 --auth-service-admin-client-id は、 AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_CLIENT_ID 環境変数を使用して指定することができます。
さらに、 .env インストーラーが実行される同じ作業ディレクトリにあるファイルが読み込まれ、次のことが可能になります:
echo 'AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_ADMIN_CLIENT_ID=my-admin-client' > .env
./installer設定例
axe DevTools をインストールするためのサンプル設定。
コマンドラインフラグ
./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" \
--port="3000" \
--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" \
--mobile-app-url="https://some-mobile-dashboard.com" \
--api-keys="comma,separated,list,of,service-to-service,keys" \
--cors-domains="comma,separated,list,of,domains" \
--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" \
--from-email-address="noreply@mycompany.com"環境変数 (.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_PORT="3000"
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_MOBILE_APP_URL="https://some-mobile-dashboard.com"
AXE_DEVTOOLS_INSTALLER_API_KEYS="comma,separated,list,of,service-to-service,keys"
AXE_DEVTOOLS_INSTALLER_CORS_DOMAINS="comma,separated,list,of,domains"
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_FROM_EMAIL_ADDRESS="noreply@mycompany.com"
AXE_DEVTOOLS_INSTALLER_ENABLE_AUDIT_LOG="false"ノート
ログ
ログは現在、 stdioに送信されています。ログはシステム構成に基づいてローテートされます (axe 自身によってではありません)。
は、で取得可能です。 journalctlたとえば:
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"}システムステータス
システムの全体的な状態を見るためには、 systemctlを使用してください。
systemctl statusaxe サービスのステータスを見るには、次の操作を行ってください:
systemctl status axeAxe サービスの開始 / 停止
サービスを開始 / 停止するためには、 systemctlを使用してください:
systemctl stop axe
systemctl start axe自己署名のTLS/SSL証明書
自己署名のTLS/SSL証明書を使用している場合、 AXE_DEVTOOLS_INSTALLER_ACCEPT_SELF_SIGNED_TLS=true または --accept-self-signed-tls=true を設定する必要があります。
機械学習(ML)
デフォルトでは、axe DevTools拡張機能のML強化が有効になっています。
ML機能を実行するために、axe DevToolsサーバー(axeアカウントポータル)は ML service と通信し、その後 Sagemaker instanceと通信します。Sagemakerは、IGTの手動作業を減らすために使用される機械ビジョンの推論を実行します。MLサービスは、推論や他の目的(問題のスクリーンショットなど)に使用されるすべての画像データを処理し、長期間にわたってデータを保存します。
SageMakerはデータを保存しないため、すべての顧客が自分のインスタンスを中央でホストされているモデルと通信させることをお勧めします。顧客はこの機能を無効にするよう求めることができます。これを行うと、製品内のテストを最適化し、手作業を自動化するのに役立つMLモデルの強化機能へのアクセスを失います。共有の問題スクリーンショットと色のコントラスト分析は、SageMakerなしでも機能し続けます。
プライベートおよびオンプレミスのインスタンスは、インスタンスをMLサービスインスタンスに(共有されているかどうかにかかわらず)指すことにより、ML機能をサポートできます。これはML_SERVICE環境変数(MLサービスのURL)を介して行い、有効なAPIキーを持つML_SERVICE_API_KEY環境変数を設定します。
機械学習機能
- 問題のスクリーンショット(共有問題ページで表示可能)
- 自動色コントラストレビューツール
- 自動要素ロール検出
- 自動入力ラベル検出
認証
Deque SSOは、ユーザーがアプリケーションにログインするために必要です。このSSOサービスは複数のDeque製品間で共有することができ、さまざまな方法で立ち上げることができます。前述のように、 AXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_* 環境変数が、axe DevTools拡張機能がユーザーのアプリケーションへのログインを許可するのを可能にします。
