Archive

Archive for September, 2009

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

September 25th, 2009
yum --enablerepo=remi install memcached

Конфиг (/etc/sysconfig/memcached):

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1"

Запуск:

chkconfig memcached on
/etc/init.d/memcached start

Если надо еще PHP расширение к нему:

yum --enablerepo=remi install php-pecl-memcache
или для PHP 5.2.10
rpm -ihv http://rpms.famillecollet.com/enterprise/5/olds/x86_64/php-pecl-memcache-3.0.4-1.el5.remi.x86_64.rpm
/etc/init.d/httpd reload

linux

Кратко о использовании iperf для тестирования скорости соединения

September 23rd, 2009

Ставим iperf из портов или из yum-a.
Запускаем сервер:

iperf -s -i2 # tcp-сервер с выводом стастистики каждые 2 сек.
iperf -s -u -w1400 #udp-сервер, с размером окна 1400 байт

Запускаем клиента:

iperf -c server_host -u -t 60 # подключение по udp к server_host и тестирование в течение 60сек
iperf -n 10m -p 65005 -c server_host # Послать 10 мегабайт, на порт 65005

Uncategorized

Пересылка всей исходящей почты через smarthost в Linux (CentOS)

September 17th, 2009

В /etc/mail/sendmail.mc добавляем:

