Рейтинг
+5.86
avatar

Руководство

Подробнее ↓

Настройка bash prompt для Subversion, Git и Mercurial

Руководство
В последнее время количество доступных для использования систем контроля версий стало настолько большим (subversion, git, mercurial и т.д.), что уже не редкость, когда на одном и том же компьютере может одновременно находится множество проектов под управлением различных систем контроля версий. Становится очевидной необходимость при навигации в файловой системе в более быстром определении типа системы контроля версий и наличия изменений в ней.

Конечно, можно при заходе в директорию делать svn|hg|git info, но это все требует времени, а так же знания того, какая система контроля версий используется в текущей директории.

Одним из вариантов решения проблемы (при условии, что в системе используется bash) будет переопределение строки приглашения (bash prompt) таким образом, чтобы в ней выводились не только стандартные имя пользователя, название компьютера и текущий путь в файловой системе, но и тип системы контроля версий, а так же признак наличия изменений.
Читать дальше

apache + nginx + gzip_static + yuicompressor

Руководство
В этой статье я опишу принципиальные различия Apache и Nginx, архитектуру фронтэнд-бэкэнд, установку Apache в качестве бэкэнда и Nginx в качестве фронтэнда. А также опишу технологию, позволяющую ускорить работу веб-сервера: gzip_static+yuicompressor.

Nginx

Nginx – сервер легкий; он запускает указанное число процессов (обычно число процессов = числу ядер), и каждый процесс в цикле принимает новые соединения, обрабатывает текущие. Такая модель позволяет с низкими затратами ресурсов обслуживать большое количество клиентов. Однако, при такой модели, нельзя выполнять длительные операции при обработке запроса (например mod_php), т.к. это по сути повесит сервер. При каждом цикле внутри процесса по сути выполняются две операции: считать блок данных откуда-то, записать куда-то. Откуда-то и куда-то – это соединение с клиентом, соединение с другим веб-сервером или FastCGI-процессом, файловая система, буфер в памяти. Модель работы настраивается двумя основными параметрами:


Читать дальше

Установка кеширующего DNS сервер для локальной сети BIND 9 на Mandriva Linux

Руководство
Предисловие
Долго я искал себе для локального шлюза кеширующий dns сервер. Перепробовал и dnsmasq и pdnsd и nscd и powerdns. Всё не то. Так не хотел, наслышав о тяжелости, дырявости и неповоротливости bind c ним связываться. НО вроде дыры в нём находят не от того что он сильно дырявый, а потому что популярный, культовый и в нём хорошо ищут. И на этот подвиг меня мотивировала вот этот пост и комментарий atommixz за что ребятам большое спасибо. Производил манипуляции в том разумении в котором я это понимаю, так что не взыщите.


Итак начнём.

1. Установка в Mandriva, впрочем как и во всех linux проста: urpmi bind.
(Дабы избежать сарказмы высказанного в комментариях в Ubuntu это будет sudo apt-get install bind9).

После установки получаем такое сообщение

Дополнительная информация о пакете bind-9.7.0-5mdv2010.1.i586

The most significant changes starting from the bind-9.3.2-5mdk package:

o Installs in a chroot environment per default (/var/lib/named) for

security measures.

o Acts as a caching only resolver per default, ip addresses that should be

allowed to use recursive lookups must be defined in the

/var/lib/named/etc/trusted_networks_acl.conf file.


Сие означает, что все файлы конфигурации и результаты работы (логи, пид файл и.т.д.) находятся в chroot окружении в папке /var/lib/named. Значит конфигурить bind мы будем именно там.


Читать дальше

Как правильно монтировать и прописывать в /etc/fstab разделы c NTFS.

Руководство
Чтобы примонтировать раздел Windows c файловой системой NTFS, нужно установить драйвер ntfs-3g. Большинство дистрибутивов давно имеют его в своих репозитариях. Но вот листая Интернет, на какие только дикие советы не нарвешься порой.

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

Поэтому достаточно прописать в /etc/fstab последней строкой:
/dev/sda1   /mnt/windows   ntfs-3g   defaults   0   0


Примечание: Такой опции у этого драйвера нет, но, если оставить поле пустым, то монтироваться ничего не будет — проверено на практике. Если же вы добавляете хоть одну опцию из числа существующих (смотрим man ntfs-3g по-русски), то и defaults вписывать незачем.

После этого все NTFS разделы будут автоматически монтироваться на чтение/запись, все директории и файлы будут принадлежать инициатору монтирования, и все пользователи будут иметь все права на их содержимое.

Если вы хотите, чтобы монтировать и отмонтировать NTFS разделы мог рядовой пользователь, то установите на драйвер setuid бит. Это делается так:

