Archive for the ‘ BSD ’ Category

FreeBSD + Ejabberd — как собирать модули

Чуть позже напишу о конфигурации jabberd сервера для корпоративных нужд. Будет и AD-авторизация, и общий список контактов из AD, и логирование разговоров и конференций. А пока простенькая заметка как собирать модули для ejabberd, для затравки, так сказать.
Все очень просто. Настолько просто что и представить невозможно. Делается «в два клика мышкой» 😉 Алгоритм примерно такой:
1. Залить исходники
2. Скомпилить плагин
3. Скопировать в директорию с плагинами сервера
4. Сделать необходимые настройки в конфиге
Поехали …. Читать полностью

FreeBSD. HAST + UCARP = файловый кластер. Или нет?

Идея настроить репликацию файлов между серверами давно закралась мне в голову. Хочется такой себе файловый кластер на FreeBSD. Очень уж хотелось засунуть туда один web-ресурс. С базой данных все понятно, сам mysql прекрасно справляется с репликацией своих баз (я писал уже о репликации в mysql в одной из предыдущих заметок). Но что делать с файлами? Rsync и прочее не нравится, точнее нравится и даже трудится в данный момент, но есть одна проблема — решение содержит постоянную временную задержку синхронизации, а значит данные на slave-нодах всегда будут отставать от master-а. И вот както я нашел HAST, он лишен проблемы с задержкой синхронизации, так как синхронизирует данные в реальном времени. Жаль только что в данный момент HAST ограничен работой с двумя хостами в режиме master-slave или в терминологии самого HAST «Primary — Secondary». По сути можно построить клестер «с холодным резервом». И еще одна ложка дегтя — больше двух хостов в связку добавить нельзя, один мастер, один слейв …. эх 🙁 Также есть ограничения на общий ресурс — это может быть либо отдельный диск либо раздел, директорию или файл сделать общим ресурсом нельзя. Ну все равно интересно — пробуем!
Вводные данные:
FQDN server1 — node1.loc, IP — 10.10.10.10 — условный master
FQDN server2 — node2.loc, IP — 10.10.10.20 — условный slave
«Общий» для обоих нод IP, по сути, адрес кластера — 10.10.10.100
«Общий» ресурс — www
Диск который будем делать общим — /dev/da0
Точка монтирования «общего» ресурса — /usr/local/www/hast
Поехали! Читать полностью

FreeBSD — memcached + php5

Захотелось мне улучшить производительность связки PHP5 + MySQL + Apache22 на сервере с FreeBSD. Решил добавить в эту связку еще и memcached для улучшения отдачи сгенеренного php-шкой кода.
Делается крайне просто, все что нужно — уже есть в портах. Сначала ставим сам memcached:

root@black:~# cd /usr/ports/databases/memcached

И установим такой командой:

root@black:/usr/ports/databases/memcached# make install clean

Для автозапуска добавим в /etc/rc.conf строки:

memcached_enable="YES"
memcached_flags="-d -m 64 -u nobody -l 127.0.0.1"

Запустим сервис:

root@black:~# service memcached start

Идем дальше …. Читать полностью

Решено! esniper — Unknown error code 34

Решено!
Давно пользуюсь сей прекрасной утилиткой для автоматических ставок на ebay, но вот после очередного обновления системы отказывается работать зараза!
В форум разрабам написал, пока молчат как партизаны … может кто подскажет как полечить? Пробовал пересобирать и саму прогу и curl — не помогает, видать новый curl ему не нравится совсем.
Вобщем система у меня такая:

root@gw:~# pkg_version -v |egrep 'esniper|curl'
curl-7.33.0 = up-to-date with port
esniper-2.28.0_1 = up-to-date with port
php5-curl-5.4.21_1 = up-to-date with port
root@gw:~#
root@gw:~# esniper -d -s 5 -u my_ebay_login 300996098933 5
Enter eBay password:
Auction 30099609xxxx: Unknown error code 34
Retrying...
Auction 30099609xxxx: Unknown error code 34
Retrying...
Auction 30099609xxxx: Unknown error code 34
Auction 30099609xxxx: Unknown error code 34
root@gw:~#

Помогите инфой, плиз …..
Проблема оказалась в банальном отсутствии опции «cookies» в CURL, после пересборки курла с данной опцией прога отлично заработала 🙂

Error — requested NFS version or transport protocol is not supported

Настроил на FreeBSD NFS сервер, пробую на Debian подмонтировать и получаю вот такую вот ошибочку:

root@deb:~# mount -t nfs nfsserver:/usr/home /home/black/nfs
mount.nfs: requested NFS version or transport protocol is not supported

Долго проверял настройки, гуглил еще дольше. Вот что помогло мне:
1. В /etc/hosts на сервере должна быть запись о localhost. Хотя бы так: 127.0.0.1 localhost
2. В /etc/hosts.allow на сервере нужно розрешить доступ для клиента (сети/хоста) на сервер к rpcbind. У меня так:

rpcbind : 10.10.10.0/255.255.255.0 : allow
rpcbind : ALL : deny

После перезагрузки сервера — nfs шара прекрасно монтируется.
Enjoy!

Настройка master — slave репликации в MySQL

