Open source lies in tossing. There are different views on the good and bad of the source code. Since CentOS 8 has EOL and CentOS 7 still has more than two years, this article is available. However, I hope you can switch to Stream version or other alternative distribution version as soon as possible. It is so convenient to install. Today's article is relatively long and not suitable for novices, In addition, compilation will encounter many problems, which requires some patience.
text
Article environment
- CentOS 7.9.2009
- PHP 7.4
- Postgresql 13
- Nginx 1.20
Novice advice
Novices suggest turning off the firewall and SElinux, otherwise it is easy to have problems other than accidents, which can be ignored by veterans.
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 systemctl stop firewalld && systemctl disable firewalld
Recommended conditions
It is recommended to update the software yum update -y
Install front function software
yum -y install wget vim
Database part
Since the official requirement of Zabbix 6.0 LTS is postgresql 13, the source of postgresql 13 needs to be imported
yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sed -i "s@https://download.postgresql.org/pub@https://mirrors.huaweicloud.com/postgresql@g" /etc/yum.repos.d/pgdg-redhat-all.repo
Install postgresql
yum -y install postgresql13-server
Start and initialize the database
/usr/pgsql-13/bin/postgresql-13-setup initdb systemctl enable postgresql-13 systemctl start postgresql-13
Download source package
cd /tmp wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.0.tar.gz
Unzip package
tar -zxvf zabbix-6.0.0.tar.gz
Create Zabbix users and Zabbix user groups
groupadd --system zabbix useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
Create Zabbix installation directory
mkdir -p /app/zabbix
Unzip the source package
tar -zxvf zabbix-6.0.0.tar.gz mv zabbix-6.0.0 /app
Start compilation
./configure --prefix=/app/zabbix --enable-server --enable-agent2 --with-postgresql=/usr/pgsql-13/bin/pg_config --with-net-snmp
gcc environmental issues
Postgresql library problem
CentOS 7 will report errors when installing this package, which need to be installed and respectively. The error reports are shown in the following two figures.
Missing net SNMP source problem
The libevent source is missing
Lack of go environment (no problem if it is the first generation agent)
After the above steps, the compilation is completed, as shown in the following figure
It should be noted that agent2 is compiled in this environment. Agent2 adopts the go environment and needs to download some libraries through go. In China, it is impossible to download libraries through go. Therefore, an agent needs to be set, otherwise it will be stuck in the figure below
Overall installation directory
Zabbix 6.0 LTS requires PHP version 7.2.5 or above, and remi source needs to be installed to support PHP 7.0 x
Installing nginx
Create zabbix related profiles
/app/zabbix
mv /app/ui /app/zabbix vim /etc/nginx/conf.d/zabbix.conf
server { listen 80; # server_name example.com; root /app/zabbix/ui; index index.php; location = /favicon.ico { log_not_found off; } location / { try_files $uri $uri/ =404; } location /assets { access_log off; expires 10d; } location ~ /\.ht { deny all; } location ~ /(api\/|conf[^\.]|include|locale|vendor) { deny all; return 404; } location ~ [^/]\.php(/|$) { fastcgi_pass unix:/run/php-fpm/zabbix.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /app/zabbix/ui; fastcgi_param SCRIPT_FILENAME /app/zabbix/ui$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /app/zabbix/ui$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }
Modify profile
Start nginx
It is found that the front-end display is 502. It is speculated that PHP FPM is not turned on
systemctl enable php-fpm systemctl start php-fpm
Access the front end again
View nginx logs
tail -f /var/log/nginx/error.log
vim /etc/php-fpm.d/zabbix.conf
[zabbix] user = apache group = apache listen = /run/php-fpm/zabbix.sock listen.acl_users = apache,nginx listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 200 php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session php_value[max_execution_time] = 300 php_value[memory_limit] = 128M php_value[post_max_size] = 16M php_value[upload_max_filesize] = 2M php_value[max_input_time] = 300 php_value[max_input_vars] = 10000
systemctl restart php-fpm
php partial installation
yum -y install php-mbstring php-bcmath php-pgsql php-gd php-xml
systemctl restart php-fpm nginx
Database configuration and import related files
Create user and database
Import database related files
Modify the postgresql permission file and change the local permission to md5 authentication method
Restart the database. It should be noted that the schema part can be filled in public, as shown in the following figure
The program file path is under, and the configuration file path is under
[Unit] Description=Zabbix Server After=syslog.target After=network.target After=postgresql.service After=pgbouncer.service After=postgresql-13.service [Service] Environment="CONFFILE=/app/zabbix/etc/zabbix_server.conf" EnvironmentFile=-/etc/sysconfig/zabbix-server Type=forking Restart=on-failure PIDFile=/tmp/zabbix_server.pid KillMode=control-group ExecStart=/app/zabbix/sbin/zabbix_server -c $CONFFILE ExecStop=/bin/kill -SIGTERM $MAINPID RestartSec=10s TimeoutSec=0 [Install] WantedBy=multi-user.target
vim /app/zabbix/etc/zabbix_server.conf
systemctl restart zabbix-server zabbix-agent2