【構築手順】CactiをCentOS 7で構築する(MySQL使用)

はじめに

CactiをCentOS 7で構築してみようと思います。LAMP(Linux、Apache、MySQL、PHP)もインストールすることになり、バージョンは以下の通りとなっています。

ソフトウェア バージョン
CentOS 7.7.1908 (Core)
Apache 2.4.6
MySQL 5.7.28
PHP 5.4.16

 

本記事のゴールはCactiのWEBインターフェース画面にログインするところまでです。

 

CentOS 7のインストールと設定

CentOS 7は最小限のインストールでインストールを行いました。インストール後は以下の設定をしてあります。

  • IPアドレスの設定
  • NetworkManagerの無効化
  • DNSの設定
  • ホスト名の設定
  • 「net-tools」パッケージのインストール
  • 「yum update」コマンドの実行
  • SELinuxの無効化

 

rpmリポジトリ(REMIとEPEL)の追加

REMIとEPELのrpmリポジトリを追加します。

※rpmコマンドのオプションについて
-U:パッケージをアップグレードする。
-v:処理中のパッケージを表示する。
-h:進行状況を表示する。

ちなみにレポジトリのURLは下記から取得しました。

 

Apacheのインストール

  1. ApacheをEPELとREMIのリポジトリを指定してインストールします。
  2. 自動起動するように設定し、Apacheを開始します。

 

Cactiのインストール

ここでCactiをインストールします。後から足りないPHPモジュールをインストールします。CactiがサポートしているPHPは5.4.16のようです。最新の7.3を使用して何とかしようとしたらハマりました。
補足ですが、「RRDTool」も「net-snmp」も「net-snmp-utils」も自動的に入ってくれます。公式ドキュメントでは個別に案内されてました。

  1. yumコマンドでCactiをインストールします。
  2. Cactiをインストールで依存性の解決のためにインストールされたPHPを確認します。
    細かいのですが、Cactiの公式ドキュメントに記載されているPHPの必要なモジュールを下記の表にまとめました。これらのパッケージの中で、※1は「php-common」に含まれており、※2の「php-pdo_mysql」は、インストールされた「php-mysqlnd」と衝突します。つまり「php-pdo_mysql」パッケージ該当するものが「php-mysqlnd」となります。

    必要なモジュール
    php
    php-snmp
    php-ldap
    php-xml
    php-session(※1 php-commonに含まれてる?)
    php-sockets(※1 php-commonに含まれてる?)
    php-pdo
    php-pdo_mysql(※2 php-mysqlndでやる)
    php-mbstring
    php-pcre(※1 php-commonに含まれてる?)
    php-json(※1 php-commonに含まれてる?)
    php-openssl(※1 php-commonに含まれてる?)
    php-gd
    php-gmp(※1 php-commonに含まれてる?)
    php-zlib(※1 php-commonに含まれてる?)

    つまりCactiのインストールによって一緒にインストールされないPHPパッケージは「php」となります。
    念のため、「php」パッケージだけ追加でインストールしておきます。

  3. 再度インストールされたPHPモジュールを確認しておきます。「php」が追加されました。

  4. 「/etc/php.ini」ファイルのタイムゾーンを”Asia/Tokyo”に変更します。




