Игорь Олемской — практические заметки по системному администрированию Linux CentOS

Архив тега ‘centos’

Логирование медленных запросов Apache

Комментариев нет

Для логирования медленных запросов Apache очень удобно использовать модуль mod_log_slow, домашняя страница которого находится по адресу http://code.google.com/p/modlogslow/

Для установки модуля под CentOS 5 64bit можно воспользоваться репозиторием Southbridge:

yum install modlogslow

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

rpm -ihv http://rpms.southbridge.ru/stable/x86_64/modlogslow-1.0.6-1.southbridge.x86_64.rpm

Пример конфигурации можно посмотреть в файле /etc/httpd/conf.d/logslow.conf

13.03.2010

Написал Игорь Олемской

CentOS + OpenVZ: iptables ssh-anti-bruteforce в контейнере

Комментариев нет

Для того, чтобы в контейнере OpenVZ под CentOS заработала блокировка iptables вида (разрешается не больше 4 соединений для порта 22 в течение 180 секунд):

-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource

Необходимо в файле /etc/vz/vz.conf разрешить следующие iptables-модули:

IPTABLES="iptable_filter ipt_multiport ip_conntrack ipt_REJECT"

По-умолчанию ip_conntrack отсутствует в этом списке, iptables при добавлении приведенных выше правил не ругается, но и ничего не работает. 🙂

03.12.2009

Написал Игорь Олемской

Рубрики: Мои записи

Теги: , , , ,

CentOS 5: решение проблемы большого пинга (2000+ ms)

4 комментария

Если ваш сервер под ОС CentOS 5 начинает тормозить, еле откликаться и т.п., при этом загрузка процессора и Load Average в норме — наиболее вероятно, что вам нужно обновить сетевой драйвер.

Данная проблема неоднократно замечена при аренде немецких серверов (hetzner.de, тариф EQ).

Проверить, в этом ли проблема, просто. Запустите:

lspci -v

И найдите ваше Ethernet-устройство. Если в описании указано «RTL8111/8168B» и «rev2», значит это ваш случай.

Подробно о решении задачи написано по ссылке: http://wiki.centos.org/HardwareList/RealTekRTL8111b

Если вы пользуетесь OpenVZ, предлагаем универсальное решение — собранный пакет dkms-r8168-openvz (приложение, которое автоматически после переустановки ядра, при загрузке системы компилирует и устанавливает нужный сетевой драйвер). Установить его можно из репозитория Southbridge:

wget http://rpms.southbridge.ru/southbridge-stable.repo --output-document=/etc/yum.repos.d/southbridge-stable.repo
yum install dkms-r8168-openvz

Перезагрузите систему и наберите

dmesg | grep r816

Если на экране появятся ссылки на «r8168», значит вы уже работаете на новом драйвере. Если — «r8169», значит загрузился старый драйвер и необходимо еще раз перезагрузиться (после второй перезагрузки будет установлен драйвер «r8168»).

В дальнейшем, при обновлении ядра, dkms будет автоматически компилировать и устанавливать нужный драйвер для сетевой карты.

07.09.2009

Написал Игорь Олемской

Как установить rmagick на CentOS 5

Комментариев нет

Прежде всего необходимо установить сам ruby

yum install ruby ruby-devel ruby-libs ruby-irb ruby-rdoc ruby-mysql rubygems

Так же понадобится компилятор и заголовки ImageMagick

yum install gcc make ImageMagick-devel

Для корректной работы не помешает обновить gem

gem update --system
gem update

Для компиляции rmagick потребуются шрифты, для установки которых потребуется rpmbuild и cabextract

yum install rpm-build cabextract

В /usr/src/redhat/BUILD/msttcorefonts/ необходимо загрузить шрифты, которые доступны по ссылке http://sourceforge.net/project/showfiles.php?group_id=34153&release_id=105355 (нужно загрузить непосредственно .exe-файлы со шрифтами).

Загрузите в папку /usr/src/redhat/SPECS файл http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec и запустите

rpmbuild -ba msttcorefonts-2.0-1.spec

Теперь можно установить шрифты

rpm -Uhv /usr/src/redhat/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm

Для установки rmagick, потребуется сделать symlink

ln -s /usr/share/fonts/msttcorefonts /usr/share/fonts/default/TrueType

