编译安装zabbix7.2
实验环境
一、编译安装Nginx1.28(192.168.10.40)
1、创建systemctl管理Nginx文件
mkdir /myplaybook
cd /myplaybook/
vim nginx.service
添加:
[Unit]
Description=Nginx server daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecStop=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s stop
ExecReload=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload
KillMode=process
[Install]
WantedBy=multi-user.target
2、上传nginx-1.28.0.tar.gz包到/myplaybook目录
3、创建playbook文件
vim install-nginx.yml
添加:
- hosts: 192.168.10.41
tasks:
- name: copy nginx package
copy: src=nginx-1.28.0.tar.gz dest=/usr/local/src
- name: require openssl,zlib,pcre package
dnf: name=openssl-devel,zlib-devel,pcre-devel
- name: create nginx group
group: name=www system=yes
- name: create nginx user
user: name=www group=www system=yes shell=/bin/false create_home=no
- name: uncompress nginx package
unarchive: src=/usr/local/src/nginx-1.28.0.tar.gz dest=/usr/local/src remote_src=yes
- name: build nginx
shell: chdir=/usr/local/src/nginx-1.28.0 ./configure --prefix=/usr/local/nginx --group=www --user=www --with-http_ssl_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module && make -j$(nproc) && make install
- name: copy nginx systemctl file
copy: src=nginx.service dest=/usr/lib/systemd/system
- name: nginx daemon reload
shell: systemctl daemon-reload
- name: start nginx service
systemd: name=nginx state=started enabled=yes
4、运行playbook
ansible-playbook install-nginx.yml
二、二进制安装MySQL8.0(192.168.10.40)
1、创建MySQL配置文件
vim my.cnf
添加:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysqld.pid
log-error=/usr/local/mysql/data/mysql.err
socket=/tmp/mysql.sock
2、创建systemctl管理MySQL文件
vim mysqld.service
添加:
[Unit]
Description=MySQL Community Server
After=network.target
[Service]
Type=notify
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
3、上传MySQL二进制包mysql-8.0.42-linux-glibc2.17-x86_64-minimal.tar.xz到/myplaybook目录
4、创建playbook文件
vim install-mysql.yml
添加:
- hosts: 192.168.10.41
tasks:
- name: copy mysql package
copy: src=mysql-8.0.42-linux-glibc2.17-x86_64-minimal.tar.xz dest=/usr/local/src
- name: uncompress mysql package
unarchive: src=/usr/local/src/mysql-8.0.42-linux-glibc2.17-x86_64-minimal.tar.xz dest=/usr/local/src remote_src=yes
- name: mv mysql package
shell: mv /usr/local/src/mysql-8.0.42-linux-glibc2.17-x86_64-minimal /usr/local/mysql
- name: set env1
shell: echo "export MYSQL_HOME=/usr/local/mysql" >> /etc/profile
- name: set env2
shell: echo "export PATH=\$MYSQL_HOME/bin:\$PATH" >> /etc/profile
- name: load env
shell: source /etc/profile
- name: mkdir data directory
shell: mkdir -p /usr/local/mysql/data
- name: create mysql group
group: name=mysql state=present system=yes
- name: create mysql user
user: name=mysql system=yes shell=/bin/false group=mysql create_home=false
- name: set directory owner
shell: chown -R mysql:mysql /usr/local/mysql/
- name: copy mysql config file
copy: src=my.cnf dest=/etc/
- name: init mysql
shell: /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
- name: copy mysql systemctl file
copy: src=mysqld.service dest=/usr/lib/systemd/system
- name: mysql daemon reload
shell: systemctl daemon-reload
- name: start myql
systemd: name=mysqld state=started enabled=yes
- name: install ncurses-compat-libs
dnf: name=ncurses-compat-libs state=installed
- name: set mysql passwd
shell: temp_pass=$(grep "temporary password" /usr/local/mysql/data/mysql.err | awk "{print \$NF}"); /usr/local/mysql/bin/mysqladmin -uroot -p"$temp_pass" password "123456"
5、运行playbook
ansible-playbook install-mysql.yml
三、编译安装PHP8.1(192.168.10.40)
1、创建systemctl管理PHP文件
vim php-fpm.service
添加:
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=forking
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php8/sbin/php-fpm --daemonize --pid /run/php-fpm.pid
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
PrivateTmp=true
Restart=on-failure
[Install]
WantedBy=multi-user.target
2、上传PHP源码包php-8.1.32.tar.gz到/myplaybook目录
3、创建playbook文件
vim install-php.yml
添加:
- hosts: 192.168.10.41
tasks:
- name: start crb
shell: dnf config-manager --set-enabled crb
- name: require package
dnf: name=cmake,autoconf,libtool,pkgconfig,gd-devel,libjpeg-turbo-devel,freetype-devel,libwebp-devel,libXpm-devel,libxml2-devel,libcurl-devel,openssl-devel,pcre2-devel,gettext-devel,sqlite-devel,oniguruma-devel,php-ldap,php-openssl,php-gettext,openldap-devel state=installed
- name: link libldap
shell: ln -s /usr/lib64/libldap.so /usr/lib/libldap.so
- name: link liblber
shell: ln -s /usr/lib64/liblber.so /usr/lib/liblber.so
- name: copy php package
copy: src=php-8.1.32.tar.gz dest=/usr/local/
- name: uncompress php package
unarchive: src=/usr/local/php-8.1.32.tar.gz dest=/usr/local/ remote_src=yes
- name: create nginx group
group: name=www system=yes
- name: create nginx user
user: name=www group=www system=yes shell=/bin/false create_home=no
- name: build php
shell: chdir=/usr/local/php-8.1.32 ./configure --prefix=/usr/local/php8 --with-config-file-path=/usr/local/php8 --with-config-file-scan-dir=/usr/local/php8/php.d --with-fpm-user=www --with-fpm-group=www --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-bcmath -enable-gd --with-external-gd --with-jpeg --with-freetype --enable-mbstring --enable-xml --with-libxml --enable-sockets --enable-ctype --enable-session --enable-filter --enable-opcache --with-curl --with-pcre-jit --enable-fpm --enable-soap --with-openssl --with-gettext --with-ldap && make -j$(nproc) && make install
- name: copy php.ini from php source
copy: src=/usr/local/php-8.1.32/php.ini-production dest=/usr/local/php8/php.ini remote_src=yes
- name: copy config file
copy: src=/usr/local/php-8.1.32/sapi/fpm/php-fpm.conf dest=/usr/local/php8/etc/ remote_src=yes
- name: copy www file
copy: src=/usr/local/php8/etc/php-fpm.d/www.conf.default dest=/usr/local/php8/etc/php-fpm.d/www.conf remote_src=yes
- name: copy php systemctl file
copy: src=php-fpm.service dest=/usr/lib/systemd/system
- name: php daemon reload
shell: systemctl daemon-reload
- name: start php-fpm
systemd: name=php-fpm state=started enabled=yes
4、运行playbook
ansible-playbook install-php.yml
四、编译安装zabbix7.2(192.168.10.41)
1、上传源码包zabbix-7.2.7.tar.gz到/root目录
2、安装依赖库
dnf -y install libssh2 libssh2-devel OpenIPMI-devel libevent-devel unixODBC unixODBC-devel java-1.8.0-openjdk-devel openssl-devel net-snmp net-snmp-devel mysql-devel
3、下载中文插件
dnf -y install langpacks-zh_CN glibc-langpack-zh.x86_64
4、编译安装zabbix
tar xf zabbix-7.2.7.tar.gz
cd zabbix-7.2.7/
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-frontend --with-mysql --with-mysqli --with-pdo-mysql --with-openssl=/usr --with-libcurl --with-libxml2 --with-net-snmp --with-ldap --with-gd --with-jpeg --with-freetype --enable-bcmath --enable-mbstring --enable-ipv6
make -j$(nproc) && make install
5、创建zabbix组和用户
groupadd -r zabbix
useradd -r -M -s /bin/false -g zabbix zabbix
6、给安装目录授权
chown -R zabbix:zabbix /usr/local/zabbix/
7、创建systemctl管理zabbix文件
vim /usr/lib/systemd/system/zabbix-server.service
添加:
[Unit]
Description=Zabbix Server
After=network.target syslog.target mysql.service
[Service]
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=on-failure
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
vim /usr/lib/systemd/system/zabbix-agent.service
添加:
[Unit]
Description=Zabbix Agent
After=network.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
五、配置Nginx(192.168.10.41)
1、修改配置文件
vim /usr/local/nginx/conf/nginx.conf
修改:
2、重启nginx
systemctl restart nginx
六、配置MySQL(192.168.10.41)
1、创建zabbix数据库
mysql -uroot -p123456
create database zabbix charset utf8mb4 collate utf8mb4_bin;
2、创建用户并授权
create user 'zabbix'@'%' identified by 'zabbix';
grant all on zabbix.* to 'zabbix'@'%';
flush privileges;
3、开启二进制
vim /etc/my.cnf
添加:
log_bin_trust_function_creators=1
systemctl restart mysqld
4、导入zabbix数据文件
cd /root/zabbix-7.2.7/database/mysql/
mysql -uzabbix -pzabbix zabbix < schema.sql
mysql -uzabbix -pzabbix zabbix < images.sql
mysql -uzabbix -pzabbix zabbix < data.sql
七、配置PHP(192.168.10.41)
1、修改配置文件
vim /usr/local/php8/php.ini
修改:
2、重启PHP
systemctl restart php-fpm
八、配置Zabbix(192.168.10.41)
1、修改配置文件
vim /usr/local/zabbix/etc/zabbix_server.conf
修改:
2、拷贝zabbix web到nginx网页目录
mkdir /usr/local/nginx/html/zabbix
cp -r /root/zabbix-7.2.7/ui/* /usr/local/nginx/html/zabbix
chown -R www:www /usr/local/nginx/html/zabbix
3、链接MySQL库文件并启动zabbix
ln -s /usr/local/mysql/lib/libmysqlclient.so.21 /usr/lib64/
systemctl start zabbix-server
systemctl start zabbix-agent
4、使用浏览器访问zabbix网站
192.168.10.41/zabbix