Найдите исполняемый файл драйвера:
# updatedb  (обновим базу данных, если драйвер только что установлен)
# locate ntfs-3g | grep bin

/sbin/mount.ntfs-3g
/usr/bin/ntfs-3g
/usr/bin/ntfs-3g.probe


Читать дальше

Как настроить ядро Linux с помощью sysctl

Руководство
Не многие из сегодняшних пользователей Linux помнят дни, когда вы могли (и часто должны были) собрать собственное ядро. Если у вас было специфическое устройство, или какие-то особые требования к ядру, для вас не было другого пути. Сегодня большинство ядер работают «из коробки» с большинством оборудования. Но бывают случаи, когда вам нужно выжать еще немного производительности или даже облегчить ваше ядро на лету. Вы можете сделать это с помощью команды sysctl.

Эта утилита позволяет изменять различные параметры ядра на лету, или вы можете подредактировать специальный файл для настройки этих параметров (имеется ввиду — для применения настроек при каждой загрузке — прим. пер.). В обоих случаях, вы можете изменить любые параметры, упомянутые в /proc/sys, так что если вы просто хотите проверить, как много вы можете поменять, посмотрите в каждую подпапку в /proc/sys. Например, вы можете изменить максимальное количество файловых дескрипторов на вашей машине, изменив параметр kern.maxfiles.

Примечание: вам необходимо быть ОЧЕНЬ осторожными, пока вы играете с этой командой, потому что, помимо некорректного изменения какого-то конкретного параметра, она может вызвать потери данных или что-нибудь похуже.

Читать дальше

Организация доступа к рабочему столу Ubuntu 10.10 при помощи VNC

Руководство
Задача: получить доступ к рабочему столу домашнего компьютера с работы.

