<?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>The WebDevil &#187; FreeBSD</title>
	<atom:link href="http://dmitry.shaposhnik.name/category/freebsd/feed/" rel="self" type="application/rss+xml" />
	<link>http://dmitry.shaposhnik.name</link>
	<description>Enjoy development</description>
	<lastBuildDate>Mon, 24 May 2010 01:29:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Server moving adventures</title>
		<link>http://dmitry.shaposhnik.name/2008/08/07/server-moving-adventures/</link>
		<comments>http://dmitry.shaposhnik.name/2008/08/07/server-moving-adventures/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 01:45:28 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Newbie]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Общее]]></category>

		<guid isPermaLink="false">http://dmitry.shaposhnik.name/?p=215</guid>
		<description><![CDATA[Второй день занимаюсь переездом содержимого одного сервера на другой. Другой &#8211; VPS под FreeBSD (привет, ДЦ Воля).
В общем, это последний раз когда я до оплаты сказал что он неплох. Теперь только реальные сервера. Ну и может VDS под Linux&#8230; В общем, именно эта реализация ужасна. Меня мало интересует как и что &#8211; факт налицо.


Первая ласточка [...]]]></description>
			<content:encoded><![CDATA[<p>Второй день занимаюсь переездом содержимого одного сервера на другой. Другой &#8211; VPS под FreeBSD (привет, ДЦ Воля).</p>
<p>В общем, это последний раз когда я до оплаты сказал что он неплох. Теперь только реальные сервера. Ну и может VDS под Linux&#8230; В общем, именно эта реализация ужасна. Меня мало интересует как и что &#8211; факт налицо.<br />
<span id="more-215"></span><br />
<img src="http://dmitry.shaposhnik.name/files/2008/08/mysql-logo.png" alt="" title="mysql-logo" width="200" height="103" class="aligncenter size-medium wp-image-218" /><br />
Первая ласточка &#8211; mysql. Сообщение о нехватке памяти в логах:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">080806 13:39:10 [ERROR] /usr/local/libexec/mysqld: Out of memory (Needed 1043824 bytes)</div></div>
<p>Судя по найденому в гугле и попыткам что-либо изменить, это вылазит из-за дефолтного в i386 FreeBSD значения максимального количества памяти на процесс. И изменить его у меня не удалось. В результате куцые буфера, и веселые запросы толпятся в очереди, а MySQL уверенно пухнет. И опухает:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[root@vps ~]# ps axu | grep mysql<br />
bash: fork: Cannot allocate memory</div></div>
<p>Причем, такое поведение я уже встречал ранее. Дважды. Тогда еще и файловые дескрипторы заканчивались (привет phpbb с кучей плагинов).</p>
<p>Но все был бы ничего, однако базы в большинстве своем живут в MyISAM, но самая тяжелая &#8211; как и полагается, в InnoDB. И вот любой запрос с джоинами на ней ложил тачку. </p>
<p>Во время разборок с мускулем был применен киллер, найденый в темном переулке на форумах мускуля:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#!/usr/local/bin/php<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<a href="http://www.php.net/mysql_connect"><span style="color: #990000;">mysql_connect</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'pass'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/mysql_query"><span style="color: #990000;">mysql_query</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SHOW FULL PROCESSLIST&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span><span style="color: #339933;">=</span><a href="http://www.php.net/mysql_fetch_array"><span style="color: #990000;">mysql_fetch_array</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #000088;">$process_id</span><span style="color: #339933;">=</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;Id&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;Time&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">10</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">'root'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$sql</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;KILL <span style="color: #006699; font-weight: bold;">$process_id</span>&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/mysql_query"><span style="color: #990000;">mysql_query</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Теперь появилось время на мысли. <a href="http://mtop.sourceforge.net/">mtop</a> помог отследить, что во всем виновата одна эта БД. После запора в ней более-менее тяжелые запросы в других БД тоже застряют.</p>
<p>Результатом был переезд этой большой базы на другой хост, и использование ее оттуда. Сервер с двухядреным оптероном и 4ГБ памяти не заметил появления балласта: запросы пролетали мгновенно. И это без попыток тюнинговать мускуль.</p>
<p><img src="/files/2008/08/nginx-n-apache.png" alt="" title="nginx-n-apache" width="247" height="103" class="aligncenter size-medium wp-image-219" /></p>
<p>Далее начались проблемы с милой связкой nginx+apache. Как описано у <a href="http://blog.kovyrin.net/2006/05/18/nginx-as-reverse-proxy/">Алексея</a>, все заработало. Но некоторые странички отказывались показываться &#8211; браузер ругался на невозможность понять что же ему пришло. Такой ошибки я не встречал, и как оказалось никто из моего контакт-листа тоже.</p>
<p>А получилось следующее: обожаемый ExpressionEngine (и тебе привет) пытался все отдать за-gzip-леное. Апач справедливо отдавал это как HTTP/1.1 Transfer-Encoding: chunked. Но это в ответ на запрос HTTP/1.0 от nginx! Последний нифига не понимал и результирующий фарш доставлялся браузеру. Еще бы, он не хотел это нечто отображать&#8230;</p>
<p>Выключением опции gzip-сжатия в ExpressionEngine 1.5.3 это полечилось, однако&#8230;</p>
<p><img src="/files/2008/08/store_ee.gif" alt="" title="store_ee" width="111" height="102" class="aligncenter size-medium wp-image-220" /></p>
<p>&#8230; приключения с этим белым и пушистым зверьком не закончились. В форуме при публикации сообщения символы кириллицы отсутствовали. Долго я искал помощи через гугль, пока не полез в код. А в коде методом тыка нашел, что это все <a href="http://codeigniter.com/bug_tracker/bug/1919/">виноват xss_clean в версии 1.5.3</a>.</p>
<p>Заменив строки с</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">...</span><br />
<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/preg_replace"><span style="color: #990000;">preg_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#(&amp;\#*\w+)[\x00-\x20]+;#u'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>1;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #339933;">...</span><br />
<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/preg_replace"><span style="color: #990000;">preg_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#(&amp;\#x*)([0-9A-F]+);*#iu'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>1<span style="color: #000099; font-weight: bold;">\\</span>2;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #339933;">...</span></div></div>
<p>на</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/preg_replace"><span style="color: #990000;">preg_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#(&amp;\#?[0-9a-z]+)[\x00-\x20]*;?#i'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>1;&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #339933;">...</span><br />
<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/preg_replace"><span style="color: #990000;">preg_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#(&amp;\#x?)([0-9A-F]+);?#i'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>1<span style="color: #000099; font-weight: bold;">\\</span>2;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>проблему вылечил.</p>
<p>С нетерпением жду что обнаружится дальше&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2008/08/07/server-moving-adventures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby fixed in Ubuntu</title>
		<link>http://dmitry.shaposhnik.name/2008/06/27/ruby-fixed-in-ubuntu/</link>
		<comments>http://dmitry.shaposhnik.name/2008/06/27/ruby-fixed-in-ubuntu/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 08:00:26 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://dmitry.shaposhnik.name/?p=180</guid>
		<description><![CDATA[Наконец-то в Ubuntu полечили уязвимость в Ruby, обновление доступно из репозитария security.ubuntu.com.
Провериться можно выполнив (хоть в irb) код:
ary = &#91;&#93;; ary&#91;0x7fffffff&#93; = &#34;A&#34;
Тут больше и подробнее
]]></description>
			<content:encoded><![CDATA[<p>Наконец-то в Ubuntu полечили уязвимость в Ruby, обновление доступно из репозитария security.ubuntu.com.</p>
<p>Провериться можно выполнив (хоть в irb) код:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ary = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>; ary<span style="color:#006600; font-weight:bold;">&#91;</span>0x7fffffff<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#996600;">&quot;A&quot;</span></div></div>
<p><a href="http://www.matasano.com/log/1070/updates-on-drew-yaos-terrible-ruby-vulnerabilities/">Тут больше и подробнее</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2008/06/27/ruby-fixed-in-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>configure nginx-0.6.26</title>
		<link>http://dmitry.shaposhnik.name/2008/02/18/configure-nginx-0626/</link>
		<comments>http://dmitry.shaposhnik.name/2008/02/18/configure-nginx-0626/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 17:14:09 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://dmitry.shaposhnik.name/2008/02/18/configure-nginx-0626/</guid>
		<description><![CDATA[Для себя, чтоб не забыть, параметры для корректной сборки nginx под FreeBSD.

wget http://sysoev.ru/nginx/nginx-0.6.26.tar.gz
tar xvf ./nginx-0.6.26.tar.gz
cd nginx-0.6.26

./configure --prefix=/usr/local/nginx \
--with-cc-opt=&#34;-I /usr/local/include&#34; \
--with-ld-opt=&#34;-L /usr/local/lib&#34; \
--with-http_addition_module \
--with-http_dav_module \
--with-http_perl_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_sub_module

make install clean

cd /usr/ports/net/p5-URI &#38;&#38; make install clean

cd /usr/ports/devel/p5-String-CRC32 &#38;&#38; make install clean

cpan -i URI::Escape::XS
На вопрос cpan о готовности к ручной настройке ответить “no”
]]></description>
			<content:encoded><![CDATA[<p>Для себя, чтоб не забыть, параметры для корректной сборки nginx под FreeBSD.<br />
<span id="more-176"></span></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">wget http://sysoev.ru/nginx/nginx-0.6.26.tar.gz<br />
tar xvf ./nginx-0.6.26.tar.gz<br />
cd nginx-0.6.26<br />
<br />
./configure --prefix=/usr/local/nginx \<br />
--with-cc-opt=&quot;-I /usr/local/include&quot; \<br />
--with-ld-opt=&quot;-L /usr/local/lib&quot; \<br />
--with-http_addition_module \<br />
--with-http_dav_module \<br />
--with-http_perl_module \<br />
--with-http_realip_module \<br />
--with-http_stub_status_module \<br />
--with-http_sub_module<br />
<br />
make install clean<br />
<br />
cd /usr/ports/net/p5-URI &amp;&amp; make install clean<br />
<br />
cd /usr/ports/devel/p5-String-CRC32 &amp;&amp; make install clean<br />
<br />
cpan -i URI::Escape::XS</div></div>
<p>На вопрос cpan о готовности к ручной настройке ответить “no”</p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2008/02/18/configure-nginx-0626/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ssh bruteforce prevention</title>
		<link>http://dmitry.shaposhnik.name/2008/01/06/ssh-bruteforce-prevention/</link>
		<comments>http://dmitry.shaposhnik.name/2008/01/06/ssh-bruteforce-prevention/#comments</comments>
		<pubDate>Sun, 06 Jan 2008 19:43:07 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>

		<guid isPermaLink="false">http://dmitry.shaposhnik.name/2008/01/06/ssh-bruteforce-prevention/</guid>
		<description><![CDATA[Некоторое время назад начали приходить сообщения мониторилки о том, что сервис ssh недоступен на одном из серверов. И он таки был недоступен, потом поднялся сам.
Как показал просмотр логов &#8211; по ssh активно шел перебор паролей.
Я решил блочить нарушителей, а не перевесить ssh на другой порт.

Под FreeBSD
У меня все это получилось по прочтении стаьи Лисяры. Немножко [...]]]></description>
			<content:encoded><![CDATA[<p>Некоторое время назад начали приходить сообщения мониторилки о том, что сервис ssh недоступен на одном из серверов. И он таки был недоступен, потом поднялся сам.<br />
Как показал просмотр логов &#8211; по ssh активно шел перебор паролей.<br />
Я решил блочить нарушителей, а не перевесить ssh на другой порт.<br />
<span id="more-160"></span></p>
<h2>Под FreeBSD</h2>
<p>У меня все это получилось по прочтении <a href="http://www.lissyara.su/?id=1472">стаьи Лисяры</a>. Немножко подправил его шаги, но совсем незначительно.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>ports<span style="color: #000000; font-weight: bold;">/</span>security<span style="color: #000000; font-weight: bold;">/</span>sshit<br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> clean<br />
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;auth.info;authpriv.info &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |exec /usr/local/sbin/sshit&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>syslog.conf</div></div>
<p>Теперь все попытки входа будут фильтроваться через sshit. Осталось подправить его конфиг /usr/local/etc/sshit.conf:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">MAX_COUNT &nbsp; &nbsp; &nbsp; = <span style="color: #000000;">5</span><br />
FIREWALL_TYPE &nbsp; = ipfw2</div></div>
<p>Так как sshit парсит строчки лога регулярными выражениями, а syslogd имеет нехорошую привычку сокращать в строки вида:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Jan &nbsp;6 17:08:29 server last message repeated 3 times</div></div>
<p>Чтоб такие сокращения убрать, надо в /etc/rc.conf найти/зменить/добавить в</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">syslogd_flags</span>=<span style="color: #ff0000;">&quot;-ss&quot;</span></div></div>
<p>ключик -c, а лучше -cc:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">syslogd_flags</span>=<span style="color: #ff0000;">&quot;-cc -ss&quot;</span></div></div>
<p>А также в /etc/rc.firewall дописать создание/опустошение таблицы, в которую будут добавляться нарушители:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #800000;">${fwcmd}</span> add <span style="color: #000000;">60000</span> deny ip from <span style="color: #ff0000;">&quot;table(0)&quot;</span> to my <span style="color: #000000;">22</span></div></div>
<p>(у меня это в строке сразу над <tt>${fwcmd} add 65000 pass all from any to any</tt>).<br />
Вообще оно должно быть до правила разрешающего все (если такое есть).<br />
Теперь рестарить все нужные сервисы:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.d<span style="color: #000000; font-weight: bold;">/</span>syslogd restart<br />
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.d<span style="color: #000000; font-weight: bold;">/</span>sshd restart</div></div>
<p>и все нарушители будут блочиться файрволом в таблице 0 (ipfw table 0 list). Через некоторое время (вроде бы как 5 минут) они будут разблокированы.</p>
<h2>Для Linux</h2>
<p>Тут все оказалось проще и веселее.</p>
<p><a href="http://kevin.vanzonneveld.net/techblog/article/block_brute_force_attacks_with_iptables/">Вариант №1 &#8211; через iptables.</a><br />
Всего две команды:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-i</span> eth0 <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">22</span> <span style="color: #660033;">-m</span> state <span style="color: #660033;">--state</span> NEW <span style="color: #660033;">-m</span> recent <span style="color: #660033;">--set</span> <span style="color: #660033;">--name</span> SSH<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-i</span> eth0 <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">22</span> <span style="color: #660033;">-m</span> state <span style="color: #660033;">--state</span> NEW <span style="color: #660033;">-m</span> recent <span style="color: #660033;">--update</span> <span style="color: #660033;">--seconds</span> <span style="color: #000000;">60</span> <span style="color: #660033;">--hitcount</span> <span style="color: #000000;">8</span> <span style="color: #660033;">--rttl</span> <span style="color: #660033;">--name</span> SSH <span style="color: #660033;">-j</span> DROP</div></div>
<p>Но у этого способа есть минус. Он не знает, чем все закончилось. Если за 60 секунд было 8 подключений &#8211; IP блокируется.</p>
<p><a href="http://www.ducea.com/2006/07/03/using-fail2ban-to-block-brute-force-attacks/">Способ №2 &#8211; посредством fail2ban.</a><br />
Устанавливаем:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> fail2ban</div></div>
<p>И даже править ничего не надо. Ну&#8230; почти ничего. В логе встречается строка &#8220;last message repeated N times&#8221;, которая все портит. И в sysklogd нехватает возможности это исправить. syslog-ng вроде бы такого не делает, и пишет во все те же логи. Вот я его себе и установил сразу.<br />
В /etc/fail2ban можно найти конфиги, которыми можно настроить его и на ftp, и на ssh, и на несколько других сервисов.</p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2008/01/06/ssh-bruteforce-prevention/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>replace freebsd with linux via ssh</title>
		<link>http://dmitry.shaposhnik.name/2007/12/21/replace-freebsd-with-linux-via-ssh/</link>
		<comments>http://dmitry.shaposhnik.name/2007/12/21/replace-freebsd-with-linux-via-ssh/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 10:53:29 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://dmitry.shaposhnik.name/2007/12/21/replace-freebsd-with-linux-via-ssh/</guid>
		<description><![CDATA[Имея в своем распоряжении несколько серверов решил привести их к одной платформе, а именно &#8211; Ubuntu Linux.
Вдохновленный этим описанием я решил попробовать повторить его.
Сразу скажу &#8211; к серверу я таки поехал. Я забыл сделать fstab, но до него дело не дошло &#8211; не завелся grub.
Хочу выразить глубокую признательность берсеркеру за статью, идею и подсказки!
ВНИМАНИЕ! Все [...]]]></description>
			<content:encoded><![CDATA[<p>Имея в своем распоряжении несколько серверов решил привести их к одной платформе, а именно &#8211; Ubuntu Linux.<br />
Вдохновленный <a href="http://www.opennet.ru/base/sys/freebsd_to_linux_debian.txt.html">этим описанием</a> я решил попробовать повторить его.<br />
Сразу скажу &#8211; к серверу я таки поехал. Я забыл сделать fstab, но до него дело не дошло &#8211; не завелся grub.<br />
Хочу выразить глубокую признательность берсеркеру за статью, идею и подсказки!</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ВНИМАНИЕ! Все что тут описано Вы делаете на свой страх и риск.</div></div>
<p>Итак, что получилось.<br />
<span id="more-154"></span><br />
Первым делом я выделил небольшой раздел &#8211; 1ГБ &#8211; под линукс, и поставил его туда в минимальном доступном варианте. На один раздел как &#8220;/&#8221;, без свопа. Сразу же поставил к нему ssh &#8211; а то потом плохо будет.<br />
Затем из работающего линукса я смонтировал установленный (допустим, в /mnt/freshlinux) и сделал из него тарбол:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>freshlinux <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-cpf</span> ~<span style="color: #000000; font-weight: bold;">/</span>base.tar <span style="color: #000000; font-weight: bold;">*</span></div></div>
<p>В дальнейшем будет два варианта установки: развернуть полностью установленный или развернуть новый посредством debootstrap. Мне было весьма лениво закачивать немаленький тарбол на удаленную систему со скоростью аплода 30КБ/с.</p>
<p>Теперь пора урезать базовую систему. Проще всего сделать это находясь в нем:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">chroot</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>freshlinux</div></div>
<p>И начинаем все несущественное удалять. Желательно оставить grub (потом понадобится). Я же еще оставил debootstrap &#8211; см. примечание выше. Также я люблю reiserfs, поэтому надо для него утилиты оставить.</p>
<p>Как было сказано в руководсте берсеркера &#8211; вырезаем доки-маны</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>doc,locale,<span style="color: #c20cb9; font-weight: bold;">man</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #660033;">-type</span> f <span style="color: #660033;">-exec</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> \;</div></div>
<p>То что осталось должно весить около 70МБ.<br />
Обязательно надо прописать в /etc/network/interfaces сетевые настройки удаленной машинки. Также не забыть /etc/resolv.conf.</p>
<p>Далее у меня подход стал чуть отличаться: новые ядра поддерживают initramfs. Используя initrd у меня почему-то небыло возможноси записи в него.<br />
Initramfs я собирал так как сказано в мане:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>freshlinux <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">find</span> . <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cpio</span> <span style="color: #660033;">-o</span> <span style="color: #660033;">-H</span> newc <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">gzip</span> <span style="color: #660033;">-9</span> <span style="color: #000000; font-weight: bold;">&gt;</span> ~<span style="color: #000000; font-weight: bold;">/</span>initramfs.cpio.gz</div></div>
<p>Следующий шаг &#8211; надо собрать ядро, которое будет поддерживать все что нам нужно. Вот такой <a href='/files/2007/12/.config' title='Kernel config'>конфиг</a> у меня получился для ядра 2.6.22 и вот такое <a href='/files/2007/12/bzimage' title='Kernel'>ядро</a>. Знаю, что ядро не идеальное, но оно работает.</p>
<p>Теперь можно загружать ядро и initramfs на удаленную машину. Там для раздела с которого загрузится линукс можно освободить раздел свапа (допустим, это ad0s1b):</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">swapoff <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>ad0s1b<br />
newfs <span style="color: #660033;">-O1</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>ad0s1b<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>small<br />
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>ad0s1b <span style="color: #000000; font-weight: bold;">/</span>small</div></div>
<p>Затем надо поставить grub</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sysctl kern.geom.debugflags=<span style="color: #000000;">16</span><br />
grub-install <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>ad0<br />
grub-set-default <span style="color: #000000;">1</span></div></div>
<p>и создать для него такой конфиг в /boot/grub/menu.lst:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">default saved<br />
fallback <span style="color: #000000;">0</span><br />
timeout <span style="color: #000000;">1</span><br />
title freebsd<br />
kernel <span style="color: #7a0874; font-weight: bold;">&#40;</span>hd0,<span style="color: #000000;">0</span>,a<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>loader<br />
savedefault <span style="color: #000000;">0</span><br />
title debian<br />
kernel <span style="color: #7a0874; font-weight: bold;">&#40;</span>hd0,<span style="color: #000000;">0</span>,b<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">/</span>bzImage <span style="color: #007800;">root</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>ram0 <span style="color: #007800;">rdinit</span>=<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>init rw <span style="color: #007800;">panic</span>=<span style="color: #000000;">1</span><br />
initrd <span style="color: #7a0874; font-weight: bold;">&#40;</span>hd0,<span style="color: #000000;">0</span>,b<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">/</span>initramfs.cpio.gz<br />
savedefault <span style="color: #000000;">0</span></div></div>
<p>После перезагрузки мы должны попасть в linux.</p>
<p>Процитирую берсеркера:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ВНИМАНИЕ &nbsp;- &nbsp;все &nbsp;делать &nbsp;осторожно &nbsp;и &nbsp;вдумчиво, т.к. возврата уже не будет.</div></div>
<p>Теперь надо переразметить диск. Для разметки я привык использовать cfdisk.<br />
Далее на указанных разделах создал файловые системы и смонтировал все это.</p>
<p>И вот тут можно поступить двумя способами &#8211; развернуть тарболл или поставить заново систему через debootstrap. Я пошел вторым путем, и поехал к серверу &#8211; не встал загрузчик.<br />
Так как распаковка тарбола не нуждается в пояснениях, то расскажу немного о debootstrap.<br />
Собственно, имеем директорию, в которую смонтирован &#8220;/&#8221; новой системы. Также я разношу /usr, /var/, /home, /tmp. Все это добро смонтировалвнутри нового корня, и выполнил</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">CHROOT</span>=<span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>freshlinux<br />
debootstrap <span style="color: #660033;">--include</span>=<span style="color: #c20cb9; font-weight: bold;">ssh</span> edgy <span style="color: #007800;">$CHROOT</span></div></div>
<p>Так туда станет новая система.<br />
Не помешает сразу сделать</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>sources.list <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>freshlinux<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>sources.list<br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>network<span style="color: #000000; font-weight: bold;">/</span>interfaces <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>freshlinux<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>network<span style="color: #000000; font-weight: bold;">/</span>interfaces<br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>resolv.conf <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>freshlinux<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>resolv.conf<br />
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span><br />
addgroup admin<br />
adduser myusername<br />
adduser myusername admin<br />
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;%admin ALL=(ALL) ALL&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sudoers</div></div>
<p>Вот тут уместно будет создать файл /etc/fstab, который я забыл сделать у себя. Синтаксис можно подсмотреть в живущей в памяти системе &#8211; там все просто.</p>
<p>И войдем в новую систему и обновим список пакетов и поставим ядро и загрузчик:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">chroot</span> <span style="color: #007800;">$CHROOT</span><br />
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> update<br />
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> linux-image grub<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>grub<br />
update-grub<br />
<span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>grub<span style="color: #000000; font-weight: bold;">/</span>menu.lst</div></div>
<p>и в конфиг граба пишем:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">timeout <span style="color: #000000;">10</span><br />
title &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ubuntu, kernel 2.6.22-<span style="color: #000000;">14</span>-generic<br />
root &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>hd0,<span style="color: #000000;">0</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
kernel &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>vmlinuz-2.6.22-<span style="color: #000000;">14</span>-generic <span style="color: #007800;">root</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda1 ro quiet<br />
initrd &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>initrd.img-2.6.22-<span style="color: #000000;">14</span>-generic<br />
quiet<br />
savedefault</div></div>
<p>и затем уже не в chroot&#8217;е делаем</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">grub-install <span style="color: #660033;">--root-directory</span>=<span style="color: #007800;">$CHROOT</span></div></div>
<p>По идее все. Надеюсь, мне покажут ошибки, которые я сделал =)</p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2007/12/21/replace-freebsd-with-linux-via-ssh/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Server monitoring tool</title>
		<link>http://dmitry.shaposhnik.name/2007/11/30/server-monitoring-tool/</link>
		<comments>http://dmitry.shaposhnik.name/2007/11/30/server-monitoring-tool/#comments</comments>
		<pubDate>Fri, 30 Nov 2007 18:47:46 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://dmitry.shaposhnik.name/2007/11/30/server-monitoring-tool/</guid>
		<description><![CDATA[Стояли у меня разные сервера, и для мониторинга сервисов на них стоял monit. Со своей задачей он справлялся &#8211; если что-то упало &#8211; поднять указанным скриптом.
Но чего нехватало &#8211; так центра, в котором я бы мог озирать со своего места все сервера.

Вот так и решил поставить nagios. Поставил, посмотрел, попытался настроить, что-то получилось. Так как [...]]]></description>
			<content:encoded><![CDATA[<p>Стояли у меня разные сервера, и для мониторинга сервисов на них стоял monit. Со своей задачей он справлялся &#8211; если что-то упало &#8211; поднять указанным скриптом.<br />
Но чего нехватало &#8211; так центра, в котором я бы мог озирать со своего места все сервера.<br />
<span id="more-146"></span><br />
Вот так и решил поставить <a href="http://www.nagios.org/">nagios</a>. Поставил, посмотрел, попытался настроить, что-то получилось. Так как я &#8211; вэбдевел, то я, понятное дело, привы пользоваться вэб-мордами для таких штук. И у нагиоса она не то чтоб неюзабельна&#8230; Там полное отсуствие термина &#8220;удобство&#8221;. За что он и был снесен на следующие сутки.</p>
<p>Вторым&#8230; точнее второй была сестрёнка &#8211; <a href="http://bigsister.graeff.com/">BigSister</a>. Но она мне что-то сразу не приглянулась, и прожила минут 10-15. На большее меня нехватило. Интерфейс тоже неахти какой.</p>
<p>Попробовал я и <a href="http://manageengine.adventnet.com/products/opmanager/index.html">ManageEngine(r) OpManager</a> &#8211; я не смог его запустить, так как он требовал старые либы. У него внутри свой апач, что порадовало &#8211; ведь системный может и отвалиться, а мониторилка должна продолжить жить. Но именно этот апач и не стартовал из-за возраста.</p>
<p>И вот, наконец, меня подтолкнули в сторону <a href="http://www.zabbix.com/">Zabbix</a>. Сначала его навороченость меня отпугнула, юзабилити показалось страшным, но уже много лучше нагиоса. А потом я его настроил &#8211; что оказалось весьма легко &#8211; и обрел счастье.</p>
<p>В общем, что сие из себя представляет.<br />
Есть сервер, есть агент. Сервер пишет в MySQL/PostgreSQL/Oracle/SQLite. Есть вэб-морда (PHP), которая работает как раз с этой самой sql-базой. Клиент коннектится к серверу (или нескольким серверам). Первому в списке серверу он шлет всю инфу как можно чаще, остальным &#8211; более умеренно. По какому протоколу &#8211; не знаю, вроде по своему (поверх tcp).<br />
Ну а дальше у морды настраиваются триггеры (события, при которых шлется уведомление), item&#8217;ы (события, на которых строятся триггеры), media (чем и как и куда слать &#8211; даже через COM через сотовый может =)), графики и т.п.<br />
Агент, кстати, может выполнять указанные сервером команды. Например, при падении апача/мускуля/etc поднять его.</p>
<p>В общем &#8211; пока у меня живет <a href="http://www.zabbix.com/">Zabbix</a>, и я доволен. Всем советую.<br />
Но планы на разработку сходной мониторилки с человеческим обличьем уже есть <img src='http://dmitry.shaposhnik.name/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2007/11/30/server-monitoring-tool/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>FreeBSD upgrade</title>
		<link>http://dmitry.shaposhnik.name/2007/11/22/freebsd-upgrade/</link>
		<comments>http://dmitry.shaposhnik.name/2007/11/22/freebsd-upgrade/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 10:33:25 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://dmitry.shaposhnik.name/2007/11/22/freebsd-upgrade/</guid>
		<description><![CDATA[Был когда-то админ, который держал вэб-сервера в компании. А я в ту пору работал там же вэб-программером. Но потом он ушел &#8211; и все бразды правления серверами былипереданы мне до нахождения нового админа. Было это месяцев 8 назад. С тех пор я и админю эти сервера и программлю.
Так вот еще в те далекие времена на [...]]]></description>
			<content:encoded><![CDATA[<p>Был когда-то админ, который держал вэб-сервера в компании. А я в ту пору работал там же вэб-программером. Но потом он ушел &#8211; и все бразды правления серверами былипереданы мне до нахождения нового админа. Было это месяцев 8 назад. С тех пор я и админю эти сервера и программлю.</p>
<p>Так вот еще в те далекие времена на один из продакшен-серверов была поставлена FreeBSD 6.1 RELEASE. И были у нее иногда (раз-два в месяц) странные сбои &#8211; она спонтанно несколько раз уходила в ребут. Память там целая, да и рейд-массив не сбоит. Все логи чистые.<br />
Как я смог наконец-то выяснить &#8211; такое поведение встречалось у некоторых других серверов с этой же версией фри, а также и с какой-то версией 5ки &#8211; вроде бы тоже 5.1.<br />
<span id="more-144"></span><br />
Переставить сервер нет никакой возможности. К великому моему сожалению. Посему пришлось делать апгрейд. Да к тому же и ядро там самосборное, так что бинарный апгрейд не выйдет. И вот что я делал:</p>
<ul>
<li>Правим/проверяем /etc/make.conf. У меня он имеет такой вид:
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">PERL_VER</span>=5.8.8<br />
<span style="color: #007800;">PERL_VERSION</span>=5.8.8<br />
MASTER_SITE_BACKUP?= \<br />
<span style="color: #c20cb9; font-weight: bold;">ftp</span>:<span style="color: #000000; font-weight: bold;">//</span>ftp5.us.freebsd.org<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>FreeBSD<span style="color: #000000; font-weight: bold;">/</span>portg.freebsd.orgs<span style="color: #000000; font-weight: bold;">/</span>current-distfiles<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${DIST_SUBDIR}</span><span style="color: #000000; font-weight: bold;">/</span><br />
MASTER_SITE_OVERRIDE?= &nbsp;<span style="color: #800000;">${MASTER_SITE_BACKUP}</span><br />
<span style="color: #007800;">SUP_UPDATE</span>= &nbsp; &nbsp; <span style="color: #c20cb9; font-weight: bold;">yes</span><br />
<span style="color: #007800;">SUP</span>= &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>cvsup<br />
<span style="color: #007800;">SUPFLAGS</span>= &nbsp; &nbsp; &nbsp; <span style="color: #660033;">-g</span> <span style="color: #660033;">-L</span> <span style="color: #000000;">2</span><br />
<span style="color: #007800;">SUPHOST</span>= &nbsp; &nbsp; &nbsp; &nbsp;cvsup5.us.freebsd.org<br />
<span style="color: #007800;">PORTSSUPFILE</span>= &nbsp; <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>examples<span style="color: #000000; font-weight: bold;">/</span>cvsup<span style="color: #000000; font-weight: bold;">/</span>ports-supfile<br />
<span style="color: #007800;">X11BASE</span>=<span style="color: #800000;">${LOCALBASE}</span></div></div>
</li>
<li>Конфигурируем-правим cvs-supfile:
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">*</span>default <span style="color: #007800;">host</span>=cvsup3.ua.freebsd.org<br />
<span style="color: #000000; font-weight: bold;">*</span>default <span style="color: #007800;">base</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>db<br />
<span style="color: #000000; font-weight: bold;">*</span>default <span style="color: #007800;">prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<br />
<span style="color: #000000; font-weight: bold;">*</span>default <span style="color: #007800;">release</span>=<span style="color: #c20cb9; font-weight: bold;">cvs</span> delete use-rel-suffix compress<br />
<span style="color: #666666; font-style: italic;">#ports-all tag=.</span><br />
<span style="color: #000000; font-weight: bold;">*</span>default <span style="color: #007800;">release</span>=<span style="color: #c20cb9; font-weight: bold;">cvs</span> <span style="color: #007800;">tag</span>=RELENG_6_2<br />
src-all</div></div>
<p>если раскоментарить ports-all оно обновит еще и дерево портов, а мне долго ждать не хотелось. А в tag нужно вписать релиз, до которого будем апдейтить систему.
</li>
<li>Обновляем /usr/src:
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cvsup <span style="color: #660033;">-g</span> <span style="color: #660033;">-L</span> <span style="color: #000000;">2</span> <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>cvs-supfile</div></div>
</li>
<li>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>src</div></div>
</li>
<li>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">make</span> buildworld</div></div>
</li>
<li>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">make</span> buildkernel <span style="color: #007800;">KERNCONF</span>=MYKERNEL</div></div>
</li>
<li>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">make</span> installworld</div></div>
</li>
<li>А вот теперь надо ставить ядро&#8230; Но вдруг не взлетит? Потому будем ставить в два ребута.
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">make</span> installkernel <span style="color: #007800;">KERNCONF</span>=MYKERNEL <span style="color: #007800;">KODIR</span>=<span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>testkernel<br />
nextboot <span style="color: #660033;">-k</span> textkernel</div></div>
<p>Nextboot укажет загрузчику что надо загрузиться с указанным ядром лишь раз &#8211; потом грузить дефолтное.
</li>
<li>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">reboot</div></div>
</li>
<li>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">uname</span> <span style="color: #660033;">-a</span></div></div>
<p>и смотрим, получилось или нет. У меня получилось&#8230; И теперь ставим это ядро как основное</li>
<li>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">make</span> installkernel <span style="color: #007800;">KERNCONF</span>=MYKERNEL</div></div>
</li>
<li>Насколько я понял &#8211; не помешает сделать
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mergemaster</div></div>
<p>Это попытается обновить конфиги сервисов, а те что изменены &#8211; поможет смерджить</li>
<li>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">reboot</div></div>
</li>
</ul>
<p>И по идее все должно взлететь с новым ядром. У меня завелось.</p>
<p>PS: Я понимаю, что знатоки фри через это давно прошли, но я имел удовольствие делать это впервые на сервере, стоящем далеко от меня в ДЦ. И ехать туда не хотелось.</p>
<p>PS2: небольшое ИМХО. Пока ставил и обкатывал тестовый стенд  &#8211; долго ругался. Если до этого я не сильно-то любил фрю, то после этого шага невзлюбил еще больше. Вот возьмем линух &#8211; я поставил его на сервер за 30 минут и настроил за 1,5 часа до готовности к бою. С дефолтным ядром. На 6ГБ памяти. Но фря&#8230; для установки пакетов предлагает кучу зеркал. Половина дохлые. Ладно, допустим. При инсталяции каждого выбраного пакета она переспрашивает с какого зеркала его тянуть. При установке 15ти пакетов это бесит невероятно. Потом надо писать страшный make.conf, cvs-supfile. Чтобы обновить порты. Из которых дальше долго и нудно ставить софт.<br />
Давно уже было, но повторюсь &#8211; в ubuntu/debian можно поставить php4-cgi, php5-cgi &#8211; они не перекрывают друг друга и всем хорошо. Во фре перекрывают. надо ставить с префиксом. А потом все экстеншены с префиксом&#8230;<br />
В общем, впечатление осталось одно &#8211; надо долго прыгать с бубном в полночь вокруг горы доки.</p>
<p>PS3: у меня в dmesg небыло мессаджей о загрузке. И вот как определить что за железо в компе стоит? В линухе &#8211; lspci, lsusb, /proc. А во фре? Тот же проц &#8211; /cat/cpuinfo &#8211; как?</p>
<p>PS4: это не призыв к холивору =)</p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2007/11/22/freebsd-upgrade/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>to find magic</title>
		<link>http://dmitry.shaposhnik.name/2007/09/16/to-find-magic/</link>
		<comments>http://dmitry.shaposhnik.name/2007/09/16/to-find-magic/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 14:04:17 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://0804team.kiev.ua/dm/blog/2007/09/16/to-find-magic/</guid>
		<description><![CDATA[Как удалить все логи, которые старше трех дней? В *NIX это можно сделать скриптом в одну строку:
# cat ./clean_logs.sh 
#!/bin/sh

DIR=/usr/local/www/data/www.example.com/cron

/usr/bin/find $DIR -maxdepth 3 -mindepth 1 -type f -name &#34;*.log&#34; -ctime +3 -print0 &#124; xargs -r -0 /bin/rm -f
Собственно, так файлики удалятся из текущей папки и из подпапок.
]]></description>
			<content:encoded><![CDATA[<p>Как удалить все логи, которые старше трех дней? В *NIX это можно сделать скриптом в одну строку:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># cat ./clean_logs.sh </span><br />
<span style="color: #666666; font-style: italic;">#!/bin/sh</span><br />
<br />
<span style="color: #007800;">DIR</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>www.example.com<span style="color: #000000; font-weight: bold;">/</span>cron<br />
<br />
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #007800;">$DIR</span> <span style="color: #660033;">-maxdepth</span> <span style="color: #000000;">3</span> <span style="color: #660033;">-mindepth</span> <span style="color: #000000;">1</span> <span style="color: #660033;">-type</span> f <span style="color: #660033;">-name</span> <span style="color: #ff0000;">&quot;*.log&quot;</span> <span style="color: #660033;">-ctime</span> +<span style="color: #000000;">3</span> <span style="color: #660033;">-print0</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-r</span> <span style="color: #660033;">-0</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span></div></div>
<p>Собственно, так файлики удалятся из текущей папки и из подпапок.</p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2007/09/16/to-find-magic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL, FreeBSD and incorrect time</title>
		<link>http://dmitry.shaposhnik.name/2007/09/04/mysql-freebsd-and-incorrect-time/</link>
		<comments>http://dmitry.shaposhnik.name/2007/09/04/mysql-freebsd-and-incorrect-time/#comments</comments>
		<pubDate>Tue, 04 Sep 2007 17:44:59 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://0804team.kiev.ua/dm/blog/2007/09/04/mysql-freebsd-and-incorrect-time/</guid>
		<description><![CDATA[Баг: выполняем в консоли
$date
Tue Sep &#160;4 20:26:45 EEST 2007
а выполнив в mysql
SELECT now&#40;&#41;;
+---------------------+
&#124; now&#40;&#41; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#124;
+---------------------+
&#124; 2007-09-04 17:26:45 &#124; 
+---------------------+
Сразу понятно, что проблема во временных зонах. И правда,
&#160;SHOW VARIABLES LIKE 'system_time_zone';
+------------------+-------+
&#124; Variable_name &#160; &#160;&#124; Value &#124;
+------------------+-------+
&#124; system_time_zone &#124; &#160;UTC &#160;&#124; 
+------------------+-------+
Бороться с этим можно двумя способами &#8211; или в [...]]]></description>
			<content:encoded><![CDATA[<p>Баг: выполняем в консоли</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">$date</span><br />
Tue Sep &nbsp;<span style="color: #000000;">4</span> <span style="color: #000000;">20</span>:<span style="color: #000000;">26</span>:<span style="color: #000000;">45</span> EEST <span style="color: #000000;">2007</span></div></div>
<p>а выполнив в mysql</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> now<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">---------------------+</span><br />
<span style="color: #66cc66;">|</span> now<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">---------------------+</span><br />
<span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">2007</span><span style="color: #66cc66;">-</span>09<span style="color: #66cc66;">-</span>04 <span style="color: #cc66cc;">17</span>:<span style="color: #cc66cc;">26</span>:<span style="color: #cc66cc;">45</span> <span style="color: #66cc66;">|</span> <br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">---------------------+</span></div></div>
<p>Сразу понятно, что проблема во временных зонах. И правда,</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #993333; font-weight: bold;">SHOW</span> <span style="color: #993333; font-weight: bold;">VARIABLES</span> <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'system_time_zone'</span>;<br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">------------------+-------+</span><br />
<span style="color: #66cc66;">|</span> Variable_name &nbsp; &nbsp;<span style="color: #66cc66;">|</span> Value <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">------------------+-------+</span><br />
<span style="color: #66cc66;">|</span> system_time_zone <span style="color: #66cc66;">|</span> &nbsp;UTC &nbsp;<span style="color: #66cc66;">|</span> <br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">------------------+-------+</span></div></div>
<p>Бороться с этим можно двумя способами &#8211; или в переменную окружения TZ перед запуском mysqld_safe установить значение EET (или в какой зоне находитесь Вы), или запуская mysql_safe с ключиком &#8211;timezone=EET.</p>
<p>Второе помогло.</p>
<p>Спасибо за наводку <a href="http://dkanze.livejournal.com">DKAnze</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2007/09/04/mysql-freebsd-and-incorrect-time/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ZendOptimizer with FreeBSD</title>
		<link>http://dmitry.shaposhnik.name/2007/09/03/zendoptimizer-with-freebsd/</link>
		<comments>http://dmitry.shaposhnik.name/2007/09/03/zendoptimizer-with-freebsd/#comments</comments>
		<pubDate>Mon, 03 Sep 2007 12:05:43 +0000</pubDate>
		<dc:creator>dm</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://0804team.kiev.ua/dm/blog/2007/09/03/zendoptimizer-with-freebsd/</guid>
		<description><![CDATA[Баг &#8211; не работает ZendOptimizer. При выполнении скрипта в браузере видим чистую страницу.
Наблюдения: Любопытно, но в консоли &#8220;php info.php&#8221; видим все чудесно. Очевидно, все прекрасно и с php-cgi. Опыт это доказал.
Данные: Итак, имеем 

ось FreeBSD example.com 6.2-RELEASE FreeBSD 6.2-RELEASE #0.
  
скрипты, которые зашифрованы ZendGuard-ом.
  
апач версии apache-2.2.4.
  
PHP версии 5.2.3.


Такие скрипты работают [...]]]></description>
			<content:encoded><![CDATA[<p>Баг &#8211; не работает ZendOptimizer. При выполнении скрипта в браузере видим чистую страницу.</p>
<p>Наблюдения: Любопытно, но в консоли &#8220;php info.php&#8221; видим все чудесно. Очевидно, все прекрасно и с php-cgi. Опыт это доказал.</p>
<p>Данные: Итак, имеем </p>
<ul>
<li>ось FreeBSD example.com 6.2-RELEASE FreeBSD 6.2-RELEASE #0.
  </li>
<li>скрипты, которые зашифрованы ZendGuard-ом.
  </li>
<li>апач версии apache-2.2.4.
  </li>
<li>PHP версии 5.2.3.
</li>
</ul>
<p>Такие скрипты работают только при установленном ZendOptimizer. На данный момент версия 3.3.</p>
<p>Лечение:<br />
Первое что я увидел &#8211; народ советует удалить Suhosin-патч, якобы мешает он. У меня его удаление не дало результата.<br />
Второе &#8211; народ сползал на апач 1.3 и все само собой лечилось. Но это же неинтересно <img src='http://dmitry.shaposhnik.name/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Я же дошел до того, что поставил к апачу mod_fcgid-2.1_1 и через него подключил php-cgi. Чудесным образом все заработало.</p>
<p>Вот что вышло в конфиге:</p>
<p>в /usr/local/etc/apache22/httpd.conf добавляем строку</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">LoadModule fcgid_module libexec/apache22/mod_fcgid.so</div></div>
<p>Потом чуть ниже добавляем вот такое:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;ifmodule mod_fcgid.c&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; AddHandler fcgid-script .fcgi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&lt;/ifmodule&gt;</div></div>
<p>Потом непосредственно в конфиге vhost&#8217;а добавляем вот такие строки:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AddType application/x-httpd-fastphp .php<br />
Action application/x-httpd-fastphp /cgi-bin/php</div></div>
<p>phpinfo теперь должен показать что он работает через CGI/FastCGI. И криптованые скрипты в такой конфигурации работают чудесно.</p>
]]></content:encoded>
			<wfw:commentRss>http://dmitry.shaposhnik.name/2007/09/03/zendoptimizer-with-freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
