RHEL系Linux(Rocky Linux 9)にZabbixサーバを構築したときのメモです。
環境
- Zabbix 7.0
- PHP-FPM 8.3
- MySQL 8.0
- Apache 2.4
前提
- Linuxの初期設定完了済み
- 以下のミドルウェアをインストール済み。
- Apache 2.4
- MySQL 8.0 (mysql_secure_installation込み)
- PHP-FPM 8.3
さっくりとした手順
- php.iniを修正します。
- Zabbixパッケージをインストールします。
- DBを作成しスキーマをインポートします。
- ZabbixのDBを設定します。
- Apacheのバーチャルホストを設定します。
- Zabbixサービスを有効化してFirewalldを設定します。
- 初期インストールを行います。
PHP 設定の最適化 (php.ini)
Zabbix Web UI の動作要件に合わせて PHP のパラメータを修正します。おそらく多くの方がWebインストールした後に怒られる設定です。
- php.iniのバックアップ
sudo cp -pi /etc/php.ini /path/to/backup/directory/php.ini.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- php.iniのバックアップ確認
diff -u /path/to/backup/directory/php.ini.$(date +%Y%m%d) /etc/php.ini
差分がなければバックアップ成功です。
- php.ini 修正箇所:
post_max_size = 16M(8M から変更)max_execution_time = 300(30 から変更)max_input_time = 300(60 から変更)
上記は例です。環境に合わせましょう。
- php.iniの編集確認
diff -u /path/to/backup/directory/php.ini.$(date +%Y%m%d) /etc/php.ini
+の箇所に修正した値になっていることを確認します。
- php-fpmサービス再起動(設定反映)
sudo systemctl restart php-fpm
Zabbix パッケージのインストール
- レポジトリ追加
2026年4月の最新パッケージである7.0.xを使うため、レポジトリを追加します。
- Zabbixリポジトリのインストール
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest.el9.noarch.rpm
- キャッシュのクリア
sudo dnf clean all
- EPEL リポジトリとの競合を避けるため、リポジトリを指定してインストールします。
この指定が地味に詰まりました。
sudo dnf install -y --disablerepo=epel \
zabbix-server-mysql \
zabbix-web-mysql \
zabbix-apache-conf \
zabbix-sql-scripts \
zabbix-selinux-policy \
zabbix-agent2
データベースの作成と初期データの流し込み
MySQL (MariaDB) に Zabbix 用の DB とユーザーを作成し、初期スキーマをインポートします。
- mysqlログイン
mysql -u root -p
- DB作成
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'あなたのパスワード';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
EXIT
→ SET GLOBAL log_bin_trust_function_creators = 1;を指定しないと、zabbixに必要なスキーマを拒否することがあります。
- スキーマインポート
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
- 設定を元に戻す
mysql -u root -p -e "SET GLOBAL log_bin_trust_function_creators = 0;"
インポート後にこれを行っておかないと、MySQLがインジェクションとなり得るスキーマを許可することがあります。
Zabbix Server の DB 設定
サーバー本体が DB に接続するためのパスワードを設定します。
/etc/zabbix/zabbix_server.conf を以下のように修正します。
修正箇所:
DBPassword=あなたのパスワード(コメントアウト#を外して追記)
Apache (httpd) バーチャルホストの設定
上記、dnfで設定した標準設定を無効化し、/etc/httpd/virtual/ 配下で管理するように変更します。
これは、「一つのサーバにWebサーバとZabbixを同時に立てる必要がある」などで重要なテクニックです。
- ディレクトリ準備
sudo mkdir -p /etc/httpd/virtual
- 標準設定の退避
sudo mv /etc/httpd/conf.d/zabbix.conf /path/to/backup/direcotry/zabbix.conf.$(date +%Y%m%d)
- バーチャルホスト設定の作成
/etc/httpd/virtual/zabbix.conf
等として、以下のようなファイルを作ります。
<VirtualHost *:80>
# 自分の環境に合わせます
ServerName zabbix.example.com
DocumentRoot /usr/share/zabbix
<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# FPM設定
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
# 任意のログディレクトリを指定します
ErrorLog /var/log/httpd/zabbix_error.log
CustomLog /var/log/httpd/zabbix_access.log combined
</VirtualHost>
サービスの起動と Firewalld の設定
全てのコンポーネントを起動し、必要なポートを開放します。これも地味にはまるポイントです。
- サービスの有効化と起動
sudo systemctl enable --now zabbix-server zabbix-agent2 httpd php-fpm
- Firewalld の許可
sudo firewall-cmd --permanent --add-service={zabbix-server,zabbix-agent,http}
- Firewalldのリロード
sudo firewall-cmd --reload
Web セットアップとログイン
- ブラウザで
http://(ServerName)/にアクセス。 - 全てのチェック項目が OK であることを確認し、DB情報を入力して完了。
- 初期ログイン情報:
- User:
Admin(Aは大文字) - Password:
zabbix


