任务目标:
- 实现LAMP:Apache + PHP + MySQL + HTTP
- 部署Cacti
- 实现网络监控系统
任务平台:
- 私有云:VM-CentOS9-10.10.3.221-Cacti
- 操作系统:CentOS 9 Stream X86_64(2023-6-23,release)
部署指南:
系统基本配置
hostnamectl set-hostname VM-CentOS9-Cacti
网络配置
nmcli device
nmcli connection modify ens192 ipv4.addresses "10.10.3.221/24" ipv4.gateway 10.10.3.1
nmcli connection reload
nmcli connection up ens192
系统升级、关闭防火墙和SELinux等配置
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
reboot
安装Apache
yum install -y httpd
systemctl start httpd
systemctl enable httpd
systemctl status httpd
安装MySQL
yum install -y mysql-server
cp /etc/my.cnf.d/mysql-server.cnf /etc/my.cnf.d/mysql-server.cnf.bak
cat >> /etc/my.cnf.d/mysql-server.cnf << EOF
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake=true
join_buffer_size=64M
max_heap_table_size=32M
tmp_table_size=32M
sort_buffer_size=3000000
innodb_buffer_pool_size=640M
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16
innodb_io_capacity=5000
innodb_io_capacity_max=10000
EOF
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
安装PHP
yum module list php
yum install -y php
cp /etc/php.ini /etc/php.ini.bak
vi /etc/php.ini
max_execution_time = 60
memory_limit = 1024M
date.timezone = "Asia/Shanghai"
systemctl start php-fpm
systemctl status php-fpm
安装系统部署的基本平台和工具软件
yum install -y epel-release
yum install -y wget patch tar
yum install -y rrdtool net-snmp*
yum install -y php php-common php-bcmath php-cli \
php-mysqlnd php-gd php-gmp php-intl \
php-json php-ldap php-mbstring \
php-pdo php-pear php-snmp php-process \
php-xml php-zip fping
获取Cacti程序
wget https://www.cacti.net/downloads/cacti-1.2.24.tar.gz
tar -xzvf cacti-1.2.24.tar.gz -C /var/www/
mv /var/www/cacti-1.2.24 /var/www/cacti
wget https://github.com/Cacti/cacti/archive/refs/heads/develop.zip
unzip -d /var/www develop.zip
mv /var/www/cacti-develop /var/www/cacti
chown -R apache.apache /var/www/cacti
chmod -R 755 /var/www/cacti
setsebool -P mysql_connect_http on
setsebool -P httpd_sys_script_anon_write on
setsebool -P httpd_anon_write on
semanage fcontext -a -t public_content_rw_t "/var/www/cacti/log(/.*)?"
semanage fcontext -a -t public_content_rw_t "/var/www/cacti/cache(/.*)?"
restorecon -R -v /var/www/cacti/
cp /var/www/cacti/include/config.php.dist /var/www/cacti/include/config.php
vi /var/www/cacti/include/config.php
/*
* Make sure these values reflect your actual database/host/user/password
*/
$database_type = 'mysql';
$database_default = 'cactiDB';
$database_hostname = 'localhost';
$database_username = 'cactiUser';
$database_password = 'cactiUser#PWD2023';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';
$database_persist = false;
/*
* Set the $url_path to point to the default URL of your cacti install.
* For example if your cacti install as at `https://serverip/cacti/` this
* would be set to `/cacti/`.
*/
$url_path = '/';
配置数据库服务
mysql -uroot -p
mysql> use mysql;
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'ruan#labs313mysql';
mysql> flush privileges;
mysql> exit;
mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Shanghai Shanghai | mysql -u root -p mysql
systemctl restart mysqld
mysql -uroot -pruan
mysql> create database cactiDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> use cactiDB;
mysql> source /var/www/cacti/cacti.sql;
mysql> create user 'cactiUser'@'localhost' identified by "cactiUser#PWD2023";
mysql> grant all privileges on cactiDB.* to 'cactiUser'@'localhost' with grant option;
mysql> use mysql;
mysql> grant select on mysql.time_zone_name to 'cactiUser'@'localhost' with grant option;
mysql> flush privileges;
mysql> exit;
配置Apache Httpd,发布业务
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
vi /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/cacti"
<Directory "/var/www/cacti">
AllowOverride All
Require all granted
</Directory>
systemctl restart httpd
setenforce 0
echo '*/5 * * * * root php /var/www/cacti/poller.php > /dev/null 2>&1' >> /etc/crontab
systemctl restart crond