Gentoo Way Linux, Gentoo, Kubuntu, Ubuntu, Debian … компилируем всё!

14Мар/13Off

Ubuntu — Rsyslog server, nginx acces log collector

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

Для начала настроим клиенты, те машины что логи будут отправлять:

nano /etc/rsyslog.d/99-nginx.conf
# Загружаем модуль для работы с файлами
$ModLoad imfile
# Указываем какой файл будем экспортировать
$InputFileName /var/log/nginx/access.log
# Назначаем тэг, который будет дописываться на сервере получателе, чтобы можно было понять с какой машины пришла запись
$InputFileTag hostX-access:
# Временный файл, в который rsyslog будет записывать текущую позицию
$InputFileStateFile access
# Источник сообщения
$InputFileFacility local0
# Уровень серьёзности сообщения
$InputFileSeverity info
# Запускаем мониторинг изменений в файле
$InputRunFileMonitor

# Отправлять накопленные данные будем каждую секунду
$InputFilePollInterval 1

# Указываем куда будем отправлять, в данном случае все сообщения local0 будут отправляться по UDP со сжатием gzip 7 на сервер 192.168.1.1
local0.*   @(z7)192.168.1.1:514

Такой конфиг нужно будет сделать на каждом сервере (hostX можно пронумеровать по каждому серверу или назначить более понятные вам теги).

Также нужно проверить что rsyslog сможет прочитать логи и сохранить файлы состояний:

chown syslog:syslog /var/spool/rsyslog && \
chmod 0750 /var/spool/rsyslog && \
chmod 0755 /var/log/nginx/ && \
chmod 0644 /var/log/nginx/access.log

Если у вас работает logrotate то нужно поправить конфиг чтобы новые файлы логов nginx создавались с правами 0644:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 0644 www-data adm # поправлено
    sharedscripts
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
            run-parts /etc/logrotate.d/httpd-prerotate; \
        fi; \
    endscript
    postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

Конфиг сервера, в /etc/rsyslog.conf добавить настройку приёма логов по UDP:

$ModLoad imudp
$UDPServerRun 514 # Порт нужно будет открыть на фаерволе
# Не забываем установить ограничения от кого можно принимать логи, IP перечисляются через запятую
$AllowedSender UDP, 192.168.1.0/24

В конфиге по-умолчанию, если логи с серверов не нужны в syslog сервера нужно добавить указание куда их собирать

nano /etc/rsyslog.d/50-default.conf
*.*;auth,authpriv.none,local0.none      -/var/log/syslog
local0.*            -/var/log/group.access.log

service rsyslog restart и можно наблюдать полную картину:

tailf /var/log/group.access.log

Отладка
Если что-то не будет работать, можно запустить rsyslog в режиме отладки, например так:

rsyslogd -c5 -dn

На сервере можно слушать порт таким образом:

tcpdump -vvv -nn -i eth0 udp port 514
29Окт/12Off

Ubuntu — Cyborg R.A.T. 9

Cyborg R.A.T. 9

Подарили мне на ДР сие чудо техники. Драйвера для Windows можно скачать с сайта производителя, в Ubuntu же эта мышка из коробки не работает, а хочется, нашёл в сети рабочий конфиг для XOrg.

Для начала убедимся что нужная директория существует:

sudo mkdir /etc/X11/xorg.conf.d

И запишем правильную конфигурацию кнопок для этой мышки:

sudo nano /etc/X11/xorg.conf.d/910-rat.conf
Section "InputClass"
Identifier "Saitek PLC"
MatchUSBID "06a3:0cfa"
Driver "evdev"
MatchIsPointer "on"
MatchProduct "R.A.T.9|Saitek Cyborg R.A.T.9 Mouse"
MatchVendor "Saitek|SAITEK"
MatchDevicePath "/dev/input/event*"
Option "Protocol" "auto"
Option "Buttons" "21"
Option "ButtonMapping" "1 2 3 4 5 0 0 8 9 7 6 12 0 0 0 16 17 18 19 20 21"
Option "ZAxisMapping" "4 5 6 7"
Option "AutoReleaseButtons" "13 14 15"
EndSection

