среда, 22 декабря 2010 г.

exim - полезные сайты

Небольшая, но имхо весьма хорошая подборка


http://odminblog.ru/cheets-and-tips-exim/
Всякие полезности для exim | Одминский блог
http://odminblog.ru/exim-queue/
Работа с очередью Exim | Одминский блог
http://odminblog.ru/exim-acl-vs-spam/
Борьба со спамом в MTA EXIM с помощью ACL | Одминский блог
http://odminblog.ru/global-external-alias-using-exim/
Организация глобального внутреннего алиаса средствами exim | Одминский блог

И от меня.
Отправляем все письма в очереди, в том числе замороженные и которым еще рано
exiqgrep -i|xargs exim -M

Сколько у нас писем в очереди
exim -bpc

Переключение клиента в centos
alternatives --config mta

mysql-proxy

https://launchpad.net/mysql-proxy

MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication.

Its flexibility allows for unlimited uses; common ones include:
- load balancing
- failover
- query analysis
- query filtering and modification
and many more.

Интересная статья про будущее MySQL и его форки

http://www.blogerator.ru/page/mysql-na-steroidah

ejabberd в CentOS - грабли

Настройка довольно проста, конфиг небольшой и понятный. А вот дальнейшая отладка "почему же эта тварь не работает" занимает много времени и в связи с невменяемой и фактически отсутствующей системой логов требует изучения азов эрланга, как минимум его консоли, и знания, куда стучать.

Если включена веб-консоль на порту 5280, просто через http://server:5280 мы получим ошибку 404 Not Found
Это потому, что путь должен быть таким:
http://server:5280/admin
Но чтобы подключиться, надо знать пользователя и пароль. В теории, завести пользователя просто:
ejabberdctl register admin ...
На практике получим Failed RPC connection to the node ejabberd@jabber: nodedown
Как вариант, из жаббер-клиента подключиться и там "создать новую запись" с тем админ-логином, что указали в конфиге. И с этими данными входить в админку.
Но ошибка, указанная выше, совсем не означает, что сервер не запустился, но об этом ниже.

Итак.
Пробуем запуститься.
ejabberdctl live
Если все в порядке, последние строки будут вида
=INFO REPORT==== 10-Dec-2010::17:34:02 ===
I(<0.39.0>:ejabberd_app:72) : ejabberd 2.1.5 is started in the node ejabberd@jabber

=PROGRESS REPORT==== 10-Dec-2010::17:34:02 ===
application: ejabberd
started_at: ejabberd@jabber
Выход ^G q
Но при этом сервер остановится и надо будет его запускать просто через ejabberdctl start
Можно посмотреть список задач - ^G j
1* {shell,start,[init]}
Значит, все не так плохо.

А если Облом? Запускаемся в режиме отладки.
ejabberdctl debug
Там будет
*** ERROR: Shell process terminated! (^G to start new job) ***
Жмем ^G
Теперь ?
Получили список опций. Можно посмотреть, что запущено - j, и прицепиться к задаче - c [nn]
Только может ничего не показать. Попробуем запуститься вручную.

Также частым гостем будет ошибка
Error in process <0.34.0> on node 'ejabberdctl-1@jabber' with exit value: {badarg,[{erlang,list_to_existing_atom,["ejabberd@localhost"]},{dist_util,recv_challenge,1},{dist_util,handshake_we_started,1}]}
Обычно это говорит о том, что нода запущена, но установить соединение с ней не удалось.

Вполне может так получиться, что /etc/init.d/ejabberd start отрабатывает, но ejabberctl говорит:
# ejabberdctl status
Failed RPC connection to the node ejabberd@jabber: nodedown

=ERROR REPORT==== 10-Dec-2010::17:30:18 ===
Error in process <0.34.0> on node 'ejabberdctl-1@jabber' with exit value: {badarg,[{erlang,list_to_existing_atom,["ejabberd@localhost"]},{dist_util,recv_challenge,1},{dist_util,handshake_we_started,1}]}
При этом в памяти оно сидит:
# ps auxwww|grep jabber
avahi 1579 0.0 0.4 3740 1304 ? Ss Nov20 0:00 avahi-daemon: running [jabber.local]
ejabberd 25660 0.0 0.0 1972 252 ? S 17:16 0:00 /usr/lib/erlang/erts-5.6.5/bin/epmd -daemon
ejabberd 25727 0.1 9.6 34308 25432 ? Sl 17:17 0:01 /usr/lib/erlang/erts-5.6.5/bin/beam -K true -P 250000 -- -root /usr/lib/erlang -progname erl -- -home /var/lib/ejabberd/spool -sname ejabberd@jabber -noshell -noinput -noshell -noinput -pa /usr/lib/ejabberd/ebin -mnesia dir "/var/lib/ejabberd/spool" -s ejabberd -sasl sasl_error_logger {file,"/var/log/ejabberd/erlang.log"} -smp auto start
Ну и остановка также ничего не дает
# /etc/init.d/ejabberd stop
Shutting down ejabberd: already stopped [WARNING]

Похоже, это криво собранный пакет в центоси. Народ ставит пакет (зависимости ставятся сами), потом тянет с сайта сырцы и разворачивает в /opt. И тогда все работает.
Ну и владельца правильно менять надо, в частности на рабочие каталоги.

Дока, где описано больше чем "правим конфиг, запускаем, радуемся". Правда, тоже не полный охват проблем.
http://cms02.phys.ntu.edu.tw/tracs/env/wiki/Ejabberd

Еще дока
http://plone.lucidsolutions.co.nz/linux/im/ejabberd-centos-vm


"С ежом,одна-ко, не срослось. Что интересно, перенес с одной тачки рабочего ежа (собственной настройки) на другую - жаббера в конторе резко не стало.
Трехдневное пинание конфигов и раскуривание манов не помогло (жаббера вернул на место минут через 5, ибо уволят).
Так и не понял в каком месте при копировании кроссплатформенного приложения с кормпа на комп напоролся на грабли. Поставил opеnfire. Открыт, гпл, бесплатен, есть в портах."
http://www.gentoo.ru/node/8793

И что-то я тоже задумываюсь перейти на что-то более вменяемое.

понедельник, 20 декабря 2010 г.

SRV-записи для jabber

http://wiki.jrudevels.org/DNS_SRV
Описание SRV записей, при малейшем непонимании работы - читать до просветления.

http://nexusnotes.ru/2010/01/jabber-server-dns-setup/
пример записи, если хоститься на google hosted

http://help.yandex.ru/pdd/chat.xml
Пример для яндекса

http://www.jms1.net/jabberd2/srv.shtml
генератор SRV записей для ДНС

Это все особенно актуально, если айпи основного домена и xmpp не совпадают, поэтому например А может вести на www, а отдельный srv на xmpp.site и все должно работать.

Вкратце: создаётся 2 записи с именами _xmpp-client._tcp (порт 5222) и _xmpp-server._tcp (порт 5269) , тип SRV.

Установка mytop на FreeBSD

portinstall mytop
Все нужные модули оно дотянет само через зависимости.
Для поддержки цвета рекомендуется поставить Term::ANSIColor
Поставим. Заменяем :: на тире и ставим спереди p5-
portinstall p5-Term-ANSIColor

При необходимости делаем rehash
Теперь запускаем.. и на нормальной системе получаем "упс". Потому что надо задать базу и пароль.
ee ~/.mytop
user=root
pass=ourpass
db=
Если есть спец юзер для мониторинга (крайне рекомендуется), вбиваем туда его данные. Если нет - рута. Все значения без кавычек.
db= нужен, чтобы подключиться, иначе будет ошибка
Unknown database 'test'
Но у меня не заработало так, поэтому я запускаю так:
mytop -d ""
Так работает. Есть вариант указать реальную базу, оно похоже все-равно не фильтруется и нужно только для запуска.
Потом chmod 0700 ~/.mytop обязательно! Ибо чревато.

Недостаток: в отличие от top, после остановки mytop будет не 1 экран с последними данными, а все данные за весь период запуска. Если ведутся логи клиентом, есть шанс забить все место. А если не ведутся - что-то потерять из видеобуфера, у меня он например 2000 строк всего.

среда, 15 декабря 2010 г.

Trunking

Решил привести в порядок знания по этому термину.

Trunking - объединение в пучок.
http://www.sagatelecom.ru/encyclopedia/systems/detail.php?ID=75

Соединительная линия, транк — комплекс технических средств,...
http://ru.wikipedia.org/wiki/Соединительная_линия
Транк - это способ повысить пропускную способность конкретного соединение (например, между двумя свичами), проложив два (или больше) проводов между этими устройствами (и, естественно, воткнув их в устройства).

Впрочем, http://ru.wikipedia.org/wiki/Транк даёт аж 3 значения:
Транк:
Канал связи
Соединительная линия
Хобот слона

Еще в телефонии:
под термином "транкинг" понимается метод доступа абонентов к общему выделенному пучку каналов, при котором свободный канал выделяется абоненту на время сеанса связи.