define(`SMART_HOST', `mail.domain.com')

Ставим пакет для sendmail и апдейтим конфигурацию:

yum install sendmail-cf
make -C /etc/mail
/etc/init.d/sendmail restart

почта ,

Установка Bind (named) на CentOS

September 14th, 2009

В этой заметке рассмотрим установку bind на CentOS в chroot и синхронизацию (в том числе создание/удаление зон на первом и втором ДНС-сервере).
Ставим

yum install bind-chroot

Создаем файл /var/named/chroot/etc/named.conf

options {
        listen-on port 53 { 1.2.3.1; };
        directory       "/var/named";
        allow-query     { any; };
        recursion no;
        allow-transfer { none; };
        version "no version info";
};

include "/var/named/zone.conf";

Создаем файл /var/named/chroot/var/named/zone.conf

zone "domain1.com" IN {
        type master;
        file "domain1.com.conf";
        allow-update { none; };
};

zone "domain2.com" IN {
        type master;
        file "domain2.com.conf";
        allow-update { none; };
};

Ну и файлы зон, например, /var/named/chroot/var/named/domain.com.conf

$TTL 3600
domain.com.    IN    SOA    ns1.dnsdomain.com.    root.domain.com.    (
20010610    ; Serial
10800        ; Refresh
3600        ; Retry
604800        ; Expire
86400    )    ; Minimum TTL

@        IN    NS    ns1.dnsdomain.com.
@        IN    NS    ns2.dnsdomain.com.
@        IN    A  1.2.3.1
www      IN    CNAME  @
@        IN    MX 10  mail.domain.com.
mail     IN    A   1.2.3.1

На втором сервере делаем все точно так же.
Теперь про синхронизацию зон.

На первом сервере:

cd /root/.ssh
ssh-keygen -b 1024 -t dsa

На втором сервере:

/usr/sbin/useradd -s /bin/bash srv-dns-acct
cd /home/srv-dns-acct/
mkdir .ssh
В файл .ssh/authorized_keys копируем id_dsa.pub с первого сервера
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
chown -R srv-dns-acct /var/named/chroot/var/named
chmod +x /var/named/
chmod +x/var/named/chroot/
chmod +x /var/named/chroot/var/

На первом сервере создаем файл /var/named/dnssync.sh:

#!/bin/sh
cd /var/named/chroot/var/named/
tar czvf - *.conf | ssh srv-dns-acct@ns2.domain.com tar xzf - -C /var/named/chroot/var/named/

Для добавления зон на одном сервере можно пользоваться таким скриптом:

#!/bin/sh

# first param - domain, Second - IP

# Domains base
BASE="/var/named/chroot/var/named"

sed -e "s/domain.com/$1/g" "$BASE/sample" > "$BASE/$1.db.tmp"
sed -e "s/1.2.3.4/$2/g" "$BASE/$1.db.tmp" > "$BASE/$1.conf"
echo "zone \"$1\" { type master; file \"$BASE/$1.conf\"; };" >> $BASE/zone.conf
rm "$BASE/$1.db.tmp"

service named reload

dns , ,

Установка nginx с PHP как FastCGI на Debian Linux

September 9th, 2009

Отличная статья по этой теме здесь

linux

Справка по aptitude в Linux Debian

September 9th, 2009

Преимущество aptitude над apt состоит в том, что она лучше справляется с обработкой зависимостей и рекомендуется разработчиками Debian в качестве основного средства для управления пакетами.
Если вы раньше пользовались утилитами apt, то можете просто начать пользоваться aptitude, в большинстве случаев это не вызовет никаких проблем.
Справка по ключам:
install – Установить/обновить пакеты
remove – Удалить пакеты
purge – Удалить пакеты и их файлы конфигурации
hold – Зафиксировать пакеты
unhold – Отменить команду hold для пакета
markauto – Пометить пакет, что он был установлен автоматически
unmarkauto – Пометить пакет, что он был установлен вручную
forbid-version – Запретить aptitude обновлять определённую версию пакета.
update – Загрузить список новых/обновлённых пакетов
safe-upgrade – Perform a safe upgrade
full-upgrade – Perform an upgrade, possibly installing and removing packages
forget-new – Забыть, какие пакеты “новые”
search – Поиск пакета по имени и/или выражению
show – Показать подробную информацию о пакете
clean – Удалить загруженные файлы пакетов
autoclean – Удалить старые загруженные файлы пакетов
changelog – Посмотреть changelog пакета
download – Загрузить файл .deb для пакета
reinstall – Загрузить и (возможно) переустановить уже установленный пакет

Параметры:
-h Этот текст помощи
-s Имитировать действия, но не выполнять их на самом деле.
-d Только загрузить пакеты, ничего не устанавливать и не удалять.
-P Всегда спрашивать подтверждение или действия
-y Предполагать ответ ‘yes’ на простой вопрос yes/no
-F format Задать формат отображения результатов поиска; смотрите руководство
-O order Задать формат сортировки результатов поиска; смотрите руководство
-w width Задать ширину вывода результатов поиска
-f Принудительно исправлять неработоспособные пакеты.
-V Показывать версию устанавливаемых пакетов.
-D Показывать зависимости автоматически изменяемых пакетов.
-Z Показывать изменение размера установки каждого пакета.
-v Отображать дополнительную информацию. (может быть введено несколько раз)
-t [release] Задать выпуск, из которого должны быть установлены пакеты
-q Не выводить индикатор прогресса в режиме командной строки.
-o key=val Вручную установить значение параметра настройки с именем ‘key’
–with(out)-recommends Указать, будут ли рекомендуемые пакеты
трактоваться как строгие зависимости
-S fname Читать aptitude информацию о расширенном статусе из fname.
-u Загрузить список новых пакетов при запуске.
-i Запустить установку при запуске.

После выполнения, например, aptitude search package_name в левой колонке можно увидеть два ряда статусов:
Значения основного статуса следующие:
i (от installed) – пакет установлен в системе:
p (от purge) – пакет не был установлен или был удален “вчистую”
c (от clean) – пакет, удаленный с сохранением конфигурационных файлов;
v (от virtual) – т.н. виртуальные пакеты, то есть просто списки реальных пакетов, один из которых будет использоваться в той или иной ситуации.

Дополнительный статус пакета может принимать такие значения:
A (от Auto) – пакет был установлен не самостоятельно, а автоматически, как зависимость другого пакета;
h (от hold) – для пакета зафиксирована его текущая версия, то есть он не будет обновляться при выполнении операторов upgrade и dist-upgrade (см. ниже);
u (от unpacked) – пакет был получен, распакован, но не инкорпорирован в файловую систему и не сконфигурирован;
C (от half-Configured) – пакет, установка которого оборвалась на стадии конфигурирования;
H (от Half-installed) – пакет, установка которого оборвалась на стадии инсталляции;
B (от Broken) – т.н. “сломанные” пакеты – то есть содержащие ошибки внутри себя или утратившие свои зависимости.

linux , ,

Установка Tinydns (djbdns) на linux

September 7th, 2009

Так как нормальных rpm нет придется ставить из исходников.
Сначала ставим daemontools, который будет запускать сервис tinydns, следить за его состоянием и тд.

cd /root
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar zxvf ./daemontools-0.76.tar.gz
В src/conf-cc в строку с gcc добавляем -include /usr/include/errno.h
cd ./admin/daemontools-0.76/
./package/install

cd /root
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar zxvf ./ucspi-tcp-0.88.tar.gz
cd ./ucspi-tcp-0.88
В conf-cc в строку с gcc добавляем -include /usr/include/errno.h
make
make setup check

cd /root
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
tar zxvf ./djbdns-1.05.tar.gz
cd djbdns-1.05
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup check

groupadd dnsuser
/usr/sbin/useradd -g dnsuser -s /sbin/nologin -d /dev/null tinydns
/usr/sbin/useradd -g dnsuser -s /sbin/nologin -d /dev/null dnslog
/usr/local/bin/tinydns-conf tinydns dnslog /etc/tinydns [ip-сервера]
ln -s /etc/tinydns /service/tinydns #говорим daemontools-у о новом сервисе, он сам его запустит через 5 сек

Заполняем файл зон (/etc/tinydns/root/data) по образцу:

.domain.com::ns1.domain.com.:2500
&domain.com::ns2.domain.com.:2500
@domain.com::mail.domain.com.:10:2500
+domain.com:serverip:2500
+*.domain.com:serverip:2500

Делаем в /etc/tinydns/root чтобы перекинуть данные в бинарную версию data.cdb:

make

Проверить что data.cdb содержит требуемые данные:

cd /etc/tinydns/root
tinydns-get a www.domain.com

Управление сервисами:

svc -d /service/tinydns #остановить сервис
svc -u /service/tinydns #запустить сервис
svc -t /service/tinydns #рестартануть сервис
svstat /service/tinydns #проверяем статус

Синхронизация зон со вторым ДНС-сервером.

Для синхронизации бинарного файла с данными по зонам (с другим сервером) воспользуемся scp.
На втором днс-сервере необходимо установить аналогичный комплект. Затем на первом сервере:

cd /root/.ssh
ssh-keygen -b 1024 -t dsa

На втором сервере:

/usr/sbin/useradd -s /bin/bash srv-dns-acct
cd /home/srv-dns-acct/
mkdir .ssh
В файл .ssh/authorized_keys копируем id_dsa.pub с первого сервера
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

На первом сервере в файл /etc/tinydns/root/Makefile добавляем:

scp data.cdb srv-dns-acct@ns2.domain.com:/etc/tinydns/root/data.cdb

Теперь для синхронизации первого сервера со втором надо на первом сервере:

cd /etc/tinydns/root
make

Смотрите так же Скрипт добавления зон
Для добавления разных экзотических записей есть tinydns Record Builder

Примечание:
Если вдруг была удалена директория /etc/tinydns/supervise то надо сделать ps auxww |grep sup и грохнуть два процесса supervise. Затем сделать ps auxww |grep sv и грохнуть два процесса svscan. Инит перезапустит svscan, а тот перезапустит supervise и он пересоздаст каталоги.

dns ,

PHP 5.3 и PHP 5.2.10

September 1st, 2009

После выхода PHP 5.3 в популярном репозитории REMI для RHEL/CentOS PHP-пакеты были заменены на версию 5.3. В некоторых случаях это создает неудобства, так как далеко не все веб-приложения и скрипты работоспособны под этой версией. Поэтому при сетапе или обновлении сервера надо либо отключать этот репозиторий или ставить 5.2.10 пакеты вручную для i386 и для x86_64

php