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

<channel>
	<title>Технический блог о хостинге и веб-серверах</title>
	<atom:link href="http://vangerblog.awara.ru/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://vangerblog.awara.ru</link>
	<description>Вангерблог</description>
	<lastBuildDate>Mon, 18 Jan 2010 19:37:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ошибки конфигурирования nginx (или как правильно писать рерайты)</title>
		<link>http://vangerblog.awara.ru/?p=62</link>
		<comments>http://vangerblog.awara.ru/?p=62#comments</comments>
		<pubDate>Mon, 18 Jan 2010 19:36:46 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[Веб-серверы - Apache, Nginx]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[rewrite]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=62</guid>
		<description><![CDATA[© http://habrahabr.ru/blogs/nginx/74135/
Привет, хабралюди!
По долгу службы приходится работать с веб-разработчиками, которые иногда пишут свои скрипты с рерайтами, которые им приходится адаптировать для nginx. Мне же приходится разгребать то, что там написано.
Все желающие получить помощь по рерайтам могут задавать вопросы в комментариях, потом, наверно, из этого будет оформлен еще один пост.

Ошибка номер 1, самая фатальная.
Огромное количество раз [...]]]></description>
			<content:encoded><![CDATA[<p>© <a href="http://habrahabr.ru/blogs/nginx/74135/" target="_blank">http://habrahabr.ru/blogs/nginx/74135/</a></p>
<hr />Привет, хабралюди!</p>
<p>По долгу службы приходится работать с веб-разработчиками, которые иногда пишут свои скрипты с рерайтами, которые им приходится адаптировать для nginx. Мне же приходится разгребать то, что там написано.<span id="more-62"></span></p>
<p><em>Все желающие получить помощь по рерайтам могут задавать вопросы в комментариях, потом, наверно, из этого будет оформлен еще один пост.</em></p>
<p><a name="habracut"></a></p>
<h4>Ошибка номер 1, самая фатальная.</h4>
<p>Огромное количество раз упоминалась в рассылке. А именно — использование if на уровне location.<br />
Проблема в том, что if в location устроены не так, как мы представляем. Мы думаем, что приходит запрос, проверяется условие, если оно истинно — делаются поправки к конфигурации. А на деле все совсем иначе. При запуске nginx генерирует отдельные конфигурации location&#8217;ов для истинных и ложных условий в if. Несколько жутких примеров:</p>
<pre>location /
{
    set $true1 1; set $true2 1;
    if($true1) { proxy_pass http://127.0.0.1:8080; }
    if($true2) { set $expr 123; }
}</pre>
<p>Segmentation fault в рабочем процессе при попытке найти upstream для proxy_pass&#8217;a из первого if&#8217;a. А все дело в том, что он не унаследовался в location, где оба условия правильные.</p>
<pre>location /
{
    set $true 1;
    try_files /maintenance.html $uri @fallback;
    if($true) { set $expr 123; }
}
location @fallback
{
    proxy_pass 127.0.0.1:8080;
}</pre>
<p>Полное игнорирование try_files. Просто его нет в location, который получился при истинности выражения.</p>
<p>Под «set $expr 123;» можно понимать почти любое выражение в if, не задающее обработчика для запроса — все set, limit_rate и прочее.</p>
<p>Однако, в одном случае использовать if в location все-таки можно — если сразу же после if&#8217;a мы уйдем из этого location. Сделать это можно двумя способами:<br />
1) Через rewrite… last;</p>
<pre>location /
{
    try_files /maintenance.html $uri @fallback;
    if($cookie_uid = '1') { rewrite ^ /user/panel last; }
}
location /user
{
    proxy_pass 127.0.0.1:8080;
}</pre>
<p>2) Через return &#8230;;</p>
<pre>location /
&lt;c
    try_files /maintenance.html $uri @fallback;
    if($cookie_bot = '1') { return 403; }
}
</pre>
<p>При этом мы можем через return как окончить обработку запроса, так и перейти в другой location, через error_page.<br />
Кстати, if на уровне server действует именно так, как мы ожидаем. При его использовании глобальных проблем возникать не должно.</p>
<h4>Ошибки номер 2, менее фатальные.</h4>
<p>После apache и его htaccess с RewriteRule и RewriteCond очень хочется запихнуть все в один location с if&#8217;ами, которые будут уводить обработку в другое место. Но это некрасиво, неправильно и неэффективно.</p>
<h5>Ошибка номер 2.1, об if (-e &#8230;)</h5>
<p>Специально для того, чтобы красиво записывать такие рерайты придумана специальная директива — try_files. В самом простом варианте ее обычно записывают так:<br />
<code>try_files $uri $uri/ @fallback</code><br />
что обозначает:<br />
1. Проверить, существует ли запрошенный файл. Если да — отдать его, если нет — идти далее.<br />
2. Проверить, существует ли директория с запрошенным именем. Если да — отдать ее, если нет — идти далее.<br />
3. Передать запрос на обработку в именованный location @fallback.</p>
<p>Внимание! В @fallback при использовании fastcgi не стоит делать rewrite. Достаточно лишь написать fastcgi_parm с требуемым скриптом. Таким образом, конструкция вроде<br />
<code>RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule ^(.*)$ index.php</code><br />
Превращается в</p>
<pre>root /path/to/root;
location / { try_files $uri $uri/ @fallback; }
location @fallback
{
    fastcgi_pass backend;
    include fastcgi_params;
    fastcgi_param script_FILENAME $document_root/index.php; # тут, кстати, злобный хабрапарсер съел слово S_C_R_I_P_T, будьте аккуратнее - регистр важен!
}
</pre>
<p>В случае использования как бекенда не FastCGI, а HTTP, можно написать это так:</p>
<pre>root /path/to/root;
location / { try_files $uri $uri/ /index.php; }
</pre>
<p>Нужно понимать, что все аргументы try_files, кроме последнего, будут восприниматься как простые файлы для отдачи, а последний аргумент — уже как новая цель (то есть, туда можно написать обрабатывающий uri или именованый location). Поэтому, попытка написать try_files $uri $uri/ /index_new.php /index_old.php не приведет ни к чему хорошему — вместо выполнения index_new.php будет отдано его содержимое.</p>
<p>С помощью try_files можно делать еще одну удивительную вещь — не редактируя конфигов, закрыть весь сайт на техобслуживание. Это делается прописыванием try_files /maintenance.html $uri $uri/ @fallback; и затем простым созданием/перемещением файла /maintenance.html с сообщением о технических работах. Это не даст ожидаемого спада производительности в связи с использованием open_file_cache, который так же кеширует и неудачные попытки открытия файла.</p>
<h5>Ошибка номер 2.2, об if ($uri ~ )</h5>
<p>Итак, есть достаточно простое правило — если в Вашей конфигурации есть строка, начинающаяся на «if ($uri ~», то nginx сконфигурирован неправильно. Вся логика проверки uri на что-то должна быть реализована через location, которые теперь поддерживают и выделения.<br />
<code>RewriteCond %{REQUEST_URI} ^/rss[0-9]{1-6}<br />
RewriteRule ^(.*)$ rss.php</code><br />
переходит в</p>
<pre>location ~ /rss[0-9]{1-6}
{
    fastcgi_pass backend;
    include fastcgi_params;
    fastcgi_param script_FILENAME $document_root/rss.php; # тут, кстати, злобный хабрапарсер съел слово S_C_R_I_P_T, будьте аккуратнее - регистр важен!
}</pre>
<h5>Ошибка номер 2.3, об if ($host ~ )</h5>
<p>Все, сказанное для if ($uri ~ ) так же верно для if ($host ~ ). Для использования этих правил просто создайте server с server_name в виде регэкспа!</p>
<h5>Не ошибка, но грабли с выделениями</h5>
<p>Если Вы отважились переписать конфиг с использованием выделений в server/location то непременно наткнетесь на небольшую проблему. Она заключается в том, что при входе в location с регекспом затираются серверные выделения, при входе в if или при использовании rewrite затираются выделения location.Увы, я не слишком сильно знаком с рерайтами apache чтобы предоставить код, поэтому опишу требуемое словами.<br />
<code>Требуется все запросы вида abc.mysite.com/xyz.php перенаправлять на <a href="http://mysite.com/abc/index.php?p=xyz">mysite.com/abc/index.php?p=xyz</a></code><br />
Для того, чтобы это работало, приходится писать вот так:</p>
<pre>server
{
    server_name ~ ^(.*)\.mysite\.com$;
    set $subdom $1;
    location ~ \/(.*)\.php
    {
        set $script $1;
        rewrite ^ http://mysite.com/$subdom/index.php?p=$script;
    }
}</pre>
<p>В следующих версиях nginx планируется для выделений на каждом уровне сделать отдельные префиксы (например, вышеописанный рерайт можно будет описать как</p>
<pre>rewrite ^ http://mysite.com/$sc_1/index.php?p=$lc_1;</pre>
<p>), но пока этого нет, так что приходится писать так.</p>
<p>Еще неплохой практикой является давание переменным осмысленных имен <img src='http://vangerblog.awara.ru/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<h4>Заключение</h4>
<p>Спасибо всем, кто дочитал пост до конца. Он получился достаточно длинным, но я хотел описать все максимально чисто и понятно.<br />
Разумеется, существуют и другие ошибки при конфигурировании — буферы, пути, но это — забота системного администратора, а не вебмастера.</p>
<p>Использованные материалы:<br />
<a href="http://www.lexa.ru/nginx-ru/">Русский список рассылки nginx</a><br />
<a href="http://sysoev.ru/nginx/docs">Документация nginx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=62</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Настройка nginx + apache на debian</title>
		<link>http://vangerblog.awara.ru/?p=59</link>
		<comments>http://vangerblog.awara.ru/?p=59#comments</comments>
		<pubDate>Mon, 18 Jan 2010 19:34:58 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[Веб-серверы - Apache, Nginx]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=59</guid>
		<description><![CDATA[© http://svdev.ru/blog/setup-nginx-apache-under-debian/
Основная задача – что бы apache слушал запросы на
127.0.0.1:81 #порт можно взять и другой, к примеру 8080
а nginx слушал запросы с внешних адресов на 80 порту, разбирал статику или еще какие действия выполнял, а остальные запросы прокидывал на apache на локальный адрес 127.0.0.1 и 81 порт
Установка nginx:





1


apt-get install nginx





Сначала настроим nginx для работы, дефолтный [...]]]></description>
			<content:encoded><![CDATA[<p>©<a href="http://svdev.ru/blog/setup-nginx-apache-under-debian/" target="_blank"> http://svdev.ru/blog/setup-nginx-apache-under-debian/</a></p>
<hr />Основная задача – что бы apache слушал запросы на<br />
<code>127.0.0.1:81 #порт можно взять и другой, к примеру 8080</code><br />
а nginx слушал запросы с внешних адресов на 80 порту, разбирал статику или еще какие действия выполнял, а остальные запросы прокидывал на apache на локальный адрес 127.0.0.1 и 81 порт<span id="more-59"></span></p>
<p>Установка nginx:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div>apt-get install nginx</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>Сначала настроим nginx для работы, дефолтный конфиг и создадим конфиги для все используемых сайтов.<br />
В самом конфиге (<code>/etc/nginx/nginx.conf</code>) получилось следующее:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26</div>
</td>
<td>
<div>user www-data;<br />
worker_processes  1;</p>
<p>error_log  /var/log/nginx/error.log;<br />
pid        /var/run/nginx.pid;</p>
<p>events {<br />
worker_connections  1024;<br />
}</p>
<p>http {<br />
include       /etc/nginx/mime.types;<br />
default_type  application/octet-stream;<br />
server_names_hash_bucket_size 64;<br />
access_log  /var/log/nginx/access.log;</p>
<p>sendfile        on;</p>
<p>keepalive_timeout  65;<br />
tcp_nodelay        on;</p>
<p>gzip  on;</p>
<p>include /etc/nginx/conf.d/*.conf;<br />
include /etc/nginx/sites-enabled/*;<br />
}</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>И проверяем что не закралась ошибка:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2<br />
3</div>
</td>
<td>
<div>sudo nginx -t<br />
[info] 31015#0: the configuration file /etc/nginx/nginx.conf syntax is ok<br />
[info] 31015#0: the configuration file /etc/nginx/nginx.conf was tested successfully</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>Далее правим дефолтный конфиг <code>/etc/nginx/sites-available/default</code>, для всех запросов. Так как запросы, кроме определенных сайтов нам не нужны, повесим их переадресацию на заглушку <code>/var/www/nginx-default/index.html</code>, больше нам здесь ничего не надо – 404 можно перекидывать сюда же:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12</div>
</td>
<td>
<div>server {<br />
listen   80;<br />
server_name  localhost;</p>
<p>access_log  /var/log/nginx/localhost.access.log;</p>
<p>location / {<br />
root /var/www/nginx-default;<br />
index index.html;<br />
}<br />
error_page      404     /index.html;<br />
}</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>В итоге все неразобранные запросы попадут на нашу заглушку: <a href="http://77.220.185.16/">http://77.220.185.16/</a>.</p>
<p>Далее создаем настройки для всех поддерживаемых ресурсов, по аналогии с apache конфиги хранятся в <code>/etc/nginx/sites-available/</code>, а подключенные в <code>/etc/nginx/sites-enabled/</code>. Создаем <code>/etc/nginx/sites-available/svdev.ru</code>:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28</div>
</td>
<td>
<div>server {<br />
listen   80;<br />
server_name svdev.ru www.svdev.ru;</p>
<p>access_log  /var/www/svdev.ru/logs/nginx-access.log;</p>
<p>location / {<br />
proxy_pass         http://127.0.0.1:81/; # делаем переадресацию запросов на apache<br />
proxy_redirect     off;</p>
<p>proxy_set_header   Host             $host;<br />
# Эти настройки необходимы, что бы из скриптов было видно реальные IP пользователя, а не фронт-части<br />
proxy_set_header   X-Real-IP        $remote_addr;<br />
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;</p>
<p>client_max_body_size       10m;<br />
client_body_buffer_size    128k;</p>
<p>proxy_connect_timeout      90;<br />
proxy_send_timeout         90;<br />
proxy_read_timeout         90;</p>
<p>proxy_buffer_size          4k;<br />
proxy_buffers              4 32k;<br />
proxy_busy_buffers_size    64k;<br />
proxy_temp_file_write_size 64k;<br />
}<br />
}</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>Перовоначальные настройки позволяют просто перенаправлять запросы с nginx на apache. Настройкой правил для отдачи статики без участия apache и прочим займемся позже. После создания настроек их необходимо подключить, по аналогии apache утилит <code>a2ensite</code> и <code>a2dissite</code> нет и надо создать симлинк самому:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div>sudo ln -s /etc/nginx/sites-available/svdev.ru /etc/nginx/sites-enabled/svdev.ru</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>Далее заставляем apache слушать 81 порт с внутреннего интерфейса, поправив <code>/etc/apache2/ports.conf</code>:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2</div>
</td>
<td>
<div>NameVirtualHost *:81<br />
Listen 127.0.0.1:81</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>И необходимо подправить настройки хостов apache <code>/etc/apache2/sites-available/svdev.ru</code>:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2</div>
</td>
<td>
<div># заменить 80 порт на выбранный, у меня 81<br />
&lt;VirtualHost *:81&gt;</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>Таким образом попасть на apache теперь можно только через nginx, т. е. снаружи он недоступен!</p>
<p>Для удобства необходимо еще установить пакет</p>
<p><code><strong>libapache2-mod-rpaf</strong> - module for Apache2 which takes the last IP from the 'X-Forwarded-For' header</code></p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
</td>
<td>
<div>sudo apt-get install libapache2-mod-rpaf</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>Мне дополнительно настраивать ничего не пришлось, после установки в <code>$_SERVER["REMOTE_ADDR"]</code> начал подставляться реальный IP посетителя, вместо 127.0.0.1 Дополнительную информацию по модулю можно найти погуглив, в документации или по ссылкам ниже.</p>
<p>Далее настроим ротацию логов. Сначала для nginx, приятно был удивлен, увидев <code>/etc/logrotate.d/nginx</code>, добавим туда еще один файл:</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14</div>
</td>
<td>
<div>/var/log/nginx/*.log {<br />
daily<br />
missingok<br />
rotate 2<br />
compress<br />
delaycompress<br />
notifempty<br />
create 640 root adm<br />
sharedscripts<br />
postrotate<br />
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`<br />
cat /var/log/nginx/error.log.1 | mail root<br />
endscript<br />
}</div>
</td>
</tr>
</tbody>
</table>
</div>
<p><code>cat /var/log/nginx/error.log.1 | mail root</code> – таким образом данные из последнего обработанного файла будут отправлену на почту рута, а уж куда она придет можно настраивать в <code>/etc/aliases</code></p>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=59</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx, ещё раз про кэширование</title>
		<link>http://vangerblog.awara.ru/?p=55</link>
		<comments>http://vangerblog.awara.ru/?p=55#comments</comments>
		<pubDate>Mon, 18 Jan 2010 19:30:26 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[Веб-серверы - Apache, Nginx]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=55</guid>
		<description><![CDATA[© http://habrahabr.ru/blogs/nginx/76315/
Иногда скорость роста проекта несколько выше чем скорость оптимизации веб-приложения или приобретение более мощного оборудования под backend.
Наиболее простая схема «распараллеливания» нагрузки — вынос основной нагрузки на несколько frontend. Раньше приходилось мучиться (или наслаждаться, кому как) с webdav&#8217;ами, кластерными ФС и прочими хитростями чтобы обеспечить актуальную информацию, так было до тех пор, пока не появился [...]]]></description>
			<content:encoded><![CDATA[<p>© <a href="http://habrahabr.ru/blogs/nginx/76315/" target="_blank">http://habrahabr.ru/blogs/nginx/76315/</a></p>
<hr />Иногда скорость роста проекта несколько выше чем скорость оптимизации веб-приложения или приобретение более мощного оборудования под backend.<span id="more-55"></span></p>
<p>Наиболее простая схема «распараллеливания» нагрузки — вынос основной нагрузки на несколько frontend. Раньше приходилось мучиться (или наслаждаться, кому как) с webdav&#8217;ами, кластерными ФС и прочими хитростями чтобы обеспечить актуальную информацию, так было до тех пор, пока не появился nginx, а точнее <strong>proxy_store</strong> и <strong>proxy_cache</strong> в нём.</p>
<p><a name="habracut"></a></p>
<p>В общем случае, схема работы выглядит следующим образом:<br />
Несколько frontend (дешевые сервера без raid и прочих взрослых примудростей) через round robin отдаются клиентам.<br />
frontend отдаёт с себя статику, проксирует и отдаёт с себя кэшированную динамику для гостей и осуществляет прозрачное проксирование для зарегистрированных пользователей.<br />
ТТХ backend в данном случае большого значения не имеет, вопрос правильной конфигурации его нужно обсуждать индивидуально. Дополнительное кэширование всего чего можно на backend приветствуется.</p>
<p>Преимущества такого подхода — в стоимости данной «кластеризации» за счёт бюджетных характеристик frontend. Отказ любого frontend не критичен, достаточно поднять его ipшку (при наличие такой возможности) на другом frontend или изменить конфигурацию DNS (что может чревато недоступностью для ряда пользователей). На практике, городской портал где видео\фото хранилище на 4Тбайт (занято на backend) на frontend&#8217;ах лежит не более 300Гбайт того, что реально запрашивают пользователи (чистить можно по atime но учитывая, что на frontend ФС монтируется с noaime то по дате создания файла). Статичное содержимое на backend генерируется с новым именем, модификация файла также приводит к созданию нового имени файла, чтобы frontend корректно работал.</p>
<p><code>http {<br />
proxy_cache_path /var/www/cache levels= keys_zone=mycache:150m;<br />
...<br />
}</code></p>
<p>server {<br />
#устанавливаем дефолтовый флаг, не кэшировать<br />
set $cached 0;<br />
listen server;<br />
server_name server *.server;<br />
#нужно чтобы отдавать красивую 500Ашипку с себя<br />
error_page 502 503 504 509 /500.html;<br />
#если где-то что-то забыли, то будет работать схема прозрачного проксирования<br />
error_page 404 = @nocached;</p>
<p>expires epoch;<br />
root /var/www/html;</p>
<p>location = /500.html {<br />
}</p>
<p>#динамику будем брать с frontend и если отсутствует, то скачивать<br />
location ~* ^.+\.(jpg|jpeg|gif|gz|zip|flv|rar|wmv|avi|css|swf|png|htc|ico|mpeg|mpg|txt|mp3|mov|js)$ {<br />
expires 1y;<br />
error_page 404 = @fetch;<br />
}</p>
<p>#кэшируем статику на себя<br />
location @fetch {<br />
proxy_pass httр://backend;<br />
proxy_store on;<br />
proxy_temp_path /var/www/_fetch;<br />
proxy_set_header Host mydomain;<br />
proxy_set_header If-Modified-Since &#8220;&#8221;;<br />
}</p>
<p>#для зарегистрированных проксируем прозрачно<br />
location @nocached {<br />
proxy_pass httр://backend;<br />
proxy_set_header Host $host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
}</p>
<p>#гостям проксируем и кэшируем<br />
location @cached {<br />
proxy_pass httр://backend;<br />
proxy_set_header Host $host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_cache mycache;<br />
proxy_cache_valid 200 301 302 304 5m;<br />
proxy_cache_key &#8220;$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri&#8221;;<br />
proxy_hide_header &#8220;Set-Cookie&#8221;;<br />
proxy_ignore_headers &#8220;Cache-Control&#8221; &#8220;Expires&#8221;;<br />
}</p>
<p>#иначе морда домена не будет работать<br />
location = / {<br />
return 404;<br />
}</p>
<p>location / {<br />
#если нет нашей куки<br />
if ($http_cookie !~ &#8220;userid&#8221; ) {<br />
set $cached 1;<br />
}</p>
<p>if ($request_method = POST) {<br />
set $cached 0;<br />
}</p>
<p>if ($request_method != GET) {<br />
set $cached 0;<br />
}</p>
<p>if ($cached = 1) {<br />
error_page 404 405 502 504 = @cached;<br />
break;<br />
}</p>
<p>if ($cached = 0) {<br />
error_page 404 405 502 504 = @nocached;<br />
break;<br />
}</p>
<p>}</p>
<p>}</p>
<p>Всё это дело служит на благо моего <a href="http://1nsk.ru/">новосибирского сайта</a></p>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=55</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Make Money with Web Hosting</title>
		<link>http://vangerblog.awara.ru/?p=52</link>
		<comments>http://vangerblog.awara.ru/?p=52#comments</comments>
		<pubDate>Thu, 14 Jan 2010 17:36:11 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[О построении хостинга]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=52</guid>
		<description><![CDATA[© http://webhostinggeeks.com/articles/How_to_Make_Money_with_Hosting.html
We all know that web hosting is the basis of all web sites. It helps us attract visitors, it displays what we are desperately trying to get across, and it allows us to survive in the cut throat internet world. While these are all important qualities that come with web hosting, there are many [...]]]></description>
			<content:encoded><![CDATA[<p>© <a href="http://webhostinggeeks.com/articles/How_to_Make_Money_with_Hosting.html" target="_blank">http://webhostinggeeks.com/articles/How_to_Make_Money_with_Hosting.html</a></p>
<hr />We all know that web hosting is the basis of all web sites. It helps us attract visitors, it displays what we are desperately trying to get across, and it allows us to survive in the cut throat internet world. While these are all important qualities that come with web hosting, there are many other opportunities. Dying to make extra cash? Surprisingly, web hosting can actually help with your bills. In a few simple steps, you will be on your way to a richer lifestyle.<span id="more-52"></span></p>
<p>Fortunately, there is a new trend in the web industry. Reseller Hosting, which consists of purchasing a web hosting package and reselling it for a larger price, has been making webmasters just a few cents richer. Although this sounds like a daunting task, it actually only requires a large amount of space. Once the webmaster acquires such a large server and bandwidth, he/she is able to divide it up among other people. As long as they are willing to pay a monthly fee, you will never get screwed over.</p>
<p>Regardless of how much money you want to make, purchasing this re-seller hosting does not cost much. For an average of $30/month, you can purchase enough space to make a profit. While all of these websites will be on a shared server, the majority of webmasters do not mind this downside. After all, not everyone can shell out thousands a month just to acquire their own dedicated server. Once you have found a few loyal customers who will not create any illegal material, you will be generating a profit every single month out of the year. Fortunately, until you stop your hosting, you will never be out of a job.</p>
<p>In order to sell this type of hosting, you absolutely need to network. Regrettably, there are many webmasters trying to follow the trend. For this reason alone, you should look in unpopulated areas. Try and find a website or forum that has not yet been tackled by other masses of website owners. For instance, find websites similar to your own. If you do not have one, look on webmaster-related forums such as Digital Point or Webmaster-Talk. These areas are populated with thousands of interested clients, who will be more than happy to jump on the bandwagon, if you do have a great deal.</p>
<p>Still desperately trying to find other ways to market? Many website owners advertise through blogs and buy text link ads. As a result, people will be more apt to find what you are offering. If this doesn&#8217;t work, you could even start marketing in a local newspaper or a newsletter that goes out to professional companies who are always looking for alternatives. Nevertheless, there are plenty of consumers out there. You just need to be creative and put in the effort, in order to get anywhere.</p>
<p>For years web hosting has been flooding the market. However, it has just recently become a form of revenue for webmasters who just don&#8217;t own their own web hosting company. It is a wonderful alternative to an additional part time job, especially if this is what you love to do. Networking with others, controlling a server, while working on your website certainly sounds like the perfect occupation.<br />
Copyright notice: This original article is the property of <a href="http://webhostinggeeks.com/">Web Hosting Geeks</a> (http://webhostinggeeks.com). Web Hosting Geeks provides independent customer and webmaster reviews of top 10 web hosting providers. <a href="http://webhostinggeeks.com/">Top web hosting</a> reviews, <a href="http://webhostinggeeks.com/">best web hosting</a> awards, web host rating, <a href="http://webhostinggeeks.com/">web hosting</a> articles and more.</p>
<p>Requirement: You must also post the above author information if you would like to republish this article!</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">http://hctraktor.borda.ru/</div>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=52</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Установка и настройка DNS сервера bind9 Ubuntu-Debian HOWTO</title>
		<link>http://vangerblog.awara.ru/?p=40</link>
		<comments>http://vangerblog.awara.ru/?p=40#comments</comments>
		<pubDate>Mon, 11 Jan 2010 18:58:39 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[NS - серверы имен]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=40</guid>
		<description><![CDATA[© http://sudouser.com/ustanovka&#8230;
В этом HOWTO я расскажу вам как настроить DNS сервер и создать в нем зоны для своего домена. Установка описана для дистрибутивов Ubuntu и Debian. Все пакеты из штатных репозиториев.
Установим сам DNS сервер bind9.
Код:

apt-get install bind9

Из соображений безопасности лучше запускать Bind в chroot среде, для этого проделайте несколько простых операций.
Остановим bind
Код:

/etc/init.d/bind9 stop

Отредактируйте файл /etc/default/bind9 [...]]]></description>
			<content:encoded><![CDATA[<p>© <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html" target="_blank">http://sudouser.com/ustanovka&#8230;</a></p>
<hr />В этом HOWTO я расскажу вам как настроить DNS сервер и создать в нем зоны для своего домена. Установка описана для дистрибутивов Ubuntu и Debian. Все пакеты из штатных репозиториев.<span id="more-40"></span></p>
<p>Установим сам DNS сервер bind9.<br />
Код:</p>
<blockquote><p><code><br />
apt-get install bind9<br />
</code></p></blockquote>
<p>Из соображений безопасности лучше запускать Bind в chroot среде, для этого проделайте несколько простых операций.</p>
<p>Остановим bind<br />
Код:</p>
<blockquote><p><code><br />
/etc/init.d/bind9 stop<br />
</code></p></blockquote>
<p>Отредактируйте файл /etc/default/bind9 , туда надо добавить строку о среде chroot которая будет находится у нас в /var/lib/named.<br />
Измените строку <strong>OPTIONS=&#8221; -u bind&#8221;</strong> на <strong>OPTIONS=&#8221;-u bind -t /var/lib/named&#8221;</strong><br />
Код:</p>
<blockquote><p><code><br />
vim /etc/default/bind9<br />
</code></p></blockquote>
<p>Файл после радактирования должен выглядеть так:<br />
Код:</p>
<blockquote><p><code><br />
OPTIONS="-u bind -t /var/lib/named"<br />
# Set RESOLVCONF=no to not run resolvconf<br />
RESOLVCONF=yes<br />
</code></p></blockquote>
<p>Теперь создадим все необходимые для работы bind9 директории.<br />
Код:</p>
<blockquote><p><code><br />
mkdir -p /var/lib/named/etc<br />
mkdir /var/lib/named/dev<br />
mkdir -p /var/lib/named/var/cache/bind<br />
mkdir -p /var/lib/named/var/run/bind/run<br />
</code></p></blockquote>
<p>Переместите директорию с конфигурацией bind9 из  /etc в  /var/lib/named/etc:<br />
Код:</p>
<blockquote><p><code><br />
mv /etc/bind /var/lib/named/etc<br />
</code></p></blockquote>
<p>Создадим символическую ссылку на новую директорию с конфигами bind на случай если в дальнейшем вы соберетесь обновить пакет, это поможет избежать проблем.<br />
Код:</p>
<blockquote><p><code><br />
ln -s /var/lib/named/etc/bind /etc/bind<br />
</code></p></blockquote>
<p>Создадим null и random девайсы и выставим правильные права на директории:<br />
Код:</p>
<blockquote><p><code><br />
mknod /var/lib/named/dev/null c 1 3<br />
mknod /var/lib/named/dev/random c 1 8<br />
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random<br />
chown -R bind:bind /var/lib/named/var/*<br />
chown -R bind:bind /var/lib/named/etc/bind<br />
</code></p></blockquote>
<p>Далее надо немного изменить стартовый скрипт демона sysklogd для того что бы сообщения bind попадали в syslog.<br />
Отредактировать надо файл /etc/init.d/sysklogd , измените там строку <strong>SYSLOGD=&#8221;-u syslog&#8221;</strong> на <strong>SYSLOGD=&#8221;-u syslog -a /var/lib/named/dev/log&#8221; </strong><br />
Код:</p>
<blockquote><p><code><br />
vim /etc/init.d/sysklogd<br />
</code></p></blockquote>
<p>Строка должна выглядеть так:<br />
Код:</p>
<blockquote><p><code><br />
[...]<br />
SYSLOGD="-u syslog -a /var/lib/named/dev/log"<br />
[...]<br />
</code></p></blockquote>
<p>Перезапустите демона sysklogd<br />
Код:</p>
<blockquote><p><code><br />
/etc/init.d/sysklogd restart<br />
</code></p></blockquote>
<p>Запустите bind9 и проверьте /var/log/syslog на наличие ошибок<br />
Код:</p>
<blockquote><p><code><br />
/etc/init.d/bind9 start<br />
</code></p></blockquote>
<p>Если вы все сделали правильно то ошибок быть не должно.</p>
<p>Теперь можно приступать к настройке зоны для нашего домена, например example.com</p>
<p>Создадим файл конфигурации для наших будущих зон и  отредактируем файл конфигурации bind<br />
Код:</p>
<blockquote><p><code><br />
touch /var/lib/named/etc/bind/myzones.conf<br />
chown bind:bind /var/lib/named/etc/bind/myzones.conf<br />
vim /var/lib/named/etc/bind/named.conf<br />
</code></p></blockquote>
<p>В конец файла впишите строку <strong>include &#8220;myzones.conf&#8221;;</strong><br />
Выглядеть это должно так<br />
Код:</p>
<blockquote><p><code><br />
[...]<br />
include "/etc/bind/named.conf.local";<br />
include "/etc/bind/myzones.conf";<br />
</code></p></blockquote>
<p>Теперь отредактируем файл конфигурации наших зон и добавим туда зону для домена example.com.<br />
Код:</p>
<blockquote><p><code><br />
vim /var/lib/named/etc/bind/myzones.conf<br />
</code></p></blockquote>
<p>Впишите в файл следующее содержимое<br />
Код:</p>
<blockquote><p><code><br />
zone "example.com" {<br />
type master;<br />
file "example.com";<br />
};<br />
</code></p></blockquote>
<p>Теперь надо создать файл нашей зоны example.com, выставить на него права и отредактировать его.<br />
Код:</p>
<blockquote><p><code><br />
touch /var/lib/named/etc/bind/example.com<br />
chown bind:bind /var/lib/named/etc/bind/example.com<br />
vim /var/lib/named/etc/bind/example.com<br />
</code></p></blockquote>
<p>Отредактируйте файл до состояния приведенного ниже, адреса замените на нужные вам, так же смените дату перед параметром <strong>; serial</strong> на текущую. последние цифры в строке с датой (01) обозначают сколько раз раз зона редактировалась за текущие сутки.<br />
Код:</p>
<blockquote><p><code><br />
$ORIGIN example.com.<br />
$TTL 86400      ; 1 day<br />
@              IN SOA  localhost. root.localhost. (<br />
2008041501 ; serial<br />
10800      ; refresh (3 hours)<br />
900        ; retry (15 minutes)<br />
604800     ; expire (1 week)<br />
86400      ; minimum (1 day)<br />
)<br />
@       IN      NS      localhost.<br />
@               IN A 192.168.0.1<br />
www          IN CNAME   example.com.<br />
</code></p></blockquote>
<p>После этого обновите конфигурацию bind командой<br />
Код:</p>
<blockquote><p><code><br />
rndc reload<br />
</code></p></blockquote>
<p>После чего можно проверить работоспособность сервера dns командой<br />
Код:</p>
<blockquote><p><code><br />
nslookup example.com 127.0.0.1<br />
</code></p></blockquote>
<p>Вы должны увидеть примерно следующее<br />
Код:</p>
<blockquote><p><code><br />
Server:         127.0.0.1<br />
Address:        127.0.0.1#53<br />
Name:   example.com<br />
Address: 192.168.0.1 </code></p></blockquote>
<p>На этом настройка завершена, я надеюсь у вас все получилось.<br />
Это не полное руководство по настройке сервера доменных имен bind9, вы можете ознакомится с документацией к нему по адресу <a title="Откроется в новом окне" rel="nofollow" href="http://sudouser.com/url/aHR0cDovL3d3dy5pc2Mub3JnL2luZGV4LnBsPy9zdy9iaW5kL2FybTkzLw==" target="_blank">http://www.isc.org</a></p>
<p>Популярность: 91%</p>
<p>11 Комментариев »</p>
<h3 id="comments">11 Responses to “Установка и настройка DNS сервера bind9 Ubuntu-Debian HOWTO”</h3>
<ol>
<li id="comment-572"><cite><a rel="external nofollow" href="http://sudouser.com/url/aHR0cDovLw==">hugomen</a></cite> on 30 Ноя 2008 at 23:05 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-572">#</a>у меня несколько вопросов<br />
1.  при уставновке  dns  имя компа какое?<br />
2.  какая запись в /etc/hosts ?</p>
<p>все делал по статье /etc/init.d/bind9 start [fail]<br />
посмотрел логи<br />
трабл с правами на файл /var/lib/named/etc/bind/named.conf</p>
<p>помогите разобраться</li>
<li id="comment-573"><cite><a rel="external nofollow" href="http://sudouser.com/url/aHR0cDovLw==">hugomen</a></cite> on 30 Ноя 2008 at 23:32 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-573">#</a>если не переносить все в /var , то  работает</li>
<li id="comment-574"><cite><a rel="external nofollow" href="http://sudouser.com/url/aHR0cDovLw==">kvazyman</a></cite> on 24 Дек 2008 at 22:20 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-574">#</a>Вот решение проблемы <img src="http://sudouser.com/wp-includes/images/smilies/icon_smile.gif" alt=":-)" /> как всегда при помощи Google <img src="http://sudouser.com/wp-includes/images/smilies/icon_smile.gif" alt=":-)" /><br />
<a title="http://www.howtoforge.org/forums/showthread.php?p=116893" rel="nofollow" href="http://sudouser.com/url/aHR0cDovL3d3dy5ob3d0b2ZvcmdlLm9yZy9mb3J1bXMvc2hvd3RocmVhZC5waHA/cD0xMTY4OTM=" target="_blank">http://www.howtoforge.org/forums/showthread.php?p=116893</a></p>
<p>нужно только подредактировать файл /etc/apparmor.d/usr.sbin.named и все</li>
<li id="comment-664"><cite><a rel="external nofollow" href="http://sudouser.com/url/aHR0cDovL3d3dy55YS5ydQ==">TrEK</a></cite> on 23 Апр 2009 at 10:34 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-664">#</a>Я вообще отключил apparmor.d и выбросил из автозагрузки./etc/init.d/apparmor stop<br />
update-rc.d -f apparmor remove</p>
<p>И в /etc/default/bind9 тоже строку: OPTIONS=” -u bind -t /var/lib/named” все таки вернул к ее первобытному OPTIONS=” -u bind”.</p>
<p>тогда все работает.<br />
Кстати в логах при запуске БИНДа можна увидеть , что он все таки запускаеться с флагом -t:<br />
“starting BIND 9.5.0-P2 -u bind -t /var/lib/named”</li>
<li id="comment-692"><cite><a rel="external nofollow" href="http://sudouser.com/url/aHR0cDovLw==">EsTaF</a></cite> on 04 Июн 2009 at 18:50 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-692">#</a>“Впишите в файл следующее содержимое<br />
Код:</p>
<p>zone “example.com” {<br />
type master;<br />
file “example.com”;<br />
};”</p>
<p>что это за бред.</li>
<li id="comment-693"><cite><a rel="external nofollow" href="http://sudouser.com/">Stepanoff</a></cite> on 04 Июн 2009 at 21:43 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-693">#</a>Мануал надо читать полностью, а не между строк. Это файл с описанием зон, он инклюдится в основной конфиг.</li>
<li id="comment-754"><cite>kitt</cite> on 02 Авг 2009 at 17:50 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-754">#</a>Кстати про арр аррmor и сhroot. Если вы настраиваете bind в chroot’е, то профиль бинда из апп армора можно смело отключать. По умолчанию этот профиль включен для бинда установленного в обычном порядке, без чрута. Для этого достаточно переместить файл с профилем бинда в папку disabledsudo mv /etc/apparmor/usr.sbin.named /etc/apparmor/disabledили удалить совсем. Иначе получается двойной презерватив )</li>
<li id="comment-779"><cite><a rel="external nofollow" href="http://sudouser.com/url/aHR0cDovL2hvd3RvbGludXgucnUvMjAwOS8wOC8yOC9ob3d0by0lZDElODMlZDElODElZDElODIlZDAlYjAlZDAlYmQlZDAlYmUlZDAlYjIlZDAlYmElZDAlYjAtJWQwJWI4LSVkMCViZCVkMCViMCVkMSU4MSVkMSU4MiVkMSU4MCVkMCViZSVkMCViOSVkMCViYSVkMCViMC1kbnMtJWQxJTgxJWQwJWI1JWQxJTgwJWQwJWIyJWQwJWI1JWQxJTgwJWQwJWI=">HowTo: Установка и настройка DNS сервера bind9 Ubuntu-Debian | Мануалы Linux</a></cite> on 28 Авг 2009 at 12:42 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-779">#</a>[…] с sudouser.com  Теги: bind9, Debian, DNS, […]</li>
<li id="comment-845"><cite><a rel="external nofollow" href="http://sudouser.com/url/aHR0cDovLw==">bnd</a></cite> on 15 Ноя 2009 at 01:48 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-845">#</a>Всё делал по данному мануалу в итоге следующее:<br />
@unix:~# nslookup example.com 127.0.0.1<br />
;; Got SERVFAIL reply from 127.0.0.1, trying next server<br />
;; Got SERVFAIL reply from 127.0.0.1, trying next server<br />
Server:		127.0.0.1<br />
Address:	127.0.0.1#53</p>
<p>** server can’t find example.com: SERVFAIL</p>
<p>Если так разобраться syslog что говорит:</p>
<p>Nov 15 02:39:57 unix named[15343]: received control channel command ’stop -p’<br />
Nov 15 02:39:57 unix named[15343]: shutting down: flushing changes<br />
Nov 15 02:39:57 unix named[15343]: stopping command channel on 127.0.0.1#953<br />
Nov 15 02:39:57 unix named[15343]: stopping command channel on ::1#953<br />
Nov 15 02:39:57 unix named[15343]: no longer listening on ::#53<br />
Nov 15 02:39:57 unix named[15343]: no longer listening on 127.0.0.1#53<br />
Nov 15 02:39:57 unix named[15343]: no longer listening on 62.122.105.23#53<br />
Nov 15 02:39:57 unix named[15343]: exiting<br />
Nov 15 02:39:57 unix named[15428]: starting BIND 9.6.1-P1 -u bind<br />
Nov 15 02:39:57 unix named[15428]: built with ‘–prefix=/usr’ ‘–mandir=/usr/share/man’ ‘–infodir=/usr/share/info’ ‘–sysconfdir=/etc/bind’ ‘–localstatedir=/var’ ‘–enable-threads’ ‘–enable-largefile’ ‘–with-libtool’ ‘–enable-shared’ ‘–enable-static’ ‘–with-openssl=/usr’ ‘–with-gssapi=/usr’ ‘–with-gnu-ld’ ‘–with-dlz-postgres=no’ ‘–with-dlz-mysql=no’ ‘–with-dlz-bdb=yes’ ‘–with-dlz-filesystem=yes’ ‘–with-dlz-ldap=yes’ ‘–with-dlz-stub=yes’ ‘–with-geoip=/usr’ ‘–enable-ipv6′ ‘CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2′ ‘LDFLAGS=-Wl,-Bsymbolic-functions’ ‘CPPFLAGS=’ ‘CXXFLAGS=-g -O2′ ‘FFLAGS=-g -O2′<br />
Nov 15 02:39:57 unix named[15428]: adjusted limit on open files from 1024 to 1048576<br />
Nov 15 02:39:57 unix named[15428]: found 1 CPU, using 1 worker thread<br />
Nov 15 02:39:57 unix named[15428]: using up to 4096 sockets<br />
Nov 15 02:39:57 unix named[15428]: loading configuration from ‘/etc/bind/named.conf’<br />
Nov 15 02:39:57 unix named[15428]: using default UDP/IPv4 port range: [1024, 65535]<br />
Nov 15 02:39:57 unix named[15428]: using default UDP/IPv6 port range: [1024, 65535]<br />
Nov 15 02:39:57 unix named[15428]: listening on IPv6 interfaces, port 53<br />
Nov 15 02:39:57 unix named[15428]: listening on IPv4 interface lo, 127.0.0.1#53<br />
Nov 15 02:39:57 unix named[15428]: listening on IPv4 interface ppp0, 62.122.105.23#53<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: 254.169.IN-ADDR.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: 2.0.192.IN-ADDR.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone:<br />
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: D.F.IP6.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: 8.E.F.IP6.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: 9.E.F.IP6.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: A.E.F.IP6.ARPA<br />
Nov 15 02:39:57 unix named[15428]: automatic empty zone: B.E.F.IP6.ARPA<br />
Nov 15 02:39:57 unix named[15428]: command channel listening on 127.0.0.1#953<br />
Nov 15 02:39:57 unix named[15428]: command channel listening on ::1#953<br />
Nov 15 02:39:57 unix named[15428]: zone 0.in-addr.arpa/IN: loaded serial 1<br />
Nov 15 02:39:57 unix named[15428]: zone 127.in-addr.arpa/IN: loaded serial 1<br />
Nov 15 02:39:57 unix named[15428]: zone 255.in-addr.arpa/IN: loaded serial 1<br />
Nov 15 02:39:57 unix named[15428]: zone example.com/IN: loading from master file example.com failed: file not found<br />
Nov 15 02:39:57 unix named[15428]: zone localhost/IN: loaded serial 2<br />
Nov 15 02:39:57 unix named[15428]: running</li>
<li id="comment-846"><cite><a rel="external nofollow" href="http://sudouser.com/">Stepanoff</a></cite> on 15 Ноя 2009 at 13:50 <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html#comment-846">#</a>Разбираться не надо, любой кто мало-мальски знает английский сразу увидит где ошибка.<br />
Nov 15 02:39:57 unix named[15428]: zone example.com/IN: loading from master file example.com failed: file not found</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=40</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Сервер дома — AMD, Debian x64, Bind9, Apache 2, PHP5, MySQL5, Trac, Subversion и море удовольствия</title>
		<link>http://vangerblog.awara.ru/?p=27</link>
		<comments>http://vangerblog.awara.ru/?p=27#comments</comments>
		<pubDate>Mon, 11 Jan 2010 18:25:01 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[О построении хостинга]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=27</guid>
		<description><![CDATA[© http://skazkin.habrahabr.ru/blog/45921/

Шило в известном месте всё никак не даёт мне покоя.
И решил я поэкспериментировать с установкой сервера дома. Итак, дано:

1. Домашний интернет с внешним ip на роутере, канал туда/обратно — 8 мбит, провайдер — QWERTY *
2. Бюджет не больше 10 тысяч рублей — чем меньше, тем лучше. **
3. Жгучее желание экспериментов и чего-нибудь эдакого ***
* [...]]]></description>
			<content:encoded><![CDATA[<div>© <a href="http://skazkin.habrahabr.ru/blog/45921/" target="_blank">http://skazkin.habrahabr.ru/blog/45921/</a></div>
<hr />
<div>Шило в известном месте всё никак не даёт мне покоя.<br />
И решил я поэкспериментировать с установкой сервера дома.<span id="more-27"></span> <strong>Итак, дано:</strong></div>
<div>
<p>1. Домашний интернет с внешним ip на роутере, канал туда/обратно — 8 мбит, провайдер — QWERTY *<br />
2. Бюджет не больше 10 тысяч рублей — чем меньше, тем лучше. **<br />
3. Жгучее желание экспериментов и <strong>чего-нибудь эдакого</strong> ***</p>
<p><sub><strong>*</strong> К сожалению, мой дом не подключает Корбина, у которой более широкие каналы. Приходится довольствоваться тем, что есть<br />
<strong>**</strong> Получилось путём более-менее реального подсчёта стоимости комплектующих на среднестатический компьютер<br />
<strong>***</strong> Для тех, кто хмыкнет и скажет — «эка невидаль, я такое регулярно делаю» — я не так часто что-то настраиваю, больше пишу под уже настроенное, и для меня это чистой воды развлечение — что-то сделать своими руками=)<br />
</sub><br />
Ну, все процедуры тут, под катом.</p>
<p><strong>Сразу хочу сказать, что у меня это работает — так, как есть. Дополнительно с бубном я не плясал — но тут вытяжки из моих гуглений и мануалокурений.</strong></p>
<p><strong>Вероятно, что-то можно настроить более гибко или качественно, и я крайне буду рад советам или решениям=)</strong></p>
<p><a name="habracut"></a><br />
Подумал, что надо покупать:</p>
<p>1. Материнская плата<br />
2. Процессор<br />
3. Жёсткий диск<br />
4. Память<br />
5. Корпус<br />
6. Кулер на процессор</p>
<p>Выбрал магазин Oldi, собрал online комплектующих на сумму как раз около 10 тысяч — упирая на Intel. Всю ночь ворочался, думал, и на следующее утро пересобрал заказ, упирая на AMD. Разница в деньгах получилась около двух тысяч, а AMD-конфигурация — более подверженная будущим апгрейдам. Например, на Socket 775 в Oldi не было материнских плат до 2k, позволяющих добить оперативку до 16 гигабайт. В общем, решил попробовать — ибо с AMD давно не имел дела.<br />
Проц — AMD x64 2.4 ггц, жёсткий диск взял один, SATAII на 320 гигабайт (как вариант — куплю ещё один расширю до рейд 1), памяти — Кингстон 800мгц, две планки по 2 гигабайта (поставились в Dual), самый дешевый корпус и кулер Igloo — не блистающий дороговизной, но вполне себе охлаждающий (за несколько дней температура не превысила 60 градусов, судя по sensors).</p>
<p>Торжественно с этим всем приехал домой, собрал, подключил к монитору, подключил клавиатуру, провод от роутера, внешний USB-привод, и через полчаса уже смотрел на свежепоставленный Debian.</p>
<p>Настроил переадресацию портов на роутере:</p>
<p><code>53 порт =&gt; Bind9<br />
80 порт =&gt; Apache<br />
21 порт =&gt; FTP<br />
22 порт =&gt; SSH<br />
</code></p>
<p>После чего исполнил три команды:</p>
<p><code>apt-get update<br />
apt-get upgrade<br />
apt-get install ssh<br />
</code></p>
<p>и улёгся на диван с ноутбуком, продолжая диалог с сервером уже через Putty.</p>
<p>Цели были прозаичны:</p>
<p>1. Bind9<br />
2. Apache2<br />
3. PHP5<br />
4. MySQL 5<br />
5. SVN<br />
6. Trac</p>
<p>Всё это предполагалось сделать на одном недавно купленном домене (предположим, habr.ru), который ещё не был нигде проделегирован.</p>
</div>
<div>
<h1>Bind9. Настройка чайника.</h1>
<p>Учитывая то, что о настройке Bind9 лишь слышал, — сразу полез в мануалы и примеры.<br />
В итоге настройку произвёл <a href="http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html">по этой инструкции</a>, изменив лишь настройку конкретной зоны для домена.<br />
Кроме того, мне хотелось сразу подключить <a href="http://www.google.com/a/">Google Applications</a> для домена, чтобы не иметь дел с настройкой sendmail — в настройках ниже они легко наблюдаются.<br />
Получилось следующее:</p>
<p>1. Создал папку /etc/bind/sites</p>
<p>2. В настройках /etc/bind/named.conf, в самом конце:</p>
<p><code>include "/etc/bind/named.conf.skazkin";<br />
</code></p>
<p>3. В /etc/bind/named.conf.skazkin:</p>
<p><code>zone "habr.ru" {<br />
type master;<br />
file "/etc/bind/sites/habr.ru";<br />
};<br />
</code></p>
<p>4. В /etc/bind/sites/habr.ru:</p>
<p><code>$ORIGIN habr.ru.<br />
$TTL 86400 ; 1 day<br />
@ IN SOA habr.ru. master.habr.com. (<br />
2008291104; serial<br />
10800 ; refresh (3 hours)<br />
3600 ; retry (15 minutes)<br />
3600000 ; expire (1 week)<br />
86400 ; minimum (1 day)<br />
)<br />
@ IN NS ns.habr.ru.<br />
@ IN NS ns.vds.ru.<br />
@ IN A 111.222.333.444<br />
@ IN MX 10 ASPMX.L.GOOGLE.COM.<br />
@ IN MX 20 ALT1.ASPMX.L.GOOGLE.COM.<br />
@ IN MX 20 ALT2.ASPMX.L.GOOGLE.COM.<br />
@ IN MX 30 ASPMX2.GOOGLEMAIL.COM.<br />
@ IN MX 30 ASPMX3.GOOGLEMAIL.COM.<br />
@ IN MX 30 ASPMX4.GOOGLEMAIL.COM.<br />
@ IN MX 30 ASPMX5.GOOGLEMAIL.COM.</code></p>
<p>ns IN A 111.222.333.444<br />
svn IN CNAME habr.ru.<br />
trac IN CNAME habr.ru.<br />
www IN CNAME habr.ru.</p>
<p>На что хватило понимания мануала.<br />
Непонятно было то, что при попытке прописать всё без @-знака, бинд переставал понимать, что от него хотят — ещё раз прорыв гугл, я подозреваю, что это из-за неправильных отступов (*hic*)?</p>
<p>В общем, тут я как-то вот выкрутился — факт остаётся фактом, домен проделегировался. Но об этом немного позже.</p>
<p>Помимо primary-зоны, мне понадобилось создать ещё и Slave. Пошёл на давно купленный VDS с как-то странно установленным дебианом, там прописал:</p>
<p>1. /etc/bind/named.conf<br />
<code>zone "habr.ru" {<br />
type slave;<br />
file "/var/cache/bind/habr.ru";<br />
masters {<br />
111.222.333.444;<br />
};<br />
};<br />
</code><br />
2. Соответственно, в /var/cache/bind/habr.ru всё то же, что и на домашнем сервере:</p>
<p><code>$ORIGIN habr.ru.<br />
$TTL 86400 ; 1 day<br />
@ IN SOA habr.ru. master.habr.com. (<br />
2008291104; serial<br />
10800 ; refresh (3 hours)<br />
3600 ; retry (15 minutes)<br />
3600000 ; expire (1 week)<br />
86400 ; minimum (1 day)<br />
)<br />
@ IN NS ns.habr.ru.<br />
@ IN NS ns.vds.ru.<br />
@ IN A 111.222.333.444<br />
@ IN MX 10 ASPMX.L.GOOGLE.COM.<br />
@ IN MX 20 ALT1.ASPMX.L.GOOGLE.COM.<br />
@ IN MX 20 ALT2.ASPMX.L.GOOGLE.COM.<br />
@ IN MX 30 ASPMX2.GOOGLEMAIL.COM.<br />
@ IN MX 30 ASPMX3.GOOGLEMAIL.COM.<br />
@ IN MX 30 ASPMX4.GOOGLEMAIL.COM.<br />
@ IN MX 30 ASPMX5.GOOGLEMAIL.COM.</code></p>
<p>ns IN A 111.222.333.444<br />
svn IN CNAME habr.ru.<br />
trac IN CNAME habr.ru.<br />
www IN CNAME habr.ru.</p>
<p>После чего и дома, и на VDS сделал<br />
<code>/etc/init.d/bind9 restart # на всякий случай - не будет ли ошибок при рестарте<br />
nslookup habr.ru 127.0.0.1<br />
</code></p>
<p>От лукапа должен получиться успешный ресолв:<br />
<code>bash:/etc/bind# nslookup habr.ru 127.0.0.1<br />
Server: 127.0.0.1<br />
Address: 127.0.0.1#53</code></p>
<p>Name: habr.ru<br />
Address: 111.222.333.444</p>
<p>После чего уже при следующих изменениях на домашнем сервере делал только</p>
<p><code>rnds reload<br />
</code></p>
<p>На VDS отчего-то такого не было, приходилось рестартить демон. Ну, правда, там Bind8.</p>
<p>Через 6 часов, в 23 часа, получив успешную делегацию и успев поужинать, попить чаю и посмотреть телевизор, пошёл настраивать всё прилагающееся.</p>
<h1>Apache2, PHP, MySQL</h1>
<p>В дебиане установить апач — легче лёгкого.</p>
<p><code>apt-get install apache2<br />
apt-get install mysql-client mysql-server<br />
apt-get install php5 php5-mysql php5-xmlrpc php5-cli php5-gd php5-curl php5-xsl<br />
</code></p>
<p>В итоге я заполучил с пылу — с жару работающие Apache2, MySQL 5, PHP5 с нужными модулями.</p>
<p>Учитывая то, что MySQL по умолчанию ставится с пустым паролем —</p>
<p><code>mysqladmin -uroot password мегасекурныйпароль<br />
</code></p>
<p>Ну, и настроить виртуальные хосты.</p>
<p>Решаю всё хранить в /home/sites/</p>
<p><code>mkdir /home/sites<br />
mkdir /home/sites/habr.ru<br />
</code></p>
<p>Иду в /etc/apache2/sites-availible</p>
<p>Создаю там</p>
<p><code>touch habr.ru<br />
ln -s /etc/apache2/sites-availible/habr.ru /etc/apache2/sites-enabled/habr.ru<br />
</code></p>
<p>И в habr.ru:</p>
<p><code>&lt;VirtualHost *&gt;<br />
ServerAdmin master@habr.ru<br />
DocumentRoot "/home/sites/habr.ru"<br />
ServerName habr.ru<br />
ServerAlias <a href="http://www.habr.ru/">www.habr.ru</a><br />
ErrorLog "/var/log/apache2/habr.ru.error.log"<br />
CustomLog "/var/log/apache2/habr.ru.access.log" common<br />
&lt;/VirtualHost&gt;<br />
</code></p>
<p>Затем — рестарт апача</p>
<p><code>/etc/init.d/apache2 restart<br />
</code></p>
<p>Оставалось то, <a href="http://skazkin.habrahabr.ru/blog/29716/">о чём я уже писал раньше</a>, но про VDS и настраивая это в первый раз — а именно —</p>
<h1>SVN + TRAC</h1>
</div>
<div>
<p>Как обычно —</p>
<p><code>apt-get install subversion<br />
apt-get install libapache2-svn<br />
apt-get install trac<br />
</code></p>
<p>Трак подтянул за собой свои зависимости, и я приступил.</p>
<p>Я выбрал для себя хранилищем сайта папку /home/sites/habr.ru, посему решил около этого и крутиться:</p>
<p>Начал с SVN, ориентируясь на <a href="http://www.howtoforge.com/debian_subversion_websvn">этот мануал</a><br />
<code>mkdir /home/sites/svn<br />
svnadmin create --fs-type fsfs /home/sites/svn<br />
groupadd subversion<br />
adduser svn_user --ingroup subversion<br />
</code></p>
<p>Опустив строчки про авторизацию и генерацию авторизационных ключей, я сразу полез в Apache</p>
<p>Опять иду в /etc/apache2/sites-availible</p>
<p><code>cd /etc/apache2/sites-availible<br />
touch svn.habr.ru<br />
ln -s /etc/apache2/sites-availible/svn.habr.ru /etc/apache2/sites-enabled/svn.habr.ru<br />
</code></p>
<p>В svn.habr.ru:</p>
<p><code>&lt;VirtualHost *&gt;<br />
ServerAdmin master@habr.ru<br />
DocumentRoot "/home/sites/svn"<br />
ServerName svn.habr.ru<br />
ErrorLog "/var/log/apache2/svn.habr.ru.error.log"<br />
CustomLog "/var/log/apache2/svn.habr.ru.access.log" common<br />
&lt;Location /&gt;<br />
DAV svn<br />
SVNPath /home/sites/svn<br />
&lt;/Location&gt;<br />
&lt;/VirtualHost&gt;<br />
</code></p>
<p>Опять перезапускаю Апач:</p>
<p><code>/etc/init.d/apache2 restart<br />
</code></p>
<p>И — по <a href="http://svn.habr.ru/">svn.habr.ru</a> — у меня находится репозиторий.</p>
<p>Попил чаю, приступил к Trac.</p>
<p>Трак решил положить в /home/sites/trac<br />
Сначала создать базу и пользователя:<br />
<code>mysqladmin -uroot -p create trac<br />
Выполнить запрос: GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON trac.* TO 'trac'@'localhost' IDENTIFIED BY 'tracmegapassword';</code></p>
<p>mkdir /home/sites/trac<br />
trac-admin initenv /home/sites/trac</p>
<p>СВН указывается тот, что уже сделали: /home/sites/svn</p>
<p>А когда trac спросил про БД-хранилище, ответил ему:<br />
<code>mysql://trac:tracmegapassword@localhost:3306/trac<br />
</code></p>
<p>Подправил руками /home/sites/trac/conf/trac.ini — всякие мелкие параметры, и в секции [trac] указал:</p>
<p><code>[trac]<br />
...<br />
htdocs_location = /tracdocs/<br />
</code></p>
<p>После чего полез в конфиг Apache — создавать хост.</p>
<p><code>cd /etc/apache2/sites-availible/<br />
touch trac.habr.ru<br />
ln -s /etc/apache2/sites-availible/trac.habr.ru /etc/apache2/sites-enabled/trac.habr.ru<br />
</code></p>
<p>В самом trac.habr.ru:<br />
<code>&lt;VirtualHost *&gt;<br />
ServerAdmin master@habr.ru<br />
DocumentRoot "/home/sites/trac/htdocs"<br />
ServerName trac.habr.ru<br />
ErrorLog "/var/log/apache2/trac.habr.ru.error.log"<br />
CustomLog "/var/log/apache2/trac.habr.ru.access.log" common</code></p>
<p>&lt;Location /&gt;<br />
SetHandler mod_python<br />
PythonInterpreter main_interpreter<br />
PythonHandler trac.web.modpython_frontend<br />
PythonOption TracEnv /home/sites/trac<br />
PythonOption TracUriRoot /<br />
&lt;/Location&gt;<br />
Alias /tracdocs /usr/share/trac/htdocs<br />
&lt;Location /tracdocs&gt;<br />
SetHandler None<br />
&lt;/Location&gt;<br />
&lt;/VirtualHost&gt;</p>
<p>После чего — рестарт апача</p>
<p><code>/etc/init.d/apache2 restart<br />
</code></p>
<p>И в итоге мы имеем <strong>незапароленные</strong> (внимательно с этим, я-то запаролил позже на глобальном уровне — а кто будет настраивать — не забудьте про секьюрность) SVN и Trac по соответствующим адресам:</p>
<p><a href="http://svn.habr.ru/">svn.habr.ru</a><br />
<a href="http://trac.habr.ru/">trac.habr.ru</a></p>
<p>В итоге у меня есть работающий (в ближайшем будущем на антресолях) сервер, на котором у меня поднят Trac, SVN, Apache2, MySQL, PHP, Bind9 и крутятся несколько сайтов.</p>
<p>А так же я хорошо поразвлекался и принёс пользу не только себе, но и семье — перевесив почту домашних на одном из моих доменов на гугл.апс.</p>
<p>Кроме того, я избавился от необходимости оплачивать медленную VDS (скоро перенесу secondary-зону к другу), теперь я знаю что происходит когда мои сайты недоступны (а не «у нас технические проблемы»), а так же могу делать столько доменов, субдоменов и прочего сколько хочется, а не сколько стоит в лимитах хостерского аккаунта.</p>
<p>А так же, теперь торрент качает без «технических» пауз (когда я с ноутбуком на работе).</p>
<p>Единственный минус всего этого — узкий обратный канал. Но у этого QWERTY, в котором я наблюдаюсь, есть трафиколимитированные «широкие» каналы — так что возможно, в скором будущем я буду им отстёгивать ещё 300 рублей за 100 мбит (если обратный трафик не тарифицируется), и буду проводить эксперименты с второй сетевой картой (чтобы торрент с сервера лил без лимитов по другому проводу)</p>
<p>Вот, как-то так.) Море удовольствия для меня и хорошее настроение на неделю=)</p>
<p><strong>Дополнительно, вопрос к телезрителям:</strong> в какой блог лучше перенести для широкой публики — «Я умный», или «Linux для всех», или «Системное администрирование»?=) Учитывая не особо глубокие инструкции по применению?)</p>
<p><strong>UPDATE:</strong> Вот только что немношка поседел — сервер перестал отзываться. Я забыл настроить самое главное — статический ip!</p>
<p>Позвонил жене, отдал инструкции о новых перенаправлениях, и — вуаля —</p>
<p><code>mcedit /etc/network/interfaces<br />
# удаляю всё, что относится к eth1 и добавляю:<br />
auto eth1<br />
iface eth1 inet static<br />
address 192.168.1.5<br />
netmask 255.255.255.0<br />
network 192.168.1.0<br />
broadcast 192.168.0.255<br />
gateway 192.168.1.1<br />
#сохраняю, закрываю и потом...<br />
/etc/init.d/networking restart<br />
</code><br />
На одну проблему стало меньше=)</p>
<p>Сегодня приду домой и воткну туда Wi-Fi — и обновлю этот пост с учётом Wi-Fi-настройки=)</p>
<p><strong>UPDATE2:</strong></p>
<p>Не проверил работоспособность ProFTPD извне!<br />
Надо открыть /etc/proftpd/proftpd.conf и туда:</p>
<p><code>DefaultAddress 111.222.333.444<br />
Port 21<br />
PassivePorts 60000 60010<br />
MasqueradeAddress 111.222.333.444<br />
</code></p>
<p>И внести соответствующие перенаправления портов на роутере! (для пассивных портов.). У меня их 10 — потому что не ожидается много коннектов</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=27</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Здесь будет почтовик</title>
		<link>http://vangerblog.awara.ru/?p=24</link>
		<comments>http://vangerblog.awara.ru/?p=24#comments</comments>
		<pubDate>Sun, 10 Jan 2010 08:16:58 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[Почтовые MTA]]></category>
		<category><![CDATA[mta]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=24</guid>
		<description><![CDATA[Здесь будет почтовик
]]></description>
			<content:encoded><![CDATA[<p>Здесь будет почтовик</p>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=24</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Здесь будет мониторинг</title>
		<link>http://vangerblog.awara.ru/?p=21</link>
		<comments>http://vangerblog.awara.ru/?p=21#comments</comments>
		<pubDate>Sun, 10 Jan 2010 08:05:49 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[Мониторинг нагрузки]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=21</guid>
		<description><![CDATA[Здесь будет мониторинг
]]></description>
			<content:encoded><![CDATA[<p>Здесь будет мониторинг</p>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=21</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Здесь будет железо</title>
		<link>http://vangerblog.awara.ru/?p=19</link>
		<comments>http://vangerblog.awara.ru/?p=19#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:56:32 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[Железо]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=19</guid>
		<description><![CDATA[Здесь будет серверное железо
]]></description>
			<content:encoded><![CDATA[<p>Здесь будет серверное железо</p>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Здесь будет хостинг</title>
		<link>http://vangerblog.awara.ru/?p=17</link>
		<comments>http://vangerblog.awara.ru/?p=17#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:55:47 +0000</pubDate>
		<dc:creator>Vanger</dc:creator>
				<category><![CDATA[О построении хостинга]]></category>
		<category><![CDATA[построение хостинга]]></category>

		<guid isPermaLink="false">http://vangerblog.awara.ru/?p=17</guid>
		<description><![CDATA[Здесь будет хостинг
]]></description>
			<content:encoded><![CDATA[<p>Здесь будет хостинг</p>
]]></content:encoded>
			<wfw:commentRss>http://vangerblog.awara.ru/?feed=rss2&amp;p=17</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
