Связаться со мной:
2 заметки с тегом

httpd

Включение server-status на apache2/httpd в ubuntu и centos

server-status это модуль веб-сервера, который может помочь установить какой из сайтов на сервере создает нагрузку или даже покажет на какой именно скрипт на сайте идет больше всего обращений. В общем это модуль который помогает в мониторинге состояния веб-сервера. Разберёмся как его установить.

В centos он обычно уже установлен. В ubuntu смотрим:

# ls /etc/apache2/mods-enabled



Если в выводе есть status.load и status.conf, то значит он тоже установлен. Если же нет, то выполняем:

# /usr/sbin/a2enmod status


Затем открываем конфигурационный файл веб-сервера, в centos — /etc/httpd/conf/httpd.conf, в ubuntu — /etc/apache2/apache2.conf. Добавляем туда:

ExtendedStatus On
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

Затем перезапускаем апач.

# service apache2 restart
  • в ubuntu
# service httpd restart
  • в centos

Устанавливаем:
В centos:

# yum install links elinks



В ubuntu:

# apt-get install links elinks


Теперь мы можем посмотреть server-status. Для этого выполняем:

# elinks http://localhost/server-status



Если апач у нас висит не на 80 порту, например когда фронтэндом установлен nginx, то в эту команду нужно добавить порт апача. Например так, для порта 81:

# elinks http://localhost:81/server-status
2014   apache2   centos   httpd   mod_status   server-status   ubuntu

Установка mpm-itk на apache2. Работа виртуальных хостов под разными пользователями.

По умолчанию apache работает под пользователем www-data. При использовании isp-manager под пользователем apache, если я не ошибаюсь. И получается, что все сайты работают под одним пользователем. Иногда требуется чтобы каждый сайт работал под своим пользователем. Сделать это можно с помощью модуля mpm-itk. Модуль доступен во всех основных дистрибутивах линукс. Мы рассмотрим как установить и настроить его под ubuntu и centos, а так же рассмотрим настройку для серверов с isp-панелью.

Установка и настройка в ubuntu

Для начала установим сам модуль

# apt-get install apache2-mpm-itk

Допустим, что сайты у нас уже есть и находятся в пользовательских каталогах. Сообтветственно нам не нужно создавать пользователей. Если это не так то можно создать пользователей для каждого сайта с помощью useradd с аргументом -d, в котором укажем каталог сайта в качестве домашнего каталога.

Затем правим конфигурационный файл apache.

# nano /etc/apache2/apache2.conf

Внутрь каждого виртуального хоста добавляем такие строки:

<IfModule mpm_itk_module>

AssignUserId user1 user1

</IfModule>

Где user1 user1 - пользователь и группа соответственно.

Перезапускаем apache2

# service apache2 restart

Установка в CentOS

Установим модуль

# yum install httpd-itk

Правим конфигурационные файлы

# nano /etc/sysconfig/httpd

Раскомментируем и изменяем строку на такую:

HTTPD=/usr/sbin/httpd.itk

# nano /etc/httpd/conf.d/php.conf

Добавляем:

<IfModule itk.c>

LoadModule php5_module modules/libphp5.so

</IfModule>

Меняем диррективу SuexecUserGroup на AssignUserID для существующих доменов.

# sed -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf

Для вновь созданных доменов в виртуальном хосте нужно указывать

AssignUserID user1 user1

Где user1 user1 - пользователь и группа соответственно.

# nano /etc/httpd/conf/httpd.conf

Вставляем настройки модуля перед виртуальными хостами

<IfModule itk.c>

StartServers 1

MinSpareServers 1

MaxSpareServers 25

ServerLimit 25

MaxClients 25

MaxRequestsPerChild 4000

</IfModule>

Перезапускаем apache

# service httpd restart

Настройка для сервера с панелью isp.

Откроем конфигурационный файл isp

# nano /usr/local/ispmgr/etc/ispmgr.conf

И в самом начале добавим строку:

Option ApacheMPM

И рестартим панель

# killall -9 ispmgr

Как проверить что все работает правильно?

В папке виртуального хоста создаем файл с расширением .php и примерно таким содержанием:

<?php

$userinfo = posix_getpwuid(posix_getuid());

echo $userinfo['name'];

?>

Или таким:

<?php echo exec('whoami'); ?>

Открываем этот файл в браузере и выводом этого файла должно быть имя пользователя под которым работает этот скрипт. Так же не забываем что если сервер функционирует давно то в подкаталогах куча фалов принадлежащих пользователю www-data. Неплохо бы сделать chown -R username на каталоги сайтов.

2013   apache2   centos   httpd   httpd-itk   isp-manager   Linux   mpm-itk   ubuntu