Вот и всё, все кнопки (кроме, кажется, красной) работают 🙂

12Май/11Off

Linux — Video streaming и iPad 2

Получив в своё распоряжение сей девайс и чуток поигравшись с ним захотелось чего-то бо́льшего нежели просто игры - например просмотр любого видео из домашней коллекции без необходимости синхронизироваться с iTunes. Программ такого рода оказалось довольно много - на любой вкус и цвет но, они все работают только под Windows или Mac OS X, печально - мне нужно чтобы работало в Ubuntu. Поискав ещё, удалось найти варианты с заявленной поддержкой Linux, «из коробки» они конечно же не запускаются.

В итоге получился интересный мануальчик (для (K)Ubuntu) по установке серверной части для программ Air Video и VLC Streamer.
Свой выбор я остановил на платной версии Air Video (есть и бесплатная но показывает в списке к просмотру не все файлы на компьютере) т.к. у неё более дружественный интерфейс и имеется одна немаловажная особенность - перемотка видео на любую точку (как ролики на YouTube), в VLC же видео можно смотреть и перематывать только в пределах обработанного участка. Собственно вот небольшая табличка сравнения:

Air VideoVLC Streamer
Цена$2.99$1.99
Ограничения бесплатной версииЕсть - отображает не все файлы на ПКНет, поддерживается за счёт рекламы iAd
Кодирование на летуЕсть, вывод сразу в потокЕсть, вывод в файл + передача в поток
ПеремоткаЕстьЕсть, только в пределах перекодированного фрагмента
Очередь перекодированияЕсть, вывод в отдельный файл m4v (можно скопировать или перенести в iTunes)Есть, только подготовка для дальнейшего просмотра.
Предпросмотр кодируемого видеоЕстьНет
Изменение масштаба, усиление звукаЕстьНет
Управление субтитрамиЕстьВкл/Выкл
Выбор звуковой дорожкиЕстьНет
GUIНетЕсть

Air Video

Air Video


VLC Streamer

VLC Streamer

10Мар/11Off

Linux — Debmirror и несколько зеркал

gentoo icon

Debmirror это perl скрипт который применяется для организации зекала репозитория Debian или Ubuntu.

Однако сам по себе он делает только то, для чего предназначен и не каплей больше (но настроек у него от этого не меньше и сделать зеркало он может по-различным протоколам и с различными условиями). Что же делать если нужно организовать несколько зеркал?

6Ноя/10Off

Cacti — XBT Tracker statistics

И снова cacti. На этот раз выкладываю свой вариант шаблона для мониторинга XBTT т.к. тот, что выложен на официальном сайте, уже устарел да и вообще, говорят что он не работает, а у меня как раз есть рабочий 🙂

Архив с шаблоном и скриптом.
MD5:

7cdc55725a7ef580df5b5f91bca8884c  cacti-xbtt.tar.gz

Версия 0.2 для обновлённого вывода статистики в XBTT (добавились проценты у seeders и т.п.)
MD5:

15bc335147f35721ece4117f5eb9ec2d  cacti-xbtt-0.2.tar.gz

Для работы нужны следующие программы:

  • bash
  • lynx
  • awk

Установка:
1) Распаковать
2) Скопировать xbtt_stat.sh в /scripts/ (проверьте чтобы lynx и awk лежали там же где и в скрипте)
3) Импортировать шаблон

Метки записи: , , Нет комментариев
4Окт/10Off

Cacti — MegaFon balance

Т.к. в cacti смотрю каждый день то решил что было бы неплохо выводить туда и остаток средств на счету в МегаФон-е.
Скрипт адаптирован для Московского региона но при желании легко переделывается под другой регион и даже под другого оператора (если оператор предоставляет такие данные для автоматического сбора и не ставит на них капчу).

Не забудьте убедиться что в Сервис-Гиде в разделе Настройка Сервис-Гид -> Автоматический доступ выбрано "Доступ в «Сервис-Гид» открыт пользователям и автоматизированным системам".

