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

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

ハードウェア要件

私たちの負荷テストにより、AWSt2.microが小規模なユーザーベース(約25人)をサポートできることが証明されています。アプリケーションに重大な負荷をかけることなく動作します。t2.microと同等の仕様を持たないサーバーにaxeを展開することはお勧めしません。

スペック 要件
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サーバーでは、AWSアカウント内のEC2インスタンスに向けたAレコードがあります。

このドキュメントで使用されている例のDNSはaxe.mycompany.comです。

SELinux設定

Axeには、1つのSELinuxフラグを無効にする必要があります。

setsebool -P httpd_can_network_connect 1

これにより、NGINXがリバースプロキシとして機能し、外部へのネットワーク要求に応答できるようになります。

ユーザー

インストーラーはrootユーザーとして実行することが期待されています。もしrootユーザーにsudo suできないなら、インストーラーは失敗します。

インストーラーは、次のユーザーを作成します。

ユーザー 目的
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プログラムを実行することです。

インストーラーの設定

インストーラーを設定するために多くの構成フラグが必要です。以下の表はinstallerプログラムに渡される各CLIフラグを説明しています。

オプション 説明
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-idAXE_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 Server(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拡張機能がユーザーにアプリケーションへのログインを許可するには、多くのAXE_DEVTOOLS_INSTALLER_AUTH_SERVICE_*環境変数が必要です。