четверг, 22 декабря 2011 г.

Redmine и дикие тормоза.

Ну собственно subj. Страницы открывает долго и печально.

Помогла установка нативной поддержки mysql

aptitude install libmysqld-dev
gem install mysql

воскресенье, 11 декабря 2011 г.

LWP и https

Для реализации защищенного протокола средствами LWP нужен модуль для perl Net::SSLeay
Но он не соберется без libssl-dev
Поэтому ставим
sudo aptitude install libssl-dev

Еще имеен смысл доустановить модуль для perl LWP::Protocol::https

среда, 30 ноября 2011 г.

LDAP, настройка репликация Delta-syncrepl

Репликация Delta-syncrepl

Для понимания вопроса читаем здесь
http://www.openldap.org/doc/admin24/replication.html#Delta-syncrepl

Везде приведен домен для примера dc=example,dc=com - необходимо подставить свои значения

На мастере

** проверяем файла /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
на наличие следующих строк
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq

если их нет, то создадим

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq


** создаем нужные подкаталоги

sudo -u openldap mkdir /var/lib/ldap/accesslog
sudo -u openldap cp /var/lib/ldap/DB_CONFIG /var/lib/ldap/accesslog/


** добавим загрузку необходимых модулей syncprov и accesslog

ldapmodify -Y EXTERNAL -H ldapi:///

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov
-
add: olcModuleLoad
olcModuleLoad: accesslog


** создадим дополнительную базу для accesslog

ldapadd -Y EXTERNAL -H ldapi:///

dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap/accesslog
olcSuffix: cn=accesslog
olcRootDN: cn=admin,dc=example,dc=com
olcDbIndex: default eq
olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart


** добавим syncprov в БД Accesslog.

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpReloadHint: TRUE


** добавим syncprov в основную БД

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE


** добавим определения accesslog для основной БД

ldapadd -Y EXTERNAL -H ldapi:///

dn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogSuccess: TRUE
# Сканировать БД accesslog каждый день, и удалять записи старше 7 дней
olcAccessLogPurge: 07+00:00 01+00:00


** создаем нового юзера "replicator" для репликации

ldapadd -W -x -D 'cn=admin,dc=example,dc=com' -H ldap://127.0.0.1

dn: cn=replicator, dc=example, dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: replicator
description: sync replication user
userPassword: SECRET

где значение userPassword можно получить с помощью команды slappasswd -h {MD5}

** задаем права на чтение replicator

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to * by dn="cn=replicator,dc=example,dc=com" read


ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to * by dn="cn=replicator,dc=example,dc=com" read



На слэйве

** добавим нужный индекс

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryUUID eq


** настроим репликацию
_master_server_ = url или ip мастер-сервера LDAP

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=0 provider=ldaps://_master_server_:636 bindmethod=simple binddn="cn=replicator,dc=example,dc=com" credentials=SECRET searchbase="dc=example,dc=com" logbase="cn=accesslog" logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" schemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog tls_reqcert=never
-
add: olcUpdateRef
olcUpdateRef: ldap://_master_server_


Проверка
В простейшем случае делаем изменение на мастере и следом просматриваем на слэйве
ldapsearch -Y EXTERNAL -H ldapi:///
и сравниваем результат измнененного поля.

вторник, 29 ноября 2011 г.

Debian, LDAP перенос на другой сервер

На новом (целевом) серевере установим:

aptitude install slapd ldap-utils

ну и если надо, можно поставить так же migrationtools
запросит ввести пароль для админа - в дальнейшем все равно поменяем, можно не запоминать особо

На исходном сервере стопим ldap и снимаем бэкап.

/etc/init.d/slapd stop
slapcat -v -l backup.ldif
/etc/init.d/slapd start

А так же tar все настройки /etc/ldap и /etc/default/slapd

tar -cvjf ldap.tar.bz2 /etc/ldap/ /etc/default/slapd

Все это перетаскиваем на новый (целевой) сервер и идем в обратном порядке

/etc/init.d/slapd stop - стопим сервер

распаковываем и заменяем оригинальный /etc/ldap (проверить права и т.п.)
на /etc/ldap/slapd.d должны быть права у openldap



