NginxとMySQL5.5にCactiをインストールする方法

Nginx + MySQL5.5」との組み合わせに「Cacti」をインストールするのに戸惑ったので記録として残しておきます。

※ Nginx と MySQL5.5 は既にインストールしてあるものとします。

cactiをインストールすると、Apache2も強制的に一緒にインストールされますので、不要な方が起動しないように設定してください。

MySQL に Cacti 用ユーザー&データベースを作っておくこと。どっちも cacti(小文字)でOK!

apt-get で Cacti のパッケージをインストール

// インストール
# apt-get install cacti cacti-spine

続いて、Cacti が使うテーブルのSQL 文に 「TYPE=MyISAM」 と記述があるのですが、MySQL5.5 からは 「ENGINE=MyISAM」 に変わり、そのまま流し込むことが出来ません。
この為、データベースにテーブルを作ることが出来ないので、「ENGINE=MyISAM」に変換してから手動で流し込みます。cacti.sql の「TYPE=MyISAM」を「ENGINE=MyISAM」 に変換してやります。

// コピー&解凍
# cp /usr/share/doc/cacti/cacti.sql.gz /tmp/
# gzip -d /tmp/cacti.sql.gz

// 変換
# sed s/TYPE=MyISAM/ENGINE=MyISAM/ /tmp/cacti.sql > /tmp/cacti_sed.sql

SQL文を流し込んでやります。

// 流し込み
# mysql -u root -p cacti < /tmp/cacti_sed.sql

次に、Nginx で「http://example.com/cacti/」でアクセス出来るようにしてやります。Cacti の表示プログラムがあるディレクトリからシンボリックリンクを張ります。

// シンボリックリンク作成
# ln -s /usr/share/cacti/site /home/user/public_html/cacti

Cacti に spine のパスを登録して poller を spine にする。

consol -> settings -> Paths -> Spine Poller File Path に /usr/sbin/spine と登録。
consol -> settings -> poller -> Poller Type を spine にする。

これで Cacti を使えるようになるはずです。

おまけでBasic認証を付ける。

※ Basic認証が無くてもCacti画面で認証はありますので不要な人はスルーしてください。

// 編集
# vi /etc/nginx/sites-available/default

// example.com
server {
	listen 80;
	root /home/user/public_html;
	index index.php index.html;
	server_name example.com;

	// cacti Basic Auth
	location /cacti {
		auth_basic "cacti";
		auth_basic_user_file $document_root/cacti/.htpasswd;
	}

	// 以下省略
}

Basic認証用のパスワードファイルを新規で作ります。

// 新規作成
# htpasswd -c /home/user/public_html/cacti/.htpasswd ユーザー名
New password:
Re-type new password:
Adding password for user ユーザー名

// .htpasswd の中身
ユーザー名:Ftwtwetwrwj3q6

※ ユーザーを追加する場合は、「-c」のオプションは取りましょう。「-c」があると上書きされます。

Nginx の設定ファイルを読み込む。

// リロード
# /etc/init.d/nginx reload

読んで頂いて有り難うございます!