установка zabbix 3.0 + nginx 1.9 + php-fpm 5.6 + mysql 5.7 на только что установленный centos 7.x


#### ставим nginx
$ yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ yum install nginx

# создадим конфиг
$ cat > /etc/nginx/conf.d/zabbix.conf << EOF
server {
listen 80;
server_name _;
#server_name monit.xxx.net;

root /usr/share/zabbix;
index index.php;

#allow 1.1.1.1;
#deny all;

# Disable access to important zabbix locations
location ~* ^/(conf|api|include)($|\/) {
deny all;
}

location / {
try_files \$uri \$uri/ /index.php?q=\$uri&\$args;
}

location ~* ^.+\.(jpg|jpeg|gif|png|ico|pdf)$ {
access_log off;
expires max;
add_header Cache-Control private;
}

location ~ \.php$ {
include fastcgi_params;
# try_files $uri =404;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PHP_VALUE "
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Europe/Moscow
always_populate_raw_post_data = -1
";
fastcgi_index index.php;
fastcgi_buffers 8 256k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_pass 127.0.0.1:9000;
# fastcgi_pass unix:/var/lib/php/php-fpm.sock;
}

location ~ /\. {
deny all;
}
}
EOF

# разрешаем автозапуск
$ systemctl enable nginx.service

# стартуем
$ systemctl start nginx.service



#### ставим php-fpm
$ yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ yum --enablerepo=remi,remi-php56 install php-opcache php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-fpm php php-bcmath php-ldap
$ systemctl enable php-fpm.service
$ systemctl start php-fpm.service


#### ставим mysql
$ yum install http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
$ yum install mysql-community-server mysql-utilities

# разрешаем автозапуск
$ systemctl enable mysqld.service

# старт mysqld
$ systemctl start mysqld.service

# разрешим инклюдить cnf
echo -e '\n!includedir /etc/my.cnf.d/' >> /etc/my.cnf

# отключим политику паролей mysql
$ cat > /etc/my.cnf.d/passw_policy.cnf << EOF
[mysqld]
# password validation
#plugin-load=validate_password.so
validate-password=OFF
validate_password_policy=0
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0

# disable password lifetime
default_password_lifetime=0
EOF

# неплохая конфигурация MySQL 5.7
$ yum install wget
$ wget -P /etc/my.cnf.d/ https://raw.githubusercontent.com/morgo/mysql-compatibility-config/master/mysql-57/mysql-57-new-applications.cnf

# получить временный пароль от учетки root, он пригодится для команды ниже
$ grep "temporary password" /var/log/mysqld.log | awk {' print $NF '}

# Для входа в Mysql без пароля
$ cat > /root/.my.cnf << EOF
[client]
default-character-set = utf8
user=root
password = "$(grep "temporary password" /var/log/mysqld.log | awk {' print $NF '})"
EOF

# сбросим пароль на new_password
mysql$ ALTER USER USER() IDENTIFIED BY 'new_password';

# рестарт mysqld для применения новых настроек конфигурации
$ systemctl restart mysqld.service


# Запускаем mysql:
$ mysql

# создаем базу zabbix
mysql$ create database zabbix character set utf8 collate utf8_bin;

# создаем юзера zabbix с паролем zabbix
mysql$ create user 'zabbix'@'localhost' identified by 'zabbix_password';

# выдаем все привилегии юзеру zabbix на базу zabbix
mysql$ grant all privileges on zabbix.* to zabbix@localhost;

# Обновляем привилегии
$ flush privileges;

#### ставим zabbix
$ yum install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
$ yum install --enablerepo=remi,remi-php56 zabbix-agent zabbix-web zabbix-web-mysql zabbix-server-mysql zabbix-get zabbix-sender

# немного поправим конфиг
$ sed -i 's/^# DBPassword=/DBPassword=zabbix_password/g' /etc/zabbix/zabbix_server.conf

# Разрешаем автозапуск
$ systemctl enable zabbix-server.service
$ systemctl enable zabbix-agent.service

# Запускаем
$ systemctl start zabbix-server.service
$ systemctl start zabbix-agent.service

$ cd /usr/share/doc/zabbix-server-mysql-*/
$ zcat create.sql.gz | mysql -uroot zabbix

# Для работы шаблона Mysql:
$ mkdir /var/lib/zabbix/
$ cat > /var/lib/zabbix/.my.cnf << EOF
[client]
user=zabbix
password=zabbix_password
EOF

# Назначим правильные права:
$ chown -R zabbix:zabbix /var/lib/zabbix/
$ chown -R nginx:nginx /etc/zabbix/web/

# Чтобы не было ошибок вида:
# sudo: sorry, you must have a tty to run sudo
$ cat > /etc/sudoers.d/zabbix << EOF
Defaults:%zabbix !requiretty
Defaults:%zabbix visiblepw
Cmnd_Alias ZBXCMD = /usr/bin/nmap, \
/usr/bin/cksum, \
/bin/find, \
/usr/bin/md5sum, \
/opt/kaspersky/kav4fs/bin/kav4fs-control, \
/opt/ztc/bin/apache_reqtime.py, \
/opt/ztc/bin/nginx_reqtime.py, \
/opt/ztc/bin/nginx_status.py, \
/opt/ztc/bin/vfs_dev.py, \
/opt/ztc/bin/hw_raid_3ware.py, \
/opt/ztc/bin/pg_controldata.py, \
/etc/zabbix/scripts/bacula-job.sh, \
/etc/zabbix/scripts/barman_opt.sh, \
/etc/zabbix/scripts/check_cert.sh, \
/etc/zabbix/scripts/check_ansible.sh
%zabbix ALL=(ALL) NOPASSWD: ZBXCMD
EOF

# sudo: /usr/bin/nmap: command not found
$ yum install nmap

# sh: /bin/traceroute: No such file or directory
$ yum install traceroute

### в вебе дефолтный пароль Admin / zabbix


#### запрещаем автозапуск httpd и останавливаем его
$ systemctl disable httpd.service
$ systemctl stop httpd.service

# firewalld.service
$ firewall-cmd --permanent --add-port=80/tcp
$ firewall-cmd --permanent --add-port=10050/tcp
$ firewall-cmd --permanent --add-port=10051/tcp
$ systemctl reload firewalld
$ setsebool -P httpd_can_connect_zabbix=1

#### Правила для IPTABLES
## allow zabbix as client
-A INPUT -p tcp -m tcp -m multiport --dport 10050 -j ACCEPT
## allow zabbix as server
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 10050:10051 -j ACCEPT