<?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>Кибер-Фанк v2.0 &#187; howto</title>
	<atom:link href="http://www.shatlovsky.ru/category/howto/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shatlovsky.ru</link>
	<description>Information must be free</description>
	<lastBuildDate>Fri, 12 Aug 2011 09:06:30 +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>vim: внешние фильтры</title>
		<link>http://www.shatlovsky.ru/2010/04/29/vim-vneshnie-filtry/</link>
		<comments>http://www.shatlovsky.ru/2010/04/29/vim-vneshnie-filtry/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 12:40:16 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=186</guid>
		<description><![CDATA[Помимо сортировки, внешние команды можно использовать для любых манипуляций над всем документом или его фрагментом. Выполнение внешней команды на диапазоне: :{диапазон} ! {команда} При этом на STDIN команды подается содержимое диапазона, а затем диапазон заменяется выводом STDOUT команды. Несколько примеров. Форматирование всего исходного текста на perl с помощью perltidy: :% ! perltidy -es=4 -t -st [...]]]></description>
			<content:encoded><![CDATA[<p>Помимо <a href="http://www.shatlovsky.ru/2010/04/20/vim-sortirovka/">сортировки</a>, внешние команды можно использовать для любых манипуляций над всем документом или его фрагментом.</p>
<p>Выполнение внешней команды на диапазоне:</p>
<pre>:{диапазон} ! {команда}</pre>
<p>При этом на STDIN команды подается содержимое диапазона, а затем диапазон заменяется выводом STDOUT команды.</p>
<p>Несколько примеров.</p>
<p>Форматирование всего исходного текста на <code>perl</code> с помощью <code>perltidy</code>:</p>
<pre>:% ! perltidy -es=4 -t -st</pre>
<p>Отфильтровать с помощью команды <code>grep</code> все строки, содержащие символ "#" из строк 14-24:</p>
<pre>:14,24 ! grep -v &quot;\#&quot;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2010/04/29/vim-vneshnie-filtry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vim: сортировка</title>
		<link>http://www.shatlovsky.ru/2010/04/20/vim-sortirovka/</link>
		<comments>http://www.shatlovsky.ru/2010/04/20/vim-sortirovka/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 12:09:22 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=174</guid>
		<description><![CDATA[Сортировать в vim очень просто: :{диапазон}sort Диапазон подставится автоматически, если в визуальном режиме (V) выделить блок, а затем перейти в командный режим (:): :'&#60;,'&#62; Или для сортировки всего файла: :%sort Сортировка в обратном порядке: :%sort! Сортировка в прямом порядке, удаляя все дубликаты: :%sort -u Также для сортировки можно использовать внешние утилиты, например стандартный юниксовый sort: [...]]]></description>
			<content:encoded><![CDATA[<p>Сортировать в vim очень просто:</p>
<pre>:{диапазон}sort</pre>
<p>Диапазон подставится автоматически, если в визуальном режиме (<code>V</code>) выделить блок, а затем перейти в командный режим (<code>:</code>):</p>
<pre>:'&lt;,'&gt;</pre>
<p>Или для сортировки всего файла:</p>
<pre>:%sort</pre>
<p>Сортировка в обратном порядке:</p>
<pre>:%sort!</pre>
<p>Сортировка в прямом порядке, удаляя все дубликаты:</p>
<pre>:%sort -u</pre>
<p>Также для сортировки можно использовать внешние утилиты, например стандартный юниксовый <code>sort</code>:</p>
<pre>:%!sort --numeric-sort --reverse</pre>
<p>Ну и как обычно, читаем маны:</p>
<pre>:help :sort</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2010/04/20/vim-sortirovka/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>vim: избавляемся от dos-овых концов строк (\r\n -&gt; \n)</title>
		<link>http://www.shatlovsky.ru/2009/09/02/vim-izbavlyaemsya-ot-dos-ovyx-koncov-strok-rn-n/</link>
		<comments>http://www.shatlovsky.ru/2009/09/02/vim-izbavlyaemsya-ot-dos-ovyx-koncov-strok-rn-n/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 08:20:28 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[dos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=115</guid>
		<description><![CDATA[Если vim распознал dos-овые концы строк, и не показывает ^M, :set ff=unix :w Документацию по поводу опции fileformat почитать можно в разделе usr_23: :help usr_23 Если vim автоматически не распознал DOS line ends, то в конце строк будут символы ^M. Удалить их можно простой заменой: :%s/^M//g Символ ^M при этом вводится как Ctrl-V Ctrl-M.]]></description>
			<content:encoded><![CDATA[<ol>
<li>Если <code>vim</code> распознал dos-овые концы строк, и не показывает <code>^M</code>,
<pre>:set ff=unix
:w</pre>
<p>Документацию по поводу опции <code>fileformat</code> почитать можно в разделе <code>usr_23</code>:</p>
<pre>:help usr_23</pre>
</li>
<li> Если vim автоматически не распознал DOS line ends, то в конце строк будут символы <code>^M</code>. Удалить их можно простой заменой:
<pre>:%s/^M//g</pre>
<p>Символ <code>^M</code> при этом вводится как <code>Ctrl-V Ctrl-M</code>.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/09/02/vim-izbavlyaemsya-ot-dos-ovyx-koncov-strok-rn-n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bash: горячие клавиши</title>
		<link>http://www.shatlovsky.ru/2009/06/17/bash-goryachie-klavishi/</link>
		<comments>http://www.shatlovsky.ru/2009/06/17/bash-goryachie-klavishi/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 06:20:04 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=100</guid>
		<description><![CDATA[Полный мануал как обычно: man bash , ключевые слова в квадратных скобках: Перемещение: слово-назад – Alt-B [backward-word (M-b)] слово-вперед - Alt-W [forward-word (M-f)] начало-строки - Ctrl-A [beginning-of-line (C-a)] конец-строки - Ctrl-E [end-of-line (C-e)] Удаление: удалить-строку-вперед - Ctrl-K [kill-line (C-k)] - от курсора до конца строки удалить-строку-назад - Ctrl-U [unix-line-discard (C-u)] - от курсора до начала [...]]]></description>
			<content:encoded><![CDATA[<p>Полный мануал как обычно:
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">man</span> bash</pre>
<p>, ключевые слова в квадратных скобках:</p>
<p>Перемещение:<br />
<strong>слово-назад</strong> – Alt-B [backward-word (M-b)]<br />
<strong>слово-вперед</strong> - Alt-W [forward-word (M-f)]<br />
<strong>начало-строки</strong> - Ctrl-A [beginning-of-line (C-a)]<br />
<strong>конец-строки</strong> - Ctrl-E [end-of-line (C-e)]</p>
<p>Удаление:<br />
<strong>удалить-строку-вперед</strong> - Ctrl-K [kill-line (C-k)] - от курсора до конца строки<br />
<strong>удалить-строку-назад</strong> - Ctrl-U [unix-line-discard (C-u)] - от курсора до начала строки<br />
<strong>удалить-слово-вперед</strong> - Alt-D [kill-word (M-d)] - от курсора до конца слова<br />
<strong>удалить-слово-назад</strong> - Alt-Backspace [backward-kill-word (M-Rubout)] - от курсора до начала слова</p>
<p>(Обновляется. Последнее изменение: 17 июня 2009 г.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/06/17/bash-goryachie-klavishi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>linux: как узнать (проверить) key fingerprint?</title>
		<link>http://www.shatlovsky.ru/2009/06/08/linux-kak-uznat-proverit-key-fingerprint/</link>
		<comments>http://www.shatlovsky.ru/2009/06/08/linux-kak-uznat-proverit-key-fingerprint/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 11:45:59 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=96</guid>
		<description><![CDATA[Узнать fingerprint ключа можно при помощи команды ssh-keygen: # ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key 2048 e2:02:50:2b:d8:1f:ce:d4:18:07:02:7b:22:90:44:25 /etc/ssh/ssh_host_rsa_key.pub &#40;RSA&#41; По-умолчанию команда ищет публичный ключ и печатает для него fingerprint.]]></description>
			<content:encoded><![CDATA[<p>Узнать fingerprint ключа можно при помощи команды ssh-keygen:</p>
<pre class="bash"><span style="color: #808080; font-style: italic;"># <span style="color: #c20cb9; font-weight: bold;">ssh-keygen</span> -l -f /etc/<span style="color: #c20cb9; font-weight: bold;">ssh</span>/ssh_host_rsa_key</span>
<span style="color: #000000;">2048</span> e2:<span style="color: #000000;">02</span>:<span style="color: #000000;">50</span>:2b:d8:1f:ce:d4:<span style="color: #000000;">18</span>:<span style="color: #000000;">07</span>:<span style="color: #000000;">02</span>:7b:<span style="color: #000000;">22</span>:<span style="color: #000000;">90</span>:<span style="color: #000000;">44</span>:<span style="color: #000000;">25</span> /etc/<span style="color: #c20cb9; font-weight: bold;">ssh</span>/ssh_host_rsa_key.pub <span style="color: #7a0874; font-weight: bold;">&#40;</span>RSA<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre>
<p>По-умолчанию команда ищет публичный ключ и печатает для него fingerprint.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/06/08/linux-kak-uznat-proverit-key-fingerprint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание /etc/init.d/nginx на debian 5.0 lenny</title>
		<link>http://www.shatlovsky.ru/2009/06/05/sozdanie-etcinitdnginx-na-debian-50-lenny/</link>
		<comments>http://www.shatlovsky.ru/2009/06/05/sozdanie-etcinitdnginx-na-debian-50-lenny/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 07:05:14 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[config]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[заметки на полях]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/2009/06/05/sozdanie-etcinitdnginx-na-debian-50-lenny/</guid>
		<description><![CDATA[$ sudo vim /etc/init.d/nginx Вставляем нижеследующий код (помним про команду ‘set :paste’ для вставки в VIM): #!/bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $remote_fs $syslog $named $network $time # Required-Stop: $remote_fs $syslog $named $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start nginx at boot time [...]]]></description>
			<content:encoded><![CDATA[<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> vim /etc/init.d/nginx</pre>
<p>Вставляем нижеследующий код (помним про команду ‘set :paste’ для вставки в VIM):</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/sh</span>
<span style="color: #808080; font-style: italic;">### BEGIN INIT INFO</span>
<span style="color: #808080; font-style: italic;"># Provides:          nginx</span>
<span style="color: #808080; font-style: italic;"># Required-Start:    <span style="color: #007800;">$remote_fs</span> <span style="color: #007800;">$syslog</span> <span style="color: #007800;">$named</span> <span style="color: #007800;">$network</span> <span style="color: #007800;">$time</span></span>
<span style="color: #808080; font-style: italic;"># Required-Stop:     <span style="color: #007800;">$remote_fs</span> <span style="color: #007800;">$syslog</span> <span style="color: #007800;">$named</span> <span style="color: #007800;">$network</span></span>
<span style="color: #808080; font-style: italic;"># Default-Start:     <span style="color: #000000;">2</span> <span style="color: #000000;">3</span> <span style="color: #000000;">4</span> <span style="color: #000000;">5</span></span>
<span style="color: #808080; font-style: italic;"># Default-Stop:      <span style="color: #000000;">0</span> <span style="color: #000000;">1</span> <span style="color: #000000;">6</span></span>
<span style="color: #808080; font-style: italic;"># Short-Description: Start nginx at boot time</span>
<span style="color: #808080; font-style: italic;"># Description:       Enable service provided by nginx.</span>
<span style="color: #808080; font-style: italic;">### END INIT INFO</span>
<span style="color: #808080; font-style: italic;"># <span style="color: #007800;">$Id</span>$</span>
&nbsp;
<span style="color: #007800;">NGINXHOME=</span>/usr/<span style="color: #7a0874; font-weight: bold;">local</span>/nginx
<span style="color: #007800;">NGINXPID=</span><span style="color: #007800;">$NGINXHOME</span>/logs/nginx.pid
&nbsp;
<span style="color: #007800;">PATH=</span>/usr/<span style="color: #7a0874; font-weight: bold;">local</span>/sbin:/usr/<span style="color: #7a0874; font-weight: bold;">local</span>/bin:/sbin:/bin:/usr/sbin:/usr/bin
<span style="color: #007800;">DAEMON=</span><span style="color: #007800;">$NGINXHOME</span>/sbin/nginx
<span style="color: #007800;">NAME=</span>nginx
<span style="color: #007800;">DESC=</span>nginx
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> ! -x <span style="color: #007800;">$DAEMON</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
   <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Couldn't find $DAEMON. Please set path to DAEMON.&quot;</span>
   <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Include nginx defaults <span style="color: #000000; font-weight: bold;">if</span> available</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -f /etc/default/nginx <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span>
	. /etc/default/nginx
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">set</span> -e
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
  start<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> -n <span style="color: #ff0000;">&quot;Starting $DESC: &quot;</span>
	start-stop-daemon --start --pidfile <span style="color: #007800;">$NGINXPID</span> \
		--<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span> -- <span style="color: #007800;">$DAEMON_OPTS</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$NAME.&quot;</span>
	;;
  stop<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> -n <span style="color: #ff0000;">&quot;Stopping $DESC: &quot;</span>
	start-stop-daemon --stop --pidfile <span style="color: #007800;">$NGINXPID</span> \
		--<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$NAME.&quot;</span>
	;;
  restart|force-reload<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> -n <span style="color: #ff0000;">&quot;Restarting $DESC: &quot;</span>
	start-stop-daemon --stop --pidfile \
		<span style="color: #007800;">$NGINXHOME</span>/run/<span style="color: #007800;">$NAME</span>.pid --<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span>
	<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
	start-stop-daemon --start --pidfile \
		<span style="color: #007800;">$NGINXPID</span> --<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span> -- <span style="color: #007800;">$DAEMON_OPTS</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$NAME.&quot;</span>
	;;
  reload<span style="color: #7a0874; font-weight: bold;">&#41;</span>
      <span style="color: #7a0874; font-weight: bold;">echo</span> -n <span style="color: #ff0000;">&quot;Reloading $DESC configuration: &quot;</span>
      start-stop-daemon --stop --signal HUP --pidfile <span style="color: #007800;">$NGINXPID</span> \
          --<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #007800;">$DAEMON</span>
      <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$NAME.&quot;</span>
      ;;
  *<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #007800;">N=</span>/etc/init.d/<span style="color: #007800;">$NAME</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: $N {start|stop|restart|force-reload}&quot;</span> &gt;&amp;<span style="color: #000000;">2</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
	;;
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span></pre>
<p>Сохраняем скрипт и выходим из vim.</p>
<p>Делаем скрипт исполняемым:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> /etc/init.d/nginx</pre>
<p>Указываем, что <em>nginx</em> нужно запускать при запуске и остановке сервера:</p>
<pre class="bash">$  <span style="color: #c20cb9; font-weight: bold;">sudo</span> /usr/sbin/update-rc.d -f nginx defaults</pre>
<p>UPD: Блок, заключенный между строками
<pre class="bash"><span style="color: #808080; font-style: italic;">### BEGIN INIT INFO</span>
<span style="color: #808080; font-style: italic;">### END INIT INFO</span></pre>
<p> обеспечивает LSB-совместимость. Подробнее см. <a href="http://wiki.debian.org/LSBInitScripts">http://wiki.debian.org/LSBInitScripts</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/06/05/sozdanie-etcinitdnginx-na-debian-50-lenny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Установка nginx на debian 5.0 lenny</title>
		<link>http://www.shatlovsky.ru/2009/06/04/ustanovka-nginx-na-debian-50-lenny/</link>
		<comments>http://www.shatlovsky.ru/2009/06/04/ustanovka-nginx-na-debian-50-lenny/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 15:52:01 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[заметки на полях]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/2009/06/04/ustanovka-nginx-na-debian-50-lenny/</guid>
		<description><![CDATA[На "пустом" свежеустановленном Debian не хватает ряда инструментов и библиотек для сборки и установки nginx. Ставим gcc, make, и компания: $ sudo apt-get install build-essential Библиотеки для сборки nginx: $ sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev Для поддержки встроенного Perl добавляем: $ sudo apt-get install libperl-dev Собственно процесс сборки и установки (вместо 0.7.XX [...]]]></description>
			<content:encoded><![CDATA[<p>На "пустом" свежеустановленном Debian не хватает ряда инструментов и библиотек для сборки и установки nginx.</p>
<p>Ставим gcc, make, и компания:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> build-essential</pre>
<p>Библиотеки для сборки nginx:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev</pre>
<p>Для поддержки встроенного Perl добавляем:</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> libperl-dev</pre>
<p>Собственно процесс сборки и установки (вместо 0.7.XX впишите номер актуальной версии):</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http://sysoev.ru/nginx/nginx<span style="color: #000000;">-0.7</span>.XX.<span style="color: #c20cb9; font-weight: bold;">tar</span>.gz
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> zxvf nginx<span style="color: #000000;">-0.7</span>.XX.<span style="color: #c20cb9; font-weight: bold;">tar</span>.gz
$ <span style="color: #c20cb9; font-weight: bold;">ln</span> -s nginx<span style="color: #000000;">-0.7</span>.XX nginx
$ <span style="color: #7a0874; font-weight: bold;">cd</span> nginx
$ ./configure \
--<span style="color: #007800;">prefix=</span>/usr/<span style="color: #7a0874; font-weight: bold;">local</span>/nginx \
--with-cc-<span style="color: #007800;">opt=</span><span style="color: #ff0000;">&quot;-I /usr/include&quot;</span> \
--with-ld-<span style="color: #007800;">opt=</span><span style="color: #ff0000;">&quot;-L /usr/lib&quot;</span> \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_perl_module  \
--with-http_ssl_module
&nbsp;
$ <span style="color: #c20cb9; font-weight: bold;">make</span> &amp;&amp; <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
&nbsp;</pre>
<p>Обратите внимание, параметры
<pre class="bash">--with-cc-<span style="color: #007800;">opt=</span><span style="color: #ff0000;">&quot;-I /usr/include&quot;</span> --with-ld-<span style="color: #007800;">opt=</span><span style="color: #ff0000;">&quot;-L /usr/lib&quot;</span></pre>
<p> указывают на расположение системных заголовков и библиотек, без них configure не видит ряда системных библиотек.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/06/04/ustanovka-nginx-na-debian-50-lenny/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Unix: Поиск и замена во многих файлах одновременно</title>
		<link>http://www.shatlovsky.ru/2009/02/09/poisk-i-zamena-vo-mnogix-fajlax-odnovremenno/</link>
		<comments>http://www.shatlovsky.ru/2009/02/09/poisk-i-zamena-vo-mnogix-fajlax-odnovremenno/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 14:15:10 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[awk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=75</guid>
		<description><![CDATA[Задача: найти все файлы содержащие OLDTEXT, и заменить OLDTEXT на NEWTEXT. UPD2:Решение, предложенное ocehb: grep -rl OLDTEXT . &#124; grep -Ev '(~&#124;.o&#124;.a)$' &#124; grep -Ev '/.svn/' &#124; xargs perl -i -pe &#34;s/OLD_TEXT/NEW_TEXT/g;&#34; UPD1:Вариант без vim: grep -HR OLDTEXT ./ &#124; awk '{print $1}' &#124; sed 's/:.*$//' &#124; grep -v '~' &#124; sort &#124; uniq &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Задача: найти все файлы содержащие <em>OLDTEXT</em>, и заменить <em>OLDTEXT</em> на <em>NEWTEXT</em>.</p>
<p><strong>UPD2:</strong>Решение, предложенное <a href="http://ocehb.livejournal.com/51745.html">ocehb</a>:</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">grep</span> -rl OLDTEXT . | <span style="color: #c20cb9; font-weight: bold;">grep</span> -Ev <span style="color: #ff0000;">'(~|.o|.a)$'</span> | <span style="color: #c20cb9; font-weight: bold;">grep</span> -Ev <span style="color: #ff0000;">'/.svn/'</span> | <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #c20cb9; font-weight: bold;">perl</span> -i -pe <span style="color: #ff0000;">&quot;s/OLD_TEXT/NEW_TEXT/g;&quot;</span></pre>
<p><strong>UPD1:</strong>Вариант без vim:</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">grep</span> -HR OLDTEXT ./ | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span> | <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/:.*$//'</span> | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #ff0000;">'~'</span> | <span style="color: #c20cb9; font-weight: bold;">sort</span> | <span style="color: #c20cb9; font-weight: bold;">uniq</span> | <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #c20cb9; font-weight: bold;">perl</span> -i -pe <span style="color: #ff0000;">&quot;s/OLD_TEXT/NEW_TEXT/g;&quot;</span></pre>
<p>Изначально предложенное решение с vim:</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">grep</span> -HR OLDTEXT ./ | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span> | <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/:.*$//'</span> | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #ff0000;">'~'</span> | <span style="color: #c20cb9; font-weight: bold;">sort</span> | <span style="color: #c20cb9; font-weight: bold;">uniq</span> | <span style="color: #c20cb9; font-weight: bold;">xargs</span> vim -p</pre>
<p>В открывшемся окне <code>vim</code> командуем:</p>
<pre class="bash">:tabdo %s/OLDTEXT/NEWTEXT/g</pre>
<p> (заменить OLDTEXT на NEWTEXT во всех вкладках)</p>
<pre class="bash">:xa</pre>
<p> (записать изменения во всех вкладках)<br />
либо</p>
<pre class="bash">:qa!</pre>
<p> (отменить изменения во всех вкладках)</p>
<p>Ссылки по теме:</p>
<ol>
<li><a href="http://vimdoc.sourceforge.net/cgi-bin/vimfaq2html3.pl">VIM FAQ</a></li>
<li><a href="http://vim.wikia.com/wiki/Save_all_open_buffers_at_once">Save all open buffers at once</a></li>
<li><a href="http://linsovet.com/vim-sudo">Сохранение файла без прав на запись в vim используя sudo</a></li>
<li><a href="http://mailman.lug.org.uk/pipermail/scarborough/2004-December/001792.html">[SLUG] Vim. Search and replace in multiple files</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2009/02/09/poisk-i-zamena-vo-mnogix-fajlax-odnovremenno/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ubuntu: обновляем систему до последнего релиза</title>
		<link>http://www.shatlovsky.ru/2008/12/18/ubuntu-obnovlyaem-sistemu-do-poslednego-reliza/</link>
		<comments>http://www.shatlovsky.ru/2008/12/18/ubuntu-obnovlyaem-sistemu-do-poslednego-reliza/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 22:48:30 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=68</guid>
		<description><![CDATA[Инструкция по обновлению: http://www.ubuntu.com/getubuntu/upgrading Поехали..]]></description>
			<content:encoded><![CDATA[<p>Инструкция по обновлению:<br />
<a href="http://www.ubuntu.com/getubuntu/upgrading">http://www.ubuntu.com/getubuntu/upgrading</a></p>
<p>Поехали..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2008/12/18/ubuntu-obnovlyaem-sistemu-do-poslednego-reliza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress бэкенд: устанавливаем правильный REMOTE_ADDR для комментариев</title>
		<link>http://www.shatlovsky.ru/2008/12/12/wordpress-comment-remote_addr/</link>
		<comments>http://www.shatlovsky.ru/2008/12/12/wordpress-comment-remote_addr/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 09:06:45 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.shatlovsky.ru/?p=59</guid>
		<description><![CDATA[В случае, если WordPress живет на бекенд-сервере, например за акселератором nginx, при настройках по-умолчанию комментарии будут содержать вместо IP отправителя IP фронтенда: From: wordpress@shatlovsky.ru Fri, Nov 21, 2008 at 7:59 AM To: shatlovsky@gmail.com Новый комментарий к записи #22 "Макросы RCS" ожидает одобрения http://shatlovsky.ru/blog/2008/10/13/makrosy-rcs/ Автор : evikalley (IP: 10.1.0.1 , 10.1.0.1) E-mail: URL : http:// Whois [...]]]></description>
			<content:encoded><![CDATA[<p>В случае, если WordPress живет на бекенд-сервере, например за акселератором <code>nginx</code>, при настройках по-умолчанию комментарии будут содержать вместо IP отправителя IP фронтенда:</p>
<pre>From: wordpress@shatlovsky.ru              Fri, Nov 21, 2008 at 7:59 AM
To: shatlovsky@gmail.com
Новый комментарий к записи #22 "Макросы RCS" ожидает одобрения

http://shatlovsky.ru/blog/2008/10/13/makrosy-rcs/

Автор : evikalley (IP: 10.1.0.1 , 10.1.0.1)
E-mail: <spam-removed>
URL   : http://<spam-removed>
Whois  : http://ws.arin.net/cgi-bin/whois.pl?queryinput=10.1.0.1
Комментарий:
Спасибо! Буду теперь заходить на этот блог каждый день!</pre>
<p>Видим, что вместо IP спамера записан IP фронтенд-сервера (10.1.0.1).</p>
<p>Решение этой проблемы заключается в подстановке корректного адреса в переменную <code>$_SERVER["REMOTE_ADDR"]</code> (в понятиях PHP, на котором написан WordPress). Корректный адрес может быть в переменных <code>HTTP_X_FORWARDED_FOR</code>, <code>X_REAL_IP</code> и некоторых других.</p>
<p>Решим задачу так, чтобы:</p>
<ol>
<li>не трогать код WordPress;</li>
<li>это работало во всех наших скриптах.</li>
</ol>
<p>Для этого воспользуемся фичей php autoprepepend (файл, который добавляется и исполняется перед каждым php-скриптом). Скрипт (автор <a href="http://www.grantburton.com/tag/http_x_forwarded_for/">Grant Burton</a>), кладем в любое место сайта:</code></p>
<p><code>autoprepend.inc.php</code>:</p>
<pre class="php"><span style="color: #808080; font-style: italic;">/* By Grant Burton @ BURTONTECH.COM (11-30-2008): IP-Proxy-Cluster Fix */</span>
<span style="color: #000000; font-weight: bold;">function</span> checkIP<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<a href="http://www.php.net/empty"><span style="color: #000066;">empty</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; <a href="http://www.php.net/ip2long"><span style="color: #000066;">ip2long</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span>!=<span style="color: #cc66cc;">-1</span> &amp;&amp; <a href="http://www.php.net/ip2long"><span style="color: #000066;">ip2long</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span>!=<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #0000ff;">$private_ips</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a> <span style="color: #66cc66;">&#40;</span>
		<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'0.0.0.0'</span>,<span style="color: #ff0000;">'2.255.255.255'</span><span style="color: #66cc66;">&#41;</span>,
		<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'10.0.0.0'</span>,<span style="color: #ff0000;">'10.255.255.255'</span><span style="color: #66cc66;">&#41;</span>,
		<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'127.0.0.0'</span>,<span style="color: #ff0000;">'127.255.255.255'</span><span style="color: #66cc66;">&#41;</span>,
		<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'169.254.0.0'</span>,<span style="color: #ff0000;">'169.254.255.255'</span><span style="color: #66cc66;">&#41;</span>,
		<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'172.16.0.0'</span>,<span style="color: #ff0000;">'172.31.255.255'</span><span style="color: #66cc66;">&#41;</span>,
		<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'192.0.2.0'</span>,<span style="color: #ff0000;">'192.0.2.255'</span><span style="color: #66cc66;">&#41;</span>,
		<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'192.168.0.0'</span>,<span style="color: #ff0000;">'192.168.255.255'</span><span style="color: #66cc66;">&#41;</span>,
		<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'255.255.255.0'</span>,<span style="color: #ff0000;">'255.255.255.255'</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #b1b100;">foreach</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$private_ips</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$r</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #0000ff;">$min</span> = <a href="http://www.php.net/ip2long"><span style="color: #000066;">ip2long</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$r</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #0000ff;">$max</span> = <a href="http://www.php.net/ip2long"><span style="color: #000066;">ip2long</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$r</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/ip2long"><span style="color: #000066;">ip2long</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span> &gt;= <span style="color: #0000ff;">$min</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/ip2long"><span style="color: #000066;">ip2long</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span> &lt;= <span style="color: #0000ff;">$max</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> determineIP<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>checkIP<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_CLIENT_IP&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_CLIENT_IP&quot;</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">foreach</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/explode"><span style="color: #000066;">explode</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;,&quot;</span>,<span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_X_FORWARDED_FOR&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>checkIP<span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/trim"><span style="color: #000066;">trim</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$ip</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>checkIP<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_X_FORWARDED&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_X_FORWARDED&quot;</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #66cc66;">&#40;</span>checkIP<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_X_CLUSTER_CLIENT_IP&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_X_CLUSTER_CLIENT_IP&quot;</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #66cc66;">&#40;</span>checkIP<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_FORWARDED_FOR&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_FORWARDED_FOR&quot;</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #66cc66;">&#40;</span>checkIP<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_FORWARDED&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;HTTP_FORWARDED&quot;</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;REMOTE_ADDR&quot;</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">//Override server variable for WordPress comments</span>
<span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;REMOTE_ADDR&quot;</span><span style="color: #66cc66;">&#93;</span> = determineIP<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>Далее редактируем .htaccess в корне сайта, добавляем туда ссылку на этот скрипт:</p>
<pre class="bash">php_value auto_prepend_file /home/username/htdocs/autoprepend.inc.php</pre>
<p>(путь надо скорректировать в соответствии с вашими настройками).</p>
<p>Готово! Теперь WordPress видит правильный IP комментатора.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2008/12/12/wordpress-comment-remote_addr/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

