cacti홈페이지에는 Unix설치 매뉴얼밖에 없어요...

Linux도 Unix계열이니, 그대로 설치를 했습니다.

 

 

1. 필요한 package를 설치합니다.

#yum install httpd

#yum install php

#yum install php-mysql

#yum install php-snmp

#yum install mysql

#yum install mysql-server

#yum install net-snmp

#yum install rrdtool

 

2. php설정을 잡아줍니다.

php가 제대로 설치가 됐는지 php -m을 통해 확인 합니다.

오류가 나지만... 일단 놔둡니다.

 

PHP Warning:  PHP Startup: Unable to load dynamic library './curl.so' - ./curl.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './fileinfo.so' - ./fileinfo.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './json.so' - ./json.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './mysql.so' - ./mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './mysqli.so' - ./mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './pdo.so' - ./pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './pdo_mysql.so' - ./pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './pdo_sqlite.so' - ./pdo_sqlite.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './phar.so' - ./phar.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './snmp.so' - ./snmp.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './sqlite3.so' - ./sqlite3.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library './zip.so' - ./zip.so: cannot open shared object file: No such file or directory in Unknown on line 0

 

 

각종 ini(initialization)파일을 설정합니다.

ini파일은 어플리케이션의 설정을 내보내거나 읽어올 때 혹은 어플리케이션 시작 시 초기정보를 읽어올 때 쓰는 파일 포맷입니다.

ini파일에서는 ;이 주석의 시작을 가리킵니다.

 

/etc/php.ini에서 확장모듈 경로를 확인합니다.

php가 사용하게 되는 추가적인 모듈(mysql.so 등)이 있는 경로를 지정합니다.

extension_dir = /etc/php.d

 

다시 php -m을 해보면.. 2번에서 나던 오류가 경로가 바뀌어 납니다.

find / -name mysql.so해보면...

 

# find / -name mysql.so

/usr/lib64/perl5/auto/DBD/mysql/mysql.so

/usr/lib64/php/modules/mysql.so

 

실제 /etc/php.d에 없기도 하니 경로를 바꿔줍니다.

extension_dir=/usr/lib64/php/modules/

이제 php -m 결과에서 오류는 안납니다. 넘어갑니다.

 

 

/etc/php.d/mysql.ini에서 mysql모듈이 활성화 돼있는지 확인합니다.

php-mysql을 설치했으므로 php.ini를 수정 할 필요 없이 /etc/php.d/mysql.ini에 설정이 돼있습니다.

extension=mysql.so

 

/etc/php.d/snmp.ini에서 snmp모듈이 활성화 돼있는지 확인합니다.

php-snmp를 설치했으므로, 마찬가지로 php.ini에서가 아닌 /etc/php.d/snmp.ini의 설정을 확인합니다.

extension=snmp.so

 

템플릿 import를 원하면 파일 업로드 허가 여부를 아래와 같이 합니다.

file_uploads = On 

 

 

3.apache설정을 잡아줍니다.

/etc/httpd/conf/httpd.conf에서 config파일을 로딩 할 디렉토리를 잡아줍니다.

Include conf.d/*.conf

 

/etc/httpd/conf.d/php.conf에 PHP연동을 설정합니다.

# PHP is an HTML-embedded scripting language which attempts to make it

# easy for developers to write dynamically generated webpages.

LoadModule php_module modules/libphp.so

#

# Cause the PHP interpreter to handle files with a .php extension.

AddHandler php-script .php

AddType text/html .php

#

# Add index.php to the list of files that will be served as directory

# indexes.

DirectoryIndex index.php

 

 

4.MySQL설정을 잡아줍니다.

mysql 서비스부터 시작 해줍니다.

#service mysqld start

 

일단 root user pw를 잡아줘요!

#mysql -uroot -p

 

5.대망의 cacti입니다.

repository잡아서 yum install cacti로 설치 가능하나.. 그냥 파일로 했습니다.

/var/www/html위치에서 해주세요.

#tar xzvf cacti-version.tar.gz

 

Mysql DB를 만들어 줍니다.

#mysql -uroot create cacti

 

접속해서 db확인합니다.

mysql>show database;

 

cacti db를 import합니다.

#mysql cacti < cacti.sql

 

cacti를 위한 MySQL 계정을 생성 합니다.

 

#mysql -u=root mysql

mysql>grant all on cacti.* to cactiuser@localhost indentified by 'cacti';

mysql>flush privileges; 

 

includ/config.php에 db정보를 확인합니다.

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = "cactiuser";

$database_password = "cacti";

 

적절한 권한을 부여 합니다.

#chwon -R apache rra/ log/

 

/etc/crontab에 아래 내용을 추가 합니다.

*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1

 

 

아파치를 시작합니다.

#service httpd start

 

 

*참고!!!

파일이 그 자리에 정확히 있는데 파일을 찾을 수 없다고 할 때가 있습니다.

내 마음대로 Document Root를 바꾸거나, extension dir과 so파일의 위치를 바꾸던가 하면 아파치 에러로그에서도, 웹에서도 멀쩡히 있는놈을 못찾고 오류가나는데요, SELinux정책으로인해 발생한 문제입니다.

그럴 땐 고민하지 말고 아래 명령을 수행시켜줍니다.

#chcon -R -t httpd_user_content_t 경로

 

ls -Z를 해보시면 기존에 보던 내용과는 사뭇 다른 내용을 볼 수 있는데요, 기본 Document Root로 설정된 /var/www의 결과는 아래와 같습니다.

#ls -Z /var

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 www

 

chcon은 파일 보안문맥을 변경하는 명령어입니다.

user를 바꿀 때는 -u, role을 바꿀 때는 -r, type을 바꿀 때는 -t로 바꿀 수 있구요,

만약 보안문맥을 변경해야 한다 하실 때는 기존에 폴더나 파일의 권한을 ls -Z로 확인하셔서 그와 동일하게 변경하시면 됩니다.