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

Архив рубрики ‘Мои записи’

Как создать и подписать собственный 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

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

Еще более вкусные цены от немецких хостеров :-)

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

http://www.hetzner.de/en/hosting/produktmatrix/rootserver-produktmatrix/

13.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

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

Как переадресовывать всю исходящую почту в один ящик

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

Эта задача может быть полезна разработчикам, к примеру, для тестирования программного обеспечения почтовых рассылок.

В качестве MTA используется Postfix.

Добавляем к стандартному конфигу main.cf

local_recipient_maps =
transport_maps = hash:/etc/postfix/transport
luser_relay = dev

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

useradd -g mail -m dev

Добавляем файл /etc/postfix/transport

domain.ru   smtp:
*           local:

domain.ru — домен или e-mail, почту для которого нужно доставлять (к примеру, адрес администратора, на который почту все же нужно доставлять).

После каждого изменения файла /etc/postfix/transport необходимо запустить

postmap /etc/postfix/transport
postfix reload

Готово! Теперь вся почта, кроме @domain.ru и локальных ящиков, будет складываться в почтовый ящик пользователя «dev», который можно показывать разработчикам используя, к примеру, peer-библиотеку Mail_Mbox или IMAP-сервером типа uw-imap, который легко устанавливается командой

yum install uw-imap

IMAP-сервер можно включить в автозагрузку, к примеру, используя xinetd, для чего в файле /etc/xinet.d/imap параметр disabled нужно изменить на «no».

24.05.2009

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

Вкусные цены на аренду серверов

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

Наблюдается стремительный спад цен на аренду серверов. К примеру, уже сейчас KeyWeb предлагает Core2Duo 2×1,8 GHz / 2 Gb RAM / 2×320 Gb SATA HDD за 49 EUR в месяц.
Правда, сервер размещается в немецком дата-центре, но для многих это вряд ли будет заметно.

http://www.keyweb.ru/hosting/dedicated.html

Ждем ответа от российских хостеров! :-)

24.05.2009

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

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

Теги: , , , ,

Как создать архив tar.gz

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

Самый простой способ :-)

tar -vczf archive.tar.gz file1 file2 folder1 ../folder3

Вместо -z можно указать -j, тогда архив будет сжат bzip2. Если вообще убрать -z / -j, архив сжиматься не будет.

23.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

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