もくじ
はじめに
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 -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.NgIypx: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
準備しています... ################################# [100%]
更新中 / インストール中...
1:epel-release-7-12 ################################# [100%]
# rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
https://rpms.remirepo.net/enterprise/remi-release-7.rpm を取得中
警告: /var/tmp/rpm-tmp.wtIFCO: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 00f97f56: NOKEY
準備しています... ################################# [100%]
更新中 / インストール中...
1:remi-release-7.7-1.el7.remi ################################# [100%]
※rpmコマンドのオプションについて
-U:パッケージをアップグレードする。
-v:処理中のパッケージを表示する。
-h:進行状況を表示する。
ちなみにレポジトリのURLは下記から取得しました。
Apacheのインストール
ApacheをEPELとREMIのリポジトリを指定してインストールします。
# yum --enablerepo=epel,remi install httpd
自動起動するように設定し、Apacheを開始します。
# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# systemctl start httpd
Cactiのインストール
ここでCactiをインストールします。後から足りないPHPモジュールをインストールします。CactiがサポートしているPHPは5.4.16のようです。最新の7.3を使用して何とかしようとしたらハマりました。
補足ですが、「RRDTool」も「net-snmp」も「net-snmp-utils」も自動的に入ってくれます。公式ドキュメントでは個別に案内されてました。
yumコマンドでCactiをインストールします。
# yum install cacti
~~~(省略)~~~
依存性を解決しました
============================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
============================================================================================================================================
インストール中:
cacti noarch 1.2.6-1.el7 epel 20 M
依存性関連でのインストールをします:
cairo x86_64 1.15.12-4.el7 base 741 k
dejavu-fonts-common noarch 2.33-6.el7 base 64 k
dejavu-sans-fonts noarch 2.33-6.el7 base 1.4 M
dejavu-sans-mono-fonts noarch 2.33-6.el7 base 433 k
fontconfig x86_64 2.13.0-4.3.el7 base 254 k
fontpackages-filesystem noarch 1.44-8.el7 base 9.9 k
fribidi x86_64 1.0.2-1.el7 base 79 k
graphite2 x86_64 1.3.10-1.el7_3 base 115 k
harfbuzz x86_64 1.7.5-2.el7 base 267 k
libX11 x86_64 1.6.7-2.el7 base 607 k
libX11-common noarch 1.6.7-2.el7 base 164 k
libXau x86_64 1.0.8-2.1.el7 base 29 k
libXdamage x86_64 1.1.4-4.1.el7 base 20 k
libXext x86_64 1.3.3-3.el7 base 39 k
libXfixes x86_64 5.0.3-1.el7 base 18 k
libXft x86_64 2.3.2-2.el7 base 58 k
libXpm x86_64 3.5.12-1.el7 base 55 k
libXrender x86_64 0.9.10-1.el7 base 26 k
libXxf86vm x86_64 1.1.4-1.el7 base 18 k
libglvnd x86_64 1:1.0.1-0.8.git5baa1e5.el7 base 89 k
libglvnd-egl x86_64 1:1.0.1-0.8.git5baa1e5.el7 base 44 k
libglvnd-glx x86_64 1:1.0.1-0.8.git5baa1e5.el7 base 125 k
libicu x86_64 50.2-3.el7 base 6.9 M
libjpeg-turbo x86_64 1.2.90-8.el7 base 135 k
libthai x86_64 0.1.14-9.el7 base 187 k
libwayland-client x86_64 1.15.0-1.el7 base 33 k
libwayland-server x86_64 1.15.0-1.el7 base 39 k
libxcb x86_64 1.13-1.el7 base 214 k
libxshmfence x86_64 1.2-1.el7 base 7.2 k
libxslt x86_64 1.1.28-5.el7 base 242 k
libzip x86_64 0.10.1-8.el7 base 48 k
lm_sensors-libs x86_64 3.4.0-8.20160601gitf9185e5.el7 base 42 k
mesa-libEGL x86_64 18.3.4-5.el7 base 109 k
mesa-libGL x86_64 18.3.4-5.el7 base 165 k
mesa-libgbm x86_64 18.3.4-5.el7 base 39 k
mesa-libglapi x86_64 18.3.4-5.el7 base 45 k
mysql-community-libs-compat x86_64 5.7.28-1.el7 mysql57-community 1.3 M
net-snmp x86_64 1:5.7.2-43.el7 base 331 k
net-snmp-agent-libs x86_64 1:5.7.2-43.el7 base 706 k
net-snmp-libs x86_64 1:5.7.2-43.el7 base 750 k
net-snmp-utils x86_64 1:5.7.2-43.el7 base 199 k
pango x86_64 1.42.4-4.el7_7 updates 280 k
perl-Data-Dumper x86_64 2.145-3.el7 base 47 k
php-cli x86_64 5.4.16-46.el7 base 2.7 M
php-common x86_64 5.4.16-46.el7 base 565 k
php-gd x86_64 5.4.16-46.el7 base 128 k
php-intl x86_64 5.4.16-46.el7 base 97 k
php-ldap x86_64 5.4.16-46.el7 base 53 k
php-mbstring x86_64 5.4.16-46.el7 base 505 k
php-mysqlnd x86_64 5.4.16-46.el7 base 174 k
php-pdo x86_64 5.4.16-46.el7 base 99 k
php-process x86_64 5.4.16-46.el7 base 56 k
php-snmp x86_64 5.4.16-46.el7 base 53 k
php-xml x86_64 5.4.16-46.el7 base 126 k
pixman x86_64 0.34.0-1.el7 base 248 k
rrdtool x86_64 1.4.8-9.el7 base 440 k
t1lib x86_64 5.1.2-14.el7 base 166 k
トランザクションの要約
============================================================================================================================================
インストール 1 パッケージ (+57 個の依存関係のパッケージ)
総ダウンロード容量: 41 M
インストール容量: 127 M
Is this ok [y/d/N]:y
~~~(省略)~~~
完了しました!
Cactiをインストールで依存性の解決のためにインストールされたPHPを確認します。
[root@CCTIVM03 conf]# yum list installed | grep php
php-cli.x86_64 5.4.16-46.el7 @base
php-common.x86_64 5.4.16-46.el7 @base
php-gd.x86_64 5.4.16-46.el7 @base
php-intl.x86_64 5.4.16-46.el7 @base
php-ldap.x86_64 5.4.16-46.el7 @base
php-mbstring.x86_64 5.4.16-46.el7 @base
php-mysqlnd.x86_64 5.4.16-46.el7 @base
php-pdo.x86_64 5.4.16-46.el7 @base
php-process.x86_64 5.4.16-46.el7 @base
php-snmp.x86_64 5.4.16-46.el7 @base
php-xml.x86_64
細かいのですが、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」パッケージだけ追加でインストールしておきます。
# yum install php
~~~(省略)~~~
依存性を解決しました
============================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
============================================================================================================================================
インストール中:
php x86_64 5.4.16-46.el7 base 1.4 M
トランザクションの要約
============================================================================================================================================
インストール 1 パッケージ
総ダウンロード容量: 1.4 M
インストール容量: 4.4 M
Is this ok [y/d/N]:y
~~~(省略)~~~
完了しました!
再度インストールされたPHPモジュールを確認しておきます。「php」が追加されました。
[root@CCTIVM03 conf]# yum list installed | grep php
php.x86_64 5.4.16-46.el7 @base
php-cli.x86_64 5.4.16-46.el7 @base
php-common.x86_64 5.4.16-46.el7 @base
php-gd.x86_64 5.4.16-46.el7 @base
php-intl.x86_64 5.4.16-46.el7 @base
php-ldap.x86_64 5.4.16-46.el7 @base
php-mbstring.x86_64 5.4.16-46.el7 @base
php-mysqlnd.x86_64 5.4.16-46.el7 @base
php-pdo.x86_64 5.4.16-46.el7 @base
php-process.x86_64 5.4.16-46.el7 @base
php-snmp.x86_64 5.4.16-46.el7 @base
php-xml.x86_64 5.4.16-46.el7 @base
「/etc/php.ini」ファイルのタイムゾーンを”Asia/Tokyo”に変更します。
# vi /etc/php.ini
~~~(省略)~~~
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Tokyo"
~~~(省略)~~~
MySQLのインストール
MySQLをインストールする前に、mariaDBを削除します。
# yum list installed | grep maria
mariadb-libs.x86_64 1:5.5.64-1.el7 @base
# yum remove mariadb-libs
MySQLをのレポジトリを追加します。まず、CentOSのバージョンを確認します。
# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
「7.7.1908」というところを覚えておきます。
「https://dev.mysql.com/downloads/repo/yum/」にアクセスします。
OSのバージョンは「7」だったので、バージョン7の右の「DownLoad」ボタンを右クリックし、「リンクのアドレスをコピー」をクリックします。(ブラウザはChromeを使用しています)
コピーしたURLを指定して、yumコマンドでリポジトリをインストールします。
# yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
下記コマンドでMySQLのYumリポジトリが正常に追加されたことを確認できます。
# yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community/x86_64 MySQL Connectors Community 128
mysql-tools-community/x86_64 MySQL Tools Community 100
mysql80-community/x86_64 MySQL 8.0 Community Server 145
下記コマンドで、MySQLのYumリポジトリのすべてのサブリポジトリを表示し、有効と無効を確認できます。
# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community 無効
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - So 無効
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community 無効
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - So 無効
mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Community 無効
mysql-cluster-8.0-community-source MySQL Cluster 8.0 Community - So 無効
mysql-connectors-community/x86_64 MySQL Connectors Community 有効: 128
mysql-connectors-community-source MySQL Connectors Community - Sou 無効
mysql-tools-community/x86_64 MySQL Tools Community 有効: 100
mysql-tools-community-source MySQL Tools Community - Source 無効
mysql-tools-preview/x86_64 MySQL Tools Preview 無効
mysql-tools-preview-source MySQL Tools Preview - Source 無効
mysql55-community/x86_64 MySQL 5.5 Community Server 無効
mysql55-community-source MySQL 5.5 Community Server - Sou 無効
mysql56-community/x86_64 MySQL 5.6 Community Server 無効
mysql56-community-source MySQL 5.6 Community Server - Sou 無効
mysql57-community/x86_64 MySQL 5.7 Community Server 無効
mysql57-community-source MySQL 5.7 Community Server - Sou 無効
mysql80-community/x86_64 MySQL 8.0 Community Server 有効: 145
mysql80-community-source MySQL 8.0 Community Server - Sou 無効
ここで、「mysql80-community/x86_64 MySQL 8.0 Community Server」を無効にし、「mysql57-community/x86_64 MySQL 5.7 Community Server」を有効にしてみます。
# vi /etc/yum.repos.d/mysql-community.repo
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1 #"1"に変える。デフォルトでは"0"。
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0 #"0"に変える。デフォルトでは"1"。
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
~~~(下省略)~~~
再度どのリポジトリが有効になっているか確認します。MySQL 5.7が有効になりました。
# yum repolist enabled | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community 128
mysql-tools-community/x86_64 MySQL Tools Community 100
mysql57-community/x86_64 MySQL 5.7 Community Server 384
MySQLをインストールします。
# yum install mysql-community-server
MySQLを開始します。
# systemctl enable mysqld
# systemctl start mysqld
MySQLが開始したことを確認します。
# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2019-10-14 19:25:23 JST; 7s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 17707 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 17657 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 17710 (mysqld)
CGroup: /system.slice/mysqld.service
mq17710 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
10月 14 19:24:54 CCTIVM03 systemd[1]: Starting MySQL Server...
10月 14 19:25:23 CCTIVM03 systemd[1]: Started MySQL Server.
MySQLのrootのテンポラリパスワードを確認します。
# cat /var/log/mysqld.log | grep "temporary password"
2019-10-14T10:24:56.618460Z 1 [Note] A temporary password is generated for root@localhost: "ここに出る"
MySQLのrootのパスワードを変更します。
# mysql -u root -p
mysql> set password for root@localhost=password('新しいパスワード入れて');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> quit
Cacti用のデータベースを作成します。ここでは”cacti_db”としました。また、”cactiuser”も作成します。
# mysql -u root -p
mysql> create database cacti_db;
Query OK, 1 row affected (0.00 sec)
mysql> create database cacti_db;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cacti_db |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
mysql> CREATE USER cactiuser IDENTIFIED BY 'cactiuser用のパスワード';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
mysqlデータベースにタイムゾーンをロードし、cactiuserに「mysql.time_zone_name」テーブルの参照権限を付与します。また、cactiuserにcacti_dbへのGRANT権限を付与します。
# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password:
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
# mysql -u root -p
mysql> grant select on mysql.time_zone_name to cactiuser@localhost identified by 'cactiuserのパスワード';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON cacti_db.* TO cactiuser@localhost IDENTIFIED BY 'cactiuserのパスワード';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
「cacti.sql」を使用して、cacti_dbへテーブルをインポートします。
# mysql -u cactiuser -p cacti_db < /usr/share/doc/cacti-1.2.6/cacti.sql
「/usr/share/cacti/include/config.php」を編集します。データベースの名前のcactiuserのパスワードを修正しています。
# vi /usr/share/cacti/include/config.php
~~~(省略)~~~
/*
* Make sure these values reflect your actual database/host/user/password
*/
$database_type = 'mysql';
$database_default = 'cacti_db';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'cactiuserのパスワード';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';
~~~(省略)~~~
「/etc/httpd/conf.d/cacti.conf」を編集します。デフォルトではローカルからのアクセスしか許可しないようになっているので、すべての場所からのアクセスを許可します。
# vi /etc/httpd/conf.d/cacti.conf
~~~(省略)~~~
Alias /cacti /usr/share/cacti
# httpd 2.4
# Require host localhost
Require all granted
# httpd 2.2
Order deny,allow
Deny from all
# Allow from localhost
Allow from all
~~~(省略)~~~
ApacheとMySQLを再起動します。
# systemctl restart mysqld
# systemctl restart httpd
CactiのWebコンソールにログイン(不足している必要条件の確認)
ここまでくれば、CactiのWebコンソールにログインできます。ログインした後、Cactiインストールの必要条件を確認します。
- 「http://[IPアドレス]/cacti/」にブラウザでアクセスします。するとユーザ名とパスワードが求められるので、どちらも"admin"を入力して「ログイン」をクリックします。
- パスワードの変更が求められるので、変更後のパスワードを入力して「保存」をクリックします。
- 「Accept GPL License Agreement」にチェックを入れて、「Begin」をクリックします。
- 下記の画面が表示されますが、赤い手のマークがついているところが修正必須の個所です。下図でいうとMySQLのSettingsで必要条件を満たせていません。
せっかくなので、警告を含めてある程度の必要条件を満たそうと思います。
PHP - Recommendations (web)と(cli)
上記の図より、「memory_limit」と「max_execution_time」の値が足りていませんので修正します。
TeratermでCactiサーバにログインし、「/etc/php.ini」ファイルをviエディタで開きます。
# vi /etc/php.ini
「memory_limit = 128M」と記載されているところがあるので、ここを"800M"に変更します。
~~~(省略)~~~
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 800M
~~~(省略)~~~
「max_execution_time = 30」となっている個所を、"60"にします。そのあと保存して閉じます。
~~~(省略)~~~
; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 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 以上 |
TeratermでCactiサーバにログインし、「/etc/my.cnf」をviエディタで開きます。
# vi /etc/my.cnf
下記を追記して保存して閉じます。
~~~(省略)~~~
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
max_allowed_packet=16M
max-heap-table-size=123M
tmp-table-size=123M
join-buffer-size=245M
innodb-buffer-pool-size=1907M
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16
MySQLとApacheを再起動します。
# systemctl restart mysqld
# systemctl restart httpd
Cactiのインストール~Webコンソールログイン
- 再度「http://CactiサーバのIPアドレス/cacti/」にアクセスして進むと、ワーニングが消えていますので、「Next」をクリックします。
- 内容を確認して「Next」をクリックします。
- 「Next」をクリックします。
- 「Next」をクリックします。
- 「Next」をクリックします。
- 「Next」をクリックします。
- 「Next」をクリックします。
- 「Confirm Installation」にチェックを入れて、「Install」をクリックします。
- プログレスが表示されるので、完了するまで待ちます。
- 完了したら、「Get Started」をクリックします。
- CactiのWebコンソール画面が表示されます!
最後に
本記事をお読みいただきありがとうございます。
今回はWebコンソールログインまででしたが、今後グラフの作成やデバイスの管理の設定などを見ていきたいと思います。
コメント