А теперь можно смело устанавливать rmagick 🙂

gem install rmagick -v 1.15.17

31.07.2009

Написал Игорь Олемской

Рубрики: Мои записи

Теги: , , , , ,

Как создать и подписать собственный RPM-репозиторий

2 комментария

Когда администрируешь множество серверов, возникает необходимость централизованного хранения собственных RPM-пакетов. В этой статье описано, как создать RPM-репозиторий и как сделать gpg-подпись пакетов, хранимых в этом репозитории.

Как создать подпись

Генерируем новый gpg-ключ

mkdir ~/.gnupg
gpg --gen-key

Если gpg выдаст ошибку типа

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 277 more bytes)

можно параллельно выполнить трудоемкую операцию, к примеру,

tar -jcvf tmp.tar.bz2 /usr

Это ускорит генерацию ключа. Когда ключ будет создан, не забудьте удалить tmp.tar.bz2. 😉

Теперь можно сделать экспорт ключа (к примеру, чтобы дальше он был доступен по ссылке rpms.southbridge.ru/RPM-GPG-KEY-southbridge).

gpg --list-keys
gpg --export -a 'Igor Olemskoi' > /var/www/rpms.southbridge.ru/htdocs/RPM-GPG-KEY-southbridge

Теперь ключ можно импортировать командой

rpm --import http://rpms.southbridge.ru/RPM-GPG-KEY-southbridge

Проверить список пакетов в RPM-базе можно командой

rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'

Чтобы в пакеты автоматом добавлялась подпись, можно создать ~/.rpmmacros со следующим содержанием («Igor Olemskoi» нужно заменить на данные, которые заполняли при создании ключа)

%_signature gpg
%_gpg_name  Igor Olemskoi

Чтобы подписать уже существующий rpm, нужно запустить

rpm --addsign mytool.x64_86.rpm

Если пакет ранее уже был подписан, --addsign замените на --resign.

Чтобы подписать пакет во время сборки, нужно добавить опцию --sign, к примеру

rpmbuild -ba --sign mytool.spec

Как создать RPM-репозиторий

Создайте сайт, на котором будут размещены пакеты, а на нем дерево папок, к примеру (htdocs — корень сайта rpms.southbridge.ru)

htdocs/SRPMS
htdocs/i386
htdocs/x86_64
htdocs/RPM-GPG-KEY-southbridge

Остается лишь разместить готовые rpm/srpm-пакеты в соответствующие папки, после чего для каждой из папок запустить createrepo (эту операцию следует выполнять после каждого изменения файлов)

createrepo htdocs/SRPMS
createrepo htdocs/i386
createrepo htdocs/x86_64

В случае, если createrepo в системе нет, установить можно командой

yum install createrepo

Как использовать собственный RPM-репозиторий

Добавьте файл /etc/yum.repos.d/southbridge.repo, к примеру, такого содержания

[southbridge]
name=Southbridge Repository
gpgcheck=1
gpgkey=http://rpms.southbridge.ru/RPM-GPG-KEY-southbridge
enabled=1
baseurl=http://rpms.southbridge.ru/$basearch/

19.06.2009

Написал Игорь Олемской

CentOS: ночная перезагрузка monit и неправильные оповещения из-за logrotate

Комментариев нет

Если Вы активно используете monit для почтовых оповещений, то наверняка столкнулись с его ночными перезагрузками и ложными алертами об этом.

Для исправления, нужно перезаписать файл /etc/logrotate.d/monit

/var/log/monit {
    missingok
    notifempty
    copytruncate
    daily
    size 50M
}

Стандартно происходит ротация логов, после чего демону monit отправляется сигнал -HUP и он перечитывает логи и конфиги (делает reload), о чем и сообщает по электронной почте.
А новом файле конфигурации, за счет «copytruncate», происходит ротация логов без перезапуска monit.

01.06.2009

Написал Игорь Олемской

CentOS 5: особенности установки memcached и pgbouncer на одной машине

Один комментарий

В этой заметке описано, как установить memcached на ту же машину, где уже запущен pgbouncer (из репозитория pgdg). Сложность в том, что pgbouncer использует более новую версию libevent, чем memcached, в результате чего memcached при установке выдает «transaction failed».