таким образом, sip-транк это как бы пучок каналов в одном установленном.

И еще немного о транке в телефонии
http://www.viol.uz/systems/trank/page1.shtml

Отладка плагинов ISPManager

Заметил, что панель при попытке удаления домена стала ругаться
malformed result

Запустим плагин руками
> perl /usr/local/ispmgr/addon/wwwdomainsd
Can't locate XML/LibXML.pm in @INC (@INC contains: /usr/local/lib/perl5/5.10.1/BSDPAN /usr/local/lib/perl5/site_perl/5.10.1/mach /usr/local/lib/perl5/site_perl/5.10.1 /usr/local/lib/perl5/5.10.1/mach /usr/local/lib/perl5/5.10.1 . /usr/local/ispmgr/lib/perl) at /usr/local/ispmgr/addon/wwwdomainsd line 11.
BEGIN failed--compilation aborted at /usr/local/ispmgr/addon/wwwdomainsd line 11.

В данном случае не хватало p5-XML-LibXML (freebsd)
И таким образом отлаживаем модуль, пока не заработает.

понедельник, 13 декабря 2010 г.

в дебияне нет группы wheel

Такое впечатление, что дебиановцев чем-то сильно обидели и они решили сделать свой линукс "с блэкджеком и шлюхами". То OpenSSL им чем-то не нравится, то eaccelerator, и даже стандартный host работает некорректно! (пруф).. Теперь вот оказалось, что там нет группы wheel, которая есть во всех классических линуксах, а также *BSD. Интересно, какой глубокий смысл они пытались этим донести?...

UP для sudo у них отдельная группа sudo

воскресенье, 12 декабря 2010 г.

ERROR: version of config(8) does not match kernel!

Попытался сделать make buildkernel, получил

ERROR: version of config(8) does not match kernel!
config version = 600007, version required = 600009

Make sure that /usr/src/usr.sbin/config is in sync
with your /usr/src/sys and install a new config binary
before trying this again.

If running the new config fails check your config
file against the GENERIC or LINT config files for
changes in config syntax, or option/device naming
conventions

*** Error code 1

Stop in /usr/src.
*** Error code 1

Решение: надо сначала сделать make buildworld
После этого ядро строится нормально.

пятница, 10 декабря 2010 г.

ejabberd во freebsd

Можно ставить так:
cd /usr/ports/lang/erlang-lite
make install clean
http://wiki.firstvds.ru/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_ejabberd

Можно так:
В /etc/make.conf прописываем
WITHOUT_JAVA=yes
WITHOUT_ODBC=yes
cd /usr/ports/net-im/ejabberd/ && make install clean
http://kvk.pp.ru/doc/ejabberd.shtml

Не забываем, что оно весьма своевольно и жрет далеко не все версии ерланга.

полезные ссылки по ISPManager

ru.ispdoc.com/index.php/ISPmanager:Проблемы_и_решения
ru.ispdoc.com/index.php/Категория:Технические_статьи_по_ISPmanager
ru.ispdoc.com/index.php/Категория:Документация_для_ISPmanager

Для FreeBSD надо немного подправить GENERIC ядро
options QUOTA
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT

ru.ispdoc.com/index.php/Конфигурация_ядра_FreeBSD_для_использования_с_ISPmanager

Запуск новой вирт машины в PV-mode

Есть 2 пути:
1) тянем спец ядро в хост-машину и подключаем
2) ставим в hvm, можно из простого .iso, потом конвертим в PV

Не совсем вариант: оставив в HVM, поставить PV-драйвера.

четверг, 9 декабря 2010 г.

Louwrentius: RAID 5 vs. RAID 6 or do you care about your data?

Louwrentius: RAID 5 vs. RAID 6 or do you care about your data?
"RAID-5 тоже не слишком надежен"

Louwrentius: Linux network interface bonding / trunking or how to get beyond 1 Gb/s

Louwrentius: Linux network interface bonding / trunking or how to get beyond 1 Gb/s

named+ISPManager

Запустил новый сервер (на freebsd), подключил штатный bind - system-named. В "доменные имена" появилась куча записей вида
0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa
0.f.ip6.arpa
0.in-addr.arpa
0.ip6.arpa
1.e.f.ip6.arpa
1.f.ip6.arpa
1.ip6.arpa
....

В принципе, это empty-зоны и их можно удалить на хостинге. Но правильнее или вынести их все из конфига в named.defzones, или ISP настроить на запись зон в named.zones, не трогая зоны из главного файла. Второй вариант попробую пропихнуть авторам (попутно снимаем кучу проблем вроде обновления системы, когда mergemaster хочет заменить конфиг на дефолтный и если все-таки заменить, 1 инклуд + правка listen и по мелочи - и работаем дальше)

http://forum.firstvds.ru/viewtopic.php?p=35534&sid=8c6b0dd6b411c13dc19b8e98f11c01b1
тут еще чуть-чуть.

почему смена ns-записей на .ru домене занимает несколько дней

# dig ru SOA

;; ANSWER SECTION:
ru. 345600 IN SOA ns.ripn.net. hostmaster.ripn.net. 4017122 86400 14400 2592000 3600
; Serial, Refresh, Retry, Expire, Neg. cache TTL

TTL SOA записи 345600 секунд - 96 часов - 4 дня. А там серийник..
С другой стороны, Refresh сутки, а Neg. cache TTL вообще 1 час.

Как оно точно считаться будет, пока вопрос.

Louwrentius: Do not buy a hardware RAID controller for home use

Louwrentius: Do not buy a hardware RAID controller for home use
"Почему не стоит использовать аппаратный рейд дома".
Вкратце: иначе диск на первом же бэде выкинет как отпавший.

Но я бы немного переформулировал: "Почему не надо ставить бытовые диски с аппаратными рейдами". Или подбирать типа WD RE, у которых время на попытки чтения ограничено.

Louwrentius: Linux: using disk labels to counter storage device name changes

Louwrentius: Linux: using disk labels to counter storage device name changes

воскресенье, 5 декабря 2010 г.

Память DDR4: время ли разбрасывать камни? | Процессоры и память - 3DNews - Daily Digital Digest

Память DDR4: время ли разбрасывать камни? | Процессоры и память - 3DNews - Daily Digital Digest

mv: Почему нельзя переместить каталог, если такой уже есть

Попытаемся переместить /src в /dst/src, при том, что такая уже есть:
mv /src /dst/
mv: rename /src to /dst: Directory not empty

В мане сказано, почему:
As the rename(2) call does not work across file systems, mv uses cp(1)
and rm(1) to accomplish the move. The effect is equivalent to:

rm -f destination_path && \
cp -pRP source_file destination && \
rm -rf source_file

Таким образом, если бы команда отработала, сначала очистило бы содержимое старой папки, а это несколько не то, что нам нужно.
Риторический вопрос, что мешает убрать первый rm, чтобы получилось копирование с заменой...
Как вариант решения:
rsync -aS /src /dst/
rm -rf /src
Не забываем, что у rsync закрывающий слэш имеет значение.

суббота, 4 декабря 2010 г.

ASUS AT3IONT-I - основа медиацентра на базе Atom + ION | Материнские платы - 3DNews - Daily Digital Digest

ASUS AT3IONT-I - основа медиацентра на базе Atom + ION | Материнские платы - 3DNews - Daily Digital Digest
Очень интересная штука, и на порядок интереснее аналогов.
По начинке - аналог acer revo (на 330 который)

Уточнение.
На рус. сайте такой просто нет. На англ есть, 2 версии, простая и deluxe.
Простая - только с ATX-питанием, без wifi модуля.
Deluxe - только с внешним БП, без ATX, с wifi, и с пультом управления + внешним ик-портом.
http://www.asus.com/Search.aspx?SearchKey=AT3IONT-I

Разница в цене где-то 1.5к

пятница, 3 декабря 2010 г.

Что грузит диск?

В CentOS:

Есть в линуксе неплохая утилита iotop, попробуем поставить..

#yum install --enablerepo=epel-testing iotop

#iotop
iotop requires kernel-2.6.18-199.el5 or later, but kernel-2.6.18-194.17.1.el5xen is running

Облом-с.

Есть еще atop.

#yum install -y atop
#atop -d

Ещё вариант
http://www.opennet.ru/tips/info/2487.shtml
http://www.opennet.ru/openforum/vsluhforumID3/72792.html
(SystemTap)

четверг, 2 декабря 2010 г.

Цинизм в IT: Как правильно переносить сайты с хостинга на хости...

Цинизм в IT: Как правильно переносить сайты с хостинга на хости...: "1. Экспортируете базу данных на старом хостинге 2. Импортируете базу данных на новом хостинге 3. Блокиурете соединения с удаленными MySQL: i..."

Цинизм в IT: Диагностика проблем с почтой на сервере / VPS

Цинизм в IT: Диагностика проблем с почтой на сервере / VPS: "Добрый вечер! Сегодня решил написать об одной из самых частых и часто сложных проблем при работе с выделенными серверами / VPS - это проблемы с почтой, причем как входящей, так и исходящей. Итак, поехали."