Стандартный vino из GNOME не подошел, так как его надо было каждый раз запускать. Выбор остановился на x11vnc, настроить с первого захода который не получилось — GMOME вылетал через 5 минут после логина с такой ошибкой:
gdm-session-worker[2473]: GLib-GObject-CRITICAL: g_value_get_boolean: assertion `G_VALUE_HOLDS_BOOLEAN (value)' failed
gdm-session-worker[2473]: pam_succeed_if(gdm:auth): requirement «user ingroup no passwdlogin» not met by user «males»
gdm-session-worker[2473]: pam_unix(gdm:session): session opened for user males by (uid=0)
gdm-session-worker[2473]: pam_ck_connector(gdm:session): nox11 mode, ignoring PAM_TTY :0


Ниже, пошаговая инструкция настройки рабочей конфигурации x11vnc:

Удаляем vino и установим x11vnc
sudo apt-get remove vino
 sudo apt-get install x11vnc

после того как все прошло успешно создаем пароль для VNC:
sudo x11vnc -storepasswd пароль /etc/vnc/passwd

если запускать просто x11vnc -storepasswd то пароль создастся в ~/.vnc/passwd, что мне не очень-то хотелось.

После того как пароль создан и записан добавим в самый конец файла /etc/gdm/PreSession/Default такую строчку:
/usr/bin/x11vnc -dontdisconnect -display :0 -shared -noxfixes -forever \
-rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /etc/vnc/passwd


Читать дальше

Пишем свой драйвер под Linux

Руководство
То, что мы сегодня создадим, корректнее будет назвать LKM (Linux Kernel Module или загрузочный модуль ядра). Стоит сказать, что драйвер – это одна из разновидностей LKM.

Писать модуль мы будем под ядра линейки 2.6. LKM для 2.6 отличается от 2.4. Я не буду останавливаться на различиях, ибо это не входит в рамки поста.

Мы создадим символьное устройство /dev/test, которое будет обрабатываться нашим модулем. Хочу сразу оговориться, что размещать символьное устройство не обязательно в каталоге /dev, просто это является частью «древнего магического ритуала».

Немного теории

Если кратко, то LKM – это объект, который содержит код для расширения возможностей уже запущенного ядра Linux. Т.е. работает он в пространстве ядра, а не пользователя. Так что не стоит экспериментировать на рабочем сервере. В случае ошибки, закравшейся в модуль, получите kernel panic. Будем считать, что я вас предупредил.

Модуль ядра должен иметь как минимум 2 функции: функцию инициализации и функцию выхода. Первая вызывается во время загрузки модуля в пространство ядра, а вторая, соответственно, при выгрузке его. Эти функции задаются с помощью макроопределений: module_init и module_exit.

Стоит сказать несколько слов о функции printk(). Основное назначение этой функции — реализация механизма регистрации событий и предупреждений. Иными словами эта функция для записи в лог ядра некой информации.

Т.к. драйвер работает в пространстве ядра, но он отграничен от адресного пространства пользователя. А нам хотелось бы иметь возможность вернуть некий результат. Для этого используется функция put_user(). Она как раз и занимается тем, что перекидывает данные из пространства ядра в пользовательское.

Хочу ещё сказать пару слов о символьных устройствах.

Выполните команду ls -l /dev/sda*. Вы увидите что-то вроде:
brw-rw---- 1 root disk 8, 0 2010-10-11 10:23 /dev/sda
brw-rw---- 1 root disk 8, 1 2010-10-11 10:23 /dev/sda1
brw-rw---- 1 root disk 8, 2 2010-10-11 10:23 /dev/sda2
brw-rw---- 1 root disk 8, 5 2010-10-11 10:23 /dev/sda5

Между словом «disk» и датой есть два числа разделённых запятой. Первое число называют старшим номером устройства. Старший номер указывает на то, какой драйвер используется для обслуживания данного устройства. Каждый драйвер имеет свой уникальный старший номер.

Файлы устройства создаются с помощью команты mknod, например: mknod /dev/test c 12. Этой командой мы создадим устройство /dev/test и укажем для него старший номер (12).

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


Читать дальше

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

Руководство
Смонтируйте ваш диск USB так, чтобы он каждый раз отображался как /media/music. Смонтируйте ваш диск FireWire так, чтобы он каждый раз отображался как /media/data.

Мои хранилища данных настроены на моей домашней машине с Ubuntu несколько необычно. У меня есть внешний диск, предназначенный для хранения музыки, и еще один внешний диск, который является резервной копией музыкального диска. У меня также есть внешний диск, на котором находятся все мои личные документы, фотографий и фильмы, а также еще четвертый диск, который является резервной копией третьего диска. Все эти четыре диски подключены к моему настольному компьютеру через FireWire. Наконец, у меня есть еще один внешний носитель, который используется как временное хранилище: когда я скачиваю новый фильм или серию картинок, или копирую с нового CD аудиозапись, я помещаю все эти файлы на временный диск, пока не смогу их правильно разместить на музыкальном диске или на диске с личными данными. В отличие от первых четырех дисков, диск с временным хранилищем данных использует подключение через USB.

Пять дисков звучит здорово, но с этим связана одна большая неприятность. Когда я перезагружаю Ubuntu (случается редко, но, конечно, это происходит), то точки монтирования изменяются. Иногда диск FireWire с номером 1 монтируется как /media/sdb1, а иногда — как /media/sdc1. То же самое происходит и с другими дисками, и, в результате, возникают проблемы с работой моих скриптов резервного копирования и с моими попытками подключиться через SSH из других машин, и это лишь только две проблемы, с которыми я столкнулся. Я хочу, чтобы имена этих устройств не менялись, так чтобы диск FireWire с номером 1 всегда назывался /media/<что-то>, диск FireWire с номером 2 всегда назывался /media/<что-то еще>, и так далее.


Читать дальше

Proxy-сервер SQUID web-интерфейс для администрирования SAMS SAMS+REJIK с аунтентификацией по NTLM

Руководство
Настраиваем связку SQUID SAMS+REJIK с аунтентификацией по NTLM.
Так как есть ДОМЕН под управление Win 2003 Server, и нужна авторизация пользователя под своей учетной записью и так же вести логи и предоставлять информацию начальству в случаи надобности.
Авторизация пользователей будет по NTLM.
Для всего нам понадобится apache, php, mysql, сам squid, sams, samba. Все это нам предстоит установить, или обновить.

Для начало ставим скопом apache, php, mysql:
$ aptitude install apache2 apache2-doc apache2-utils ssl-cert mysql-server libmysqlclient15-dev libapache2-mod-php5 php5 php5-common php5-dev php5-mcrypt php5-imagick php5-mysql

Для того, чтобы пользователи могли проходить NTLM аутентификацию, необходимо настроить авторизация через Active Directory, и здесь вы будем использовать samba, kerberos, winbind, pam. Настраиваем и введем наш сервер в домен:

Читать дальше

Round Robin балансирование IP адресов исходящих соединений средствами iptables

Руководство
Данное решение отличается изящностью, так как реализует все средствами iptables.
Синтаксис: на машине, которая должна балансировать исходящие соединения,
выполнить скрипт balancer.sh:

sh ./balancer.sh

Выключить балансер:

sh ./balancer.sh off

Замечание: При работе создается временный файл ~/balancer-rules.sav,
используемый для уборки за собой при выключении балансера.

balancer.sh

#!/bin/bash

Читать дальше