[comment]: # translation:outdated

[comment]: # aside: 2

[comment]: # ({b7644ee6-af2eaf2f})
# ソースからのインストール

Zabbixの最新バージョンは、ソースからコンパイルすることで入手できます。
[Zabbixソースコードの取得](#getting-zabbix-source-code)も参照してください。

ソースからZabbixをインストールするためのステップバイステップのチュートリアルをここに示します。

[comment]: # ({/b7644ee6-af2eaf2f})

[comment]: # ({a81f3302-0040d992})
#### Zabbixデーモンのインストール

[comment]: # ({/a81f3302-0040d992})

[comment]: # ({14f3e814-8cc2c1b1})
##### 1 ソースアーカイブのダウンロード

[Zabbixダウンロードページ](http://www.zabbix.com/download_sources#pre-release)にアクセスし、ソースアーカイブをダウンロードします。ダウンロードしたら、以下のコマンドを実行してソースを展開します。

    tar -zxvf zabbix-8.0.0.tar.gz

::: notetip
コマンドには正しいZabbixバージョンを入力してください。ダウンロードしたアーカイブ名と一致する必要があります。
:::

[comment]: # ({/14f3e814-8cc2c1b1})

[comment]: # ({65663a59-87e1101d})
##### 2 ユーザーアカウントの作成

すべてのZabbixデーモンプロセスは、特権のないシステムユーザーで実行されます。
Zabbixデーモンが特権のないユーザーアカウントから起動された場合、そのユーザーで実行され続けます。

デフォルトの設定では、デーモンが `root` として起動された場合、`zabbix` ユーザーアカウントに切り替わります。このアカウントは存在している必要があります。
`zabbix` システムユーザーとグループを作成するには、以下のコマンドを実行してください。

RedHat系システムの場合:

    groupadd --system zabbix
    useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

Debian系システムの場合:

    addgroup --system --quiet zabbix
    adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix

Zabbixフロントエンド用に別のユーザーアカウントを作成する必要はありません。

###### セキュリティ推奨

Zabbixの[サーバー](/manual/concepts/server)と[エージェント](/manual/concepts/agent)が同じマシンで動作する場合は、**別々のユーザーアカウント**で実行することを推奨します。
両方を同じユーザーで実行すると、エージェントがサーバーの設定ファイルにアクセスできるようになり、データベースのパスワードなどの機密情報がZabbixの管理者レベルのユーザーに漏洩する可能性があります。

::: noteimportant
Zabbixを `root`、`bin`、または特別な権限を持つ他のアカウントで実行することは、セキュリティリスクとなります。
:::

###### ホームディレクトリ（オプション）

Zabbixプロセスはホームディレクトリを必要としないため、通常は作成を推奨しません。
ただし、$HOME/.my.cnfにMySQLの認証情報を保存するなど、ホームディレクトリが必要な機能を利用する場合は、以下のコマンドで作成できます。

RedHat系システムの場合:

    mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
    chown zabbix:zabbix /usr/lib/zabbix

Debian系システムの場合:

    mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
    chown zabbix:zabbix /var/lib/zabbix

[comment]: # ({/65663a59-87e1101d})

[comment]: # ({06256db0-06256db0})
##### 3 Zabbixデータベースの作成

Zabbixの[サーバー](/manual/concepts/server)および[プロキシ](/manual/concepts/proxy)デーモン、ならびにZabbixフロントエンドにはデータベースが必要です。Zabbix[エージェント](/manual/concepts/agent)の実行には必要ありません。

データベーススキーマの作成とデータセットの挿入には、SQL[スクリプトが提供されています](/manual/appendix/install/db_scripts)。Zabbixプロキシのデータベースにはスキーマのみが必要ですが、Zabbixサーバーのデータベースにはスキーマに加えてデータセットも必要です。

Zabbixデータベースを作成したら、Zabbixのコンパイルの次の手順に進みます。

[comment]: # ({/06256db0-06256db0})

[comment]: # ({40504a3b-8ff1b41c})
##### 4 ソースの設定

Zabbixサーバー、Zabbixプロキシ、またはZabbixエージェントをビルドするには、GNU拡張を含むC99が必要です。
このバージョンは、CFLAGS="-std=gnu99" を設定することで明示的に指定できます。

    export CFLAGS="-std=gnu99"

::: noteclassic
[Zabbix Gitリポジトリ](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse) からインストールする場合は、最初に以下を実行する必要があります。

`./bootstrap.sh`
:::

Zabbixサーバーまたはプロキシ用にソースを設定する場合は、使用するデータベースの種類を指定する必要があります。サーバーまたはプロキシのプロセスには、一度に1種類のデータベースタイプしかコンパイルできません。

サポートされているすべての設定オプションを確認するには、展開したZabbixソースディレクトリ内で以下を実行します。

    ./configure --help

Zabbixサーバーおよびエージェント用にソースを設定するには、次のように実行できます。

    ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares

Zabbixサーバー用（PostgreSQLなど）にソースを設定するには、次のように実行できます。

    ./configure --enable-server --with-postgresql --with-net-snmp

Zabbixプロキシ用（SQLiteなど）にソースを設定するには、次のように実行できます。

    ./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

Zabbixエージェント用にソースを設定するには、次のように実行できます。

    ./configure --enable-agent

または、Zabbix agent 2 の場合は次のように実行できます。

    ./configure --enable-agent2

::: noteclassic
Zabbix agent 2 をビルドするには、[サポートされているGoのバージョン](/manual/installation/requirements#agent-2) がインストールされている必要があります。
:::

コンパイルオプションに関する注意:

-   `--enable-agent` - Zabbixエージェント、および [Zabbix get](/manual/concepts/get) と [Zabbix sender](/manual/concepts/sender) のコマンドラインユーティリティをコンパイルします。
-   `--with-libcurl` - 仮想マシンの監視、SMTP認証、および `web.page.*` [Zabbixエージェントアイテム](/manual/config/items/itemtypes/zabbix_agent) に必要です。あわせて参照: [要件](/manual/installation/requirements#serverproxy) (libcurl)。
-   `--with-libxml2` - 仮想マシンの監視に必要です。
-   `--with-libpcre2[=DIR]` - Zabbixは常にPCRE2ライブラリを使用してコンパイルされます。このオプションでは、カスタムPCRE2インストールパスのみを指定できます。
-   `--with-mysql=/path/to/mysql_config` - 特定のMySQLクライアントライブラリ設定へのパスを指定します。複数のバージョンのMySQLまたはMariaDBがインストールされている場合に便利です。
-   `--enable-static` - ライブラリを静的リンクします（[Solaris](https://docs.oracle.com/cd/E18659_01/html/821-1383/bkajp.html) ではサポートされていません）。必要なライブラリがないシステムにコンパイル済みバイナリを配布する予定がある場合に使用してください。Zabbixサーバーのビルド時には推奨されません。サーバーを静的にビルドするには、すべての外部ライブラリの静的バージョンが必要です。configureスクリプトはこれを自動的には確認しません。
-   `--with-stacksize=<value>` - スレッドごとのスタックサイズをキロバイト単位で設定します（例: `--with-stacksize=512`）。スタックオーバーフローが原因でZabbixがクラッシュまたはフリーズする場合（例: デフォルトのスレッドスタック制限が低いシステムでの[前処理](/manual/config/items/preprocessing)中）には、この値を増やすことができます。

::: noteimportant
ライブラリの不足やその他の問題により `./configure` が失敗した場合は、詳細なエラー情報を確認するために `config.log` ファイルを確認してください。

たとえば、`libssl` が不足している場合、直後のエラーメッセージは誤解を招く可能性があります。

    checking for main in -lmysqlclient... no
    configure: error: Not found mysqlclient library

この場合、`config.log` には実際の原因が示されます。

    /usr/bin/ld: cannot find -lssl
    /usr/bin/ld: cannot find -lcrypto

:::

あわせて参照:

-   [暗号化サポート付きでZabbixをコンパイルする](/manual/encryption#compiling-zabbix-with-encryption-support)
-   既知の[コンパイルの問題](/manual/installation/install/sources#compilation-issues)

[comment]: # ({/40504a3b-8ff1b41c})

[comment]: # ({1d0f465e-08edd3dc})
##### 5 すべてをビルドしてインストールする

::: noteclassic
[Zabbix Gitリポジトリ](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse) からインストールする場合は、
最初に次を実行する必要があります:

`$ make dbschema` 
:::

    make install

この手順は、十分な権限を持つユーザー（通常は
'root'、または `sudo` を使用して）で実行する必要があります。

`make install` を実行すると、デフォルトでデーモンのバイナリ
(zabbix\_server, zabbix\_agentd, zabbix\_proxy) は /usr/local/sbin に、
クライアントのバイナリ (zabbix\_get, zabbix\_sender) は /usr/local/bin に
インストールされます。

::: noteclassic
/usr/local とは異なる場所を指定するには、
前のソース設定手順で --prefix キーを使用します。たとえば
--prefix=/home/zabbix です。この場合、デーモンのバイナリは
<prefix>/sbin に、ユーティリティは <prefix>/bin にインストールされます。man
ページは <prefix>/share にインストールされます。
:::

[comment]: # ({/1d0f465e-08edd3dc})

[comment]: # ({f36d53db-112b74f7})
##### 6 設定ファイルの確認と編集

-   Zabbixエージェントの設定ファイル
    **/usr/local/etc/zabbix\_agentd.conf**
    を編集します。

このファイルは、zabbix\_agentdをインストールしたすべてのホストで設定する必要があります。

ファイル内でZabbixサーバーの**IPアドレス**を指定する必要があります。
他のホストからの接続は拒否されます。

-   Zabbixサーバーの設定ファイル
    **/usr/local/etc/zabbix\_server.conf**
    を編集します。

データベース名、ユーザー、およびパスワード（使用している場合）を指定する必要があります。

他のパラメータは、小規模なインストール（監視対象ホストが10台まで）の場合はデフォルトのままで問題ありません。ただし、Zabbixサーバー（またはプロキシ）のパフォーマンスを最大化したい場合は、デフォルトのパラメータを変更する必要があります。

-   Zabbixプロキシをインストールした場合は、プロキシの設定ファイル
    **/usr/local/etc/zabbix\_proxy.conf**
    を編集します。

サーバーのIPアドレスとプロキシのホスト名（サーバーで認識されている必要があります）、およびデータベース名、ユーザー、パスワード（使用している場合）を指定する必要があります。

::: noteclassic
SQLiteを使用する場合は、データベースファイルへのフルパスを指定する必要があります。DBユーザーとパスワードは不要です。
:::

[comment]: # ({/f36d53db-112b74f7})

[comment]: # ({67632a65-bbdd82ac})
##### 7 デーモンを起動する

サーバー側でzabbix\_serverを実行します。

    zabbix_server

::: noteclassic
システムで36MB（またはそれより少し多い）の共有メモリを割り当てられることを確認してください。そうでない場合、サーバーが起動しない可能性があり、サーバーのログファイルに "Cannot allocate shared memory for <type of cache>." と表示されます。これはFreeBSD、Solaris 8で発生する場合があります。
:::

監視対象のすべてのマシンでzabbix\_agentdを実行します。

    zabbix_agentd

::: noteclassic
システムで2MBの共有メモリを割り当てられることを確認してください。そうでない場合、エージェントが起動しない可能性があり、エージェントのログファイルに "Cannot allocate shared memory for collector." と表示されます。これはSolaris 8で発生する場合があります。
:::

Zabbixプロキシをインストールしている場合は、zabbix\_proxyを実行します。

    zabbix_proxy

[comment]: # ({/67632a65-bbdd82ac})

[comment]: # ({8d29e485-c9f154ca})
#### Zabbix Webインターフェースのインストール

[comment]: # ({/8d29e485-c9f154ca})

[comment]: # ({57b0b3e0-ed4e56ce})
##### PHPファイルのコピー

ZabbixフロントエンドはPHPで書かれているため、実行するにはPHPをサポートするWebサーバーが必要です。
インストールは、uiディレクトリからWebサーバーのHTMLドキュメントディレクトリにPHPファイルをコピーするだけで行えます。

Apache WebサーバーのHTMLドキュメントディレクトリの一般的な場所は以下の通りです:

-   /usr/local/apache2/htdocs (ソースからApacheをインストールした場合のデフォルトディレクトリ)
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Debian, Ubuntu, Fedora, RHEL)

HTMLルートの代わりにサブディレクトリを使用することを推奨します。
サブディレクトリを作成し、Zabbixフロントエンドファイルをコピーするには、<htdocs>を実際のディレクトリに置き換えて以下のコマンドを実行します:

    mkdir <htdocs>/zabbix
    cd ui
    cp -a . <htdocs>/zabbix

英語以外の言語を使用する場合は、[追加フロントエンド言語のインストール](/manual/appendix/install/locales)の手順を参照してください。

[comment]: # ({/57b0b3e0-ed4e56ce})

[comment]: # ({ae1b267f-63583cbb})
##### フロントエンドのインストール

Zabbixフロントエンドのインストールウィザードについては、[Webインターフェースのインストール](/manual/installation/frontend)ページを参照してください。

[comment]: # ({/ae1b267f-63583cbb})

[comment]: # ({97a2e459-c8da42bb})
#### Zabbix agent 2 のロード可能なプラグインのインストール

Zabbix agent 2 のロード可能なプラグインのインストールは、組み込みプラグインで対応していない監視対象（例: MongoDB サーバーやクラスター、PostgreSQL およびその派生版など）を監視したい場合にのみ必要です。  
[ロード可能なプラグイン](/manual/concepts/agent2/loadable-plugins) と [組み込みプラグイン](/manual/concepts/agent2/built-in-plugins) の全一覧を参照してください。

::: noteimportant
プラグインをインストールする前に、README ファイルを確認してください。  
そこには、特定の要件やインストール手順が記載されている場合があります。
:::

ソースからインストールするには、まず [ダウンロード](https://cdn.zabbix.com/zabbix-agent2-plugins/sources/) して、ロード可能なプラグインのソースアーカイブを展開します。

プラグインをコンパイルするには、展開したプラグインディレクトリに移動して `make` を実行します。

    make

::: noteclassic
Zabbix agent 2 のロード可能なプラグインをビルドするには、[サポートされている Go のバージョン](/manual/installation/requirements#agent-2) がインストールされている必要があります。
:::

プラグインの実行ファイルは、Zabbix agent 2 からロード可能であれば、どこに配置してもかまいません。  
たとえば [PostgreSQL](/manual/concepts/agent2/agent2_params_plugin/postgresql_plugin) プラグインでは、プラグインの設定ファイル内でプラグインバイナリへのパスを指定します。

    Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

プラグイン設定ファイルへのパスは、Zabbix agent 2 の設定ファイルの Include パラメータで指定する必要があります。

    Include=/path/to/plugin/configuration/file/postgresql.conf

プラグインの設定方法の詳細については、[セットアップ](/manual/concepts/agent2/configuring-plugins) を参照してください。

Zabbix が提供するロード可能なプラグインは、次のビルドターゲットを持つシンプルな makefile を使用します。

-   `make` - プラグインをビルドする
-   `make clean` - プラグインのビルドによって作成されたすべてのファイルを削除する
-   `make check` - 自己テストを実行する（実際の監視対象が必要です。例: PostgreSQL データベース）
-   `make style` - `golangci-lint` で Go コードのスタイルを確認する
-   `make format` - `go fmt` で Go コードを整形する
-   `make dist` - すべての依存関係を含むソースアーカイブを作成する

[comment]: # ({/97a2e459-c8da42bb})

[comment]: # ({760e992b-1a519c06})
#### Javaゲートウェイのインストール

JMXアプリケーションを監視したい場合にのみ、Javaゲートウェイのインストールが必要です。Javaゲートウェイは軽量で、データベースを必要としません。

ソースからインストールするには、まず[ダウンロード](/manual/installation/install/sources#download-the-source-archive)して、ソースアーカイブを展開します。

Javaゲートウェイをコンパイルするには、`./configure`スクリプトを`--enable-java`オプション付きで実行します。Javaゲートウェイをインストールすると、単一の実行ファイルだけでなくディレクトリツリー全体が作成されるため、デフォルトの/usr/local以外のインストール先を指定するために、`--prefix`オプションを指定することを推奨します。

    ./configure --enable-java --prefix=$PREFIX

Javaゲートウェイをコンパイルし、JARファイルにパッケージするには、`make`を実行します。この手順では、パス上に`javac`および`jar`実行ファイルが必要です。

    make

これで、src/zabbix\_java/binにzabbix-java-gateway-$VERSION.jarファイルが作成されます。配布ディレクトリ内のsrc/zabbix\_javaからJavaゲートウェイを実行しても問題ない場合は、[Javaゲートウェイ](/manual/java/from_sources#overview-of-files)の設定および実行手順に進んでください。そうでない場合は、十分な権限があることを確認して、`make install`を実行します。

    make install

Javaゲートウェイの設定および実行の詳細については、[セットアップ](/manual/concepts/java/from_sources)に進んでください。

[comment]: # ({/760e992b-1a519c06})

[comment]: # ({1849c64a-76c01064})
#### Zabbix Webサービスのインストール

Zabbix Webサービスのインストールは、
[定期レポート](/manual/web_interface/frontend_sections/reports/scheduled)を使用する場合にのみ必要です。

ソースからインストールするには、まず
[ダウンロード](/manual/installation/install/sources#download-the-source-archive)して、
ソースアーカイブを展開します。

Zabbix Webサービスをコンパイルするには、`./configure` スクリプトを
`--enable-webservice` オプション付きで実行します。

::: noteclassic
Zabbix Webサービスをビルドするには、[サポートされているGoのバージョン](/manual/installation/requirements#agent-2)がインストールされている必要があります。
:::

Webサービスがインストールされているマシンで、zabbix\_web\_service を実行します。

    zabbix_web_service

定期レポート生成の設定の詳細については、
[セットアップ](/manual/appendix/install/web_service)を参照してください。

[comment]: # ({/1849c64a-76c01064})

[comment]: # ({786834b2-e88f42af})
#### Zabbixソースコードの取得

Zabbixソースコードを取得する方法はいくつかあります。

-   公式Zabbix Webサイトから、リリース済みの安定版を[ダウンロード](https://www.zabbix.com/download_sources#pre-release)できます
-   公式Zabbix Webサイトの開発者ページから、nightly buildを[ダウンロード](https://www.zabbix.com/developers)できます
-   Gitソースコードリポジトリシステムから、最新の開発版を取得できます。
    -   完全なリポジトリの主要な場所は次のとおりです。
        <https://git.zabbix.com/scm/zbx/zabbix.git>
    -   masterおよびサポート対象のリリースは、Githubにもミラーされています。
        <https://github.com/zabbix/zabbix>

リポジトリをクローンするには、Gitクライアントをインストールする必要があります。公式のコマンドラインGitクライアントパッケージは、ディストリビューションでは通常 **git** と呼ばれます。たとえば、Debian/Ubuntuでインストールするには、次を実行します。

    sudo apt-get update
    sudo apt-get install git

Zabbixのすべてのソースコードを取得するには、コードを配置したいディレクトリに移動して、次を実行します。

    git clone https://git.zabbix.com/scm/zbx/zabbix.git

[comment]: # ({/786834b2-e88f42af})

[comment]: # ({0104663d-7ceec24f})
#### コンパイル時の問題

以下は、ソースからのZabbixのコンパイルに関して既知の問題です。その他のすべてのケースについては、[既知の問題](/manual/installation/known_issues)ページを参照してください。

[comment]: # ({/0104663d-7ceec24f})

[comment]: # ({568e5f9a-c904d9ff})
##### 非標準の場所にあるライブラリ

Zabbixでは、非標準の場所にあるライブラリを指定することができます。以下の例では、Zabbixは指定された非標準の場所から`curl-config`を実行し、その出力を使用して使用する正しいlibcurlを決定します。

    $ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

これは、システムにインストールされているlibcurlがこれだけの場合は動作しますが、標準の場所（たとえばパッケージマネージャによって）に別のlibcurlがインストールされている場合は動作しないことがあります。たとえば、Zabbix用に新しいバージョンのライブラリが必要で、他のアプリケーション用に古いバージョンが必要な場合などです。

したがって、非標準の場所にあるコンポーネントを指定しても、同じコンポーネントが標準の場所にも存在する場合は常に動作するとは限りません。

たとえば、`/usr/local`にインストールされた新しいlibcurlをlibcurlパッケージがまだインストールされている状態で使用すると、Zabbixが間違ったものを取得してコンパイルに失敗することがあります。

    usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
    /tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
    collect2: error: ld returned 1 exit status

ここで、関数`curl_easy_header()`は古い`/usr/lib/x86_64-linux-gnu/libcurl.so`にはありませんが、新しい`/usr/local/lib/libcurl.so`にはあります。

問題はリンカーフラグの順序にあり、解決策の1つはLDFLAGS変数でライブラリへのフルパスを指定することです。

    $ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

一部のシステムでは`-Wl,--no-as-needed`オプションが必要な場合があることに注意してください（参考：[Debian系](https://wiki.debian.org/ToolChain/DSOLinking)システムのデフォルトリンクオプション）。

[comment]: # ({/568e5f9a-c904d9ff})

[comment]: # ({44720e40-78889065})
##### 一部のシステムでスタックサイズが小さい

Zabbixがスタックオーバーフローによりクラッシュまたはフリーズする場合は、[ソースの設定](/manual/installation/install/sources#configure-the-sources)時に`--with-stacksize`オプションを使用してスレッドごとのスタックサイズを増やすことができます。
この問題は、デフォルトのスレッドスタック制限が低いシステム、特に[事前処理](/manual/config/items/preprocessing)中に複数のスレッドが作成される場合に発生することがあります。

次の例では、スレッドごとのスタックサイズを512KBに設定しています。

```bash
./configure --enable-server --with-mysql --with-stacksize=512
```

Linuxベースのシステムでは、`ulimit -s`コマンドを使用して実行時にシステムのスレッドスタック制限を確認できます。

[comment]: # ({/44720e40-78889065})
