Archive for linux

УкрСклад с базой firebird на Linux

// Январь 29th, 2015 // 7 комментариев » // Debian, firebird, linux, ПО

Для тех кто не знает что это, идем сюда >>.

Все рано или поздно приходят к тому, что предприятие растет, появляются удаленные филиалы и работа с базой по сети просто необходима. Городить ради этого сервер с Windows естественно не у кого желания нет, поэтому появилась идея попробовать все запустить на Linux. Осмотрев принцип работы было выяснено, что сервер программы по сути представляет из себя сервер БД Firebird и обвязку к нему, что очень сильно упрощает идею переноса.

И имеем сервер на Debian Wheezy, выбран был в виду требования УкрСклад к версии Firebird 2.5, которая как раз есть в репозитории (в более ранних версиях Debian — 1.5).

Установим Firebird:

 apt-get install firebird2.5-superclassic

этот пакет вытянет вся нужные зависимости сам. ВАЖНО! При установке запросит пароль для суперпользователя БД SYSDBA — укажите «masterkey«, УкрСклад использует эту учетную запись по умолчанию для подключения к БД.

УкрСклад использует свою библиотеку функций, её тоже нужно добавить на сервер иначе будет ошибка:

DataM.QueryRep.SelectQuery:
Can't format messege 13:98 -- message file C:\Program File\firebird.msg not found.
Access to UDF library "libtbudf.so" is denied by server administrator.

Скачиваем библиотеку:

wget http://www.softbalance.com.ua/files/libtbudf.rar

на всякий случай копия тут >>
для распаковки должен быть установлен пакет unrar

apt-get install unrar

распаковываем сразу в каталог с библиотеками

unrar e libtbudf.rar /usr/lib/firebird/2.5/UDF/

Скачиваем и устанавливаем серверную и клиентскую части УкрСклад. Нас интересует база, лежит она по пути C:\Program Files\UkrSklad6S\db\ файлы Sklad.tcb и SkladEmp.tcb — переносим их на компьютер с линуксом (для тех кто не знает как как это сделать — воспользуйтесь программой WinSCP) и размещаем по пути /var/lib/firebird/2.5/data/, меняем права на пользователя firebird:

chown -R firebird:firebird /var/lib/firebird/2.5/data/

Осталось настроить клиента УкрСклад для подключения к нашему серверу. Открываем в блокноте файл, обычно лежит по пути C:\Program files\UkrSklad6C\ubclient.ini, должно получится вот так:

[Server]
Hostname=192.168.100.3
Path=/var/lib/firebird/2.5/data/

Hostname — меняем на IP или имя компьютера с сервером БД, запускаем клиента, должно пройти обновление и программа запустится.

Есть еще один момент, на Windows XP клеинт упорно не хотел подключатся, выдавал ошибку подключения:

Ошибка соединения с базой данных =*= System Error. Code: 14001.
Приложение не было запущено, поскольку оно некорректно настроено.
Повторная установка приложения может решить данную проблему

Оказалось банально — винде не хватало библиотек, скачиваем vccrt8_win32.msi (локальная копия) и устанавливаем.

В принципе все. Если вас волнует вопрос безопасности в продолжении описание как сменить пользователя БД и пароль на SYSDBA. (далее…)

Установка Debian Squeeze на Dell 1950

// Декабрь 18th, 2014 // No Comments » // Debian, Dell, grub, md, RAID

В процессе установки вылезло сразу две проблемы:
1) это сетевой адаптер «Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet», по логике маинтейнеров драйвера не попадают в дистрибутив из-за закрытого кода, и действительно зачем серверу нужна сеть
2) сочетание встроенного рейд-контроллера и использование софтрейда md вызывает глюк — не устанавливается GRUB, т.е. после перезагрузки получаем большой кирпич.

Для начала скачиваем последний netinstall, но т.к. он уже в архиве — ищем его здесь >> и нарезаем на cd-r диск.

Первая проблема решается легко, идем на страничку http://wiki.debian.org/Firmware, находим ссылку на нужный файл, для Сквизи это будет firmware.tar.gz, скачиваем и распаковываем в корень(!) флешки. Тогда при инсталляции драйвер подгрузится автоматически.

Флешку подключаем к серверу, всталяем диск и начинаем установку. Нужно выбрать режим «Expert install». И выполняем все по пунктам, как при обычной инсталляции.

После выполнения пункта установки загрузчика GRUB нужно не завершить установку, а выбрать «Start shell».

Теперь решаем проблему установки GRUB. Суть проблемы: то ли скрипт кривой, то ли факт наличие флешки сбивает скрипт и на жесткий диск он так и не попадает, поэтому сделаем все ручками.
Должна быть примерно такая картина:

# df -h
Filesystem Size Used Available Use% Mounted on
tmpfs 15.7G 120.0K 15.7G 0% /dev
/dev/md0 938.0M 155.4M 734.9M 17% /target
/dev/md3 9.2G 148.9M 8.6G 2% /target/home
/dev/md2 3.7G 71.8M 3.4G 2% /target/tmp
/dev/md1 3.7G 286.1M 3.2G 8% /target/usr
/dev/md4 253.9G 356.4M 240.7G 0% /target/var
tmpfs 15.7G 120.0K 15.7G 0% /target/dev
/dev/md0 938.0M 155.4M 734.9M 17% /dev/.static/dev
/dev/sr0 168.0M 168.0M 0 100% /cdrom

если нет — тогда нужно руками смонтировать недостающее:

for d in dev proc sys; do mount --bind /$d /target/$d; done

! Обязательно должна быть строка:

tmpfs 15.7G 120.0K 15.7G 0% /target/dev

если нет, тогда еще раз смонтировать:

umount /target/dev/ && mount --bind /dev/ /target/dev/

Запускаем chroot в уже установленную систему и запускаем там шелл, мне приятнее работать в bash:

chroot /target /bin/bash

Теперь приглашение сменится на [root@debian] #, проверяем, видно ли диски:

# ls -a /dev | grep sd
sda
sda4
sdb
sdb1
...
sdb9
sdc
sdc1
...
sdc9

Осталось только установить GRUB, есть два варианта:

grub-install /dev/sdb
grub-install /dev/sdc
update-grub

или

dpkg-reconfigure grub-pc

и в графическом меню отметить нужные диски.

Проверить установлен ли GRUB можно командой (предварительно нужно установить утилиту file, обычным способом apt-get install file):

# file -s /dev/sdb
/dev/sdb: x86 boot sector; partition 1: ID=0xfd, active, starthead 32, startsector 2048, 1951744 sectors; partition 2: ID=0x5, starthead 190, startsector 1955838, 583981058 sectors, code offset 0x63

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

Рекурсивное удаление старых файлов

// Декабрь 4th, 2014 // No Comments » // console, linux, noob, sh/bash

В интернете часто встречается решение:

find * -mtime +3 -exec rm -Rf {} \;

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

/usr/bin/find: Argument list too long

Верное решение:

find . -mtime +3 -exec rm -Rf {} \;

если нужно удалить подкаталоги включительно:

find . -mtime +3 -exec rm -Rf -- {} \;

Или вот такое, даже более идеологически правильное решение:

find . -mtime +3 | xargs rm -Rf

dmesg: Unrecovered read error — auto reallocate failed

// Ноябрь 17th, 2014 // No Comments » // hdparm, linux, recovery, smartctl

После внезапной перезагрузки одного сервера из-за сбоя питания — он отметился резким падением производительности, а один сервис вообще отказывался стартовать. Вывод лога dmesg сразу подсказал, в чем проблема:

 [ 105.283113] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
 [ 105.283113] ata2.00: BMDMA stat 0x64
 [ 105.283113] ata2.00: cmd c8/00:a0:b6:cb:5e/00:00:00:00:00/e3 tag 0 dma 81920 in
 [ 105.283113] res 51/40:00:4f:cc:5e/00:00:00:00:00/e3 Emask 0x9 (media error)
 [ 105.283113] ata2.00: status: { DRDY ERR }
 [ 105.283113] ata2.00: error: { UNC }
 [ 105.309608] ata2.00: configured for UDMA/133
 [ 105.309632] sd 1:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
 [ 105.309639] sd 1:0:0:0: [sda] Sense Key : Medium Error [current] [descriptor]
 [ 105.309646] Descriptor sense data with sense descriptors (in hex):
 [ 105.309650] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
 [ 105.309664] 03 5e cc 4f
 [ 105.309670] sd 1:0:0:0: [sda] Add. Sense: Unrecovered read error - auto reallocate failed
 [ 105.309678] end_request: I/O error, dev sda, sector 56544335

И пока сервер ждет замены накопителя с этим нужно что-то сделать.
Нам потребует две утилиты hdparm и smartctl,
(далее…)

Архивы TAR

// Октябрь 1st, 2014 // No Comments » // console, utility

Создать архив:

tar:

tar -cvf file.tar /path

tar.gz:

tar -czvf file.tar.gz /path

tar.bz2:

tar -cjvf file.tar.bz2 /path

Полезные ключи:
--exclude "./logs" — исключить путь или файл из архива

Распаковать:

tar -xvf file.tar.gz