<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>С напильником и бубном</title>
	<atom:link href="http://kaba.org.ua/feed/" rel="self" type="application/rss+xml" />
	<link>http://kaba.org.ua</link>
	<description>Ihor Rusyn Blog</description>
	<lastBuildDate>Sat, 04 Feb 2012 23:48:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Как подмонтировать KVM/Xen диск вне гостевой OS</title>
		<link>http://kaba.org.ua/articles/kak-podmontirovat-kvm-xen-disk-vne-gostevoy-os/</link>
		<comments>http://kaba.org.ua/articles/kak-podmontirovat-kvm-xen-disk-vne-gostevoy-os/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 21:39:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[disk image]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/?p=310</guid>
		<description><![CDATA[Задача: Нужен доступ к диску гостевой ОС, без захода в саму ОС. Есть образ диска в виде файла. Итак, пробуем, как говорит man, делаем loopback устройство и монтируем в нужную папку. Смотрим какие loopback устройства у нас и какое свободное мы можем использовать для своих целей. Следующая команда даст вам на это ответ: # losetup [...]]]></description>
			<content:encoded><![CDATA[<p><font face="Arial" size="2"><u>Задача:</u> Нужен доступ к диску гостевой ОС, без захода в саму ОС. Есть образ диска в виде файла.</font>  </p>
<p> <font face="Arial" size="2"><font face="Arial" size="2">Итак, пробуем, как говорит man, делаем loopback устройство и монтируем в нужную папку.        <br />Смотрим какие loopback устройства у нас и какое свободное мы можем использовать для своих целей. Следующая команда даст вам на это ответ:         <br /></font><font size="2"><font face="Arial"><font color="#800000"># losetup –a            <br />/dev/loop0: [0903]:98317 (/vm/vps1.img)             <br />/dev/loop1: [0903]:98314 (/vm/vps2.img)             <br />/dev/loop10: [0903]:98316 (/vm/vps3.img)             <br />/dev/loop11: [0903]:98312 (/vm/vps4.img)             <br />/dev/loop12: [0903]:98318 (/vm/vps5.img)             <br />/dev/loop13: [0903]:98315 (/vm/vps6.img)             <br />/dev/loop14: [0903]:98313 (/vm/vps7.img)             <br />/dev/loop15: [0903]:98311 (/vm/vps8.vm)             </p>
<p></font>Итак, мы можем использовать 16 устройство или выше, они свободны.           <br />Создаем устройство:           <br /><font color="#800000"># losetup /dev/loop16 /vm/vps5_1.img</font>           </p>
<p>Пробуем подмонтировать устройство:           <br /></font></font><font size="2"><font face="Arial"><font color="#800000"># mount /dev/loop16 /mnt/vps5/            <br />mount: you must specify the filesystem type</font>           </p>
<p>Система выдает ошибку, пробуем указать тип файловой системы:           <br /></font></font><font size="2"><font face="Arial"><font color="#800000">#mount -t ext2 /dev/loop16 /mnt/vps5/            <br />mount: wrong fs type, bad option, bad superblock on /dev/loop16,             <br />&#160;&#160;&#160;&#160;&#160;&#160; missing codepage or other error             <br />&#160;&#160;&#160;&#160;&#160;&#160; In some cases useful info is found in syslog &#8212; try             <br />&#160;&#160;&#160;&#160;&#160;&#160; dmesg | tail&#160; or so</font>           </p>
<p>Все равно ошибка, в чем же дело? Все просто, ваш файл явно разбит на несколько устройств, поэтому система не понимает, что вы от нее хотите. Проверяем это утверждение следующей командой:           <br /></font></font><font size="2"><font face="Arial"><font color="#800000">#fdisk -l /dev/loop16            <br />Disk /dev/loop16: 20.9 GB, 20971520000 bytes             <br />255 heads, 63 sectors/track, 2549 cylinders             <br />Units = cylinders of 16065 * 512 = 8225280 bytes             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Device Boot&#160;&#160;&#160;&#160;&#160; Start&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; End&#160;&#160;&#160;&#160;&#160; Blocks&#160;&#160; Id&#160; System             <br />/dev/loop16p1&#160;&#160; *&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 65&#160;&#160;&#160;&#160;&#160; 522081&#160;&#160; 83&#160; Linux             <br />/dev/loop16p2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 66&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 130&#160;&#160;&#160;&#160;&#160; 522112+&#160; 82&#160; Linux swap / Solaris             <br />/dev/loop16p3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 131&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2549&#160;&#160;&#160; 19430617+&#160; 83&#160; Linux             </p>
<p></font>Так и есть, как же нам добраться к 3-му разделу? Поглядим документацию к losetup и найдем в ней опцию «-o offset», тоесть смещение. Второй вопрос, как нам высчитать это смещение? Тоже просто, используем команду fdisk для этого.           <br />Итак:           <br /></font></font><font size="2"><font face="Arial"><font color="#800000"># fdisk -ul /dev/loop16            <br />Disk /dev/loop16: 20.9 GB, 20971520000 bytes             <br />255 heads, 63 sectors/track, 2549 cylinders, total 40960000 sectors             <br />Units = sectors of 1 * 512 = 512 bytes             <br />&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160; Device Boot&#160;&#160;&#160;&#160;&#160; Start&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; End&#160;&#160;&#160;&#160;&#160; Blocks&#160;&#160; Id&#160; System             <br />/dev/loop16p1&#160;&#160; *&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 63&#160;&#160;&#160;&#160; 1044224&#160;&#160;&#160;&#160;&#160; 522081&#160;&#160; 83&#160; Linux             <br />/dev/loop16p2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1044225&#160;&#160;&#160;&#160; 2088449&#160;&#160;&#160;&#160;&#160; 522112+&#160; 82&#160; Linux swap / Solaris             <br />/dev/loop16p3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2088450&#160;&#160;&#160; 40949684&#160;&#160;&#160; 19430617+&#160; 83&#160; Linux             </p>
<p></font>Из данных видим, что один сектор занимает 512 байт, а сместится нам нужно на 2088450 (поле Start у третьей партиции).           <br />Итого получаем: 512 x 2088450 = 1069286400           <br />Эту цифру мы будем использовать при создании блочного устройства. Итак:           <br /><font color="#800000">#losetup –d /dev/loop16            <br />#losetup –o 1069286400 /dev/loop16 /vm/vps5_1.img             <br />#mount –t ext3 /dev/loop16 /mnt/vps5/             </p>
<p></font>Дело сделано!</font></font></font></p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/kak-podmontirovat-kvm-xen-disk-vne-gostevoy-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux: обновление ядра с версии 2.6.18 до 2.6.32.32 на Centos 5</title>
		<link>http://kaba.org.ua/articles/linux-obnovlenie-yadra-s-versii-2-6-18-do-2-6-32-32-na-centos-5/</link>
		<comments>http://kaba.org.ua/articles/linux-obnovlenie-yadra-s-versii-2-6-18-do-2-6-32-32-na-centos-5/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 19:45:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[centos 5]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[пересборка ядра]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/programms/linux-obnovlenie-yadra-s-versii-2-6-18-do-2-6-32-32-na-centos-5/</guid>
		<description><![CDATA[Все казалось бы просто, вытаскиваем ядро с kernel.org, распаковываем в /usr/src/kernel: #tar -xjf linux-2.6.32.32.tar.bz2 #cd linux-2.6.32.32 ставим gcc и ncurses-dev, так как без них не обойтись: yum -y install gcc yum -y install ncurses-dev Ставим свежий binutils, на тот момент binutils-2.20.1. Возвращаемся к сборке ядра. #cd /usr/src/kernel/linux-2.6.32.32 #make menuconfig Переходим в General setup и включаем [...]]]></description>
			<content:encoded><![CDATA[<p>Все казалось бы просто, вытаскиваем ядро с kernel.org, распаковываем в /usr/src/kernel:</p>
<p><span style="color: #800000;">#tar -xjf linux-2.6.32.32.tar.bz2</span></p>
<p><span style="color: #800000;">#cd linux-2.6.32.32</span></p>
<p>ставим gcc и ncurses-dev, так как без них не обойтись:</p>
<p><span style="color: #800000;">yum -y install gcc</span></p>
<p><span style="color: #800000;">yum -y install ncurses-dev</span></p>
<p>Ставим свежий binutils, на тот момент binutils-2.20.1.</p>
<p>Возвращаемся к сборке ядра.</p>
<p><span style="color: #800000;">#cd /usr/src/kernel/linux-2.6.32.32</span></p>
<p><span style="color: #800000;">#make menuconfig</span></p>
<p>Переходим в <strong>General setup</strong> и включаем <strong>enable deprecated sysfs features which may confuse old userspace</strong><strong></strong>.</p>
<p>Ибо без этой опции, новое ядро выдаст вам при загрузке что-то наподобие:</p>
<p><span style="color: #ff0000;">mount: could not find filesystem &#8216;/dev/root&#8217;</span></p>
<p><span style="color: #ff0000;">Kernel panic &#8230;</span></p>
<p>Далее по шаблону:</p>
<p><span style="color: #800000;">#make all</span></p>
<p><span style="color: #800000;">#make modules_install</span></p>
<p><span style="color: #800000;">#make install</span></p>
<p><span style="color: #800000;">#reboot</span></p>
<p>Видим рабочее новое ядро и бежим пить пиво :)</p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/linux-obnovlenie-yadra-s-versii-2-6-18-do-2-6-32-32-na-centos-5/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DirectAdmin &#8212; ограничение количества писем в час</title>
		<link>http://kaba.org.ua/programms/directadmin-ogranichenie-kolichestva-pisem-v-chas/</link>
		<comments>http://kaba.org.ua/programms/directadmin-ogranichenie-kolichestva-pisem-v-chas/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 23:33:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Программы]]></category>
		<category><![CDATA[directadmin]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[количество писем в час]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/programms/directadmin-ndash-ogranichenie-kolichestva-pisem-v-chas/</guid>
		<description><![CDATA[Итак, вы пользуетесь DirectAdmin для предоставления услуг хостинга или в личных целях. Вам нужно, чтобы в случае закачки на сервер через дырявые скрипты или при взломе аккаунта скриптов для рассылки спама, чтобы весь этот спам не ушел моментом с вашего сервера. По этому вам требуется сделать ограничение на количество писем отправляемых с одного аккаунта. Факты: [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, вы пользуетесь <strong>DirectAdmin</strong> для предоставления услуг хостинга или в личных целях. Вам нужно, чтобы в случае закачки на сервер через дырявые скрипты или при взломе аккаунта скриптов для рассылки спама, чтобы весь этот спам не ушел моментом с вашего сервера. По этому вам требуется сделать ограничение на количество писем отправляемых с одного аккаунта.</p>
<p><em>Факты:</em> <strong>DirectAdmin</strong> умеет ограничивать количество отправляемых писем в сутки с доменов пользователя, ограничение можно выставить общие для всех. С новой версией exim.pl, которая еще не идет со стабильным релизом <strong>DirectAdmin</strong>, можно задавать ограничения для определенного пользователя.</p>
<p><em>Мысли:</em> например мы выставили ограничение в 500 писем в сутки, тогда эти 500 писем можно отправить все сразу, так и периодически. Из этого следует, что это не вариант предотвращения спама, потому что:</p>
<ul>
<li>все письма можно отослать сразу (спамеру этого вполне достаточно);</li>
<li>так же есть веб ресурсы, которым требуется большое количество отправок корреспонденции и данное ограничение для них не подойдет.</li>
</ul>
<p><em>Вывод:</em> Хороший вариант – это ограничение количества писем в час, настраиваемое как для всех аккаунтов сервера, так и для определенного пользователя.</p>
<p><em>Решение:</em> Все не только просто, а очень просто. <strong>DirectAdmin</strong> использует для подсчета количества писем и ограничение скрипт написанный на <strong>perl</strong>. Посмотрев содержимое <strong>/etc/exim.pl</strong> можно сразу найти функцию <strong>check_limits</strong>, где все и считается. Итак, открываем этот файл на редактирование и заменяем эту функцию с ее содержимым на:<br />
<code></p>
<p>sub check_limits<br />
{<br />
        my $count = 0;<br />
        my $last_send = 0;<br />
        my $cur_time = 0;<br />
        my $diff_time = 0;</p>
<p>        if (open (LIMIT, "/etc/virtual/limit_$name"))<br />
        {<br />
                $email_limit = int(LIMIT);<br />
                close(LIMIT);<br />
        }<br />
        else<br />
        {<br />
                open (LIMIT, "/etc/virtual/limit");<br />
                $email_limit = int(LIMIT);<br />
                close(LIMIT);<br />
        }</p>
<p>        #find the curent user<br />
        $uid = find_uid();</p>
<p>        #log_str("Found uid: $uid\n");</p>
<p>        if (uid_exempt($uid)) { return "yes"; }</p>
<p>        my $name="";</p>
<p>        #check this users limit<br />
        $name = getpwuid($uid);</p>
<p>        if (!defined($name))<br />
        {<br />
                $name = "unknown";<br />
        }</p>
<p>        if ($email_limit > 0)<br />
        {<br />
            $last_send = (stat("/etc/virtual/usage/$name"))[9];</p>
<p>            if ($last_send eq "")<br />
            {<br />
                open(USAGE, ">/etc/virtual/usage/$name");<br />
                close(USAGE);<br />
                chmod (0660, "/etc/virtual/usage/$name");<br />
            }</p>
<p>            $time_lock = (stat("/etc/virtual/usage/$name.time"))[9];</p>
<p>            if ($time_lock eq "")<br />
            {<br />
                open(TIMELOCK, ">/etc/virtual/usage/$name.time");<br />
                close(TIMELOCK);<br />
                $time_lock = (stat("/etc/virtual/usage/$name.time"))[9];<br />
            }</p>
<p>            $cur_time = time;<br />
            $diff_time = $cur_time - $time_lock;<br />
            if ($diff_time >= 3600)<br />
            {<br />
                open(USAGE, ">/etc/virtual/usage/$name");<br />
                close(USAGE);<br />
                chmod (0660, "/etc/virtual/usage/$name");<br />
                open(TIMELOCK, ">/etc/virtual/usage/$name.time");<br />
                close(TIMELOCK);<br />
            }</p>
<p>            $count = (stat("/etc/virtual/usage/$name"))[7];</p>
<p>            if ($count eq "")<br />
            {<br />
                $count = 0;<br />
            }</p>
<p>            if ($count > $email_limit)<br />
            {<br />
                die("You ($name) have reach your daily email limit of $email_limit emails\n");<br />
            }</p>
<p>            open(USAGE, ">>/etc/virtual/usage/$name");<br />
            print USAGE "1";<br />
            close(USAGE);<br />
            chmod (0660, "/etc/virtual/usage/$name");<br />
        }</p>
<p>        my $sender_address = Exim::expand_string('$sender_address');<br />
        my $mid = Exim::expand_string('$message_id');</p>
<p>        log_bandwidth($uid,"type=email&#038;email=$sender_address&#038;method=outgoing&#038;id=$mid");</p>
<p>        return "yes"<br />
}<br />
</code><br />
Сохраняем файл и перезапускаем <strong>exim</strong>. Заходим в директорию<strong> /etc/virtual/</strong> , создаем файл с названием <strong>limit_имяпользователя</strong> и вписуем в него цифрами количество писем в час, например 200. Далее идем в директорию <strong>/etc/virtual/usage/ </strong>и ищем файлы с именем пользователя. При отправке сообщения пользователем, например <strong>user</strong>, с домена, в директории появятся файлы:</p>
<p><strong>user</strong> – в файле калькулируются количество писем, одно письмо = 1 в файле</p>
<p><strong>user.bytes</strong> – логируются данные писем (пользователь, исходящее письмо или входящее и т.д.)</p>
<p><strong>user.time</strong> – файл является точкой отсчета для проверки ограничения писем в час</p>
<p>Вот и все. Cтавьте, проверяйте и пользуйтеcь на здоровье.</p>
<p>Архив файла exim.pl можно скачать тут &#8212; <a href="http://kaba.org.ua/soft/exim.tar.gz">ссылка</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/programms/directadmin-ogranichenie-kolichestva-pisem-v-chas/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>FreeBSD &#8212; быстро тестируем производительность дисков</title>
		<link>http://kaba.org.ua/articles/freebsd-ndash-byistro-testiruem-proizvoditelnost-diskov/</link>
		<comments>http://kaba.org.ua/articles/freebsd-ndash-byistro-testiruem-proizvoditelnost-diskov/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 22:43:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[тест диска]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/programms/freebsd-ndash-byistro-testiruem-proizvoditelnost-diskov/</guid>
		<description><![CDATA[В FreeBSD есть своя собственная утилита для теста производительности жестких дисков, имеет она название diskinfo. Утилита имеет несколько ключей, можно получить сведения о следующих характеристиках диска: скорость передачи данных, время позиционирования головок. Пример использования: diskinfo -c /dev/ad14 /dev/ad14        512             # sectorsize        750156374016    # mediasize in bytes (699G) 1465149168      # mediasize in sectors 1453521         # Cylinders [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000;">В <strong><span style="color: #000000;">FreeBSD</span></strong> есть своя собственная утилита для теста производительности жестких дисков, имеет она название</span> <span style="color: #461b7e;"><strong><span style="color: #000000;">diskinfo.</span> </strong><span style="color: #000000;">Утилита имеет несколько ключей, можно получить сведения о следующих характеристиках диска: скорость передачи данных, время позиционирования головок. </span></span></p>
<p><span style="color: #000000;">Пример использования:</span></p>
<p><span style="color: #461b7e;"> </span></p>
<pre><span style="color: #800000;">diskinfo -c /dev/ad14
/dev/ad14        

512             # sectorsize       
750156374016    # mediasize in bytes (699G)
1465149168      # mediasize in sectors
1453521         # Cylinders according to firmware.
16              # Heads according to firmware.
63              # Sectors according to firmware.
ad:S13UJ1BQ908897       # Disk ident.</span></pre>
<p><span style="color: #800000;"><br />
</span></p>
<p><span style="color: #800000;">I/O command overhead:<br />
time to read 10MB block      0.111087 sec       =    0.005 msec/sector<br />
time to read 20480 sectors   2.361939 sec       =    0.115 msec/sector<br />
calculated command overhead                     =    0.110 msec/sector</span></p>
<p><span style="color: #461b7e;"><span style="color: #461b7e;"><br />
</span></span></p>
<p><span style="color: #461b7e;"><span style="color: #461b7e;"> </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/freebsd-ndash-byistro-testiruem-proizvoditelnost-diskov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache mpm-itk &#8212; пересборка php</title>
		<link>http://kaba.org.ua/articles/apache-mpm-itk-peresborka-php/</link>
		<comments>http://kaba.org.ua/articles/apache-mpm-itk-peresborka-php/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 23:47:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[mpm-itk]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/archives/267</guid>
		<description><![CDATA[Если вы читаете эту статью, то уже наверное столкнулись с проблемой, что после перекомпиляции php с работающим mpm-itk получаем невеселую картину: ioncube и zend optimizer не хотят подгружаться и соответственно не работают. Я долго искал решение данной проблемы, задавал вопрос на форуме Searchengines и других специализированных форумах, но местные гуру порекомендовали исправить руки. И найдя [...]]]></description>
			<content:encoded><![CDATA[<p>Если вы читаете эту статью, то уже наверное столкнулись с проблемой, что после перекомпиляции <strong>php</strong> с работающим <strong>mpm-itk</strong> получаем невеселую картину: <strong>ioncube</strong> и <strong>zend optimizer</strong> не хотят подгружаться и соответственно не работают. Я долго искал решение данной проблемы, задавал вопрос на форуме Searchengines и других специализированных форумах, но местные гуру порекомендовали исправить руки. И найдя в чем загвоздка, я сомневаюсь в их компетенции. Итак, что же происходит, почему <strong>ioncube</strong> и <strong>zend</strong> не работают? Причина в том, что при компиляции <strong>php</strong>, конфигуратор решает, что <strong>apr</strong> и <strong>apache</strong> работает в режиме “<strong>thread safety</strong>”, ну и соответственно добавляет везде где можно ключи чтобы и <strong>php</strong> был собран в этом режиме. Итак, чтобы отучить конфигуратор от этих темных мыслей применяем перед конфигурацией следующий <strong>patch</strong>:</p>
<p><span style="color: #800000;">&#8212; php-5.2.17/configure.orig   2011-01-09 11:32:18.000000000 +0200<br />
+++ php-5.2.17/configure        2011-01-09 11:35:06.000000000 +0200<br />
@@ -6380,7 +6380,7 @@<br />
;;<br />
esac</span></p>
<p><span style="color: #800000;">-  if test &#171;$APXS_MPM&#187; != &#171;prefork&#187;; then<br />
+  if test &#171;$APXS_MPM&#187; != &#171;itk&#187; -a &#171;$APXS_MPM&#187; != &#171;prefork&#187;; then</span></p>
<p><span style="color: #800000;">enable_maintainer_zts=yes<br />
if test &#171;$pthreads_working&#187; != &#171;yes&#187;; then<br />
@@ -7228,7 +7228,7 @@<br />
;;<br />
esac</span></p>
<p><span style="color: #800000;">-  if test &#171;$APXS_MPM&#187; != &#171;prefork&#187;; then<br />
+  if test &#171;$APXS_MPM&#187; != &#171;itk&#187; -a &#171;$APXS_MPM&#187; != &#171;prefork&#187;; then</span></p>
<p><span style="color: #800000;">enable_maintainer_zts=yes<br />
if test &#171;$pthreads_working&#187; != &#171;yes&#187;; then</span></p>
<p><span style="color: #800000;">&#8212; php-5.2.17/sapi/apache2handler/config.m4.orig       2007-07-12 02:20:37.000000000 +0300<br />
+++ php-5.2.17/sapi/apache2handler/config.m4    2011-01-09 11:45:40.000000000 +0200<br />
@@ -117,7 +117,7 @@<br />
;;<br />
esac</span></p>
<p><span style="color: #800000;">-  if test &#171;$APXS_MPM&#187; != &#171;prefork&#187;; then<br />
+  if test &#171;$APXS_MPM&#187; != &#171;itk&#187; -a &#171;$APXS_MPM&#187; != &#171;prefork&#187;; then<br />
PHP_BUILD_THREAD_SAFE<br />
fi<br />
AC_MSG_RESULT(yes)</span></p>
<p>Версию patch-а текстовым файлом можно скачать тут:  <a href="http://kaba.org.ua/soft/mpm-itk/php-mpm_itk.patch" target="_blank">php-mpm-itk.patch</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/apache-mpm-itk-peresborka-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux &#8212; перевод SATA контролера c IDE режима в AHCI</title>
		<link>http://kaba.org.ua/articles/linux-perevod-sata-kontrolera-c-ide-rezhima-v-ahci/</link>
		<comments>http://kaba.org.ua/articles/linux-perevod-sata-kontrolera-c-ide-rezhima-v-ahci/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 09:45:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[ahci]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sata]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/archives/262</guid>
		<description><![CDATA[Итак, возникла потребность перевести SATA контролер с режима IDE в AHCI. Сменил режим в BIOS, перезагрузил сервер и получил kernel panic. Оказалось что не все так просто. Итак, что нужно сделать чтобы система загрузилась: 1) возвращаем режим IDE в BIOS, загружаем систему. 2) Открываем на редактирование /etc/modprobe.conf и ищем строчку: alias scsi_hostadapter ata_piix Заменяем ее [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, возникла потребность перевести SATA контролер с режима IDE в AHCI. Сменил режим в BIOS, перезагрузил сервер и получил kernel panic. Оказалось что не все так просто.</p>
<p>Итак, что нужно сделать чтобы система загрузилась:</p>
<p>1) возвращаем режим IDE в BIOS, загружаем систему.</p>
<p>2) Открываем на редактирование /etc/modprobe.conf и ищем строчку:</p>
<p><strong>alias scsi_hostadapter ata_piix</strong></p>
<p>Заменяем ее строчкой:</p>
<p><strong>alias scsi_hostadapter ahci</strong></p>
<p>3) пересобираем образ initrd с поддержкой AHCI:</p>
<p><strong>mkinitrd &#8212;preload=ahci /boot/initrd-`uname -r`-ahci.img `uname -r`</strong></p>
<p>4) правим grub.conf , добавляем новый пункт меню с новым initrd</p>
<p>5) перезагружаем сервер, входим в BIOS и выставляем режим AHCI, сохраняем настройки и загружаем систему. После загрузки системы просматриваем вывод dmesg и видим что AHCI включился.</p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/linux-perevod-sata-kontrolera-c-ide-rezhima-v-ahci/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DirectAdmin сборка Apache с mpm-itk</title>
		<link>http://kaba.org.ua/articles/directadmin-sborka-apache-s-mpm-itk/</link>
		<comments>http://kaba.org.ua/articles/directadmin-sborka-apache-s-mpm-itk/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 11:30:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[directadmin]]></category>
		<category><![CDATA[ITK]]></category>
		<category><![CDATA[mpm]]></category>
		<category><![CDATA[mpm-itk]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/archives/250</guid>
		<description><![CDATA[Не будем вдаваться в подробности, что такое MPM и с чем его едят, кому интересно –это сокращение от Multi-Processing Module. mpm-itk базируется на традиционном prefork MPM + добавлены некоторые функции, например возможность ограничения количества соединений на виртуальный хост, задание имени пользователя и группы от которой будет работать Apache на определенном виртуальном хосте и последнее свойство [...]]]></description>
			<content:encoded><![CDATA[<p>Не будем вдаваться в подробности, что такое <strong>MPM</strong> и с чем его едят, кому интересно –это сокращение от <strong>Multi-Processing Module</strong>. <strong>mpm-itk</strong> базируется на традиционном <strong><em>prefork</em> MPM</strong> + добавлены некоторые функции, например возможность ограничения количества соединений на виртуальный хост, задание имени пользователя и группы от которой будет работать <strong>Apache</strong> на определенном виртуальном хосте и последнее свойство – задание приоритета работы в системе для виртуального хоста.</p>
<p>Итак, зачем нам нужно устанавливать этот <strong>MPM</strong>? Например:</p>
<p>1) для того чтобы пользователи постоянно не жаловались, что они не могут удалить те или иные файлы созданные через веб интерфейс, так как виртуальный хост будет теперь работать от имени пользователя в системе</p>
<p>2) исчезает головная боль у системного администратора с квотированием места для веб сайтов. Теперь файлы закачанные на сервер через веб интерфейс имеют владельца и группу пользователя, соответственно попадают в подсчет квоты.</p>
<p>3) приоритет процессов в системе. Очень удобно “душить” очень сильно грузящие сервер сайты</p>
<p>4) задание количества соединений на виртуальный хост – уходит сюрприз когда один сайт съедает максимальное количество соединений выставленных для всего сервера.</p>
<p>5) так как виртуальный сервер (домен пользователя) работает с правами пользователя, то возможно установить ограничение на процессорное время в системе.</p>
<p>Спросите почему не использовать тот же suphp? Причины: 1) у suphp есть куча ситуаций когда php код написанный под mod_php не работает. 2) suphp не работает с php кэшерами (eaccelerator, xcache и т.д.) 3) большая нагрузка на сервер</p>
<p>Итак, с плюсами разобрались, начнем установку. Первое это обновляем  <strong>apache</strong> и <strong>php</strong> в <strong>DirectAdmin</strong> до последней стабильной версии. Далее копируем архив <strong>apache</strong> с <strong>/usr/local/directadmin/custombuild</strong> , например в <strong>/usr/local/src</strong>, разархивируем его. Заходим на сайт разработчика <strong>mpm-itk</strong>: <a href="http://mpm-itk.sesse.net/">http://mpm-itk.sesse.net/</a> находим там diff файл и закачиваем его в директорию распакованного архива apache.</p>
<p>Запускаем <strong>patch</strong>, который внесет изменения в код:</p>
<p><span style="color: #800000;">#patch –p1 &lt;apache2.2-mpm-itk-20090414-00.patch</span></p>
<p>Смотрим вывод и если ошибок нету то запускаем <em><strong>buildconf</strong>, </em>он должен пройти без ошибок, если ошибки есть то смотрим что не хватает, например expat или autoconf, их нужно будет установить и повторить запуск <strong><em>buildconf</em></strong>. После этого архивируем директорию пропатченного apache:</p>
<p><span style="color: #800000;">#tar czf httpd-2.2.16.tar.gz httpd-2.2.16/</span></p>
<p>И копируем архив в директорию custombuild</p>
<p><span style="color: #800000;">#cp –f httpd-2.2.16.tar.gz /usr/local/directadmin/custombuild/</span></p>
<p>Переходим в директорию <strong>custombuild</strong>, снимаем md5 сумму с архива <strong>httpd-2.2.16.tar.gz</strong> и заменяем ею текущую md5 сумму в <strong>versions.txt</strong></p>
<p>Приступаем к редактированию новых темплейтов для виртуальных хостов:</p>
<p>1) в директории <strong>/usr/local/directadmin/data/templates</strong> создаем поддиректорию <strong>custom</strong> и копируем в нее все <strong>virtual_host*</strong> конфигурационные файлы.</p>
<p>2) редактируем эти конфигурационные файлы, находи в них строку <strong>SuexecUserGroup</strong> и заменяем ее на <strong>AssignUserID</strong>.  Если планируете использовать директивы <strong>MaxClientsVHost</strong> и <strong>NiceValue</strong>, то добавляете их.</p>
<p>Теперь переходим к процессу установки нового <strong>Apache</strong>. Создаем в директории /usr/local/directadmin/custombuild директорию <strong>custom</strong>. Копируем в нее с директории <strong>configure</strong> директорию <strong>ap2</strong>. Редактируем скопированный <strong>configure.apache </strong>и<strong> </strong>добавляем в конец ключ &#171;&#8212;with-mpm=itk&#187;, приступаем к сборке:<strong><br />
</strong></p>
<p><span style="color: #800000;">#/usr/local/directadmin/custombuild&gt; ./build apache</span></p>
<p>Все, Apache пересобран, конфигурационные файлы изменены. Если у вас до этого были уже созданы пользователи и домены, то не забываем сбросить владельцев на файлах и директориях, и добавить секюрности:</p>
<pre><span style="color: #800000;"># chown -R user1:group1 public_html
# <span style="color: #800000;">cd </span></span><span style="color: #800000;">public_html</span>
<span style="color: #800000;"># find . -type d -exec chmod 750 {} \;
# find . -type f -exec chmod 640 {} \;</span></pre>
<p>Далее проверяем свою работу, создаем в директории любого домена <strong>php</strong> скрипт следующего содержания:</p>
<pre><span style="color: #800000;">&lt;?php system("id"); ?&gt;</span></pre>
<p>Смотрим результат через веб, при работе обычного <strong>Apache</strong> будет такой результат:</p>
<pre><span style="color: #800000;">uid=1004(apache) gid=1004(apache) groups=1004(apache)</span></pre>
<p>При правильной работе Apache с mpm-itk результат будет такой:</p>
<pre><span style="color: #800000;">uid=1500(user1) gid=1500(group1) groups=1500(group1)</span></pre>
<p>Удачи</p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/directadmin-sborka-apache-s-mpm-itk/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>BGP, RIPE и объект ROUTE</title>
		<link>http://kaba.org.ua/articles/bgp-ripe-i-ob&#039;ekt-route/</link>
		<comments>http://kaba.org.ua/articles/bgp-ripe-i-ob&#039;ekt-route/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 22:49:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[BGP]]></category>
		<category><![CDATA[RIPE]]></category>
		<category><![CDATA[ROUTE]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/archives/245</guid>
		<description><![CDATA[Попросили знакомые недавно посмотреть проблему связанную с BGP. История такая: есть у них клиент, который анонсит через них свою AS + сеть. У клиента на этой сети несколько серверов. И вот в одно прекрасное &#171;прохладное&#187; августовское утро он им звонит и говорит, что все его сервера не работают, и просит их перегрузить. Народ проверил доступность [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">Попросили знакомые недавно посмотреть проблему связанную с <strong>BGP</strong>. История такая: есть у них клиент, который анонсит через них свою AS + сеть. У клиента на этой сети несколько серверов. И вот в одно прекрасное &#171;прохладное&#187; августовское утро он им звонит и говорит, что все его сервера не работают, и просит их перегрузить.</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">Народ проверил доступность серверов, на всяк пожарный перегрузили, с внутренней сети сервера клиента доступны, а с мира нет. Долго бегали с бубном они, звонили аплинкам – не нашли причину. И вот эту проблему дали мне, пообещав щедро утолить мою летнюю жажду.</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">Я проверил настройки <strong>BGP</strong>, анонсы сети есть и уходят на аплинков. С аплинков сеть доступна, а дальше нет, уже на UA-IX сети не видно. Почесав репу решил проверить что же там в <strong>RIPE</strong> и о чудо нету объекта <strong>ROUTE</strong>. Итак, напомню, что объект <strong>ROUTE</strong> отвечает за то какой автономной системе принадлежит сеть. На основании этой информации строятся фильтры. Собственно удалив объект <strong>ROUTE</strong> из базы <strong>RIPE</strong> вы указываете, что данная сеть и AS не роутится, т.е. фильтруются. Перестройка фильтров происходит раз в сутки.</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">Вернув объект на свое прежнее место клиент курил бамбук сутки со своими серверами прежде чем сеть стала доступна. Так что будьте внимательны, прежде чем делать необдуманные шаги.</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/bgp-ripe-i-ob&#039;ekt-route/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectAdmin: перемещаем домен на другой аккаунт</title>
		<link>http://kaba.org.ua/articles/directadmin-peremeshhaem-domen-na-drugoy-akkaunt/</link>
		<comments>http://kaba.org.ua/articles/directadmin-peremeshhaem-domen-na-drugoy-akkaunt/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 20:53:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[directadmin]]></category>
		<category><![CDATA[move domain]]></category>
		<category><![CDATA[переместить домен]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/archives/241</guid>
		<description><![CDATA[Итак, вы наверное уже не раз сталкивались с вопросом когда нужно быстро переместить домен с аккаунта одного пользователя на другой аккаунт. Вы делали резервную копию аккаунта, удаляли домен, потом добавляли домен на другом аккаунте и восстанавливали данные с резервной копии. Оказывается все можно сделать намного проще, итак: cd /usr/local/directadmin/scripts ./move_domain.sh domain.com olduser newuser вместо domain.com [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, вы наверное уже не раз сталкивались с вопросом когда нужно быстро переместить домен с аккаунта одного пользователя на другой аккаунт. Вы делали резервную копию аккаунта, удаляли домен, потом добавляли домен на другом аккаунте и восстанавливали данные с резервной копии. Оказывается все можно сделать намного проще, итак:</p>
<p><span style="color: #800000;">cd /usr/local/directadmin/scripts<br />
./move_domain.sh <strong>domain.com olduser newuser</strong></span></p>
<p>вместо <strong>domain.com olduser newuser </strong>ставим свои значения, а то есть домен, старый владелец, новый владелец.</p>
<p>После переноса не забываем сменить владельца на файлы и директории перенесенного домена.</p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/directadmin-peremeshhaem-domen-na-drugoy-akkaunt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Работаем с Find</title>
		<link>http://kaba.org.ua/articles/rabotaem-s-find/</link>
		<comments>http://kaba.org.ua/articles/rabotaem-s-find/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 09:19:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://kaba.org.ua/archives/234</guid>
		<description><![CDATA[Сегодня мы поговорим о утилите find и что можно с помощью нее сделать. 1) с помощью утилиты find можно найти нужные нам файлы и директории, например: найдем все файлы в текущей папке с вложениями, которые имеют расширения .html: find . -type f -name &#8216;*.html&#8217; –print найдем все директории в текущей папке с вложения, которые имеют [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня мы поговорим о утилите <strong>find</strong> и что можно с помощью нее сделать.</p>
<p>1) с помощью утилиты <strong>find</strong> можно найти нужные нам файлы и директории, например:</p>
<p>найдем все файлы в текущей папке с вложениями, которые имеют расширения .html:</p>
<p><span style="color: #800000;">find . -type f -name &#8216;*.html&#8217; –print</span></p>
<p>найдем все директории в текущей папке с вложения, которые имеют в названии слово “admin”:</p>
<p><span style="color: #800000;">find . -type d -name &#8216;*admin*&#8217; –print</span></p>
<p>2) с помощью утилиты <strong>find</strong> можно не только найти файлы и директории по маске, но и произвести с ними действия, для этого служит ключ <strong>–exec</strong></p>
<p>Примеры:</p>
<p>Нужно сменить права на 644 на все файлы в текущей директории рекурсивно:</p>
<p><span style="color: #800000;">find . -type f -exec chmod 644 {} \;</span></p>
<p>Нужно сменить права на 755 на все директории в текущей директории рекурсивно:</p>
<p><span style="color: #800000;">find . -type d -exec chmod 755 {} \;</span></p>
<p>Итак, мы видим что с утилитой find работать очень просто и с помощью нее можно легко все найти и проделать любые действия с файлами и директориями. Успехов вам в работе.</p>
]]></content:encoded>
			<wfw:commentRss>http://kaba.org.ua/articles/rabotaem-s-find/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