Cacti - MegaFon balance

Архив с шаблоном и скриптом.
MD5:

0565784eaf166e60c1c2f0ed5b0e2910  cacti-megafon.tar.gz

Установка:
1) Распаковать
2) Скопировать megafon.pl в /scripts/
3) Импортировать шаблон

25Сен/10Off

ATI — 10.9 FGLRX не собирается в DKMS

ATI Radeon

Очередное обновление, очередное «исправление», новые ошибки...одним словом - ATI.

Симптомы - fglrx не проходит фазу компиляции в DKMS, build log показывает что-то такое:

DKMS make.log for fglrx-8.771 for kernel 2.6.32-25-generic (x86_64)
Сбт Сен 25 16:09:51 MSD 2010
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
/var/lib/dkms/fglrx/8.771/build/2.6.x
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
make -C /lib/modules/2.6.32-25-generic/build SUBDIRS=/var/lib/dkms/fglrx/8.771/build/2.6.x modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.32-25-generic'
  CC [M]  /var/lib/dkms/fglrx/8.771/build/2.6.x/firegl_public.o
  CC [M]  /var/lib/dkms/fglrx/8.771/build/2.6.x/kcl_acpi.o
  CC [M]  /var/lib/dkms/fglrx/8.771/build/2.6.x/kcl_agp.o
  CC [M]  /var/lib/dkms/fglrx/8.771/build/2.6.x/kcl_debug.o
  CC [M]  /var/lib/dkms/fglrx/8.771/build/2.6.x/kcl_ioctl.o
/var/lib/dkms/fglrx/8.771/build/2.6.x/kcl_ioctl.c: In function ‘KCL_IOCTL_AllocUserSpace32’:
/var/lib/dkms/fglrx/8.771/build/2.6.x/kcl_ioctl.c:196: error: implicit declaration of function ‘compat_alloc_user_space’
/var/lib/dkms/fglrx/8.771/build/2.6.x/kcl_ioctl.c:196: warning: return makes pointer from integer without a cast
make[2]: *** [/var/lib/dkms/fglrx/8.771/build/2.6.x/kcl_ioctl.o] Ошибка 1
make[1]: *** [_module_/var/lib/dkms/fglrx/8.771/build/2.6.x] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.32-25-generic'

make: *** [kmod_build] Ошибка 2
build failed with return value 2

Чтобы обойти ошибку можно подождать пару недель, вроде обещали исправить в октябре - но это же слишком долго.

Решение

Сделать нужно следующее - от root открыть файл /usr/src/linux-headers-2.6.32-25-generic/arch/x86/include/asm/compat.h (или что у Вас сейчас используется), действие действительно и для x86 и для x86_64 архитектур (у меня например x86_64):

sudo nano /usr/src/linux-headers-2.6.32-25-generic/arch/x86/include/asm/compat.h

Мотаем вниз файла и видим строчку:

#endif /* _ASM_X86_COMPAT_H */

Между этой строчкой и последней фигурной скобкой ( } ) копируем и вставляем код:

static inline void __user *compat_alloc_user_space(unsigned long len)
{
    struct pt_regs *regs = task_pt_regs(current);
    return (void __user *)regs->sp - len;
}

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

Сохраняем файл и пробуем переустановить fglrx. Теперь всё должно получиться 🙂

Не думаю что этот код что-то может сломать но после установки его можно удалить, если есть желание.

Метки записи: , , , , Читать полностью
27Июл/10Off

WordPress — WEBO Site SpeedUp vs WP Super Cache

Попалась статейка на хабре про новую версию WEBO Site Speed Up и как выяснилось имеется версия и для WordPress-а - стало интересно т.к. сам пользуюсь WP Super Cache. Решил их сравнить.

Сравнил давно, выложить результаты время нашлось только сейчас.

Для сравнения результатов оптимизации были использованы следующие инструменты:

Тестируемая версия WEBO Site SpeedUp - 1.2.1
Тестируемая версия WP Super Cache - 0.9.9.3
Тестируемый блог - этот 🙂

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