Цинизм в IT: Как корректно настроить spf для Gmail?

Цинизм в IT: Как корректно настроить spf для Gmail?

SPF

Цинизм в IT: ISPManager, spf и защита от СПАМа

От себя добавлю, что "мягкий отказ" часто не рекомендуется, так как нивелирует вообще смысл spf. Имеет смысл ставить -all.

Ещё немного:
http://www.redline-software.com/rus/support/articles/msexchange/2003/an_overview_of_the_sender_policy_framework.php

Большая и полезная дока:
http://www.zytrax.com/books/dns/ch9/spf.html

Об ошибках:
http://www.openspf.org/FAQ/Common_mistakes

понедельник, 29 ноября 2010 г.

.htaccess 301 редирект

RewriteEngine on
RewriteRule (.*) http://domen.ru/$1 [R=301,L]
Может быть косяк с циклическим редиректом, если дальше есть правила вида RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Варианты - или сделать остановку на данном правиле, или (что более верно) - проверять, тот ли это домен: например, поставить сначала
RewriteCond %{HTTP_HOST} ^host.ru$ [NC]
Или ещё более кошерно
RewriteCond !%{HTTP_HOST} ^need-host.ru$ [NC]
как-то так.

редирект без-www на www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^host.ru$ [NC]
RewriteRule (.*) http://www.host.ru/$1 [R=permanent,L]

вариант 2
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.host.ru
RewriteRule (.*) http://www.host.ru/$1 [R=permanent,L]

пятница, 26 ноября 2010 г.

Особенности стягивания wget-ом

Добавил к часто используемым ключам
-r - рекурсивно
--limit-rate=
--ftp-user=
--ftp-password=

еще один:
-l depth
--level=depth
Specify recursion maximum depth level depth. The default maximum
depth is 5.

Если качать по фтп сайт, 5 часто оказывается мало, ставлю 15.

понедельник, 22 ноября 2010 г.

немного про репликацию mysql

Понадобилось внести в набор master-slave еще одну базу.
Бинлог ведется по всем базам.
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000416 | 6253340 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Пробуем..
master:
create database db character set cp1251;

slave:
vi my.cnf
вносим базу в список replicate-do-db=
перезапускаем слейв (стоит скип-старт). Базы нет. Да и не должно.
slave start;
базы нет. Но в show slave status она есть.
Попробуем создать.
create database db character set cp1251;
use db;
база есть.
show tables пока пуст, но и на мастере нету ничего. А теперь проверим "живую" заливку.

master:
mysql -u root -p db
slave:
show tables - заливка прошла!
Теперь осталось залить пользователей, потому что слейв не слушает базу mysql.

master и slave:

grant all privileges on db.* to 'db'@'localhost' identified by 'pass';
flush privileges;

В принципе все.

PuTTY Connection Manager

По работе приходится запускать до 30 сессий putty, пора делать это удобно.

Нашел менеджер: PuTTY Connection Manager
Требует .NET 2.0
Оттуда же желательно сразу AES библиотеку скачать.
Из недостатков - я использую portaputty, сессии которого несовместимы с этим менеджером. Надо сделать запрос фичи.

Из моментов реальной работы:
сессии portaputty с менеджером несовместимы, а использование простого putty делает непортабельным комплект. Но использовать сессии от portaputty можно! Для этого создаем Database, там нужный нам хост и в свойствах в разделе Putty session прописываем туда:
-load "my profile"

Теперь такие вещи, как ключ, таймауты, логин итд - берутся оттуда.

Стабильность на 1 окне с 1 путтей - нормальна, но когда памяти занято много, и несколько отдельных окон (для удобства у меня 1 окно - 1 база, разделены внутренние сервера, виртуальные сервера, внешние...) - периодически падают как putty внутри, так и сами процессы менеджера. Более того, менеджер может упасть, есть вызвать putty menu - бывало у меня и такое. Так что за стабильность выше двочеки не поставить. При этом открытая пачка отдельных putty - падало только вместе с системой, или пока я не закрою.

суббота, 20 ноября 2010 г.

меняем в ФФ поиск по умолчанию с яндекса на нормальный

Открываем about:settings
находим keyword.URL и присваиваем ему значение http://www.google.ru/search?q=
Все, больше яндекс нас не потревожит.
И еще вверху можно открыть "управление поисковыми плагинами" и удалить оттуда яндекс или просто вниз перенести.
Еще я повесил бинды g для гугла и w для вики.

четверг, 18 ноября 2010 г.

nginx+passenger во FreeBSD

UP
Сейчас в nginx конфигураторе есть штатно passenger - ничего патчить не надо, ставим галочку и собираем. Про зависимости вроде rubygem не проверяли, но должно автоматом подтянуться всё нужное.
Из блока ниже понадобится разве что пример конфигурации для nginx.

Старая версия:

eaccelerator

Попробовал поставить eaccelerator.
#yum install php-eaccelerator

---> Package php-eaccelerator.i386 1:0.9.5.2-2.el5 set to be updated
--> Processing Dependency: php-zend-abi = 20050922 for package: php-eaccelerator
--> Finished Dependency Resolution
1:php-eaccelerator-0.9.5.2-2.el5.i386 from epel has depsolving problems
--> Missing Dependency: php-zend-abi = 20050922 is needed by package 1:php-eaccelerator-0.9.5.2-2.el5.i386 (epel)
Error: Missing Dependency: php-zend-abi = 20050922 is needed by package 1:php-eaccelerator-0.9.5.2-2.el5.i386 (epel)
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

Что за..

#yum install php-zend-abi
Package php-common-5.2.10-1.el5.centos.i386 already installed and latest version
Nothing to do

Ага, было слияние пакетов. Но та версия, что в epel, пока об этом не знает. А в centos-testing такого пакета просто нет.

Попробуем поставить remi
#rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
#yum install --enablerepo=remi php-eaccelerator

И... Оно хочет мне обновить php версию до 5.3!
5.3.3-1.el5.remi

Последняя попытка.
yum install --skip-broken php-eaccelerator

И все-равно не оно. И опции --nodeps или --force тоже нету. И даже банального --version=x.x
Вот за что ненавижу предкомпилированные пакеты -- чуть отклонение от нормы и собирай из исходников.

Дальше-больше. php-eaccelerator-0.9.5.2-2.el5.i386 похоже вообще не заработает.
http://eaccelerator.net/ticket/338

А потом я нашел решение.
#rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm
#yum install php-eaccelerator

Все, стоит 0.9.6 и на той версии, что мне нужна.

ставим bitrix в centos

В принципе, ставится оно просто (не то что redmine, ага)

yum install httpd nginx mysql php php-mysql gd php-gd
Если что, может понадобиться доставить freetype, zlib, php_mbstring
Но они должны сами вытянуться по зависимостям. И поэтому же я ставлю только основные модули всегда, чтобы зависимости сами вытягивались и при удалении также удалялись как более ненужные.
Если что, nginx есть в epel, php - в el5.centos (который CentOS-Testing, есть в заметках)

Дальше настраиваем nginx, apache, даем права apache:apache папке, куда ставим, заливаем скрипт установки
http://www.1c-bitrix.ru/download/cms.php#tab-bitrixsetup-link
и запускаем. Должно все заработать. Выбираем ознакомительный режим, любую сборку, и доходим до "Предварительная проверка"
Доставляем если чего не хватает, выставляем mbstring.func_overload и mbstring.internal_encoding в /etc/php.ini ...
И запускаем тесты производительности.
Оптимизация - отдельная тема, тут трогать не буду.

Есть какой-то скрипт автоматической установки, но пока не нашел. Более того, мне показалось, что во фре оно есть прямо в портах.
Также может понадобиться eaccelerator/аналоги и zend.

среда, 17 ноября 2010 г.

баги хена-2

end_request: I/O error, dev xvda, sector 323805
end_request: I/O error, dev xvda, sector 323893
end_request: I/O error, dev xvda, sector 323261
Buffer I/O error on device dm-0, logical block 14254
lost page write due to I/O error on dm-0
Aborting journal on device dm-0.
ext3_abort called.
EXT3-fs error (device dm-0): ext3_journal_start_sb: Detected aborted journal
Remounting filesystem read-only
end_request: I/O error, dev xvda, sector 218861
Buffer I/O error on device dm-0, logical block 1204
lost page write due to I/O error on dm-0
end_request: I/O error, dev xvda, sector 853869
Buffer I/O error on device dm-0, logical block 80580
lost page write due to I/O error on dm-0
Buffer I/O error on device dm-0, logical block 80581
lost page write due to I/O error on dm-0

ejabberd в CentOS

Немного погуглил и расстроился, что придется собирать ejabberd из исходников, а это много мороки.. Да и просто собирать глупо, надо сначала пакет делать, это лишние усилия и время. Но потом нашел, что оно есть в epel!

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
или
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86-64/epel-release-5-4.noarch.rpm
Обращу внимание, что периодически нужный пакет обновляется, так что если что, идем http://download.fedora.redhat.com/pub/epel и далее по нужным нам атрибутам.

