При установке 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
Всё работает.