При помощи YSlow также производились замеры размера страницы и скорости загрузки.

Сначала представлю сводную таблицу результатов и подведу итог, а уже если будут интересны подробности то их можно прочитать ниже:

Чистый сайтWEBO Site SpeedUpWP Super Cache
Размер страницы, КБ143.2161.2143.3
Рейтинг webo.in708270
Рейтинг webo.in, интегральный736573
Page Speed Score828386
YSlow Score869686
Среднее время загрузки (YSlow), секунд2.692.861.91
Самый быстрый по версии Loadimpact312
Цена, рублей0499-1999 (~120 тугриков в день на SaaS версии)0

Исходя из сравнительного тестирования можно сделать вывод что WP Super Cache лучший и это так и есть, почти. Он подходит больше для «домашнего использования» т.к. бесплатный и механизм кеширования действительно позволяет выдержать довольно сильный наплыв посетителей.
Однако для серьёзных блогов я бы использовал WEBO т.к. у него огромное количество всевозможных настроек и оптимизаций которые позволят выжать из блога больше чем WP SP, например мне не удалось протестировать CDN и распределение данных по хостам за неимением оных.

10Май/10Off

Kubuntu 10.04 — Эффекты и проприетарные драйвера для ATI

ATI Radeon

После обновления (а точнее после чистой установки) Kubuntu 10.04 установил проприетарные драйвера для своей ATI Radeon HD 4800 Series и как обычно что-то сломалось...на этот раз сломались эффекты рабочего стола (Через XRender работали но уж очень медленно). Что впрочем не удивительно т.к. дрова свежие и ещё толком не обкатанные. К тому же это ведь ATI...

Для справки - драйвера можно установить через jockey-kde или же:

sudo apt-get update
sudo apt-get install linux-headers-`uname -r` fglrx fglrx-amdcccle fglrx-dev fglrx-modaliases
sudo aticonfig --initial
sudo reboot

Покопавшись в настройках обнаружил что эффекты будут работать если выставить флаг «Отключить внутреннюю проверку» в разделе Параметры системы - Рабочий стол - Эффекты рабочего стола - Дополнительно

Но нужно же что бы они работали и в обычном режиме 🙂

Для этого нужно проверить чтобы в соответствующих разделах xorg.conf были эти значения:

Section "Device"
    Option      "AllowGLXWithComposite" "true"
EndSection

Section "Extensions"
    Option      "Composite" "Enable"
    Option      "DAMAGE" "Enable"
    Option      "RENDER" "Enable"
EndSection

После применения настроек эффекты работают и при отключении «Отключить внутреннюю проверку».

Метки записи: , , , Нет комментариев
11Фев/10Off

KDE 4.4.0 — Поломался Skype — Kubuntu 9.10

Skype

С горем пополам обновился на KDE 4.4.0.

Всё красиво но сломался Smooth Tasks и Skype.
По Smooth Tasks отписал автору (не у меня одного такая проблема), а вот Skype пришлось реанимировать своими силами.

Запуск из консоли выдавал вот такой листинг и Skype намертво зависал 🙁

# skype
bt_audio_service_open: connect() failed: В соединении отказано (111)
bt_audio_service_open: connect() failed: В соединении отказано (111)
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed: Нет такого файла или каталога

(process:7282): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:7282): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed

(process:7282): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:7282): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:7282): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:7282): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)'
failed

(process:7282): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:7282): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(process:7282): Gtk-CRITICAL **: gtk_widget_style_get: assertion `GTK_IS_WIDGET (widget)'
failed

Ничего лучше в голову не пришло как переустановить GKT темы.

apt-get install gtk2-engines gtk2-engines-qtcurve

Как оказалось gtk2-engines у меня установлено не было (а может оно и не нужно).

После чего зашёл в настройки внешнего вида и заново выбрал тему для GTK+ - оказалось этого достаточно т.к. Skype заработал 🙂

Версия Skype 2.1.0.81 (ИМХО предыдущая была лучше, эта иногда виснет).

Метки записи: , , Нет комментариев