Предистория: имею 3 сервера под FreeBSD 9.x версии, на них mysql-server версии 5.5. Нужно организовать репликацию одной базы данных с главного сервера (master) на 2 бекапных сервера (slave)
Сначала рихтуем настройки mysql на мастере:
Действия на master-сервере
IP Address: 111.111.111.11
DB для репликации: mydb

Добавим в конфиг mysql, который обычно находится здесь /var/db/mysql/my.cnf такие опции:

log-bin             = mysql-bin
binlog_format       = mixed
binlog-do-db        = mydb
max_binlog_size     = 100M
expire_logs_days    = 30
sync_binlog         = 1
server-id           = 1

Перегружаем mysql-server на master:

root@master:~# service mysql-server restart

Читать полностью

BASH скрипт для поиска дубликатов текстовых файлов

Недавно какогото лешего взбрело в голову kmail и он затянул с почтового сервера все сообщения еще раз. В итоге получилось по 2 экземпляра всех входящих писем. Руками удалять — лень. Решил написать небольшой баш сркипт, вот так вышло:

#!/bin/bash

WORK_DIR="/home/black/.kde/share/apps/kmail/mail/inbox/cur"
LIST_ALL=`ls $WORK_DIR`

for MSG in $LIST_ALL
 do
  FILE_SIZE=`ls -l $WORK_DIR/$MSG |awk '{print $5}'`
  LIST_NEW=`find $WORK_DIR -size ${FILE_SIZE}c |grep -v $MSG`
    for TEST_MSG in $LIST_NEW
      do
         diff $TEST_MSG $WORK_DIR/$MSG > /dev/null && echo "Duplicate for $MSG is - $TEST_MSG" && rm $TEST_MSG
      done
done

Отлично отработал. Читать полностью

PostfixAdmin — авто архивация почты выключенных учеток

Исходные данные:
PostfixAdmin управляет почтовыми учетками в базе mysql «maildb»
mysql user: mailuser
mysql password: mailpassword
Почтовые ящики хранятся в /var/spool/mail/my.domain.ua

root@ns:/root # ls -l /var/spool/mail/my.domain.ua/
total 24
drwxr-xr-x  5 virtual  virtual  512 Aug  1 18:26 admin.email@my.domain.ua
drwxr-xr-x  3 virtual  virtual  512 Sep 27 14:46 alexandr.pisnov@my.domain.ua
drwxr-xr-x  2 virtual  virtual  512 Sep 27 14:46 anastasia.gaeva@my.domain.ua
drwxr-xr-x  2 virtual  virtual  512 Sep 27 14:47 andrey.diervin@my.domain.ua
drwxr-xr-x  2 virtual  virtual  512 Sep 27 14:47 anton.balaba@my.domain.ua
drwxr-xr-x  2 virtual  virtual  512 Sep 27 14:47 bogdan.kruk@my.domain.ua
drwxr-xr-x  2 virtual  virtual  512 Sep 27 14:47 dmitriy.perevozov@my.domain.ua
.........
root@ns:/root #

Задача, после того как пользователь выключен через админку PA — ждем 30 дней (вдруг кому понадобится?) и архивируем ящик пользователя в директорию /home/black/archives, сам ящик удаляется. О том какие ящики были заархивированы/удалены сообщать админу на email admin.email@my.domain.ua Читать полностью

Apache22 и сжатие контента

Решил вот опробовать сжатие контента апачем. Давно присматривался к этий фишке, много положительного слышал … наконец дошли руки настроить.
Делал на FreeBSD 9-той ветки, добавляем в настройки виртуалхоста такое:

root@black:~# cat /usr/local/etc/apache22/extra/httpd-vhosts.conf
<virtualhost *:80>
...............
    <ifmodule mod_deflate.c>
        DeflateCompressionLevel 5
        AddOutputFilterByType DEFLATE application/javascript
        AddOutputFilterByType DEFLATE text/javascript
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE text/html
         </ifmodule><ifmodule mod_setenvif.c>
                BrowserMatch ^Mozilla/4 gzip-only-text/html
                BrowserMatch ^Mozilla/4\.0[678] no-gzip
                BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
         </ifmodule>
   
................
</virtualhost>

После чего пробуем google-chrom-ом зайти на страничку и посмотреть что будет с передаваемыми данными. Для этого открываем консоль разработчика, нажатием Ctrl + Shift + J, и выбираем вкладку «Network» Читать полностью

FreeBSD — Tekram areca raid controller

Захотелось посмотреть как там поживают винты в серваке HP на FreeBSD. Контроллер Areca — узнал из dmesg
Итак, под эти контроллеры в портах системы есть утилита areca-cli — установим!

root@ns:/root # cd /usr/ports/sysutils/areca-cli/ && make install clean

У проги отличный help — не побрезгуйте ознакомиться.
Мне пригодились следующие команды:

root@ns:/root # areca-cli hw info
The Hardware Monitor Information
===========================================
Fan#1 Speed (RPM)   : N.A.
Battery Status      : Not Installed
HDD #1  Temp.       : 36
HDD #2  Temp.       : 38
HDD #3  Temp.       : 30
HDD #4  Temp.       : 30
===========================================
GuiErrMsg&lt;0x00>: Success.
root@ns:/root #

Читать полностью