Author Archive

Как вывести список всех установленных в системе пакетов с указанием флагов с которыми они были собраны?

Подборка всяких извращенных методов применительно в Gentoo 🙂

emerge -vpe world
find /var/db/pkg/* -mindepth 2 -maxdepth 2 | cut -d "/" -f 5-6 | sort -u | while read p; do printf "%s {" "${p}"; cat "/var/db/pkg/${p}/USE" | sed "s/$/}/"; done
cd /var/db/pkg/; grep "" -r */*/IUSE
qlist -IUv                #qlist входит в app-portage/portage-utils
for im in `find /var/db/pkg/ | grep /USE`; do appname=`dirname $im`; echo -n "`basename $appname` :: " && cat $im; done
eix -I                     #eix - это app-portage/eix

Проект Gentoo-doc

Копи-паст с сайта, который занимается созданием (систематизацией) книги по Генту:

gentoo doc2

gentoo doc2

Проект Gentoo-doc, более известный как сборник статей о Gentoo Linux, был создан в июле 2007 года как попытка организации огромного количества существующей информации по Gentoo Linux. Инициатором был один человек (JohnBat26), но вскоре его начинания поддержало еще несколько замечательных людей, и теперь вот уже год спустя проект стал уже достаточно зрелым, а самое главное восстребованным среди пользователей Gentoo Linux и не только.

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

Мы приглашаем всех желающих принять посильное участие в проекте. Желаем всем удачи на пути изучения, а главное – применения Gentoo Linux в повседневной работе.

Офф. сайт http://gentoo.theserverside.ru/
ну и на случай если с сайтом, что-то случится, то копию книги можно скачать отсюда : Gentoo documentation 2.0 M2 pdf
Так же можно загрузить с Google-docs

Создание очередей на примере Asterisk 1.6

Здравствуйте.
Для того, что бы более эффективно распределять звонки в офисе в Asterisk присутствует возможность создания очередей обработки звонка. Особенно эта функция актуальна для рекламных отделов компаний.
Будем считать, что у вас уже установлен и настроен Asterisk версии 1.6 и выше
Для начала расмотрим как описываются очереди (Queues)

Code queues.conf:
......
[queue_template](!)
musicclass=default      ; play [default] music
strategy=rrmemory       ; использовать стратегию обзвона  Round Robin Memory
joinempty=yes           ; загонять звонок в очередь если там отсутствуют агенты
leavewhenempty=no       ; оставлять очередь без агентов
ringinuse=no            ; звонить на члена очереди когда он занят ?
 
[sales](queue_template)
; Sales queue
 
[support](queue_template)
; Support queue

В данном примере мы создали шаблон queue_template и на базе шаблона создали 2 очереди: sales и support.
Теперь приступим к написанию диалплана.
Для этого нам нужно описать, как абоненты будут попадать в очередь, а также как логиниться и вылогиниваться из очереди агентам.
Пример 1:
Read more

Подключение сетевых папок в Линукс

Для того, чтобы диски автоматически подключались при запуске системы, необходимо в /etc/fstab прописать:

//[адресс сервера]/[имя ресурса]        /[куда монтируем]  cifs  credentials=/root/.smbclient,iocharset=utf8,file_mode=0666,dir_mode=0777,_netdev 0 0

А теперь разъясним что было написано выше:

credentials=/root/.smbclient – полезно, если в пароле к серверу имеются символы, типа запятой. Содержимое файла:

Код:

username=логин
password=пароль

iocharset=utf8 – кодировка файлов на сервере. Полезно указать, чтобы не было проблем отображением кириллицы в именах файлов.
file_mode=0666 – права доступа к файлам на сервере. В данном случае файлы могуть читать и изменять все пользователи системы.
dir_mode=0777 – права доступа к каталогам на сервере. В данном случае каталог может быть изменен любым пользователем.
_netdev – опция, указывающая, что данный ресурс является сетевым. Полезно, если при запуске системы будет отсутствовать сеть, тогда система не будет выдавать ошибку о невозможности примонтирования ресурсов.

пример:

//servfs/обмен        /media/obmen    cifs     user=safa,password=******,iocharset=utf8 0       0

или такой

//10.1.1.1/fotki /mnt/fotki cifs username=safa,password=***,file_mode=0777,noblr,dir_mode=0777,uid=1000,noblr,iocharset=utf8	0

Чтоб диски коректно отмонтировались нужно сменить порядок выключения сервисов:

cd /etc/rc6.d/
sudo mv S31umountnfs.sh S14umountnfs.sh

Навчальний курс по Qt

Qt

Qt