rm -f /var/lib/ldap/* -- чистим базу
sudo -u openldap slapadd -v -c -l backup.ldif
sudo -u openldap slapindex -v
/etc/init.d/slapd start

понедельник, 28 ноября 2011 г.

Ldap - бэкап и восстановление

Бэкап примерно так:

/etc/init.d/slapd stop
slapcat -v -l backup.ldif
/etc/init.d/slapd start


Восстановление:
/etc/init.d/slapd stop
rm -f /var/lib/ldap/* -- чистим базу
sudo -u openldap slapadd -v -c -l backup.ldif
sudo -u openldap slapindex -v
/etc/init.d/slapd start

понедельник, 21 ноября 2011 г.

mysqldump и ошибка 1016

Если при выполнении дампа базы с помощью mysqldump получили ошибку вида:

mysqldump: Got error: 1016: Can’t open file: ‘.....’ (errno: 24) when using LOCK TABLES

можно попробовать добавить (увеличить) в /etc/my.cnf

open-files-limit=32000

суббота, 19 ноября 2011 г.

Mysql и несколько экземпляров на одном сервере.

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

Будем использовать mysqld_multi - программа для управления множеством серверов MySQL.

Для понимания процесса читаем доки.
http://dev.mysql.com/doc/refman/5.0/en/mysqld-multi.html
http://mysql.ru/docs/man/mysqld_multi.html

Создаем каталог для multi mysql, к примеру /var/lib/mysql_multi/
и в нем подкаталоги 01,02...nn
Выставим нужные права на них и собственника.
chmod 755 /var/lib/mysql_multi -R
chown mysql:mysql /var/lib/mysql_multi -R

Создадим в my.cnf нужные разделы (см. ссылки выше) со своими путями к файлам
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass

к примеру для экземпляра #2

[mysqld2]
socket = /var/run/mysqld/mysqld2.sock
port = 3312
pid-file = /var/run/mysqld/mysqld2.pid
datadir = /var/lib/mysql_multi/02
language = /usr/share/mysql/english
user = mysql

** Перед запуском сервера mysql необходимо создать структуру в целевом каталоге:

mysql_install_db --user=mysql --datadir=/var/lib/mysql_multi/02

** Запуск нужного экземпляра сервера:

mysqld_multi start 2

** проверитм подключение:

mysql --socket=/var/run/mysqld/mysqld2.sock
или
mysql --host=127.0.0.1 --port=3312

НЕ ИСПОЛЬЗУЙТЕ "localhost" вместо "127.0.0.1"! Иначе вместо подключения к нужному порту будет задействован сокет по умолчанию. А это будет совсем не тот экземпляр сервера, который вы хотели.

** установим пароль рута:

mysqladmin --socket=/var/run/mysqld/mysqld2.sock -u root password 'new-password'
или
mysqladmin --host=127.0.0.1 --port=3312 -u root password 'new-password'

Так же создадим пользователя mulit_admin и права для выключения сервера mysql для всех экземпляров сервера:

GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';

к примеру так:

echo "GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';" | mysql --host=127.0.0.1 --port=3312 -u root -p'password'

ну и соответственно в разделе my.cnf [mysqld_multi] надо внести те же значения
user = multi_admin
password = multipass

Собственно, пока все. Т.е. теперь запустить экземпляры сервера mysql можно командой

mysqld_multi start 2,4,5
остановить аналогично
mysqld_multi stop 2,4,5

среда, 16 ноября 2011 г.

Bacula и резервное копирование

Это пока эскиз статьи.

Нужны как минимум три компонента на бэкап-сервере director, sd, fd.

aptitude install bacula-common
aptitude install bacula-director-common
aptitude install bacula-director-mysql
на этом этапе будет создана настройка mysql базы для bacula

aptitude install bacula-client
aptitude install bacula-server


aptitude install bacula-sd - storage-демн
aptitude install bacula-sd-mysql

На backup сервере в /usr/share/bacula-director лежат скрипты для задания привилегий, создания базы и создания таблиц в ней (если автоматом при установке пакета bacula-director-common не создалось все, что нужно)
grant_mysql_privileges
create_mysql_database
make_mysql_tables

=============================================================
На клиенте достаточно установить bacula-fd
и довести конфиг /etc/bacula/bacula-fd.conf до вида:

Director {
  Name = backup-dir
  Password = "..."
}

Director {
  Name = backup-mon
  Password = "..."
  Monitor = yes
}

FileDaemon {
  Name = _domain_-fd
  FDport = 9102
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run/bacula
  Maximum Concurrent Jobs = 20
}

Messages {
  Name = Standard
  director = backup-dir = all, !skipped, !restored
}


Затем /etc/init.d/bacula-fd restart

суббота, 12 ноября 2011 г.

Debian и кодеки

Не хватает в системе кодеков divx и т.п.

Для начала добавим строки в /etc/apt/sources.list

deb http://www.debian-multimedia.org/ stable main non-free
deb-src http://www.debian-multimedia.org/ stable main non-free

затем

aptitude update
aptitude install w32codecs

Debian, pcmanfm и отстутсвие иконок

Хороший файл-менеджер, но иконки нужно отдельно устанавливать и немного настраивать.

aptitude install tango-icon-theme

затем редактируем файл ~/.gtkrc-2.0 или /etc/gtk-2.0/gtkrc и добавляем в него строку:

gtk-icon-theme-name = "Tango"

на этом все.

пятница, 11 ноября 2011 г.

Доступ к интернету через VPN тунель

Докатились таки власти до попытки контроля трафика и контента.

Поднять туннель не слишком сложно. Нужен сервер за границей, пойдет и полудохлый VPS - желательно с неограниченным трафиком (ну либо достаточно большим).
Прочитать можно тут настройка OpenVPN

Итак подняли - в результате на сервере где-то в иностранном интернете появится дополнительный сетевой интерфейс tun0 с ip 10.8.0.1.
У Вас на компьютере будет что-то вроде tun0 с ip 10.8.0.5

На сервере

по минимуму (лучше конечно нормально настроить файрвол):

* включаем форвардинг
echo "1" > /proc/sys/net/ipv4/ip_forward

* настраиваем SNAT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 0/0 -j SNAT --to-source _ip_сервера_

Теперь сервер будет перенаправлять запросы из подсети 10.8.0.0 на внешние сети и при получении ответа заворачивать обратно в туннель.

На клиенте

* маршрут на ваш сервер через шлюз провайдера

route add -host _ip_сервера_ gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)

* маршрут на подсеть туннеля

route add -net 10.8.0.0 netmask 255.255.255.0 dev tun0

* убиваем маршрут по умолчанию от провайдера

route del default gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)

* устанавливаем шлюз по умолчанию на наш туннель

route add default gw 10.8.0.1 tun0

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

Exim4 и ошибка при установке - Не удалось выполнить оперативную настройку 'exim4-daemon-light'

Дебиан не перестает удивлять. При попытке установить exim4 вывалиось что-то вроде

Не удалось выполнить оперативную настройку 'exim4-daemon-light'
(could not perform immediate configuration on 'exim4-daemon-light')

Все решение заключается в порядке установки

вначале ставим

apt-get install exim4-base exim4-config

затем

apt-get install exim4-daemon-light

Оригинально, однако работает контроль пакетов. Куда уж старой доброй Slackware до таких высот.

четверг, 10 ноября 2011 г.

Настройка OpenVPN

Настройка сервера.

Установим
aptitude install openvpn

Копируем файлики для генерации ключей и немного поднастроим:

cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa

если нужно, то редактируем строки в конце файла /etc/openvpn/easy-rsa/vars (страна, город и т.д.)

mkdir /etc/openvpn/easy-rsa/keys
touch /etc/openvpn/easy-rsa/keys/index.txt
echo "00">/etc/openvpn/easy-rsa/keys/serial

cd /etc/openvpn/easy-rsa
source ./vars
chmod 700 ./vars

Создаём личный ключ и сертификат центра сертификации, на основе которых будут сертифицироваться прочие выдаваемые ключи:

./build-ca


Генерация ключей происходит в папке /etc/openvpn/easy-rsa. Перед каждым сеансом генерации ключей не забываем загружать переменные:

source ./vars

Генерируем ключ сервера:

./build-key-server server


Генерация сертификата и личного ключа клиента

source ./vars
./build-key computer2

Создаём параметр DH (Алгоритм Диффи — Хеллмана):

./build-dh

Генерируем TLS ключ:

openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key

Настройка openvpn сервера
делаем отдельную папку keys в папке openvpn и копируем туда необходимые для работы сервера файлы:

mkdir /etc/openvpn/keys
cd /etc/openvpn/easy-rsa/keys/
cp ca.crt ca.key /etc/openvpn/keys/
mv server.crt server.key dh1024.pem ta.key /etc/openvpn/keys/

Запросы на генерацию сертификата можно удалить:

rm server.csr

Копируем примерный файл настройки сервера openvpn (а можно просто создать):

gzip -cd /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >> /etc/openvpn/server.conf

Примерное содержание server.cong

# адрес на котором слушать входящие запросы.
# закоментированно, значит на всех
;local a.b.c.d
port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth keys/ta.key 0
cipher BF-CBC
comp-lzo
max-clients 30
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

Собственно говоря, на этом и все. Можно настроить выдачу шлюза по умолчанию и пр. редактируя server.conf

Есть вероятность, что tun на сервере не запущен
modprobe tun

Запускаем /etc/init.d/openvpn start и смотрим в лог /var/log/openvpn-status.log все ли нормально.
Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip
================================

Настройка клиента

Установим
aptitude install openvpn
Скопируем в папку с секьюрными правами файлы ca.crt computer2.key computer2.crt
к примеру в /etc/openvpn/keys/

затем в /etc/openvpn создадим конфиг _domain_.conf (удобно хранить названия домена, конфигов может быть несколько на разные сервера)
За основу можно взять /usr/share/doc/openvpn/examples/sample-config-files/client.conf

client
remote _domain_ 1194
proto udp
ca /etc/openvpn/keys/ca.crt
key /etc/openvpn/keys/computer2.key
cert /etc/openvpn/keys/computer2.crt
daemon
dev tun

Есть вероятность, что tun на клиенте не запущен
modprobe tun

Запуск клиента производится командой вида
openvpn --config /etc/openvpn/_domain_.conf

Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip

среда, 2 ноября 2011 г.

Тест "скорости" канала интернета.

Если надо потестить скорость инета можно воспользоваться http://www.thinkbroadband.com/download.html
Доступны к скачке файлы от 5M до 1G и канал у них довольно широкий


http://download.thinkbroadband.com/1GB.zip
http://download.thinkbroadband.com/512MB.zip
http://download.thinkbroadband.com/200MB.zip
http://download.thinkbroadband.com/100MB.zip
http://download.thinkbroadband.com/50MB.zip
http://download.thinkbroadband.com/20MB.zip
http://download.thinkbroadband.com/10MB.zip
http://download.thinkbroadband.com/5MB.zip

четверг, 20 октября 2011 г.

Redmine и удаление плагинов - дубль 2

Сначала все бэкапим:
mysqldump -u -p > ~/redmine_`date +%d-%m-%y`.sql
tar -cPzf ~/redmine-`date +%d-%m-%y`.tgz _rails_root_

Переходим в директорию, где у нас установлен Redmine (RAILS_ROOT) (/usr/share/redmine) и выполняем следующие команды:

rake db:migrate:plugin NAME=_plugin_name_ VERSION=0 RAILS_ENV=production
ruby script/plugin remove _plugin_name_

После второй команды появится сообщение:

svn: '_rails_root_/vendor/plugins' is not a working copy

это не важно.
Перезапускаем Apache

вторник, 18 октября 2011 г.

Debian и установка Graphite

Graphite

sudo aptitude install python-whisper
sudo aptitude install python-django
sudo aptitude install python-django-tagging
sudo aptitude install python-twisted
sudo aptitude install python-cairo
aptitude install python-simplejson


* Качаем исходники:
https://launchpad.net/graphite

wget http://launchpad.net/graphite/0.9/0.9.9/+download/whisper-0.9.9.tar.gz
wget http://launchpad.net/graphite/0.9/0.9.9/+download/carbon-0.9.9.tar.gz
wget http://launchpad.net/graphite/0.9/0.9.9/+download/graphite-web-0.9.9.tar.gz

* распаковываем и инсталлируем каждый пакет

sudo python2.6 setup.py install

создаст каталог /opt/graphite/ и в него установит.

В /opt/graphite/conf копируем:

cp carbon.conf.example carbon.conf
cp storage-schemas.conf.example storage-schemas.conf
подредактировать storage-schemas.conf
cp graphite.wsgi.example graphite.wsgi

* Создаем базу и заоодно root для django
cd /opt/graphite/webapp/graphite
sudo python manage.py syncdb

* Меняем права на базу, что бы апач мог получить доступ
sudo chown -R www-data:www-data /opt/graphite/storage/

* для апача модуль python
sudo aptitude install libapache2-mod-python
sudo aptitude install libapache2-mod-wsgi

* копируем из исходников пример настройки апача examples/example-graphite-vhost.conf
а в нем видим такую строку WSGISocketPrefix /etc/httpd/wsgi/
а у нас вообще нет каталогоа httpd - а есть apache2 (Debian) - делаем
mkdir /etc/apache2/wsgi
и меняем в конфиге на WSGISocketPrefix /etc/apache2/wsgi/

* собственно перезапускаем апач и смотрим, что получилось.

* для отладки включим вывод в лог debug
cd /opt/graphite/webapp/graphite
cp local_settings.py.example local_settings.py
находим и раскомментируем
DEBUG = True

* Запускаем Carbon (сборщик данных)

cd /opt/graphite/
./bin/carbon-cache.py start

среда, 5 октября 2011 г.

1Wire и OWServer

OWServer - вроде драйвера между 1Wire и программами.
OWFS - может монтировать значения девайсов шины в виде файловой системы, вроде /sys /proc
Сайт проекта http://owfs.org

Для сборки потребовался еще libfuse-dev

И вот что самое тупое в owserver

При использовании простого адаптера для последовательного порта, она почти 2 минуты пытается найти на нем адаптер на DS2480. И лишь после этого согласно инструкции "переключается" на работу с простейшим адаптером. Поэтому или имейте терпение, или патчите код
module/owlib/src/ow_ds9097U.c

на предмет уменьшения значения повторов #define DS9097U_INIT_CYCLES 10
так, поставив 1 - получим ДВЕ проверки ~ около 10 секунд.

1Wire и DS1820

Есть простейший адаптер на FT232R и одном транзисторе для 1Wire. Нужно получить температуру.
Ставим пакет digitemp

Запускаем
digitemp_DS9097 -i -s /dev/ttyUSB0

на выходе что-то вроде:

Turning off all DS2409 Couplers
.
Searching the 1-Wire LAN
10BBEC6C010800A0 : DS1820/DS18S20/DS1920 Temperature Sensor
ROM #0 : 10BBEC6C010800A0
Wrote .digitemprc

Значит нашли нужный адаптер и термометр.
Теперь берем с него температуру:

digitemp_DS9097 -a -s /dev/ttyUSB

в выводе нас интересует строчка:

Oct 05 14:40:28 Sensor 0 C: 21.25 F: 70.25

можно "отсеч" лишний вывод командой вида

digitemp_DS9097 -a -s /dev/ttyUSB0 -q -o "%.1C"

выведет цифры температуры по Цельсию.
если датчиков несколько, добавляем параметр -t 0 (0-n) номер датчика

четверг, 29 сентября 2011 г.

Хостинг в Европе.

Сохраню на память, может пригодится.

https://inceptionhosting.com/
xen виртуализация, адекватный саппорт. 14 дней возврат денег. Частые промо-акции и скидки.
Понравилось!

http://www.cinfu.com/
Пока все хорошо. быстро организовали доступ. Скидка для нового пользователя 50%!


www.rapidovps.com
Самый тупой сапорт. Отвечают иногда через 5-7 дней. Не делают то, что нужно. Был на сервере сбой и потребовалась переустановка ОС (подозреваю, липовая), они тихонько подсунули сервер ступенькой ниже. Памяти в два раза меньше и хард меньший в два раза. В общем, ну их. Не понравилось.

вторник, 27 сентября 2011 г.

Thunderbird и ошибка с библиотекой libdbus-glib-1.so.2

Как обычно трабла в версии библиотек - 32 против 64 бит.
При запуске Thunderbird выдало что-то вроде:

/thunderbird-bin: error while loading shared libraries: libdbus-glib-1.so.2: cannot open shared object file: No such file or directory

Одно из решений, установить ia32-libs-gtk

Второе, если у Вас ОС 64бита, пойти http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/ выбрать там нужную версию и linux-x86_64/ с правильным языком и установить.

понедельник, 26 сентября 2011 г.

Apache и предупреждение при рестарте

На свежем debin 6 при рестарте апача получили предупреждение:

Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using --ip-- for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using --ip-- for ServerName

Решается довольно просто - в файл /etc/apache2/apache2.conf добавляем строку
ServerName *
или вместо звездочки ваш сервер.

воскресенье, 18 сентября 2011 г.

Debian и nagios

Проблема известная, но повторяется раз от раза при каждой установке.

Error: Could not stat() command file '/var/lib/nagios3/rw/nagios.cmd'!

Выполняем:
sudo /etc/init.d/nagios3 stop
sudo dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
sudo /etc/init.d/nagios3 start

суббота, 17 сентября 2011 г.

Postfixadmin, exim и dovecot

Итак:

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

This email address already exists, please choose a different one!

Как оказалось, alias надо добавлять вовсе не "глобально". Для начала надо было изменить в конфиге config.inc.php два параметра:

$CONF['alias_control'] = 'YES';
$CONF['alias_control_admin'] = 'YES';


после этого в списке Mailboxes появиться ссылка Alias, пройдя по которой и можно задать списко ящиков, каждый в новую строку. Они затем отобразятся в поле To = "Mailbox и ваш доп.ящик"

================================

Теперь добавим авторизацию для dovecot.
В /etc/dovecot/dovecot.conf в секции "auth default"
Пароли будем забирать из базы postfixadmin - имя базы, юзер = mail

# SQL database
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}

а настройки юзеров будут статические.

userdb static {
args = uid=vmail gid=vmail home=/home/vmail/%u
}

т.е. папки юзеров будут создаваться от имени vmail в /home/vmail/юзер

socket listen {
client { # демон авторизации, его будет использовать exim
path = /var/run/dovecot/auth-client
mode = 0666
}
master { #для локальной досавки - LDA
path = /var/run/dovecot/auth-master
mode = 0666
}
}

И сама локальныя доставка, т.е. exim будет почту передавать dovecot, что бы тот распихал ее по реальным папкам в ящиках.

protocol lda {
postmaster_address = postmaster@example.com
auth_socket_path = /var/run/dovecot/auth-master
}

В /etc/dovecot/dovecot-sql.conf

connect = host=localhost dbname=mail user=mail password=mailnew
default_pass_scheme = plain <- пароль в открытом виде, на боевой системе не допустимо!
password_query = SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'


Теперь про exim
Авторизация с использованием dovecot
Создаем /etc/exim4/conf.d/auth/05_dovecot_login

dovecot_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
# setting server_set_id might break several headers in mails sent by authenticated smtp. So be careful.
server_set_id = $auth1

dovecot_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

Настройка подключения к базе mysql - понадобиться для форвардинга
добавим в /etc/exim4/conf.d/main/02_exim4-config_options

hide mysql_servers = localhost/mail/mail/mailnewzulu145:/etc/exim4/conf.d/main

настроим, что локальную доставку LDA
редактируем /etc/exim4/conf.d/router/900_exim4-config_local_user (хотя можно сделать и новый)

local_user:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
transport = dovecot_virtual_delivery
cannot_route_message = Unknown user

настроим траспорт
создадим /etc/exim4/conf.d//transport/05-exim4-config_transport_dovecot
dovecot_virtual_delivery:
driver = pipe

debug_print = "T: dovecot_virtual_delivery for $local_part@$domain"

command = /usr/lib/dovecot/deliver -d $local_part@$domain -f $sender_address
# v1.1+: command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -f $sender_address -a $original_local_part@$original_domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = vmail
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

Теперь forward - переадресацию - что бы информация бралась из базы postfixadmin
приведем /etc/exim4/conf.d/router/600_exim4-config_userforward к виду

userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT goto FROM alias \
WHERE address='${local_part}@${domain}' AND domain='${domain}'}}

среда, 14 сентября 2011 г.

Redmine и не работающий форум.

Не люблю ruby!

Поставили плагины-модули, перестали работать форумы.
Как оказалось, из-за кривого плангина - redmine_autohie

Удаление:
rake db:migrate:plugin NAME=redmine_autohier VERSION=0 RAILS_ENV=production
ruby script/plugin remove redmine_autohier

Ruby и обновление

При обновлении redmine попалась такая ошибка:

(in /usr/share/redmine)
Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`

На попытку установить:
$ sudo gem install -v=0.4.2 i18n

ругнулось так:

ERROR: could not find gem i18n locally or in a repository

В общем пришлось обновлять ruby:

sudo gem install rubygems-update
cd /var/lib/gems/1.8/gems/rubygems-update-*
sudo ruby setup.rb

понедельник, 5 сентября 2011 г.

Настройка vsftp

Устанавливаем vsftpd и libpam-pwdfile

Добавляем в начало /etc/pam.d/vsftpd стрки:

auth sufficient /lib/security/pam_pwdfile.so pwdfile=/etc/vsftpd/passwd
account sufficient /lib/security/pam_permit.so


Создаем папку, переносим в нее конфиг и делаем симлинк

mkdir /etc/vsftpd
mv /etc/vsftpd.conf /etc/vsftpd
ln -s /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf

В папку с конфигами будет файл - userlist
каталог users с настройками конкретных юзеров
и файл passwd с паролями юзеров

Меняем

anonymous_enable=NO
write_enable=YES

userlist_file=/etc/vsftpd/userlist
user_config_dir=/etc/vsftpd/users/
virtual_use_local_privs=YES
guest_enable=YES
guest_username=www-data
userlist_enable=YES
userlist_deny=NO

Теперь добавляем юзера (к примеру roma):
добавляем его в список файла userlist
затем создаем пароль в файле passwd через
htpasswd ./passwd roma
вводим пароль

Создаем файл ./users/roma
и помещаем в него необходимые настройки для этого юзера

chroot_local_user=YES
local_root="путь_к_папке_юзера"
guest_username="юзер"

где guest_username - от имени какого сист. юзера будет работать данный логин - к примеру - www-data

воскресенье, 28 августа 2011 г.

Debian и bluetooth 2

Разрабы пакета Bluez опять поменяли формат конфигов. Так что инет полон устаревшей инфы на тему настройки bluetooth адаптеров. Так теперь hcid.conf устарел, и более не нужен. И pin теперь задается посредством bluetooth-agent, а не /etc/bluetooth/pin.

Проверяем, что адаптер вообще работает.
/usr/sbin/hciconfig

hci0: Type: BR/EDR Bus: USB
BD Address: 00:13:65:72:50:E9 ACL MTU: 1021:8 SCO MTU: 48:10
UP RUNNING PSCAN <<-----------
RX bytes:732 acl:0 sco:0 events:28 errors:0
TX bytes:113 acl:0 sco:0 commands:25 errors:0

нас интересует строчка вида "UP RUNNING PSCAN", если адаптер не поднялся будет "DOWN"

Далее сканируем на предмет телефона:
hcitool scan

Scanning ...
5C:5C:A9:6D:8B:3D U8500

Нашли, МАС адрес запомнили.

Иногда адаптеры запускаются в режиме "невидимости" - снова включить "видимость" можно
dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable
или так
hciconfig hci0 piscan
после соединения и пин-кода лучше опять отключить.
hciconfig hci0 noscan

Запрос на соединение и пин код

bluetooth-agent "пин" "МАС"

т.е. что-то вроде

bluetooth-agent 1234 5C:5C:A9:6D:8B:3D

На телефоне тоже выскочит предложение ввести код. Вводим (иногда время ввода ограничено) и устройства с этого момента "спарены"

http://wiki.debian.org/BluetoothUser



Осуществляем проверку надежности передачи пакетов между компьютером и телефоном:

l2ping 00:0F:DE:82:22:87

Просмотр сервисов запущенных на телефоне (зачастую требуется доп. программки вроде Astro и модуля для него bluetooth - который реализует ObexFTP).
sdptool browse

Итак Astro с запущенным модулем bluetooth (с включенной опцией OBEX FTP Server) создал доп. канал:

Service Name: ASTRO_Bluetooth_FTP
Service RecHandle: 0x10007
Service Class ID List:
UUID 128: 00001106-0000-1000-8000-00805f9b34fb
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 16

Монтируем этот канал
obexfs -b "МАС" -B "канал" /media/android
т.е. что-то вроде этого
obexfs -b 5C:5C:A9:7D:8B:3D -B 16 /media/android

и можно теперь использовать /media/android как обычный раздел, копировать, удалять и т.д.

вторник, 23 августа 2011 г.

Debian, Synaptics Touchpad

При старте иксов touchpad гонял курсор как обычная мышка, но отказывался "кликать" коротком нажатии на touchpad.
А всего-то оказалось надо было запустить мышиный драйвер с параметром proto=imps

Для проверки можно из консоли выполнить команды:
modprobe -r psmouse
modprobe psmouse proto=imps

Если все заработало, то можно создать файл touchpad.conf в /etc/modprobe.d/ и поместить в него:
options psmouse proto=imps

Есть правда и другой путь - установить пакет gpointing-device-settings или gsynaptics
Тогда доступны станут прокрутки при касании двумя пальцами (мультитач) и тап в качестве клика.
Для настройки надо запустить gpointing-device-settings и выбирать что приглянется

Про ноут есть немного описания - http://www.fi.muni.cz/~kas/c1020/#touchpad

Debian и список репозиториев

Добавляем в /etc/apt/sources.list

deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free

и апдейтим
apt-get update

понедельник, 22 августа 2011 г.

Debian и MongoDB

добавляем ключ
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

добавляем репозиторий
deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

sudo apt-get update
sudo apt-get install mongodb-10gen

воскресенье, 21 августа 2011 г.

Оптический привод и ошибка Sense Key : Medium Error [current] and Unhandled sense code

Если при монтировании оптических дисков полезли следующие ошибки

Unhandled sense code
Sense Key : Medium Error [current]

пофиксить можно

sudo hdparm -E 0 /dev/sr[01]

вторник, 16 августа 2011 г.

Git - установка и настройка

ставим git и gitosis

Настройка git-сервера

Выполняем инициализацию gitosis-admin репозитория (на сервере):

$ sudo -H -u gitosis gitosis-init < /путь/к/файлу/id_rsa.pub
где id_rsa.pub - ваш публичный кюч.

В ответ будет выдано что-то вроде:
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/

разрешаем выполнение post-update хука:
$ sudo chmod +x /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update

Клонируем конфиги gitosis на локальный компьютер

$ git clone gitosis@ваш_сервер:gitosis-admin.git

репозиторий в каталоге gitosis-admin, в котором в дирректории keydir лежат публичные ключи людей, которые имеют доступ к данному репозиторию.
В качестве имени файла используется его имя из открытого ключа. Что бы добавить человека нужно, просто, добавить его ключ.
файл gitosis.conf - настройка прав доступа для репозиториев
Добавляем ключи (юзеров) и редактируем конфиг на предмет прав и доступа.
затем коммитим изменения и закидываем их на сервер
$ git commit -am "grant new user ...."
$ git push origin master

Создаем и настраиваем новый репозиторий.

$ git clone gitosis@ваш_сервер:gitosis-admin.git

Редактируем gitosis.conf с добавленным репозиторием test-repo, в конфиг добавляем:

[group test-group]
writable = test-repo
members = логин1 логин2 ...

[repo test-repo]
description = Тестовый репозиторий
owner = имя

после правок делаем коммит:
$ git commit -am "Добавлен репозиторий test-repo"
и записываем изменения:
$ git push origin master

репозиторий готов и можно клонировать:

$ git clone gitosis@git.example.org:test-repo.git
да не забыть добавить хотя бы один файлик, иначе будет ругаться на ошибку.

В некоторых версиях git новые репозитории не создаются автоматически и при попытке клонировать выдается что-то вроде

fatal: 'repositories/имя-репо.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly

В таком случае репозиторий надо создать принудительно. есть два варианта:
1. создавать прямо на удаленном сервере

Создаем нужный каталог и в нем инициируем git
mkdir /srv/gitosis/repositories/test-repo.git
cd /srv/gitosis/repositories/test-repo.git
git init
chown gitosis.gitosis /srv/gitosis/repositories/test-repo.git -R

2. сначала создать локально, а потом залить на сервер.
mkdir test-repo
cd test-repo
git init
git remote add origin gitosis@YOUR_SERVER_HOSTNAME:test-repo.git
добавим какой-нибудь файлик и закомметим его
git push origin master:refs/heads/master

пятница, 12 августа 2011 г.

Android SDK и Eclipse - настройка

** Устанавливаем Java - sun-java6-jre
** Устанавливаем JDK - sun-java6-jdk

** Скачать свежий SDK http://developer.android.com/sdk/index.html
Распаковать его и запусить ./tools/android

** Доустановить утилиты --
Available packages -> Android Repository -> Android SDK Platform-tools
(в нем содержится нужная утилитка adb)
На "64битной" системе утилита adb откзалась запускаться и выдала что-то вроде:
./adb: error while loading shared libraries: libncurses.so.5
для ее запуска понадобились два пакета "32битных" : lib32ncurses5 и lib32stdc++6



** Доустановить нужные SDK под конкретную версию ОС --
Available packages -> Android Repository -> SDK Platform Android x.x (x.x версия)

** Теперь установить ADT плагин в Eclipse. (если нужно донастроить прокси)
Help > Install New Software > кнопка Add > ввести "ADT Plugin" как Name и Location = "https://dl-ssl.google.com/android/eclipse/" > кнопка OK
выбираем "Developer Tools" и жмем Next и видим список компонентов, которые будут скачены - опять Next. Читаем лиценизию и соглашаемся с ней (чекбокс accept) и жмем Finish. В процессе будет что-то на счет "не доверенных" компонентов, доверяем всем.
Рестартим Eclipse.

** Указываем Eclipse путь к установленному SDK
Window->Preferences-> Android ->Browse - указываем путь к SDK.

Android 2.2 и bluetooth клавиатура.

Есть платная программа Blueinput от teksoft - если не жалко 10 евро она возможно поможет.
Если жалко:
статья на английском http://i-miss-erin.blogspot.com/2009/09/connect-bluetooth-keyboard-in-android.html

** Девайсы необходимо "спарить"
Settings->Wireless&networks->Bluetooth settigs
Включаем Bluetooth и клавиатуру (иногда на ней надо нажать еще хитрую кнопочку с обратной стороны, что бы она начала вещать на все окрестности о себе - как правило всего несколько минуть, затем если не успели - повторить нажатие)
На смарте жмем Scan for device - клавиатура должна появиться в списке Bluetooth devices
Жмем на строчку с названием клавиатуры (Bluetooth Keyboard) и вводим код - любой, к примеру 1234
ОК. Теперь этот же код набираем на клавиатуре и на жмем enter.
Состояние строки под Bluetooth Keyboard измениться на Paired but not connected

Версия для смарта, без применения компьютера
* нужен root на девайс - z4root
* нужен установленный - busybox
* нужен установленный - GScript

Качаем файлы в папку на флэшке - gscript (/mnt/sdcard/gscript)
hciconfig
hcitool
hidd
cp_blueutils.sh

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

hcitool.orgin_u8500

Если качается стандартным гугл.браузером, то все падает на флэшку в папку download, но программам к имени добавляется суффикс .bin, т.е. было hidd, скачалось hidd.bin. Т.е. надо переименовыват (отрывать у имени .bin) и копировать в нужный каталог.

Opera такими проблемами не страдает, она позволяет сразу выбрать - куда скачивать (выбираем папку gscript) и сохраняет с нормальными именами.

Затем запускаем GScript. В меню выбираем "Add script". Жмем "Load file" и выбираем cp_blueutils.sh
Проверяем, есть ли галка на "Needs SU?" - она нам нужна для рута и жмем "Save". В списке скриптов появиться cp_blueutils. Запускаем его на выполнение. На экране должны быть строки о выполнении, типа:

"copy 'hidd' to /system/xbin"

В версии Android ниже 2.2 флэшка (sdcard) монтировалась не в /mnt/sdcard, а в /sdcard
В этому случае надо в скрипте cp_blueutils.sh поправить строку вида:

cd /mnt/sdcard/gscript

отредактировать до вида:

cd /sdcard/gscript

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

"'hidd' already exists in /system/xbin"

Значит все скопировали.
Скачаем еще немного скрптов в папку gscript:

scan.sh
connect.sh
make_bbb.sh (нужен только если хотите в дальнейшем запускать connect из эмулятора терминала)

Затем запускаем GScript. В меню выбираем "Add script". Жмем "Load file" и выбираем scan.sh, затем сохраняем и запускаем его из списка. Если ничего не нашлось, попробуйте активирвоать на клавиатуре магическую кнопочку.
Должно получиться что-то вроде:

Scanning ...
00:22:43:C6:5B:B9 Bluetooth Keyboard

Запоминаем эти хх:хх:хх:хх:хх:хх цифры-буквы, это MAC адрес клавиатуры. Теперь надо в GScript добавить из файла скрипт connect.sh и в нем ИЗМЕНИТЬ строку вида
mac="00:22:43:C6:5B:B9"
на ваши цифры-буквы. Затем сохранить и выполнить.
После этого клавиатура должна заработать.

В дальнейшем запускать только скрипт connect. Остальные в принципе можно удалить, впрочем как и скачанные программы в папке gscript. Если запусить скрипт make_bbb (пердварительно отредактировав в нем MAC адрес, как и в случае со скриптом connect), то в /system/xbin/ появиться файл bbb. Т.е. теперь можно будет из эмулятора терминала набирать su и затем bbb. И клавиатура должна подключиться.



Вторая версия вышеизложенного - работа с компьютера:
--Смарт должен быть рутован (инструкций огромное множество)--
Качаем недостающие программы:
http://androidobex.googlecode.com/files/hciconfig
http://androidobex.googlecode.com/files/hcitool
http://androidobex.googlecode.com/files/hidd

Итак, вся работа будет производиться через утилиту adb которая входит в комплект SDK Android
** Необходимо подключить девайс через usb к компьютеру.
** Так же после этого включить режим отладки: ставим галку в Settings->Aplication->Development->Usb debugging (как это на русском не помню)

** Запускаем adb shell. Сразу оговорюсь, как под виндой это работает не знаю, нет ее у меня, но говорят, что как-то работает.
В ответ на запуск adb shell получаем приглашение $
Вводим "su" и enter для получения root. И вот тут внимательно смотрим на экран, так как при первом запросе su из шела появиться запрос на предоставление рута (10сек) и надо подтвердить.
Если все нормально, $ поменяется на # - root.

** Теперь надо перемонтировать раздел /system для чтения-записи (изначально он монтируется только на чтение)
Частенько разделы /system имеют отличие - system - это всего лишь точка монтирования, а сам раздел выглядит похоже на /dev/block/mtdblockх, где х - номер раздела. Вот этот номер нам и предстоит выяснить. Если бездумно копировать команды инструкций для других моделей, можно смонтировать ошибочно раздел. Ну в общем. я Вас предупредил.
Смотрим, что и куда смонитировано (символ # набирать не надо, он уже отображается на экране):

# mount

в строчках ищем что-то вроде
/dev/block/mtdblock4 /system ... - вот 4 - это и есть наш раздел. У Вас может быть другая цифра!

Перемонтируем раздел:
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
# chmod 777 /system/xbin

Выходим из adb shell (или, предположительно, закрываем окно для винды)
# exit
$ exit

** Теперь надо закинуть три скачанных файлика в смарт.

adb push hidd /system/xbin
adb push hcitool /system/xbin
adb push hciconfig /system/xbin

Сделать исполняемыми:
# chmod 755 /system/xbin/hidd
# chmod 755 /system/xbin/hcitool
# chmod 755 /system/xbin/hciconfig



** Теперь пошаманим с программками. Запускаем adb shell

* Получаем root
$ su
#

* Скнируем на предмет наличия клавиатуры и ее MAC адреса (опять же, не забываем, что клавиатура доступна к обнаружению ограниченное время, если не найдется, находим на ней магическую кнопочку и нажимаем). На выходе получим что-то вроде
# hcitool scan
Scanning ...
00:22:43:C6:5B:B9 Bluetooth keyboard
~~~~~~~~~~~~~~~~~
Цифры-буквы и есть MAC адрес

* Пробуем подключить клавиатуру:
# hidd --connect 00:22:43:C6:5B:B9

Должна заработать.
Для удобства можно сделать скрипт вида (вписать свой MAC адрес):

#!/system/bin/sh
hidd --connect 00:22:43:C6:5B:B9

и сохранить в /system/xbin/bbbb
# chmod 755 /system/xbin/bbbb

Теперь открыв на смарте терминал (к примеру Better Terminal Emulator Pro) и в нем
$ su
# bbbb

Должна подключиться клавиатура

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

вторник, 9 августа 2011 г.

Debian, Bind и chroot

Подготавливаем окружение chroot
# mkdir -p /var/chroot/bind9/{etc,dev,var/cache/bind,var/run/bind/run,var/log,var/cache/bind/master,var/cache/bind/slave}
# chown -R bind:bind /var/chroot/bind9/var/*
# mknod /var/chroot/bind9/dev/null c 1 3
# mknod /var/chroot/bind9/dev/random c 1 8
# mv /etc/bind /var/chroot/bind9/etc
# ln -s /var/chroot/bind9/etc/bind /etc/bind
# ln -s /var/chroot/bind9/var/log /var/log/named
# ln -s /var/chroot/bind9/var/cache/bind/master /var/chroot/bind9/etc/bind/master
# ln -s /var/chroot/bind9/var/cache/bind/slave /var/chroot/bind9/etc/bind/slave

Создаём файл /etc/rsyslog.d/bind-chroot.conf следующего содержания
# cat /etc/rsyslog.d/bind-chroot.conf
$AddUnixListenSocket /var/chroot/bind9/dev/log

Редактируем /etc/default/bind9
# cat /etc/default/bind9
# run resolvconf?
RESOLVCONF=yes

# startup options for the server
OPTIONS="-u bind -t /var/chroot/bind9"

Для того, чтобы в логах сервера было указано правильное время с учётом часового пояса
# cp /etc/localtime /var/chroot/bind9/etc/

Что бы коректно отрабатывали скрипты запуска-остановки, надо в /etc/bind/named.conf
include "/etc/bind/rndc.key";

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};

Проверить можно командой
#rndc status
Без этой доработки получали бы при остановке сервиса что-то вроде:
Stopping domain name service...: bind9rndc: connect failed: 127.0.0.1#953: connection refused


Теперь рестартуем rsyslog и стартуем bind9
# /etc/init.d/rsyslog restart
# /etc/init.d/bind9 start

Mysql и переезд на новый сервер

Понадобилось скопировать пользователей и их права на новый сервер
не плохо подошла для этого утилитка mk-show-grants из пакета Maatkit
http://www.maatkit.org

mk-show-grants --separate --revoke --ask-pass > users.sql

единственный неприятный момент, требуется пароль, а когда используется > users.sql вывод приглашения перенаправляется, т.е. надо вводит "вслепую" и enter
А потом из users.sql надо удалить первую строку - Enter password:

и на целевом сервере втянуть users.sql в базу

Debian и bluetooth

apt-get install bluetooth
/etc/init.d/bluetooth start


GUI
apt-get install blueman

запускается через
blueman-manager

воскресенье, 7 августа 2011 г.

Debian и терминал

Хороший терминал rxvt-unicode
aptitude install rxvt-unicode

так же ставим шрифт
aptitude install xfonts-terminus

В .Xresources настраиваем ресурсы терминала:
URxvt.font: -*-terminus-medium-r-*-*-16-*-*-*-*-*-*-u
URxvt.scrollBar: false
URxvt.saveLines: 65535
URxvt.InternalBorder: 0
URxvt.pointerBlank: true
URxvt.loginShell: true
URxvt.background: black
URxvt.foreground: white

Debian и постустановка.

Поставил в экспертном режиме.

смонтировал dvd

установил иксы с легким десктопом -- aptitude install lxde

отключить загрузку иксов при старте
-- редактируем /etc/inittab в вид:
id:3:initdefault:
(т.е. запуск в runlevel 3)
-- update-rc.d gdm disable 3

Добавляем оф. репозитории в /etc/apt/sources.list
deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
и апдейтим их -- aptitude update

что бы монтировать самбовые шары ставим пакет smbfs

ставим icewm и tango-icon-theme для иконок в pcmanfm (файл-менеджер)
создаем файл .xsession и в него пишем:
icewmbg &
icewm

далее, создаем файл ~/.gtkrc-2.0 и в него пишем:
gtk-icon-theme-name = "Tango"

теперь иконки должны заработать.

xxkb
и настройка

пятница, 5 августа 2011 г.

Debian и сглаживание шрифтов

Установим
aptitude install msttcorefonts

В домашнем каталоге создадим файл .fonts.conf с таким содержанием

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font" >
<edit mode="assign" name="rgba" >
<const>none</const>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="hinting" >
<bool>true</bool>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="hintstyle" >
<const>hintmedium</const>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="antialias" >
<bool>true</bool>
</edit>
</match>
<match target="font" >
<test compare="more_eq" name="size" qual="any" >
<double>0</double>
</test>
<test compare="less_eq" name="size" qual="any" >
<double>15</double>
</test>
<edit mode="assign" name="antialias" >
<bool>false</bool>
</edit>
</match>
<match target="font" >
<test compare="more_eq" name="pixelsize" qual="any" >
<double>0</double>
</test>
<test compare="less_eq" name="pixelsize" qual="any" >
<double>20</double>
</test>
<edit mode="assign" name="antialias" >
<bool>false</bool>
</edit>
</match>
</fontconfig>

вторник, 2 августа 2011 г.

Debian и отключение иксов

Итак, хотим загружаться в консольном режиме без иксов и графики. Уж не знаю зачем так сделали, но в debian при runlevel 2-5 иксы таки грузятся. Что надо сделать, что бы исправить ситуацию:

1. Редактируем /etc/inittab в вид:
id:3:initdefault:
(т.е. запуск в runlevel 3)

2. Удаляем симлинк /etc/rc3.d/S20gdm или /etc/rc3.d/S20kdm - в зависимости, что в виде DE установлено. цифры в S20gdm могут быть другие.
Хотя правильнее будет
update-rc.d gdm3 disabe 3

вторник, 19 июля 2011 г.

Huaway U8500 и Android 2.2

Вышла новая версия.

Перепрошиваем, настраиваем apn и аккаунты.

Music Folder Player - простой плеер, играет файлы в каталогах, есть зацикливание трека.


Устанавливаем:

** Ставим z4root - для root
http://4pda.ru/forum/index.php?showtopic=199355

** Перенос программ на карту памяти -
App 2 SD - http://4pda.ru/forum/index.php?showtopic=212693

** С маркета move2sd enabler и move2sd

** Учет трафика
3G Watchdog - суммарный трафик - http://4pda.ru/forum/index.php?showtopic=127366
TrafficStats - кто и сколько "съел" - http://4pda.ru/forum/index.php?showtopic=183359

** Файрвол - с этого и следует начинать. Нужен root. Droid Wall
http://4pda.ru/forum/index.php?showtopic=131323

** Отключать мобильный интернет apndroid
http://4pda.ru/forum/index.php?showtopic=147639
http://www.android-info.ru/applications/apndroid-otkluchenie-mobilnogo-interneta#more-1

** Блокировка рекламы - Adfree
http://4pda.ru/forum/index.php?showtopic=128383

** Терминал - Better Terminal Emulator Magic
http://4pda.ru/forum/index.php?showtopic=148522

** SSH клиент - ConnectBot
http://4pda.ru/forum/index.php?showtopic=129287

** Root Explorer
http://4pda.ru/forum/index.php?showtopic=134840


Особенность версии 2.2 - экран не разблокируется с помощью двойного нажатия на menu.
Надо рут_эксплорером в файлике build.prop (/system) в строке:
ro.config.hw_menu_unlockscreen=false
заменить false на true. И перезагрузить.

** автоматически включает громкую связь - Up Sound Down
http://4pda.ru/forum/index.php?showtopic=169320

** напоминалка о пропущенных вызовах - Easy Reminder
http://4pda.ru/forum/index.php?showtopic=179541

** быстрый набор номера - QuickDial
http://4pda.ru/forum/index.php?showtopic=139593

** плеер аудиокниг (закладки и т.п.) MortPlayer Audio Books
http://4pda.ru/forum/index.php?showtopic=155375

** видео плеер avi и т.д. - RockPlayer Base
http://4pda.ru/forum/index.php?showtopic=174459

** аудио плеер - MortPlayer Music
http://4pda.ru/forum/index.php?showtopic=155367

** просматривать список контактов в виде контакт+мелодия - MortRing
http://4pda.ru/forum/index.php?showtopic=223852

** Пропущенные звонки на экране блокировки - Missed It!
http://4pda.ru/forum/index.php?showtopic=234434

** Контроль за автозапуском - Autostarts
http://4pda.ru/forum/index.php?showtopic=137316

** файловый менеджер - ASTRO File Manager
http://4pda.ru/forum/index.php?showtopic=121761

** файловый менеджер - SU File Manager & Terminal
http://4pda.ru/forum/index.php?showtopic=134842

** файловый менеджер - EStrongs File Explorer
http://4pda.ru/forum/index.php?showtopic=138744

** Battery Indicator
http://4pda.ru/forum/index.php?showtopic=157382

Alarm Clock Plus

четверг, 16 июня 2011 г.

Mysql изменить пароль root

Имеем три способа:

1. -------------------------------------
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

2. -------------------------------------
mysqladmin -u root password "newpass"


3. -------------------------------------
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

вторник, 24 мая 2011 г.

Midnight Commander и ошибка "Cannot open master side of pty"

При попытке задействовать консоль в Midnight Commander консоль не работала, выдавая сообщение:

Cannot open master side of pty: No such file or directory

решается добавлением в /etc/fstab строчки:

none /dev/pts devpts mode=0620 0 0

и затеме mount -a
Если devpts все же примонтирована, а ошибка сохраняется, возможно отсутствует файл /dev/ptmx
создадим его:

mknod /dev/ptmx c 5 2
chmod 0666 /dev/ptmx
chown root.tty /dev/ptmx

vsftpd и авторизация по pam-pwdfile

Нужно доустановить нужные либы.

aptitude install libpam-pwdfile

А вот дальше во многих мануалах пишут такие строки

auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd
account required pam_permit.so

а заработало лишь с такими

auth sufficient /lib/security/pam_pwdfile.so pwdfile=/etc/vsftpd/passwd
account sufficient /lib/security/pam_permit.so

прочитано тут blog.fluge.ru/article/vsftpd

воскресенье, 22 мая 2011 г.

Как склеить несколько avi файлов

Понадобилось склеить несколько фрагментов видео avi

cat "список avi файлов" > temp.avi
mencoder temp.avi -oac copy -ovc copy -forceidx -o resault.avi

правда бывают и не большеие досадные глюки - mencoder не все склеенные файлы распознает. Тогда выручает

mencoder -oac copy -ovc copy -o resault.avi кусок1.avi кусок2.avi ....

суббота, 30 апреля 2011 г.

Debian и timezone

Понадобилось поменять таймзону под debian. Есть много разных способов, один из них
dpkg-reconfigure tzdata

выбираем регион, город и все готово.

четверг, 28 апреля 2011 г.

Debian, nagios, nrpe и настройка на удаленном сервере

Есть сервер с nagios. Нужно с помощью nrpe забирать с других серверов информацию об их состоянии.

Установим на удаленном сервере nrpe-сервис и базовый набор nagios-plugin'ов:
aptitude install nagios-nrpe-server
aptitude install nagios-plugins-basic (в некоторых версиях устанавливается сразу же с nagios-nrpe-server в качестве зависимостей)

Проверим, что нужный порт слушается:
netstat -an | grep 5666
должно получиться что-то вроде этого:
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN

Изменяем конфигурационный файл /etc/nagios/nrpe.cfg и перезапускаем сервис с новыми параметрами

allowed_hosts=127.0.0.1, "ip основного сервера"

/etc/init.d/nagios-nrpe-server restart

пятница, 18 марта 2011 г.

Android и удаление системных приложений

Итак, необходимо удалить "системное" приложение. В списке к удалению его конечно же нет, на то и системное.
Рассмотрим на примере DocumentToGo - в одной из прошивок его воткнули в "системные", а следовательно обновить его версию и заодно вылечить от жадности обычным способом не выходит.

Нужен рут (root)
Оно живет в /system/app/DocumentToGo_viewer_pdf.apk
Удаляем, но просто удалить его мало. Надо еще вычистить из системы. Для этого открываем файл
/data/system/packages.xml и ищем наше приложение в параметре codePath, запоминаем, что написано в параметре name - в нашем случае com.dataviz.docstogo
и из шела даем команду:

pm uninstall com.dataviz.docstogo

После этого приложение полностью удалено. В принципе, надо бы проверить его кэш и т.п.

Debian и изменение локали

Ничего гениального, все просто:
sudo dpkg-reconfigure locales

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

debian и установка модулей perl через cpan

Собрался установить модули для perl, как обычно через cpan. И не вышло. Оказалось, что дебиан поставлен в минимальной конфигурации и gcc и make отсутствуют.
aptitude install gcc
aptitude install make

И все в порядке, cpan снова с нами!

воскресенье, 13 марта 2011 г.

apache и предупреждение "NameVirtualHost ... has no VirtualHosts"

При создании ОТДЕЛЬНЫХ файликов для виртуальных хостов вылезло предупреждение при запуске апача (что-то вроде этого) NameVirtualHost *:80 has no VirtualHosts

А все потому, что в КАЖДОМ файлике было упоминание NameVirtualHost *
Вынес его в etc/apache2/conf.d/virtual.conf
убрал упоминание NameVirtualHost из всех файликов виртуальных хостов и предупреждение пропало.

Drupal6 и нормальные урлы (человекочитаемые)

Сразу до начала создания контента используем модуль PathAuto. http://drupal.org/project/pathauto
Разархивируем модуль, и помещаем его в папку sites/all/modules, которая находится в каталоге сайта (если нет папки modules, то создаем ее и не забываем про права).
для работы PathAuto необходим модуль Token.http://drupal.org/project/token
Помещаем его туда же, что и PathAuto
Далее - меню «Управление → Конструкция сайта → Модули», и активируем модули Path, PathAuto и Token. "Сохранить настройки".
настроим транслитерацию - находим в папке модуля PathAuto файл «i18n-ascii.example.txt», и переименовываем его в «i18n-ascii.txt»
Далее меню «Управление», отображение "По модулям".
в модуле Path, вкладка «Синонимы», далее «Настройки автоматических синонимов», находим и ставим галочку «Транслитерировать перед созданием синонима». Сохраняем.

суббота, 12 марта 2011 г.

Debian и обновление ключей

Если при попытке обновить пакеты выдало:

W: GPG error: http://security.debian.org stable/updates Release: Следующие подписи
не могут быть проверены, так как недоступен общий ключ: NO_PUBKEY 010908312D230C5F
W: GPG error: http://ftp.debian.org testing Release: Следующие подписи не могут быть
проверены, так как недоступен общий ключ: NO_PUBKEY 010908312D230C5F

Значит надо установить ключики разработчиков:
sudo apt-get install debian-archive-keyring

После этого:
aptitude update

Но можно и проигнорировать проверку:
apt-get --allow-unauthenticated update

среда, 2 марта 2011 г.

tut.by и web login required

Если при работе почтовой программы с электронной почтой от tut.by (все хуже и хуже) появилось что-то вроде "web login required Failure". Значит за что-то заблокировали на гугле (а тут.бай именно его и использует). Идем сюда https://www.google.com/a/tut.by/UnlockCaptcha
вводим имя пользователя, пароль и капчу (кривые буквы).
Все должно заработать.

среда, 16 февраля 2011 г.

Сборка ffmpeg с поддержкой x264

Собираем нужные либы:

1. libfaac и libfaad качаем тут http://www.audiocoding.com/downloads.html

2. libx264 берем тут http://www.videolan.org/developers/x264.html
для него нужен
3. yasm http://www.tortall.net/projects/yasm/wiki/Download

Собираем ffmpeg
./configure --enable-libfaac --enable-libfaad --enable-gpl --enable-nonfree --enable-libx264 --enable-libxvid
можно попутно добавить и --enable-libmp3lame

сборка омрачается сообщением об ошибке:
ERROR: libx264 not found
и это не смотря на то, что libx264 установлен. В общем надо поправить в configure (где-то 2628 строка) и добавить в список библиотек явное использование -lpthread

enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm -lpthread

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

среда, 26 января 2011 г.

Получение и применение патча для "бинарных" файлов.

В данном случае diff не подойдет.

используем утилитку xdelta

xdelta delta "new_file" "old_file" "patch" - делает патч
xdelta patch "patch" "old_file" "new_resault_file" - применяет патч

утилита по умолчанию использует сжатие (можно отключить - параметр "-0") с использованием библиотеки zlib.

Просмотреть отличия можно с помощью
vimdiff
vbindiff

вторник, 25 января 2011 г.

CentOS и запуск служб

Необходимо настроить запуск к примеру службы днс named

1. Можно сделать необходимы симлинки /etc/rc.d/init.d в /etc/rc.d/rc_x_.d в соответствующие уровни запуска.

2. Можно через утилиту chkconfig (шел)

3. Можно через /usr/sbin/ntsysv (менюшка)

среда, 12 января 2011 г.

Установка пакетов в CentOS с помощью yum

украдено почти целиком отсюда http://fedoraproject.org.ru/yum

Поиск в репозиториях

Для поиска в репозиториях с помощью yum используются три команды: list, search и provides.

Самый простой способ поиска - использование команды list. Команда list просматривает названия пакетов и их версии в поисках совпадений. Например, для просмотра пакетов с названием tsclient используйте:

yum list tsclient

Команда search ищет в названии пакета и его описании указанную строку. Например, для поиска пакетов связанных с PalmPilot введите:

yum search PalmPilot

Команда provides позволяет производить поиск пакетов содержащих указанный файл. Например, для поиска пакетов содержащих libneon введите:

yum provides libneon

Все команды поиска поддерживают групповые символы ? и * (экранируйте их символом \ для корректной обработки bash). К примеру, при для поиска пакетов начинающихся на tsc введите:

yum list tsc\*

для поиска пакетов, содержащих файлы в директории /etc/httpd

yum provides /etc/httpd\*

Установка пакетов с помощью Yum

Для установки пакетов с помощью yum используется параметр install:

так, для установки tsclient введите:

yum install tsclient

Yum автоматически разрешит (если сможет) зависимости, и предложит установить их:

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
tsclient i386 0.132-6 base 247 k
Installing for dependencies:
rdesktop i386 1.4.0-2 base 107 k

Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 355 k
Is this ok [y/N]:

Установка пакетов из .rpm файлов

Для установки .rpm пакета с автоматическим разрешением зависимостей используется команда localinstall. Так команда:

yum localinstall foo.rpm

автоматически найдет зависимости пакета foo.rpm в репозиториях (если сможет) и предложит их установить.
Обновление системы

Обновление системы осуществляется с помощью одной команды - update. Таким образом:

yum update

обновит всю вашу систему. А команда

yum update foo

обновит только пакет foo.
Удаление пакетов

Удаление пакетов осуществляется с помощью команды remove. Так,

yum remove foo

удалит пакет foo из системы.

воскресенье, 9 января 2011 г.

Android, Huaway U8500 и перенос программ на SD карту

Сам метод можно назвать app2sd, а мануалов полно в сети (что-то вроде http://4pda.ru/forum/index.php?showtopic=187486&st=440). Разбиваем катру на два раздела - оба примари. первый фат, второй ext2 (взял 512М - пока хватает). Файлы для автоматизации дальнейших действий подходят от LG GT540. Раздел /system совпадает с нашим, а именно /dev/block/mtdblock4. Можно запустить скрипт и он все что надо - сделает, можно "ручками" через adb shell набить команды из файлика gscript/a2sd.sh (так в общем-то и делал, во избежании недоразумений). busybox - уже был, еще при рутовании поставил. Перед переносом поубирал второстепенные приложения, потом они уже ставились сразу на карту. (вообще проскакивала информация, что при установке инсталяторы смотрят цифры свободной памяти из "настроек" и конечно же они ничего не знают о переносе разделов. поэтому желательно "зачистить" свободное пространство как можно больше, на сколько правда - не проверял)
В общем - перезапуск и работает.
Если кому надо подробнее, пишите в комент, добавлю описание.