При установке Zabbix создаёт свой файл конфигурации для Apache — /etc/httpd/conf.d/zabbix.conf.
Сохраняем копию:
# mv /etc/httpd/conf.d/zabbix.conf /etc/httpd/conf.d/zabbix.conf.default
Создаём новый файл для Apache:
# cat /etc/httpd/conf.d/zabbix.domain.org.ua.conf
<VirtualHost 127.0.0.1:8080>
DocumentRoot /usr/share/zabbix/
ServerName zabbix.domain.org.ua
ServerAlias www.zabbix.domain.org.ua
CustomLog /var/log/httpd/zabbix.domain.org.ua-access.log combined
ErrorLog /var/log/httpd/zabbix.domain.org.ua-error.log
<IfModule mod_fcgid.c>
SuexecUserGroup zabbix zabbix
<Directory /usr/share/zabbix/>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/php-cgi/zabbix/zabbix.domain.org.ua/php.cgi .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>
И для NGINX:
# cat /etc/nginx/conf.d/zabbix.domain.org.ua.conf
server {
listen 80;
server_name zabbix.domain.org.ua wwww.zabbix.domain.org.ua;
location ~ /.ht {
deny all;
}
location ~* .(jpg|swf|jpeg|gif|png|css|js|ico)$ {
root /usr/share/zabbix;
}
location / {
proxy_pass http://127.0.0.1:8080;
}
}
Файл-обработчик для FCGID создаём как обычно.
Меняем владельца директорий:
# chown -R zabbix:zabbix /var/www/php-cgi/zabbix.domain.org.ua/ # chown -R zabbix:zabbix /usr/share/zabbix/
Запускакем Apache и получаем ошибку от suEXEC:
# tail -f /var/log/httpd/suexec.log [2014-09-15 12:35:09]: uid: (494/zabbix) gid: (494/zabbix) cmd: php.cgi [2014-09-15 12:35:09]: cannot run as forbidden uid (494/php.cgi)
Возникает она из-а того, что UID пользователя zabbix меньше, чем разрёшенный для suEXEC, который задаётся опцией AP_UID_MIN:
# suexec -V -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="apache" -D AP_LOG_EXEC="/var/log/httpd/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=500 -D AP_USERDIR_SUFFIX="public_html"
Есть два варианта решения проблемы. Пересобрать suEXEC с установленным AP_UID_MIN меньше, чем 494 (текущий UID zabbix-а), либо — переназначить пользователю новый UID.
Выберем второй вариант.
Текущий UID:
# id zabbix uid=494(zabbix) gid=494(zabbix) groups=494(zabbix)
Останавливаем все связанные службы (иначе при изменении данных пользователя получим ошибку типа «user already logged in»):
# service zabbix-server stop Shutting down Zabbix server: [ OK ] # service zabbix-agent stop Shutting down Zabbix agent: [ OK ] # service httpd stop Stopping httpd: [ OK ] # service nginx stop Stopping nginx: [ OK ]
Меняем UID:
# usermod -u 510 zabbix
Т.к. мы изменили UID — надо переназначить пользователя на все связанные с Zabbix директории:
# ls -l /var/run/ total 104 ... drwxr-xr-x 2 494 zabbix 4096 Sep 15 15:12 zabbix
Ещё раз выполняем chown:
# chown -R zabbix /var/www/vhosts/zabbix/ # chown -R zabbix /var/www/php-cgi/zabbix # chown -R zabbix:zabbix /usr/share/zabbix/ # chown -R zabbix:zabbix /etc/zabbix
Запускаем службы:
# service nginx start Starting nginx: [ OK ] # service httpd start Starting httpd: [ OK ] # service zabbix-agent start Starting Zabbix agent: [ OK ] # service zabbix-server start Starting Zabbix server: [ OK ]
Проверяем лог suEXEC:
# tail /var/log/httpd/suexec.log [2014-09-15 15:15:46]: uid: (510/zabbix) gid: (494/zabbix) cmd: php.cgi
Всё работает.




