オンプレミスインストール手順

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

このドキュメントは、オンプレミス環境に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 nginx

PostgreSQL

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 status

axe サービスのステータスを見るには、次の操作を行ってください:

systemctl status axe

Axe サービスの開始 / 停止

サービスを開始 / 停止するためには、 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拡張機能がユーザーのアプリケーションへのログインを許可するのを可能にします。