yum install ejabberd

Дальше можно посмотреть
http://privats.ru/tag/ejabberd
http://plone.lucidsolutions.co.nz/linux/im/ejabberd-centos-vm

Не забываем внести нужные строки в днс.

asterisk 1.6 для CentOS

http://www.asterisk.org/downloads/yum

Причем там не древняя 1.4, а нормальная 1.6!

создание sparse файла

Например, когда надо сделать iso файл для xen-а, а времени на простое заполнение через dd нету.
dd if=/dev/zero of=guest.img bs=1M count=0 seek=5000
или
truncate -s 4G guest.img

монтирование iso во FreeBSD

mount -t cd9660 /dev/`mdconfig -a -t vnode -f discimg.iso` /cdrom

отсюда http://www.commandlinefu.com/commands/view/1014/loopback-mount-.iso-on-freebsd

"Полный" вариант выглядит так:
# mdconfig -a -t vnode -f /home/steven/5.4-RELEASE-i386-disc1.iso -u 0
# mount -t cd9660 /dev/md0 /var/ftp/pub/freebsd-5.4/
Но он менее удобен, особенно в скриптах.

отмонтировать
mdconfig -d -u 0

apache+nginx и Keepalive

Когда работает связка apache+nginx, по идее Keepalive надо ставить на максимум - экономим ресурсы на коннектах. Поскольку там создали страницу, отдали быстро проксе и снова ждем данных, существующие коннекты должны использоваться эффективно. Но есть подозрение, что надо его все-таки отключать.

Судя по http://markmail.org/message/24r67x3kaztl4qpf#query:apache%20nginx%20keepalive+page:1+mid:djcpsyst2kewktf6+state:results
и смежным темам, надо отключать, поскольку nginx шлет close
"Наверно потому что используется HTTP/1.0 - оно не умеет keepalive"

redmine варианты запуска

Редмайн написан на руби, что делает его запуск несколько проблемным.
Пока нашел варианты запуска:
1) через встроенный веб сервер webrick (на 3000 порту). Увы, весьма нестабилен и за 2 недели падал 3 раза.
2) mongrel и mongrel-cluster
3) Thin
4) nginx + passenger
5) apache + mod_ruby

Гугль говорит, что webrick и thin не рекомендуются, cо встроенным я убедился, что не стоит...

Даже если проект локальный, желательно отдавать статику через nginx, так что вариант с прокси будет оптимальным.
Осталось определиться, mongrel или passenger.

http://www.modrails.com/documentation.html
Похоже, производительность примерно равна.

В оф.доке
http://www.redmine.org/wiki/redmine/HowTo_configure_Nginx_to_run_Redmine
используется вообще Thin.

mongrel
rubygem-mongrel.x86_64 : A small fast HTTP library and server for Ruby apps
rubygem-mongrel_cluster.noarch : GemPlugin wrapper for the mongrel HTTP server

Mongrel-cluster ставится так:
yum install rubygem-mongrel_cluster

Дальше можно делать по доке
http://seriyps.ru/blog/2010/01/14/ustanovka-redmine-na-ubuntu-9-10-pod-nginx-chast-2/

passenger ставится так:
gem install passenger
Потом модуль для nginx
passenger-install-nginx-module

Тут: http://www.modrails.com/documentation/Users%20guide%20Nginx.html
основная дока.

И не забываем настроить почту, это делается в config/email.yml
Чтобы просто отправлять от обычного пользователя (с существующего ящика), вписываем туда в production: настройки почтового сервера и наслаждаемся.
Если же надо еще и обрабатывать ответы по почте, смотрим доку ниже.

Еще полезная дока:
http://ru.gentoo-wiki.com/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Redmine
В частности, там есть немного по подключению баз и настройке exim.

Увы, sqlite3 у меня так и не заработал... Пришлось делать на mysql.

Изменение ядра по умолчанию

Когда ставим хен-ядро, после обновления ядра вполне может загрузиться опять простое.
Спасибо заметке http://phpsuxx.blogspot.com/2010/11/centos-x86-4.html
Оказалось, надо в моем случае открыть /etc/sysconfig/kernel и заменить там
DEFAULTKERNEL=kernel
на
DEFAULTKERNEL=kernel-xen

понедельник, 15 ноября 2010 г.

rsync

Надо синхронизировать 2 сервера, /var/www
Сначала я думал использовать rsyncd, но у него шифрование md4 и пароли в открытом виде... Лучше просто rsync через ssh, создать спец юзера и в authorized_keys вписать ему ключ и команду.

Если что, чего читал:
http://www.opennet.ru/man.shtml?topic=rsyncd.conf&category=5&russian=0
http://www.lissyara.su/articles/freebsd/programms/rsync/
http://wiki.izhnet.org/pages/viewpage.action?pageId=6225921

суббота, 13 ноября 2010 г.

Адаптеки 5ххх+seagate = проблемы

http://forum.ixbt.com/topic.cgi?id=66:7025:1

"Это известный баг винтов Сигейт 7200.11 и Адаптеков 5ххх
см. например
http://3nity.ru/viewtopic.php?f=63&t=12037"

Большие самодельные СХД

http://louwrentius.blogspot.com/2009/07/20-disk-18-tb-raid-6-storage-based-on.html
18Тб

http://www.fishki.net/comment.php?id=77671
90 терабайт, в состав которого вошло: два блока питания по 1600 Вт, 5 контроллеров, 64 жестких диска и 40 карлсонов

http://hardforum.com/showpost.php?p=1033720469&postcount=2
Top 10+ Tb систем

http://hardforum.com/showthread.php?t=1512972
С ссылки выше, 100тб в картинках.

Немного про ZFS

http://habrahabr.ru/blogs/i_am_clever/54806/

SGPIO

Вкратце: дополнительный кабель (10-пин) для передачи вспомогательной информации от контроллера к бэкплейну, например, активность дисков и их статус.

Подробнее:
http://en.wikipedia.org/wiki/SGPIO

И пара слов тут есть:
http://ru.wikipedia.org/wiki/Serial_Attached_SCSI

Разные подходы к дискам..

Как во фре удобно сделано: диск привязан к порту, поэтому появление нового диска в более младшем порту не мешает системе никак. И может быть 1 диск в системе, /dev/ad20, и это нормально...
В центоси с этим проблема. Был sda, вставили еще диск.. теперь новый получает sda, старый должен стать sdb, но не хочет, и начинается война. Стали делать привязку к UUID (зачем?? Есть же WWN, который используется во всех норм системах.. Но мы выпендримся!). А если хотим грузиться с рейда? В общем, хотели как лучше, получили как всегда. Лучше бы по номеру порта обзывали чтоли..

Уточнение: похоже, линь не дружит с хотплагом ИДЕ. Контроллер был в режиме "SATA", переключил в AHCI, сейчас хотя бы не падает все.
И снова кивок в сторону фри, где atacontrol detach ataX, atacontrol attach ataX и диск в системе. Отключать - после детача. Да, рескан реально не работает.

Продолжение бед

Про первую часть - после перезагрузки диски поменяли названия, видимо поэтому и лезли эти странные баги. Центось не умеет хотсвап?

Вставил диск в корзину (743 супермикра).
ata1: exception Emask 0x10 SAct 0x0 SErr 0x4080000 action 0xe frozen
ata1: irq_stat 0x00000040, connection status changed
ata1: SError: { 10B8B DevExch }
ata1: hard resetting link
ata1: SATA link down (SStatus 0 SControl 300)
ata1: EH complete
каждые 3 сек, пока диск не вынул.

Видимо, есть проблемы.

пятница, 12 ноября 2010 г.

беды с xen-серверком

Отпала ссш консолька от виртуалки.. В xm console вошел, получил строку
Message from syslogd@ at Thu Nov 11 20:31:38 2010 ...
centos-x64-xen kernel: journal commit I/O error

В дом0 в дмесге

...
end_request: I/O error, dev sda, sector 8726615
sd 3:0:0:0: SCSI error: return code = 0x00040000
end_request: I/O error, dev sda, sector 8726615
sd 3:0:0:0: SCSI error: return code = 0x00040000
...

end_request: I/O error, dev sda, sector 7601039
type=1701 audit(1289516342.948:3540): auid=500 uid=0 gid=0 ses=514 subj=user_u:system_r:unconfined_t:s0 pid=15252 comm="smartctl" sig=7

(попробовал запустить smartctl, получил Bus error)
И это при том, что сейчас файл с виртуалкой лежит на другой машине и получается через NFS.

root@file:/backup/nfs# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad7
ad5

Там все в порядке.