Один из наиболее красивых выходов из ситуации — пересборка SRPM с новой библиотекой libevent, а заодно и новой версией memcached.

В случае, если репозиторий pgdg еще не установлен, его можно инсталировать следующей командой (версию можно выбрать на странице http://yum.pgsqlrpms.org/reporpms/repoview/pgdg-centos.html)

rpm -ihv http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-6.noarch.rpm

Из репозитория pgdg необходимо установить новый libevent-devel (вместо 83 может быть ваша версия pgdg)

yum --disablerepo=\* --enablerepo=pgdg83 install libevent-devel

Теперь необходимо загрузить srpm memcached (выбрать версию из репозитория можно по адресу: http://download.fedora.redhat.com/pub/epel/5/SRPMS/repoview/memcached.html) и последнюю версию самого memcached

rpm -Uhv http://download.fedora.redhat.com/pub/epel/5/SRPMS/memcached-1.2.5-2.el5.src.rpm
wget http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz -O /usr/src/redhat/SOURCES/memcached-1.2.8.tar.gz

В файле /usr/src/redhat/SPECS/memcached.spec необходимо актуализировать версии memcached и rpm

Version:        1.2.8
Release:        1%{?dist}

Осталось собрать rpm

rpmbuild -bb /usr/src/redhat/SPECS/memcached.spec

В случае, если не хватает каких-то дополнительных библиотек, их можно установить командой «yum install».

Готовые пакеты можно найти в папке /usr/src/redhat/RPMS/

28.05.2009

Написал Игорь Олемской

Установка mod_rpaf на CentOS 5

Комментариев нет

К сожалению, в базовых репозиториях CentOS apache-модуля mod_rpaf нет. Для его установки можно пойти двумя путями: найти готовый пакет или собрать его из SRPM самостоятельно. В этой заметке описано, как собрать пакет из SRPM.

Для установки понадобятся пакеты gcc, rpm-build и httpd-devel

yum install rpm-build httpd-devel

А теперь можно собрать и mod_rpaf

rpmbuild --rebuild http://rpms.southbridge.ru/stable/SRPMS/mod_rpaf-0.6-1.southbridge.src.rpm

В случае, если rebuild ругается, что не хватает какой-то devel-библиотеки, ее можно без труда установить используя «yum install» (так же может не хватать which, gcc, make и т.п.).

Готовый rpm-пакет можно найти в папке /usr/src/redhat/RPMS/, откуда можно его установить командой

rpm -ihv mod_rpaf-0.6-1.southbridge.x86_64.rpm

28.05.2009

Написал Игорь Олемской

Рубрики: Мои записи

Теги: , , , , ,

Установка свежей версии ffmpeg на CentOS 5

Комментариев нет

UPD: Используйте репозиторий Rpmforge для установки ffmpeg 🙂

Сравнительно свежая версия ffmpeg доступна в RPMFusion.

Устанавливается так (http://rpmfusion.org/Configuration):

rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm

Ввиду того, что для CentOS поддержка сравнительно сыровата, будет не лишним в файлах /etc/yum.repos.d/rpmfusion-free-updates.repo и /etc/yum.repos.d/rpmfusion-free-updates.repo отключить параметр «enabled», чтобы из этого репозитория по-умолчанию пакеты не устанавливались:

enabled=0

Теперь собственно можно установить и ffmpeg:

yum --enablerepo=rpmfusion-free-updates-testing install ffmpeg

25.05.2009

Написал Игорь Олемской

Установка актуальных версий PHP / MySQL на CentOS 5

6 комментариев

В стандартной комплектации CentOS 5 идут достаточно устаревшие версии PHP (5.1.6) и MySQL (5.0.45), которых, к сожалению, все чаще не достаточно для работы современных веб-приложений.

Ниже описано, как установить актуальные версии из yum-репозитория «remi».

Установка epel и remi

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

Если php и mysql уже установлены, необходимо запустить

yum --enablerepo=remi update php\* mysql\*

Если mysql-server еще не установлен

yum --enablerepo=remi install mysql-server

Установка php, php-cli, php-ускорителя «eaccelerator» и частоиспользуемых php-библиотек

yum --enablerepo=remi install php php-cli php-eaccelerator php-mysql php-mbstring php-gd

23.05.2009

Написал Игорь Олемской