MySQLのインストール

  1. MySQLをインストールする前に、mariaDBを削除します。
  2. MySQLをのレポジトリを追加します。まず、CentOSのバージョンを確認します。
    「7.7.1908」というところを覚えておきます。
  3. https://dev.mysql.com/downloads/repo/yum/」にアクセスします。
  4. OSのバージョンは「7」だったので、バージョン7の右の「DownLoad」ボタンを右クリックし、「リンクのアドレスをコピー」をクリックします。(ブラウザはChromeを使用しています)
  5. コピーしたURLを指定して、yumコマンドでリポジトリをインストールします。
  6. 下記コマンドでMySQLのYumリポジトリが正常に追加されたことを確認できます。
  7. 下記コマンドで、MySQLのYumリポジトリのすべてのサブリポジトリを表示し、有効と無効を確認できます。
  8. ここで、「mysql80-community/x86_64 MySQL 8.0 Community Server」を無効にし、「mysql57-community/x86_64 MySQL 5.7 Community Server」を有効にしてみます。
  9. 再度どのリポジトリが有効になっているか確認します。MySQL 5.7が有効になりました。
  10.  MySQLをインストールします。
  11. MySQLを開始します。
  12. MySQLが開始したことを確認します。
  13.  MySQLのrootのテンポラリパスワードを確認します。
  14.  MySQLのrootのパスワードを変更します。
  15.  Cacti用のデータベースを作成します。ここでは”cacti_db”としました。また、”cactiuser”も作成します。
  16. mysqlデータベースにタイムゾーンをロードし、cactiuserに「mysql.time_zone_name」テーブルの参照権限を付与します。また、cactiuserにcacti_dbへのGRANT権限を付与します。
  17. 「cacti.sql」を使用して、cacti_dbへテーブルをインポートします。
  18.  「/usr/share/cacti/include/config.php」を編集します。データベースの名前のcactiuserのパスワードを修正しています。
  19.  「/etc/httpd/conf.d/cacti.conf」を編集します。デフォルトではローカルからのアクセスしか許可しないようになっているので、すべての場所からのアクセスを許可します。
  20.  ApacheとMySQLを再起動します。




CactiのWebコンソールにログイン(不足している必要条件の確認)

ここまでくれば、CactiのWebコンソールにログインできます。ログインした後、Cactiインストールの必要条件を確認します。

  1. 「http://[IPアドレス]/cacti/」にブラウザでアクセスします。するとユーザ名とパスワードが求められるので、どちらも”admin”を入力して「ログイン」をクリックします。
  2. パスワードの変更が求められるので、変更後のパスワードを入力して「保存」をクリックします。
  3. 「Accept GPL License Agreement」にチェックを入れて、「Begin」をクリックします。
  4. 下記の画面が表示されますが、赤い手のマークがついているところが修正必須の個所です。下図でいうとMySQLのSettingsで必要条件を満たせていません。

    せっかくなので、警告を含めてある程度の必要条件を満たそうと思います。

 

PHP – Recommendations (web)と(cli)

上記の図より、「memory_limit」と「max_execution_time」の値が足りていませんので修正します。

  1. TeratermでCactiサーバにログインし、「/etc/php.ini」ファイルをviエディタで開きます。
  2. 「memory_limit = 128M」と記載されているところがあるので、ここを”800M”に変更します。
  3. 「max_execution_time = 30」となっている個所を、”60″にします。そのあと保存して閉じます。

 

MySQL – Settings

上記の図から、必要条件を満たしていないのは下記です。赤字以外は解決します。

パラメータ 現在値 必要値
collation_server latin1_swedish_ci utf8mb4_unicode_ci
character_set_client latin1 utf8mb4
max_allowed_packet 4194304 16777216 以上
max_heap_table_size 16M 122M 以上
tmp_table_size 16M 122M 以上
join_buffer_size 0M 244M 以上
innodb_buffer_pool_size 128M 1907M 以上
innodb_flush_log_at_timeout 1 3 以上
innodb_read_io_threads 4 32 以上
innodb_write_io_threads 4 16 以上
innodb_buffer_pool_instances 1 2 以上
innodb_io_capacity 200 5000 以上
innodb_io_capacity_max 2000 10000 以上
  1. TeratermでCactiサーバにログインし、「/etc/my.cnf」をviエディタで開きます。
  2. 下記を追記して保存して閉じます。
  3. MySQLとApacheを再起動します。




Cactiのインストール~Webコンソールログイン

  1. 再度「http://CactiサーバのIPアドレス/cacti/」にアクセスして進むと、ワーニングが消えていますので、「Next」をクリックします。
  2. 内容を確認して「Next」をクリックします。
  3. 「Next」をクリックします。
  4. 「Next」をクリックします。
  5. 「Next」をクリックします。
  6. 「Next」をクリックします。
  7. 「Next」をクリックします。
  8. 「Confirm Installation」にチェックを入れて、「Install」をクリックします。
  9. プログレスが表示されるので、完了するまで待ちます。
  10. 完了したら、「Get Started」をクリックします。
  11. CactiのWebコンソール画面が表示されます!

 

最後に

本記事をお読みいただきありがとうございます。

今回はWebコンソールログインまででしたが、今後グラフの作成やデバイスの管理の設定などを見ていきたいと思います。