На сайті розробників Qt з’явився навчальний курс по цій же мові.
Навчальний курс розбитий на лекції по 2х45хв
Посилання на оригінальну статтю
http://qt.nokia.com/services-partners/qt-in-education/qt-in-education-course-material
Всі матеріали поширюються на умовах Creative Commons Attribution-Non-Commercial-Share Alike 2.5.
Курс буде перекладений на різні мови силами співтовариства.
Посилання на копію QtCourseMaterial L1-L10

ScreenShot of Qt

ScreenShot of Qt


Qt creator editor

Qt creator editor

NTP сервери для синхронізації часу

Для України можна використовувати такі сервери синхронізації:

server 0.ua.pool.ntp.org
server 1.ua.pool.ntp.org
server 2.ua.pool.ntp.org
server 3.ua.pool.ntp.org

Цей список необхідно прописати в ntpd.conf
Або просто з консолі оновити час:

ntpdate -u 2.ua.pool.ntp.org

Повний список можна знайти тут: http://www.pool.ntp.org/zone/ua

Как перечитать содержимое /etc/rc.conf без перезагрузки системы?

Перейдите в однопользовательский режим, а затем возвратитесь обратно в многопользовательский.
На консоли выполните следующее:

shutdown now
(Замечание: без -r или -h)
return
exit

взято из FAQ
Как обновить IP адресс без перезагрузки?

/etc/rc.d/netif restart

Как обновить defaultrouter без перезагрузки?

/etc/rc.d/routing restart

Asterisk: импорт из Master.csv в Postgresql

postgres=# CREATE USER ast_user with password 'xxxxxxx';
CREATE ROLE
postgres=# CREATE DATABASE ast_db with owner ast_user;
CREATE DATABASE
postgres=#exit
 
psql ast_db ast_user
ast_db=> CREATE TABLE cdr (
calldate TIMESTAMP WITH TIME zone DEFAULT now() NOT NULL,
clid CHARACTER VARYING(80) DEFAULT '' NOT NULL,
src CHARACTER VARYING(80) DEFAULT '' NOT NULL,
dst CHARACTER VARYING(80) DEFAULT '' NOT NULL,
dcontext CHARACTER VARYING(80) DEFAULT '' NOT NULL,
channel CHARACTER VARYING(80) DEFAULT '' NOT NULL,
dstchannel CHARACTER VARYING(80) DEFAULT '' NOT NULL,
lastapp CHARACTER VARYING(80) DEFAULT '' NOT NULL,
lastdata CHARACTER VARYING(80) DEFAULT '' NOT NULL,
duration BIGINT DEFAULT 0::BIGINT NOT NULL,
billsec BIGINT DEFAULT 0::BIGINT NOT NULL,
disposition CHARACTER VARYING(45) DEFAULT '' NOT NULL,
amaflags BIGINT DEFAULT 0::BIGINT NOT NULL,
accountcode CHARACTER VARYING(20) DEFAULT '' NOT NULL,
uniqueid CHARACTER VARYING(32) DEFAULT '' NOT NULL,
userfield CHARACTER VARYING(255) DEFAULT '' NOT NULL
);
CREATE TABLE

Устанавливаем поддержку постгреса в Perl:

perl -e shell -MCPAN
install DBI::DBD
install DBD::Pg

Создаем скрипт для переноса даных:
Read more

Gentoo Xen 4

Повесть о том как я Xen4 мучал… или он меня…..
Что мы имеем:

uname -a
Linux Gentoo 2.6.34-xen-r4 #3 SMP Sat Jan 1 19:30:46 EET 2011 x86_64 AMD Phenom(tm) II X4 925 Processor AuthenticAMD GNU/Linux

И почти мертвый винт на 500Г

  5 Reallocated_Sector_Ct   0x0033   090   090   140    Pre-fail  Always   FAILING_NOW 873

Перед установкой пакетов необходимо снять с них архитектурное маскирование (~x64):

echo "app-emulation/xen
app-emulation/xen-tools
sys-kernel/xen-sources" >> /etc/portage/package.keywords

До начала сборки нужно выполнить следующие шаги:

1. Добавить в /etc/make.conf опции компилятора:

      CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer -mfpmath=sse -funroll-loops -mno-tls-direct-seg-refs"
      CXXFLAGS="${CFLAGS}"

2. Там же (в /etc/make.conf), можно включить опции сборки бинарных пакетов (готовые пакеты emerge разместит в /usr/portage/packages), они пригодятся для ускоренного развертывания domU:

      FEATURES="buildpkg"

3. Пересобрать текущее окружение с новой опцией компилятора, которая нужна корректной работы системного окружения с гипервизором xen (заодно построятся бинарные пакеты окружения):

      emerge -evat world

Предварительный этап окончен, можно запускать сборку/установку пакетов xen, xen-tools и исходников адаптированного для Xen ядра — xen-sources:

emerge -av xen-sources xen xen-tools

Read more

VirtualBox на сервере Gentoo без графической оболочки

