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

Zabbixの最新バージョンはソースからコンパイルすることで入手できます。

Zabbixをソースからインストールするためのステップバイステップのチュートリアルはこちらです。 

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

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

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

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

[Zabbixダウンロードページ](http://www.zabbix.com/download_sources#70LTS)
にアクセスし、ソースアーカイブをダウンロードします。ダウンロード後、次を実行して
ソースを展開します。

    tar -zxvf zabbix-7.0.0.tar.gz

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

[comment]: # ({/2e98ce22-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プロセスにはホームディレクトリは必要ないため、通常は作成しないことをお勧めします。
ただし、ホームディレクトリを必要とする機能(例: MySQL認証情報を`$HOME/.my.cnf`に保存する)が必要な場合は、次のコマンドを実行してホームディレクトリを作成できます。

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]: # ({ecd76a0a-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-libpcre[=DIR]` - Zabbix は常に PCRE ライブラリとともにコンパイルされます。このオプションは、カスタムの PCRE インストールパスを指定できるようにするだけです。
-   `--with-mysql=/path/to/mysql_config` - 特定の MySQL クライアントライブラリ設定へのパスを指定します。複数のバージョンの MySQL または MariaDB がインストールされている場合に便利です。
-   `--with-oracle` - Oracle Call Interface (OCI) API の場所を指定します。
-   `--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/known_issues/compilation_issues)

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

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

::: noteclassic
[Zabbix Git repository](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]: # ({7ed89806-ed4e56ce})
##### PHPファイルのコピー

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

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]: # ({/7ed89806-ed4e56ce})

[comment]: # ({ae1b267f-63583cbb})
##### Webインターフェースのインストール

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

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

[comment]: # ({8751cf7f-5ea0c792})
#### Zabbixエージェント 2 のロード可能プラグインのインストール

Zabbixエージェント 2 のロード可能プラグインのインストールが必要なのは、組み込みプラグインでカバーされていない監視対象（例: MongoDBサーバーまたはクラスター、PostgreSQL およびその派生製品など）を監視したい場合のみです。  
[ロード可能プラグイン](/manual/extensions/plugins#loadable-plugins) および [組み込みプラグイン](/manual/extensions/plugins#built-in-plugins) の完全な一覧を参照してください。

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

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

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

    make

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

プラグインの実行ファイルは、Zabbixエージェント 2 からロード可能である限り、任意の場所に配置できます。  
プラグイン設定ファイルで、プラグインバイナリへのパスを指定してください。たとえば、[PostgreSQL](/manual/appendix/config/zabbix_agent2_plugins/postgresql_plugin) プラグインの postgresql.conf では次のように指定します。

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

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

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

プラグインの設定の詳細については、[セットアップ](/manual/extensions/plugins#configuring-plugins) に進んでください。

Zabbix が提供するロード可能プラグインでは、以下のビルドターゲットを持つシンプルな makefile が使用されています。

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

[comment]: # ({/8751cf7f-5ea0c792})

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

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

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

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

    ./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]: # ({/3c8ef27d-1a519c06})

[comment]: # ({a056dfd8-76c01064})
#### Zabbix web serviceのインストール

Zabbix web serviceのインストールは、[スケジュールレポート](/manual/web_interface/frontend_sections/reports/scheduled)を使用したい場合にのみ必要です。

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

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

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

web serviceがインストールされているマシンで zabbix\_web\_service を実行します:

    zabbix_web_service

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

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