[root@centos-x64-xen named]# /etc/init.d/avahi-daemon stop
Shutting down Avahi daemon: Failed to open PID file: Read-only file system
Failed to kill daemon: Read-only file system
rm: cannot remove `/var/lock/subsys/avahi-daemon': Read-only file system

Интересная хрень!

В хвосте /var/log/messages строки:

Nov 11 20:29:41 centos-x64-xen kernel: ata4.00: exception Emask 0x50 SAct 0x1 SE
rr 0x680901 action 0x6 frozen
Nov 11 20:29:41 centos-x64-xen kernel: ata4.00: irq_stat 0x0c000000, interface f
atal error
Nov 11 20:29:41 centos-x64-xen kernel: ata4: SError: { RecovData UnrecovData Hos
tInt 10B8B BadCRC Handshk }
Nov 11 20:29:41 centos-x64-xen kernel: ata4.00: cmd 61/08:00:27:c1:00/00:00:00:0
0:00/40 tag 0 ncq 4096 out
Nov 11 20:29:41 centos-x64-xen kernel: res 40/00:04:27:c1:00/00:00:00:0
0:00/40 Emask 0x50 (ATA bus error)
Nov 11 20:29:41 centos-x64-xen kernel: ata4.00: status: { DRDY }
Nov 11 20:29:41 centos-x64-xen kernel: ata4: hard resetting link
Nov 11 20:29:42 centos-x64-xen kernel: ata4: softreset failed (device not ready)
Nov 11 20:29:42 centos-x64-xen kernel: ata4: failed due to HW bug, retry pmp=0
Nov 11 20:29:42 centos-x64-xen kernel: ata4: SATA link up 3.0 Gbps (SStatus 123
SControl 300)
Nov 11 20:29:42 centos-x64-xen kernel: ata4.00: configured for UDMA/133
Nov 11 20:29:42 centos-x64-xen kernel: ata4: EH complete
Nov 11 20:29:42 centos-x64-xen kernel: SCSI device sda: 625140335 512-byte hdwr
sectors (320072 MB)
Nov 11 20:29:42 centos-x64-xen kernel: sda: Write Protect is off

Все, лог кончился.. где-то 6 часов назад.

При этом

[root@centos-x64-xen named]# touch /var/xen/nfs/test
успешен. Хотя это как раз нфс-шара...

Следом идущие баги:

[root@centos-x64-xen named]# xm list
Traceback (most recent call last):
File "/usr/sbin/xm", line 5, in ?
from xen.xm import main
File "/usr/lib64/python2.4/site-packages/xen/xm/main.py", line 55, in ?

File "/usr/lib64/python2.4/site-packages/xen/util/xsm/xsm.py", line 7, in ?
....

IOError: [Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/etc/named']

В общем, хана. Надо ребутиться. Проблема в том, что это уже второй раз. Но сначала попробуем хоть чуть-чуть оживить...

[root@centos-x64-xen named]# mount -t tmpfs none /tmp
[root@centos-x64-xen named]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1473 4 r----- 139784.4
...

Ура.

И напоследок еще забавный момент.

[root@centos-x64-xen named]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1473 4 r----- 139802.9
SVN 16 256 1 ---s-- 3203.7
aqua3.wm 22 512 2 ---s-- 140.1
jabber-server 20 256 2 ---s-- 110.2
mail 17 256 1 ---s-- 2244.8
test2-nfs 7 512 1 -b---- 11836.6
zabbix-server 13 256 2 ---s-- 53772.9

В документации что-то было на тему, что -s- юзер никогда не должен увидеть. Ага.

четверг, 11 ноября 2010 г.

Создаем новый LVM

создание раздела
fdisk /dev/hda
u
p
n


w
<перечитать диски>

~]# pvcreate /dev/hda4
Physical volume "/dev/hda4" successfully created

~]# pvdisplay
"/dev/hda4" is a new physical volume of "45.00 GB"
--- NEW Physical volume ---
PV Name /dev/hda4
VG Name
PV Size 45.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID sY9uM2-qwt0-mR2w-0rMw-pRuh-bp4s-1fG1Ro

~]# vgcreate vg0 /dev/hda4
Volume group "vg0" successfully created

~]# lvcreate -v -L +20G vg0
Setting logging type to disk
Finding volume group "vg0"
Archiving volume group "vg0" metadata (seqno 1).
Creating logical volume lvol0
Creating volume group backup "/etc/lvm/backup/vg0" (seqno 2).
Found volume group "vg0"
visited lvol0
visited lvol0
Creating vg0-lvol0
Loading vg0-lvol0 table
Resuming vg0-lvol0 (253:0)
Clearing start of logical volume "lvol0"
Creating volume group backup "/etc/lvm/backup/vg0" (seqno 2).
Logical volume "lvol0" created

или mkfs
[root@centos ~]# mkfs.ext3 /dev/mapper/vg0-lvol0
mke2fs 1.39 (29-May-2006)

]# mount /dev/mapper/vg0-lvol0 /var1

LVM

Пришлось переходить полностью на линукс, надо виртуализировать все хозяйство, а на файлосервер денег зажали и будет 1 нода с пачкой дисков.
Изучаю lvm.
Недостатки: это решение явно не дотягивает до ZFS, да и рейдом не назвать как таковым. Потому что если во фре мы сделаем gmirror create gm0 ad4 ad6, то на итоговое зеркало можно спокойно ставить систему, не заморачиваясь с грубом (на lvm надо потом каждому диску ткнуть, что он загрузочный). Плюс нет такого удобного управления, как в ZFS (zpool status и видно, кто выпал, кто жив).. Да и создание зеркала там тоже элементарное.. А сжатие, а дедупликация, ээххх..

Переводим CentOS на статику

Понадобилось перевести некоторые машины на статику.

/etc/sysconfig/networking/devices/ifcfg-eth0
Тут настройки для первой сетевухи.

DEVICE=eth0
#BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=192.168.2.15
NETMASK=255.255.255.0
GATEWAY=192.168.2.2
IPV6INIT=no
HWADDR=00:26:18:B8:C2:4A
ONBOOT=yes

В данном случае закомментирован #BOOTPROTO=dhcp и следом вписаны адрес, маска, шлюз.
И не забыть поправить /etc/resolv.conf, вписав строки nameserver 8.8.8.8 или свои днс-ы, строка на 1 адрес.

При этом у меня в логе оказалась строчка

Nov 11 18:43:53 server restorecond: Will not restore a file with more than one hard link (/etc/resolv.conf) Invalid argument
Похоже, при этом ломается какая-то система файлов...

# locate resolv.conf
/etc/resolv.conf
/etc/resolv.conf.predhclient
/etc/sysconfig/networking/profiles/default/resolv.conf
/usr/share/man/man5/resolv.conf.5.gz

Правильнее править 2 или 3?...

Неприятный баг в апаче

Есть такой момент, что следование записей о хостах в конфиге имеет значение, при этом apachectl -S покажет все как ожидается, но реально работать будет не так. Например, первая запись описывает domain.com, а все последующие - его поддомены. Но в первой записи есть

ServerAlias www.domain.com *.domain.com

Показывать apachectl -S будет то, что мы и ожидаем увидеть, а вот работать некорректно. Если же переставим нужные поддомены выше -- заработает, как и ожидалось.

И влечет это еще багу:
Include etc/apache2/Includes/*.conf
У меня каждый сайт в отдельном файле. И теперь если сначала считает основной домен, а потом поддомен - можно задолбаться.

Решение -- использование префиксов для поддоменов, например _sub.domain.com, __sub.sub.domain.com или всем дать номера. Один раз тоже вылезла бага - на всех серверах отрабатывало как надо, а на одном читало непойми как, там пришлось прописать руками все домены в конфиг. Или фикс - в конфиг:
Include etc/apache2/Includes/__*.conf
Include etc/apache2/Includes/_*.conf
Include etc/apache2/Includes/*.conf
(проверить, но должно работать)

Многие скажут, что это не бага, а фича, но на самом деле это бага в полном смысле. Лечится составлением списка всех доменов и выбором с наиболее точным совпадением, как у того же DHCP с масками мак-адресов сделано, от большего совпадения к меньшему.

avahi

Что вообще есть этот авахи?

Avahi — система, производящая анализ локальной сети на предмет выявления различных сервисов. К примеру, вы можете подключить ноутбук к локальной сети и сразу получить информацию об имеющихся принтерах, разделяемых ресурсах, сервисах обмена сообщениями и прочих услугах. Подобная технология существует в Mac OS X (Rendezvous, Bonjour) и показала себя с лучшей стороны.

http://ru.wikipedia.org/wiki/Avahi
http://ru.wikipedia.org/wiki/Zeroconf

Именно отсюда растут ноги у сети 169.254 и UPnP. Но я не могу представить, когда в сети больше 10 компов эти штуки имеют смысл. Разве что для дома в сети из 2-3 машин.

В винде всякие bonjour, mDNSResponser итд - виндовая версия авахи.

avahi-daemon: Invalid query packet.

Нашел в логах строки

Nov 10 16:34:10 centos-x64-xen avahi-daemon[3038]: Invalid query packet.
Nov 10 16:46:48 centos-x64-xen last message repeated 3 times
Nov 10 16:50:42 centos-x64-xen last message repeated 3 times

"It's just some unexpected Bonjour query packets, and nothing to worry about. These were introduced by the new "sleep proxy" feature in Snow Leopard. Next release will not complain about these packets."
Смысл - не о чем волноваться, когда-нибудь пофиксят. Я пофиксил просто отключением этой авахи, для меня особо не нужной. http://ru.wikipedia.org/wiki/Avahi - что это такое.

инфу нашел тут:
http://www.readynas.com/forum/viewtopic.php?f=7&t=39832
и немного тут
http://forums.fedoraforum.org/showthread.php?p=1339423

среда, 10 ноября 2010 г.

Бэкапы в S3, часть 1

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


Выгрузить файл в службы Amazon S3 с web-страницы можно несколькими способами:
  • При помощи командной строки, используя соответствующие модули CPAN.
  • При помощи командной строки, используя соответствующие модули Amazon.
  • Непосредственно из HTML-формы.
http://www.ibm.com/developerworks/ru/library/l-amazon-perl-2/

CPAN в свою очередь делятся еще на 2 части:
SOAP и REST
Модули - к примеру, s3cmd
Получить файл можно простым wget

Хранить нужно:
1) Дампы баз
2) архивы проектов (www)
3) копии репозитариев
4) рабочие файлы

Подборочка ссылок на скрипты
http://jeremy.zawodny.com/blog/archives/007641.html

s3sync пока отложил, потому что он на руби. Если часть проектов на наших серверах, где можно доставить руби, то на некоторых внешних проектах это практически нереально. Так что предпочтительно перл/пхп. Хотелось еще питон, но он по тем же причинам отложен. Хотя s3cmd зависимостями тянет питон, так что..

По установке немного:
http://habrahabr.ru/blogs/linux/72754/
http://wiki.vpslink.com/Automate_Backups_with_Amazon_S3_and_s3sync

Есть вариант duplicity + deja-dup

Получается как-то сумбурно немного, но я иначе вообще не выложу ничего...

вторник, 9 ноября 2010 г.

Возвращаем хранилище mysql на его логичное место

в дебияне с какого-то перепугу базы лежат в /var/lib, исправим
Остановим мускуль.
# mv /var/lib/mysql /var/db
#vi /etc/my.cnf
и в разделе [mysqld] вписываем:

datadir=/var/db/mysql
socket=/var/db/mysql/mysql.sock

запускаем, работаем.

Ищу постилку на этот сайт..

Чтобы копипаста не обрастала морем бесполезных и мешающих тэгов и не надо было потом в режиме "изменить хтмл" вычищать весь этот хлам.

mod_rpaf

Небольшое уточнение по параметрам

Module configuration is pretty simple, there are only two directives to set; RPAFenable and RPAFproxy_ips. With the later you can define which IP's are your frontend proxies that sends the correct X-Forwarded-For headers. If you do not use the RPAFproxy_ips directive then the module will not change the remote address of the incoming connection at any time. RPAFsethostname will, when enabled, take the incoming X-Host header and update the virtualhost settings accordingly.


New in version 0.6 is the ability to change which header Apache looks at. With the configuration directive RPAFheader you can now change the default X-Forwarded-For to X-Real-IP if you so choose. There are also bugfixes in this version that makes mod_rpaf work correctly with Keep-Alive requests.

В общем, если просто установлен RPAFproxy_ips и RPAFsethostname, то читается X-Host. Можно доустановить RPAFheader X-Forwarded-For, чтобы читалась эта переменная.



# if DSO load module first:
LoadModule rpaf_module libexec/apache2/mod_rpaf-2.0.so

RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.0.0.1
RPAFheader X-Forwarded-For


http://stderr.net/apache/rpaf/
 
UPD: обнаружил на одном хосте багу. Когда была установлена RPAFsethostname On, POST на форумах и картинки отдавались криво - вместо имени хоста ставился айпи клиента.

debian

Попросили настроить ISPManager в fastcgi режиме на дебияне.
Отвратительная система... Половины штатных утилит нет, пакеты старые... Нету банального dig!

Итак.
Сначала, ставим бинд в качестве кэша
# aptitude install bind9 bind9utils
(можно и не делать, а можно поставить dnsmasq)

Обновляем nginx, тут есть репы
http://wiki.nginx.org/Install

deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
(только для 6, в 5 ищем чужие сборки)


Проверяем, что стоит какой-либо fcgi модуль.
Варианта 2:
libapache2-mod-fcgid - an alternative module compat with mod_fastcgi
libapache2-mod-fastcgi - Apache 2 FastCGI module for long-running CGI scripts

Проверяем, что есть php-cgi, и делаем симлинк /usr/local/bin/php-cgi в /usr/bin
после этого разрешаем cgi в настройках и переключаем в режим fastcgi.

среда, 3 ноября 2010 г.

ставим s3cmd

# cd /etc/yum.repos.d/
# wget http://s3tools.org/repo/CentOS_5/s3tools.repo
# yum -y install s3cmd
 Можно использовать.

Небольшое дополнение. s3cmd тянет в зависимостях питон.

usvn

2 пакет - usvn
Опять CentOS. Хочу сделать отдельным хостом.
Качаем, распаковываем
# wget http://www.tigris.org/files/documents/5823/46728/usvn-1.0.1.zip
# unzip  usvn-1.0.1.zip

получаем папку usvn-1.0, я ее переместил в /var/www
Но просто после распаковки инсталл будет ругаться - надо выставить права
chown -R apache:apache {config,public}


Создаем конфиг.
#vi /etc/httpd/conf.d/usvn.conf
<VirtualHost *:80>
        ServerAdmin webmaster@dummy-host.example.com
        DocumentRoot /var/www/usvn-1.0/public
        ServerName usvn
        ErrorLog logs/usvn-error_log
        CustomLog logs/usvn-access_log common
        <Directory /var/www/usvn-1.0>
                Options Indexes FollowSymLinks ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>

        # Configure access to usvn
        Alias /usvn /var/www/usvn/public
        <Directory "/var/www/usvn/public">
                Options +SymLinksIfOwnerMatch
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

В принципе, алиас в моем случае не нужен, поэтому я просто через http://usvn обращался. Но просто в таком виде получил ошибку, что-то не могло найти.
Так что путь при инсталляции будет такой: http://usvn/install.php

Убеждаемся, что в инсталлере появилось
Good rights on "public"
Good rights on "config"

Выбираем язык, таймзону, лицензию
в Репозитарий Subversion: указываем, где мы храним репозитарии. У меня это был /var/svn
Обратите внимание: если будет какая-то ошибка (например, с правами) - пути сбросит на дефолтные!

Второй вариант:
# mkdir files
# chown apache:apache files
Дальше ему нужна БД. Зачем.. Ну раз хочет - дадим. И получаем
The PDO extension is required for this adapter but the extension is not loaded

Надо ставить.
# yum install php-pdo
И... The mysql driver is not currently installed
Ок, и его доставим
# yum install php-mysql

Создаем админа.. Решим с обновлениями..
Потом вставим в наш конфиг
<Location /svn/>
    ErrorDocument 404 default
    DAV svn
    Require valid-user
    SVNParentPath /var/svn/svn
    SVNListParentPath off
    AuthType Basic
    AuthName "USVN"
    AuthUserFile /var/www/usvn-1.0/files/htpasswd
    AuthzSVNAccessFile /var/www/usvn-1.0/files/authz
</Location>

вторник, 2 ноября 2010 г.

WebSVN

Итак, ставлю разные пакеты для управления SVN и пробую... Сейчас пробовал WebSVN. Ставил так: yum install websvn enscript
Потом в конфиге поправил строку
   allow from 127.0.0.1 192.168.2.
И все.. Система проста и понятна, но увы, это только показ. А мне нужна рулилка.

Если что, конфиг в /etc/websvn, поправить там скорее всего только 1 строчку надо:
$config->parentPath("/svn/repos");
это путь к репам. Все.

Чуть больше о настройке - http://debianworld.ru/articles/ustanovka-i-nastrojka-subversion-apache-websvn-v-debian-ubuntu-2/

понедельник, 1 ноября 2010 г.

И снова пых...

Обновлял php на другом сервере, словил ошибку..

In file included from /usr/local/include/apache2/httpd.h:44,
                 from /usr/home/max/dist/php-
5.2.13/sapi/apache2handler/php_apache.h:24,
                 from /usr/home/max/dist/php-
5.2.13/sapi/apache2handler/mod_php5.c:26:
/usr/local/include/apache2/ap_regex.h:90: error: conflicting types for 
'regoff_t'
/usr/home/max/dist/php-5.2.13/regex/regex.h:17: error: previous declaration of 
'regoff_t' was here
*** Error code 1
Оказалось, зафиксированный баг
http://bugs.php.net/bug.php?id=52187
Вылечилось правкой /usr/local/include/apache2/ap_regex.h, 90 строка, комментированием или удалением этого объявления.

Управление репами SVN

Заинтересовался интерфейсами для управления репозитариями SVN через web, нашел для себя 3:
USVN
SVNManager
Submin

Не нашел всех трёх ни во фре, ни в центоси. Благо, 2 из них на пхп, ставятся простым копированием. 3 на питоне, тут сложнее.

http://www.ossg.ru/wiki/Admin/Web-интерфейсы%20для%20Subversion
http://ru.wikipedia.org/wiki/SVN

Сделал поиск в центоси...

viewvc.noarch : Browser interface for CVS and SVN version control repositories
websvn.noarch : Online subversion repository browser
Надо бы и их тоже глянуть.

ZFS в scrub тормозит...

/> time zpool scrub
missing pool name argument
usage:
        scrub [-s] <pool> ...
0.000u 0.001s 0:03.66 0.0%      0+0k 0+0io 0pf+0w

/> zpool status
  pool: tank
 state: ONLINE
 scrub: scrub in progress for 2h26m, 3.56% done, 66h7m to go
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            ad8     ONLINE       0     0     0
            ad10    ONLINE       0     0     0

errors: No known data errors

Вот такая шняга... 4 секунды делается просто вывод помощи.
w отрабатывал секунд 10. При этом отрабатывает оно свои 12 часов и пишет, что ошибок не найдено.

воскресенье, 31 октября 2010 г.

Настройка DNS в CentOS

Надо сделать кэширующий + локальный днс.
Ставим пакеты
yum -y install bind bind-chroot
А стартовать не хочет.

# service named configtest
none:0: open: /etc/named.conf: file not found

2 сюрприза: конфиг должен быть в /etc, а не /etc/named, как в нормальных системах... и его просто нету!

Спасибо locate, нашли хвосты тут:
/usr/share/doc/bind-*/sample
Перейдем туда.
Теперь копируем оттуда файлы в etc и var, приводим к нужному виду и используем.
Проблема в том, что файлы получаются разбросанные по системе, а /etc забит вместо 1 каталога 4 файлами. Причем если вынести отдельно named.zones, файлов будет 5.
Сначала сделаю в виде "как оно хочет".
cp etc/* /etc/
cp -r var/named /var/

Не могу понять, что мешало сделать это все автоматически при установке.

Потом приводим к рабочему виду...
В другой раз попробую сделать с нормальными путями.. только нескоро это будет.

ZFS в CentOS

zfs-fuse.x86_64 : ZFS ported to Linux FUSE
Надо будет поковырять.

Единственное, я из epel ставил. Не знаю, есть ли в официальных.

четверг, 28 октября 2010 г.

еще репа для centos

Основные и наиболее часто используемые репы

Epel
FAQ
epel — пожалуй наиболее популярный репозиторий пакетов для CentOS, поддерживается сообществом Fedora. Содержит несколько тысяч пакетов различного назначения, не конфликтует с репозиториями base и updates . Рекомендуется к использованию.

Если используется ISP, после установки этой репы появляется возможность поставить
"nginx [engine x] — HTTP и прокси-сервер."
"Модуль FastCGI для веб-сервера Apache"
"phpMyAdmin - набор PHP скриптов для управления MySQL"
"Сервер баз данных PostgreSQL"
"Ruby on rails - фреймворк для построения веб-приложений"
итд.
В общем, ставить обязательно! Вдобавок, его требуют некоторые репы.

!!! Адреса изменились, вариант "было" будет ниже. Вместо download.fedora.redhat.com теперь download.fedoraproject.org, но отдается код 302 (редирект), поэтому напрямую через rpm -ivh не поставить. Или делаем wget, или используем зеркало яндекса.
5:
rpm --import http://mirror.yandex.ru/epel/RPM-GPG-KEY-EPEL-5
rpm -ihv http://mirror.yandex.ru/epel/5/`uname -i`/epel-release-5-4.noarch.rpm

6:
rpm --import http://mirror.yandex.ru/epel/RPM-GPG-KEY-EPEL-6
rpm -ivh http://mirror.yandex.ru/epel/6/`uname -i`/epel-release-6-7.noarch.rpm

было:
5:
rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL-5
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/`uname -i`/epel-release-5-4.noarch.rpm

6:
rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL-6
rpm -ivh http://download.fedora.redhat.com/pub/epel/6/`uname -i`/epel-release-6-5.noarch.rpm

CentALT
CentALT — содержит свежие версии серверного софта. Конфликтует репозиториями base и updates. Не рекомендуется к использованию.

Инструкция по установке: http://centos.alt.ru/?p=120

5: rpm -ihv http://centos.alt.ru/repository/centos/5/`uname -i`/centalt-release-5-3.noarch.rpm
6: rpm -ihv http://centos.alt.ru/repository/centos/6/`uname -i`/centalt-release-6-1.noarch.rpm

Внимание: требуется epel

Там есть свежий nginx, php5.2.17-7 итд.

Некоторые говорят, что подключать CentALT может быть опасно. Можно ограничить только на нужные пакеты. Откываем после установки файл /etc/yum.repos.d/centalt.repo
И вписываем строку
includepkgs=php*
Или ставим enable=0 и при необходимости --enablerepo=

remi
REMI — содержит свежие версии серверного софта, php, mysql httpd. Конфликтует репозиториями base и updates . Не рекомендуется к использованию без необходимости.
Софт там "совсем свежий" - если mysql, тот последняя на текущий момент ветка итд.

Внимание: требуется epel

http://blog.famillecollet.com/pages/Config-en

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

RPMForge
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge
RPMForge – содержит в себе огромный архив серверного ПО.

UP
Repoforge. Repoforge is the new name of the RPMforge project.
Установка
5: wget -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.`uname -i`.rpm
6: wget -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.`uname -i`.rpm

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
5: wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.`uname -i`.rpm
6: wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.`uname -i`.rpm
rpm -i rpmforge*

RPMFusion
http://rpmfusion.org/Configuration
RPM Fusion – объединил репозитории Dribble, Freshrpms, Livna.

Внимание: требуется epel


Описания реп частично взяты с сайта centalt
Большой список реп с описаниями: http://centos.alt.ru/?p=18
Офсайт с доп репами: http://wiki.centos.org/AdditionalResources/Repositories

Обновление php до 5.2 в CentOS

http://wiki.centos.org/HowTos/PHP_5.1_To_5.2

SSD на FreeBSD 8.1

Поставил под ДБ SSD Intel X25-E 32G, 2 в зеркало.
Вообще, скорость должна быть под 200мб/с с диска.


Странности.
# dd if=/dev/ad20 of=/dev/null
^C579642+0 records in
579642+0 records out
296776704 bytes transferred in 54.388418 secs (5456616 bytes/sec)
# dd if=/dev/ad20 of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 6.819674 secs (157447676 bytes/sec)
# dd if=/dev/ad20 of=/dev/null bs=1G count=4
4+0 records in
4+0 records out
4294967296 bytes transferred in 25.157709 secs (170721719 bytes/sec)

Вот такая ерунда. Зависит от размера блока?
# dd if=/dev/ad20 of=/dev/null bs=4k
^C112856+0 records in
112856+0 records out
462258176 bytes transferred in 9.776836 secs (47280959 bytes/sec)
#dd if=/dev/ad20 of=/dev/null bs=16k
^C50850+0 records in
50850+0 records out
833126400 bytes transferred in 10.191321 secs (81748618 bytes/sec)
# dd if=/dev/ad20 of=/dev/null bs=512
^C156910+0 records in
156910+0 records out
80337920 bytes transferred in 10.382522 secs (7737804 bytes/sec)

На закуску:
# dd if=/dev/mirror/gm-var of=/dev/null bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes transferred in 10.394644 secs (103297604 bytes/sec)

Пойду думать. И еще, что делать с TRIM, которое 8 фря не умеет, а в 9 обещали только при форматировании (насколько я помню). Плюс ZFS пока не планирует TRIM, насколько я видел в гугле.

dynamic zones в bind

Долго пытался понять, что это и с чем едят.
Сейчас нашел в конфиге строки:
/* An example dynamic zone
key "exampleorgkey" {
        algorithm hmac-md5;
        secret "sf87HJqjkqh8ac87a02lla==";
};
zone "example.org" {
        type master;
        allow-update {
                key "exampleorgkey";
        };
        file "dynamic/example.org";
};
*/

Это зона в формате для правки скриптами. Поэтому нельзя поправить файл с зоной руками - она в бинарном формате + копия в памяти. Как вариант - сделать через rndc зоне freeze, поправить, потом thaw.
(хотя бинарная ли она, вопрос - пока не проверял. В любом случае, freeze делать обязательно).
Возможно, понадобится еще dumpdb

среда, 27 октября 2010 г.

обновляем php

Надо было обновить php до 5.2.14 во фре. Помня предыдущие мытарства, оттягивал этот момент как мог. А тут еще ворох проблем, и прежде всего - простой portupgrade не пройдёт, ибо php5 теперь содержит 5.3, надо его выносить и ставить php52
Пробовал править +CONTENTS в /var/db/pkg, с переименованием папок с пакетами из php5 в php52, и потом pkgdb -F
Правда, правил только php5 и php5-extensions
Оказалось, проще будет так:
pkg_info|grep php5|awk '{print $1}'>php5-pkg
cat php5-pkg|xargs pkd_deinstall -f -
cd /usr/ports/lang/php52
и далее по списку ставим сам пхп, экстеншены... А также наверняка вынесенные phpMyAdmin, и всё "лишнее" из php5-pkg.

Пачка засад:
PHP Warning:  [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.11. Rebuild it for your PHP version (5.2.14) or download precompiled binaries.\n in Unknown on line 0
PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0
Надо пересобирать акселератор.

 Пересобрал.
PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0
eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel allows is 33554432 bytes. Lower the amount of memory request or increase the limit in /proc/sys/kernel/shmmax.

Увеличил до 64М
# sysctl kern.ipc.shmmax=67108864
kern.ipc.shmmax: 33554432 -> 67108864

Не помогло.
PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0
eAccelerator: shmmax should be at least 2MB

Тут: http://m.habrahabr.ru/post/67557/ нашел, что надо скопировать файлик.
cp /usr/local/share/examples/eaccelerator/eaccelerator.ini /usr/local/etc/php/
Не помогло. Правда, у меня был php.ini еще поправлен, прямо туда вписана настройка.
Хотя тут: http://nil.nu/ нашел подсказку:
kern.ipc.shmall=65536
kern.ipc.shmmax=268435456
и еще видел где-то совет прописать
eaccelerator.shm_max="32"
Больше 2, лучше 16-32.
После этого поднялось. Ура. 


checking for APR... configure: error: the --with-apr parameter is incorrect.

Что-то не то с APR, вылечил так:
cd /usr/ports/devel/apr1
make install clean
Хотя тут: http://free-pc-help.ru/news/checking-for-apr-configure-error-the-with-apr-parameter-is-incorrect/ сказано, что пакет надо бы пересобрать с тредами, но у меня его а) не стояло, б) галочка  на тредах была.

вторник, 26 октября 2010 г.

Zabbix с нуля

Что это такое, есть в вики
Поскольку мне приходится возиться как с centos, так и freebsd, то подборка ссылок будет "unisex".

http://phpsuxx.blogspot.com/search/label/Zabbix
Подборка с другого ресурса

http://phpsuxx.blogspot.com/2009/12/why-zabbix-suxx.html
Иметь в виду.

В центоси штатно не поставить - в репах совсем древнючая, новее нет. Причём штатно его нет вообще, а в epel версия 1.4, которая весьма прожорлива. Переход на 1.8 крайне желателен! Надо собирать пакет. Впрочем, есть вариант с уже собранными пакетами, см ниже.
debian не лучше - там тоже
Version: 1:1.4.6-1

Во фре 1.8 в портах, но сначала надо поставить perl, php (5.2 или 5.3), apache по вкусу. Потом zabbix-server, zabbix-backend

http://www.itpad.ru/?p=1431
заббикс в центоси

http://www.ignix.ru/public/daemon/zabbix
заббикс во фре

Если ставить в jail - получим ошибки.
/usr/local/bin/zabbix_server [30553]: Can not create Semaphore [Function not implemented]
/usr/local/bin/zabbix_server [30553]: Unable to create mutex for log file


http://opennet.ru:8101/openforum/vsluhforumID1/87577.html
тут решение: jail_sysvipc_allow="YES"


Ставим zabbix в CentOS из rpm (на основе доки выше, но там сборка из исходников, а у меня использование пакетов. Также в процессе использовался locate, когда что-то было не найти)
Для начала, удаляем 1.4 из epel:
#yum erase zabbix-\*
(если его не стояло - хорошо. Хотя можно посмотреть, что оно тянуло зависимостями, и скачать руками. Тот же php)

теперь идем http://repo.andrewfarley.com/centos/5/i386/ и качаем нужные пакеты нужных версий. Я взял последнюю на тот момент 1.8.3

Ставим основной пакет
# rpm -i zabbix-1.8.3-1.i386.rpm

Теперь server, для этого доставляем библиотеки:
# yum install libssh2 OpenIPMI fping
# rpm -i zabbix-server-1.8.3-1.i386.rpm

Также хорошо бы мониторить и сам сервер...
# yum install openssl-devel
# rpm -ivh zabbix-agent-1.8.3-1.i386.rpm

Если хотим веб интерфейс
# yum -y install php-xml httpd php-mbstring php-mysql
# rpm -ivh zabbix-frontend-php-1.8.3-1.i386.rpm

Если что, можно открыть спек файл и посмотреть там зависимости, описания, что ставится итд.

Теперь настроим server. Для этого нам снова не хватает модулей, доставим
# yum install mysql-server

Запустим mysql, сделаем mysql_secure_installation, подключимся к базе
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
Не забываем применить права!
mysql> flush privileges;
mysql> quit

Теперь перейдём в /usr/share/doc/zabbix-server-1.8.3/
Там лежат нужные нам файлы для БД
Зальём базу
# cd create/schema
# cat mysql.sql | mysql -u zabbix -p zabbix
# cd ../data
# cat data.sql | mysql -u zabbix -p zabbix
# cat images_mysql.sql | mysql -u zabbix -p zabbix
И 3 раза введем пароль, который указали в grant all. Впрочем, можно -p заменить на -pzabbix (без пробела) - эффект будет тот же.

Теперь переходим к конфигам.
# cd /etc/zabbix/

Правим конфиг сервера под наши задачи
# vi /etc/zabbix/zabbix_server.conf

Надо найти строки и привести к данному виду:
DBName=zabbix
DBUser=zabbix
DBPassword=пароль юзера на базу zabbix

Теперь проверим, что есть пользователь zabbix
# id zabbix
Если нет - надо создать
# useradd -m -s /bin/bash zabbix
Но у меня он уже был. Пакет должен был его создать, выставить права на /etc/zabbix и сделать владельцем.

Теперь надо запустить сервер.
# /etc/init.d/zabbix-server start
Starting ZABBIX server: [ OK ]
# /etc/init.d/zabbix-agentd start
Starting ZABBIX agent: [ OK ]

Можно выставить автозагрузку сервиса.
Оказалось, скрипт не добавил сервер! Да и агент тоже. Добавим.
# /sbin/chkconfig --add zabbix-server
# /sbin/chkconfig --add zabbix-agentd

Теперь выставим автозагрузку БД и заббикса
# /sbin/chkconfig httpd on
# /sbin/chkconfig mysqld on
# /sbin/chkconfig zabbix-server on
# /sbin/chkconfig zabbix-agentd on

Теперь перейдём к веб-интерфейсу.
Мы его уже поставили, он ставится в /var/www/html/zabbix-1.8.3/
Для начала, надо подготовить php
# vi /etc/php.ini

max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 32M
date.timezone = Europe/Moscow
mbstring.func_overload = 2

Теперь надо добавить этот сайт в настройки апача
NameVirtualHost *:80

<virtualhost *:80>
DocumentRoot /var/www/html/zabbix
ServerName zabbix
DirectoryIndex index.php
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
AddType application/x-httpd-php-source .phps
ErrorLog logs/dummy-host.example.com-error_log
</virtualhost>

Но тут один момент.. у нас же поставилось в zabbix-1.8.3, а не zabbix.. Так что надо или в примере пути поправить, или создать симлинк
# cd /var/www/html/
# ln -s zabbix-1.8.3 zabbix

Теперь перезапускаем апач и подключаемся на айпи нашего сервера и наблюдаем графический инсталлятор. Там на 3 шаге скажут, если у нас что-то не доставлено.
Например, у меня ругнулось на max_input_time (в моём варианте выше оно тоже вписано, в оригинальной доке нет)

Ещё момент - если открыть логи, там будут записи
zabbix_agentd [27158]: ERROR: Cannot create PID file [/var/run/zabbix_agentd.pid] [Permission denied]
zabbix_server [26844]: ERROR: Cannot create PID file [/var/run/zabbix_server.pid] [Permission denied]
Я правлю так:
# mkdir /var/run/zabbix
#chown zabbix:zabbix /var/run/zabbix
и в конфиги вписываю в путь pid-файлов, чтобы он был /var/run/zabbix/...

После настройки логин – admin, пароль – zabbix.

В Dashboard должна быть строка Zabbix server is running Yes

И надо сразу проверить, что сессии сохраняются. У меня по умолчанию в /etc/php.ini была строка:
session.save_path = "/var/lib/php/session"
Но права на эту папку 770, причем владелец - root! Разумеется, ничего работать не будет. Надо или ставить 1777, или создать /tmp/sess, поставить на неё 1777 и поправить конфиг. Иначе - function.session-start ... failed: Permission denied

Система стоит, можно переходить к настройке событий, триггеров и прочего.

Начало...

http://phpsuxx.blogspot.com
надо бы завести подобное, но свое..

http://markelov.blogspot.com/search/label/Virtualization
Ну и еще полезный раздел.