Небольшой мануал для установки VirtualBox на сервер в котором нет Х-ов
Установку будем производить на Gentoo, клиентской машиной будет Debian

Ставим ВиртуалБокс

ACCEPT_KEYWORDS="~amd64" USE="headless -chm -hal -opengl -qt4 rdesktop-vrdp vboxwebsrv" emerge -av /usr/portage/app-emulation/virtualbox-bin/virtualbox-bin-3.2.12.ebuild

Создаем виртуальную машину (тоесть ее описание в конфигах)

VBoxManage createvm --name "Debian" --register --basefolder /data/Virtual/

Если нужно смотрим типы ОС

VBoxManage list ostypes

Настройки виртуалки

VBoxManage modifyvm 'Debian' --memory 256 --acpi on --boot1 dvd -nic1 nat --ostype Debian

Где мы указали, что сеть у нас за НАТом, грузится будем с cd\dvd, ну и урезали память до 256Мб

Создаем винт на 30Гб фиксированого размера.

VBoxManage createhd --filename "/data/Virtual/Debian.vdi" --size 30000 --variant Fixed --register

…пока он создается можно попить кофе
Добавляем сата контроллер (опционально)

VBoxManage storagectl 'Debian' --add sata --controller IntelAHCI --name "SATA Controller"

Качаем установочный образ ОС

wget http://cdimage.debian.org/debian-cd/5.0.7/i386/iso-cd/debian-507-i386-netinst.iso

Добавляем ISO в VirtualBox (чтоб он знал о ее существовании)

VBoxManage openmedium dvd debian-507-i386-netinst.iso

Добавляем IDE контроллер

VBoxManage storagectl "Ubuntu" --name "IDE Controller" --add ide --controller PIIX4

И на второй порт цепляем ISO

VBoxManage storageattach 'Debian' --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /data/install/debian/debian-507-i386-netinst.iso

Включаем наш винт на первый порт

VBoxManage storageattach 'Debian' --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /data/Virtual/Debian.vdi

Смотрим настройки

VBoxManage showvminfo Debian

Запускаемся с включенным RDP

VBoxManage startvm Debian --type vrdp

Можно еще запуститься с логином, чтоб у кого-то руки не чесались 🙂

VBoxManage setproperty vrdpauthlibrary "VRDPAuthSimple"
VBoxManage modifyvm "Debian" --vrdpauthtype external
VBoxManage setextradata "Debian" "VRDPAuthSimple/users/john" "secret

Waiting for the VM to power on…

VM has been successfully started.

проверяем подключение к консоли

netstat -anp | grep 33
 
tcp        0      0 0.0.0.0:3389            0.0.0.0:*               LISTEN      32227/VBoxHeadless

Можно и инфу позырить

VBoxManage showvminfo Debian

Ну и подключаемся к терминалу любым терминальным клиентом …. все работает

Балансування навантаження з допомогою Nginx

Переклад статті Use Nginx for Proxy Services and Software Load Balancing

Серед додаткових особливостей nginx є можливість використання його як проксі (front end proxy) для передачі запитів на інші веб-сервери, Nginx також може виступати в якості Front end інтерфейсу для кластеру з серверів і навіть для балансування навантаження (load balancer).

Розглянемо наступні витримки конфігурації, які описують кластер appcluster:

Уривок файлу : nginx.conf

http {
  # [...]
 
  upstream appcluster {
     server lollipop.ducklington.net:8801;
     server lollipop.ducklington.net:8802;
     server lollipop.ducklington.net:8803;
     server lollipop.ducklington.net:8804;
     server simons.ducklington.net:8801;
     server simons.ducklington.net:8802;
     server simons.ducklington.net:8803;
     server simons.ducklington.net:8804;
     }
 
  # [...]
 
  server {
    listen 21.43.56.87:80;
    server_name ducklington.org www.ducklington.org;
 
    location / {
       proxy_pass  http://appcluster;
       }
    }
 
    # [...]
  }

У цьому прикладі ми описали просте балансування по принципу round-robin за допомогою директиви upstream.

Всередині цього блоку ми описали вісім серверів, кожен з яких працює на різних хостах і портах.
Конфігурація блоку upstream повинна бути разташована на початку блоку http конфігураційного файлу nginx.conf.

Сервери, що працюють на портах з 8801 по 8804 на хостах lollipop.ducklington.net і simons.ducklington.net отримають одинакову кількість запитів направлених в блок appcluster.

В блоці server Nginx налаштований для прослуховування запитів на певну IP-адресу і порт (наприклад, 21.43.56.87 і 80), і відповідати на запити до доменів ducklington.org і www.ducklington.org.

Усі запити про виділення ресурсів у цьому домені (наприклад, /) будуть передані у http://appcluster, який описаний в директиві upstream.
Read more