<?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>Noname yet &#187; IT статьи</title>
	<atom:link href="http://dcsk.org.ua/category/it/feed/" rel="self" type="application/rss+xml" />
	<link>http://dcsk.org.ua</link>
	<description></description>
	<lastBuildDate>Thu, 18 Feb 2010 22:00:56 +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>Начало работы с git</title>
		<link>http://dcsk.org.ua/2010/01/nachalo-raboty-s-git/</link>
		<comments>http://dcsk.org.ua/2010/01/nachalo-raboty-s-git/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:25:50 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=69</guid>
		<description><![CDATA[Генерация ключей
В командной строке введите ssh-keygen, затем несколько раз нажмите Enter.  В результате в папке ~/.ssh появится пара ключей. тот, который с расширением .pub &#8211; ваш публичный, который вы должны дать администратору git для добавления вас как пользователя
Настройка git
В консоли выполняем команды:
git config &#8211;global user.email ваш@адрес
git config &#8211;global user.name &#8216;Ваше Имя&#8217;
git config &#8211;global branch.autosetupmerge true
Также [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Генерация ключей</strong></p>
<p>В командной строке введите <strong>ssh-keygen</strong>, затем несколько раз нажмите Enter.  В результате в папке ~/.ssh появится пара ключей. тот, который с расширением .pub &#8211; ваш публичный, который вы должны дать администратору git для добавления вас как пользователя</p>
<p><strong>Настройка git</strong></p>
<p>В консоли выполняем команды:<br />
git config &#8211;global user.email ваш@адрес<br />
git config &#8211;global user.name &#8216;Ваше Имя&#8217;<br />
git config &#8211;global branch.autosetupmerge true</p>
<p>Также можно задать используемый редактор(стоит заметить что ВЕЗДЕ тут используется два тире перед global):</p>
<p>git config &#8211;global core.editor nano</p>
<p><strong>Начало работы с уже опубликованным репозиторием</strong></p>
<p>заходим в консоль git, переходим в пустую папку и:</p>
<p>git clone git@hostname:my-repo.git<br />
git branch mynamebranch<br />
git checkout mynamebranch</p>
<p>для публикации ветки на сервере: git push origin mynamebranch<br />
для внедрения в вашу ветку новых изменений из master (т.е. сделанных другими участниками репозитория): git pull origin master</p>
<p>(то же самое можно было сделать переключившись в master, сделав git pull, затем переключившись обратно в mynamebranch и сделав git merge master)<br />
<strong>Добавление коммитов</strong></p>
<p>Добавление файла &#8211; git add &lt;имя файла или маска&gt;</p>
<p>Удаление файла &#8211; git rm &lt;имя файла или маска&gt;</p>
<p>Добавление коммита  &#8211; git commit -a -m &#8220;Сообщение&#8221;</p>
<p>Создание ветки и переход в нее:</p>
<p>git branch new-branch<br />
git checkout new-branch</p>
<p><a href="http://cheat.errtheblog.com/s/git">Более подробная шпаргалка</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2010/01/nachalo-raboty-s-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Добавление групп и пользователей в gitosis</title>
		<link>http://dcsk.org.ua/2010/01/dobavlenie-grupp-i-polzovatelej-v-gitosis/</link>
		<comments>http://dcsk.org.ua/2010/01/dobavlenie-grupp-i-polzovatelej-v-gitosis/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:06:11 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=65</guid>
		<description><![CDATA[Для добавления пользователя надо добавить его публичный RSA ключ в папку keydir &#8220;административного репозитория&#8221;, после чего пользователей можно добавлять в группы, например:
1234&#160;&#91;group myteam&#93;
- members = jdoe
+ members = jdoe alice bob
writable = free_monkey
Что значит что группа myteam, состоящая из трех человек имеет доступ на запись к репозиторию free_monkey и три файла jdoe.pub alice.pub bob.pub находятся [...]]]></description>
			<content:encoded><![CDATA[<p>Для добавления пользователя надо добавить его публичный RSA ключ в папку keydir &#8220;административного репозитория&#8221;, после чего пользователей можно добавлять в группы, например:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #7a0874; font-weight: bold;">&#91;</span>group myteam<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
- members = jdoe<br />
+ members = jdoe alice bob<br />
writable = free_monkey</div></td></tr></tbody></table></div>
<p>Что значит что группа myteam, состоящая из трех человек имеет доступ на запись к репозиторию free_monkey и три файла jdoe.pub alice.pub bob.pub находятся в папке keydir. После чего, конечно же, надо не забыть сделать commit и push.</p>
<p>За информацию стоит благодарить <a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way">этот</a> сайт.</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2010/01/dobavlenie-grupp-i-polzovatelej-v-gitosis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Добавление репозиториев к gitosis</title>
		<link>http://dcsk.org.ua/2010/01/dobavlenie-repozitoriev-k-gitosis/</link>
		<comments>http://dcsk.org.ua/2010/01/dobavlenie-repozitoriev-k-gitosis/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 13:58:09 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=59</guid>
		<description><![CDATA[Итак, допустим мы получили &#8220;командный репозиторий&#8221; командой
1git clone gitosis@hostname:gitosis-admin.git
В полученой папке имеем файл gitosis.conf  и папку keydir. В папке keydir хранятся RSA ключи в виде имяпользователя@имя-компьютера.pub . В файле же и хранятся все настройки. Все права хранятся по группам, то есть:

123&#91;group gitosis-admin&#93;
writable = gitosis-admin
members = dcsk@note
Для добавления репозитория надо:
Добавить права на запись в него, например [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, допустим мы получили &#8220;командный репозиторий&#8221; командой</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">git clone gitosis<span style="color: #000000; font-weight: bold;">@</span><span style="color: #c20cb9; font-weight: bold;">hostname</span>:gitosis-admin.git</div></td></tr></tbody></table></div>
<p>В полученой папке имеем файл gitosis.conf  и папку keydir. В папке keydir хранятся RSA ключи в виде <em>имяпользователя@имя-компьютера.pub </em>. В файле же и хранятся все настройки. Все права хранятся по группам, то есть:<br />
<span id="more-59"></span></p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">&#91;</span>group gitosis-admin<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
writable = gitosis-admin<br />
members = dcsk<span style="color: #000000; font-weight: bold;">@</span>note</div></td></tr></tbody></table></div>
<p>Для добавления репозитория надо:</p>
<p>Добавить права на запись в него, например так:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">&#91;</span>group gitosis-admin<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
writable = gitosis-admin my-repo<br />
members = dcsk<span style="color: #000000; font-weight: bold;">@</span>note</div></td></tr></tbody></table></div>
<p>После чего, надо добавить эти изменения на сервер:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">git commit <span style="color: #660033;">-a</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;Added access to repo&quot;</span><br />
git push</div></td></tr></tbody></table></div>
<p>Допустим, что вы находитесь в папке, на основе которой хотите создать репозиторий. Тогда его создать можно так:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">git init .<br />
git remote add origin git<span style="color: #000000; font-weight: bold;">@</span><span style="color: #c20cb9; font-weight: bold;">hostname</span>:my-repo.git<br />
git add <span style="color: #000000; font-weight: bold;">*</span><br />
git commit <span style="color: #660033;">-a</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;Initial commit&quot;</span><br />
git push origin master:refs<span style="color: #000000; font-weight: bold;">/</span>heads<span style="color: #000000; font-weight: bold;">/</span>master</div></td></tr></tbody></table></div>
<p>Итак, вы создали свой репозиторий.</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2010/01/dobavlenie-repozitoriev-k-gitosis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка gitosis</title>
		<link>http://dcsk.org.ua/2010/01/ustanovka_gitosis-debian_ubuntu/</link>
		<comments>http://dcsk.org.ua/2010/01/ustanovka_gitosis-debian_ubuntu/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 13:14:20 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/2010/01/53/</guid>
		<description><![CDATA[Для установки репозитория нам надо:

Установить gitosis

12apt-get update
apt-get install gitosis
После этого должен создатся пользователь git, однако у меня такого не создалось, создался пользователь gitosis. Проверить наличие пользователя можно так:

1cat /etc/passwd&#124;grep git
Если у вас тоже его нет &#8211; надо его создать. Например, так:
12345678sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git
Если же [...]]]></description>
			<content:encoded><![CDATA[<p>Для установки репозитория нам надо:</p>
<ul>
<li>Установить gitosis</li>
</ul>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> update<br />
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> gitosis</div></td></tr></tbody></table></div>
<p>После этого должен создатся пользователь git, однако у меня такого не создалось, создался пользователь gitosis. Проверить наличие пользователя можно так:<br />
<span id="more-53"></span></p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> git</div></td></tr></tbody></table></div>
<p>Если у вас тоже его нет &#8211; надо его создать. Например, так:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> adduser \<br />
<span style="color: #660033;">--system</span> \<br />
<span style="color: #660033;">--shell</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">sh</span> \<br />
<span style="color: #660033;">--gecos</span> <span style="color: #ff0000;">'git version control'</span> \<br />
<span style="color: #660033;">--group</span> \<br />
<span style="color: #660033;">--disabled-password</span> \<br />
<span style="color: #660033;">--home</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>git \<br />
git</div></td></tr></tbody></table></div>
<p>Если же вас устраивает пользователь gitosis в адресе пользователя (ака gitosis@myserver.com:myreponame) то предыдущий пункт можно пропустить и далее заменять git на gitosis соотв-но.</p>
<p>Далее перейдем в консоль созданного пользователя.</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">su git</div></td></tr></tbody></table></div>
<p>В файл id_rsa.pub , находящийся в домашней папке этого пользователя (т.е. /home/git/id_rsa.pub ) надо скопировать публичный <a href="http://en.wikipedia.org/wiki/RSA">RSA</a> ключ, после чего можно запустить инициализацию репозитория:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">git<span style="color: #000000; font-weight: bold;">@</span>server:~$ gitosis-init <span style="color: #000000; font-weight: bold;">&amp;</span>lt; id_rsa.pub<br />
Initialized empty Git repository <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>git<span style="color: #000000; font-weight: bold;">/</span>repositories<span style="color: #000000; font-weight: bold;">/</span>gitosis-admin.git<span style="color: #000000; font-weight: bold;">/</span><br />
Reinitialized existing Git repository <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>git<span style="color: #000000; font-weight: bold;">/</span>repositories<span style="color: #000000; font-weight: bold;">/</span>gitosis-admin.git<span style="color: #000000; font-weight: bold;">/</span></div></td></tr></tbody></table></div>
<p>После чего можно проверять работоспособность с компьютера, с которого был скопирован RSA ключ.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">$git</span> clone git<span style="color: #000000; font-weight: bold;">@</span><span style="color: #c20cb9; font-weight: bold;">hostname</span>:gitosis-admin.git<br />
Initialized empty Git repository <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>dcsk<span style="color: #000000; font-weight: bold;">/</span>gitosis-admin<span style="color: #000000; font-weight: bold;">/</span>.git<span style="color: #000000; font-weight: bold;">/</span><br />
remote: Counting objects: <span style="color: #000000;">5</span>, done.<br />
remote: Compressing objects: <span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">%</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">4</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>, done.<br />
remote: Total <span style="color: #000000;">5</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>delta <span style="color: #000000;">0</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>, reused <span style="color: #000000;">5</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>delta <span style="color: #000000;">0</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
Receiving objects: <span style="color: #000000;">100</span><span style="color: #000000; font-weight: bold;">%</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">5</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>, done.</div></td></tr></tbody></table></div>
<p>Если у вас все прошло так же &#8211; поздравляю, вы установили gitosis. Теперь можно переходить к добавлению репозиториев, про что будет написано в следующем посте.</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2010/01/ustanovka_gitosis-debian_ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка кеширующего прокси для apt с помощью HttpReplicator</title>
		<link>http://dcsk.org.ua/2009/08/nastrojka-keshiruyushhego-proksi-dlya-apt-s-pomoshhyu-httpreplicator/</link>
		<comments>http://dcsk.org.ua/2009/08/nastrojka-keshiruyushhego-proksi-dlya-apt-s-pomoshhyu-httpreplicator/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 11:50:17 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=37</guid>
		<description><![CDATA[При использовании дебиана/убунту на нескольких машинах в одной локальной сети возникает проблема &#8211; неоптимально используется трафик, каждый из компьютеров скачивает по разу все обновления. С другой стороны &#8211; настройка локального репозитория означает финансовые затраты (большой обьем самого репозитория). Но есть весьма оптимальное решение &#8211; кеширующий прокси-сервер HttpReplicator.

1)Скачиваем его с sf и &#8220;устанавливаем&#8221;:
wget http://downloads.sourceforge.net/project/http-replicator/http-replicator/4.0alpha2/http-replicator_4.0alpha2.tgz?use_mirror=sune
tar -xvvf http-replicator_4.0alpha2.tgz
cd [...]]]></description>
			<content:encoded><![CDATA[<p>При использовании дебиана/убунту на нескольких машинах в одной локальной сети возникает проблема &#8211; неоптимально используется трафик, каждый из компьютеров скачивает по разу все обновления. С другой стороны &#8211; настройка локального репозитория означает финансовые затраты (большой обьем самого репозитория). Но есть весьма оптимальное решение &#8211; кеширующий прокси-сервер HttpReplicator.</p>
<p><span id="more-37"></span></p>
<p>1)Скачиваем его с sf и &#8220;устанавливаем&#8221;:</p>
<p style="padding-left: 30px;"><em>wget http://downloads.sourceforge.net/project/http-replicator/http-replicator/4.0alpha2/http-replicator_4.0alpha2.tgz?use_mirror=sune</em></p>
<p style="padding-left: 30px;"><em>tar -xvvf http-replicator_4.0alpha2.tgz</em></p>
<p style="padding-left: 30px;"><em>cd http-replicator_4.0alpha2/</em></p>
<p style="padding-left: 30px;"><em>mkdir /usr/local/httpreplicator/<br />
root@home-test:~/repl/http-replicator_4.0alpha2# mv * /usr/local/httpreplicator/</em></p>
<p>Если подскажете ссылку на .деб файл &#8211; буду благодарен. Итак, теперь надо создать файл запуска для него и разобратся с параметрами. Параметры запуска у демона такие:</p>
<p style="padding-left: 30px;">usage: /usr/local/httpreplicator/http-replicator [options]</p>
<p style="padding-left: 30px;">options:<br />
-h &#8211;help          show this help message and exit<br />
-p &#8211;port PORT     listen on this port for incoming connections, default 8080<br />
-r &#8211;root DIR      set cache root directory, default current: /home/dcsk/repl/http-replicator_4.0alpha2/<br />
-v &#8211;verbose       show http headers and other info<br />
-t &#8211;timeout SEC   break connection after so many seconds of inactivity, default 15<br />
-6 &#8211;ipv6          try ipv6 addresses if available<br />
&#8211;flat          flat mode; cache all files in root directory (dangerous!)<br />
&#8211;static        static mode; assume files never change<br />
&#8211;offline       offline mode; never connect to server<br />
&#8211;limit RATE    limit download rate at a fixed K/s<br />
&#8211;daemon LOG    route output to log and detach<br />
&#8211;debug         switch from gather to debug output module</p>
<p>Cоздадим скрипт управления(запишем этот текст своим любимым текстовым редактором в /etc/init.d/http-replicator):</p>
<p style="padding-left: 30px;"><span style="color: #000000;">#!/bin/bash<br />
NAME=&#8221;python&#8221;<br />
DAEMON=/usr/local/httpreplicator/http-replicator<br />
DAEMON_ARGS=&#8221; &#8211;port 8080 &#8211;daemon /var/log/http-replicator.log &#8211;root /var/cache/httpreplicator/ &#8221;<br />
USERNAME=&#8221;proxy&#8221;</span></p>
<p style="padding-left: 30px;">case &#8220;$1&#8243; in<br />
start)<br />
/bin/su $USERNAME -c &#8220;$DAEMON $DAEMON_ARGS&#8221;<br />
;;<br />
stop)<br />
/bin/su $USERNAME -c &#8220;killall $NAME&#8221;<br />
<span style="color: #000000;"> ;;<br />
restart)<br />
/etc/init.d/http-replicator stop<br />
/etc/init.d/http-replicator start<br />
;;<br />
*)<br />
echo &#8220;Usage: /etc/init.d/http-replicator {start|stop|restart}&#8221;<br />
exit 1<br />
;;<br />
esac</span></p>
<p style="padding-left: 30px;">exit 0</p>
<p>Также надо не забыть создать папку для кеша и файл логов, проставить на них права:</p>
<p style="padding-left: 30px;"><em>mkdir -p /var/cache/httpreplicator/</em></p>
<p style="padding-left: 30px;"><em>chown proxy:proxy /var/cache/httpreplicator/</em></p>
<p style="padding-left: 30px;"><em>touch /var/log/http-replicator.log&amp;&amp; chown proxy:proxy /var/log/http-replicator.log</em></p>
<p>Добавляем в автозапуск:</p>
<p style="padding-left: 30px;"><em>update-rc.d http-replicator defaults</em></p>
<p>Для использования на конечных машинах надо добавить в /etc/apt/apt.conf :</p>
<p style="padding-left: 30px;">Acquire::http::Proxy &#8220;http://192.168.0.1:8080&#8243;;</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/08/nastrojka-keshiruyushhego-proksi-dlya-apt-s-pomoshhyu-httpreplicator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Развертка VPN сервера на основе ubuntu/debian</title>
		<link>http://dcsk.org.ua/2009/07/razvertka-vpn-servera-na-osnove-ubuntudebian/</link>
		<comments>http://dcsk.org.ua/2009/07/razvertka-vpn-servera-na-osnove-ubuntudebian/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 11:08:54 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=33</guid>
		<description><![CDATA[Итак, предположим что у нас есть сервер на Ubuntu(либо Debian &#8211; не суть важно).
1) Установка пакета Openvpn на сервере:

sudo apt-get install openvpn
2) Копируем конфигурацию демона из примеров в документации:
zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz &#62; /etc/openvpn/server.conf
3) Конфигурация &#8211; бесспорно личное дело каждого, однако на мой взгляд имеет смысл:

Изменить подсеть, которая будет использоваться сетью (строка server 10.8.0.0 255.255.255.0).
Снять комментарий с [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, предположим что у нас есть сервер на Ubuntu(либо Debian &#8211; не суть важно).</p>
<p>1) Установка пакета Openvpn на сервере:</p>
<p><span id="more-33"></span></p>
<p><em>sudo apt-get install openvpn</em></p>
<p>2) Копируем конфигурацию демона из примеров в документации:</p>
<p><em>zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz &gt; /etc/openvpn/server.conf</em></p>
<p>3) Конфигурация &#8211; бесспорно личное дело каждого, однако на мой взгляд имеет смысл:</p>
<ul>
<li>Изменить подсеть, которая будет использоваться сетью (строка <strong>server 10.8.0.0 255.255.255.0</strong>).</li>
<li>Снять комментарий с строки <strong>client-to-client</strong>, если есть необходимость в междуклиентских взаимодействиях(по умолчанию весь трафик будет идти через сервер)</li>
<li>Ограничить количество единовременных подключений к серверу(строка <strong>max-clients 100</strong>)</li>
<li>Ограничить пользователя openvpn в правах (строки <strong>user nobody</strong> и <strong>group nobody</strong>)</li>
</ul>
<p>4) Создадим сертификат СА</p>
<p>Перейдем в папку <tt>/usr/share/doc/openvpn/examples/easy-rsa/2.0 , где находятся скрипты для этого. </tt></p>
<p><em>cd <tt>/usr/share/doc/openvpn/examples/easy-rsa/2.0</tt></em></p>
<ul>
<li>Для того чтобы не вводить несколько раз одну и ту же информацию, измените любимым текстовым редактором настройки в файле vars.</li>
</ul>
<p>Создадим сам сертификат(при его создании надо будет ответить на несколько вопросов):</p>
<p><em>. ./vars &amp;&amp;./clean-all &amp;&amp;./build-ca</em></p>
<p>5)Создание сертификата для самого сервера</p>
<pre><em>./build-key-server server</em><em>
</em></pre>
<p>6)Создание параметров Diffie-Hellman(<a href="http://www.rsa.com/rsalabs/node.asp?id=2248">о том что это такое</a>)</p>
<p><em>./build-dh</em></p>
<p>7)Копирование ключей в папку самого впн сервера</p>
<p><em>cp -r keys/* /etc/openvpn/</em></p>
<p>8)Создание сертификатов для клиентов. Для этого надо для каждого клиента запустить команду:</p>
<p><em>./build-key computer</em></p>
<p>где вместо computer &#8211; уникальное название каждой &#8220;машины&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/07/razvertka-vpn-servera-na-osnove-ubuntudebian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Про техзадания</title>
		<link>http://dcsk.org.ua/2009/07/pro-texzadaniya/</link>
		<comments>http://dcsk.org.ua/2009/07/pro-texzadaniya/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 16:13:07 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=28</guid>
		<description><![CDATA[Если бы  автомобиль делали без ТЗ это выглядело бы следующим образом:

юзверь: надо авто, чтоб ездил
прогер: запор или феррари? бензин или газ?
ю: О_о хз надо
через месяц:
ю: а где у него крылья?
п: О_о а кто просил крылья?
ю: должны быть крылья
п: а под водой плавать не должен?
ю: нет вроде не должен
п: точно
ю: точно, не должен
*п делает крылья
через [...]]]></description>
			<content:encoded><![CDATA[<p>Если бы  автомобиль делали без ТЗ это выглядело бы следующим образом:</p>
<p><span id="more-28"></span></p>
<p>юзверь: надо авто, чтоб ездил<br />
прогер: запор или феррари? бензин или газ?<br />
ю: О_о хз надо</p>
<p>через месяц:<br />
ю: а где у него крылья?<br />
п: О_о а кто просил крылья?<br />
ю: должны быть крылья<br />
п: а под водой плавать не должен?<br />
ю: нет вроде не должен<br />
п: точно<br />
ю: точно, не должен<br />
*п делает крылья</p>
<p>через месяц:<br />
п: вот вам крылья<br />
ю: а под водой плавает?<br />
п: О_о а кто говорил что не надо?<br />
ю: знаешь подумали и решили что надо</p>
<p>*п пишет летающую подводную лодку с нуля. в процессе ю достает п почему такая долгая разработка</p>
<p>через месяц:<br />
ю: ой а почему так сложно?<br />
п: не бывает летающих подводных авто с простым управлением.<br />
ю: А можно сделать две больших кнопочки &#8211; &#8220;под воду&#8221; и &#8220;лететь&#8221;?<br />
п: Куда лететь?<br />
ю: Ну как, куда?.. Туда! (Неопределенно махает в угол комнаты)<br />
п: Вы можете дать мне координаты?<br />
ю: Свои?<br />
п: (Вздыхает) Ну, давайте свои&#8230;<br />
ю: г. Бобруйск ул.Ламо д.1 кв.404! (приветливо улыбается на долгий задумчивый взгляд программиста)<br />
п: Туда лететь?<br />
ю: Нет, зачем? К моему куму, на дачу &#8211; там еще такая фиговинка на воротах, и ставни зелененькие. Ну вы знаете, наверное&#8230;<br />
п: Нет, не знаю.<br />
ю: (Разочаровано) А мне сказали, вы программиииист&#8230;.<br />
п: Я программист!<br />
ю: (Еще более разочаровано) Программист, а таких простых вещей не знаете&#8230;<br />
п: Ладно, что-нить придумаем.<br />
* в деталях вспоминает принцип действия топки крематория. Получается яркий красочный образ, в котором у каждого из персонажей есть реальный прототип&#8230;</p>
<p>ю. А чё в гараж не влазит?<br />
п: Это ж, блять, подводный самолет!!! Нужен ангар с бассейном!<br />
ю: Так чо, новый гараж покупать?<br />
п: АНГАР!!!!<br />
ю:дорого&#8230; А можно, чтобы не очень летал, но в гараж влазил? И все-таки хер с ней, с подводной лодкой&#8230;.<br />
п: &#8230;.<br />
ю: А еще я видел такой же, но от Феррари. Всего 1.5 штуки баксов. Может, купить и не мучаться?<br />
п: *взвешивает в руке сгоревший бесперебойник.<br />
ю: и кнопочки у вас какие-то зелененькие, а там се&#8230;.<br />
*через час от конторы отъезжали катафалк и ментовка&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/07/pro-texzadaniya/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Минимальный набор необходимого софта</title>
		<link>http://dcsk.org.ua/2009/03/minimalnyj-nabor-neobxodimogo-softa/</link>
		<comments>http://dcsk.org.ua/2009/03/minimalnyj-nabor-neobxodimogo-softa/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 10:40:02 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=20</guid>
		<description><![CDATA[Данная заметка не претендует на единственную правильность и универсальность &#8211; это для себя на случай развертки новых машин &#8211; економит время.

CCleaner &#8211; чистилка жесткого диска и системы, весьма интересна возможностью &#8220;вайпить&#8221; уже свободное пространство ж/д, что делает восстановление невозможным.
KMplayer &#8211; функционаьный универсальный плеер, либо Winamp &#8211; неплохой аудио плеер.
Броузер. На выбор &#8211; open-source с огромным [...]]]></description>
			<content:encoded><![CDATA[<p>Данная заметка не претендует на единственную правильность и универсальность &#8211; это для себя на случай развертки новых машин &#8211; економит время.</p>
<p><span id="more-20"></span></p>
<p><a href="http://www.ccleaner.com/download">CCleaner</a> &#8211; чистилка жесткого диска и системы, весьма интересна возможностью &#8220;вайпить&#8221; уже свободное пространство ж/д, что делает восстановление невозможным.</p>
<p><a href="http://www.kmplayer.com/forums/showthread.php?t=12142">KMplayer</a> &#8211; функционаьный универсальный плеер, либо <a href="http://ru.winamp.com/">Winamp</a> &#8211; неплохой аудио плеер.</p>
<p>Броузер. На выбор &#8211; open-source с огромным количеством плагинов <a href="http://www.mozilla-europe.org/ru/">Mozilla Firefox</a> либо Google`овский <a href="http://www.google.com/chrome/index.html?hl=ru">Chrome</a> &#8211; оба они имеют право находится на компьютере. <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Пока суть да дело устанавливались вышеуказанные утилиты компьютер мог уже &#8220;подхватить&#8221; какую-то гадость &#8211; для очистки есть бесплатный <a href="http://www.z-oleg.com/secur/avz/download.php">avz</a>, а для защиты &#8211; <a href="http://www.avast.ru/Free_Avast_home_edition_download.htm">Avast home</a>.</p>
<p>Torrent? Ну конечно же <a href="http://www.utorrent.com/downloads/complete?os=win">utorrent</a> &#8211; минималистичный клиент с небольшой загрузкой машины.</p>
<p>Ftp? <a href="http://filezilla-project.org/download.php">Filezilla</a> в помощь &#8211; данный кроссплатформенный клиент может использоватся как для scp, так и для ftp сессий. Вмес те с <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">putty</a> &#8211; универсальный набор для администрирования.</p>
<p>Офисный пакет. Определенно <a href="http://ru.openoffice.org/about-downloads.html">OpenOffice</a> &#8211; он имеет достаточный функционал для работы с офисными документами и умеет &#8220;читать&#8221; и &#8220;писать&#8221; файлы M$ Office 07(в отличие от более ранних версий Office)</p>
<p>&#8220;Из коробки&#8221; Windows умеет открывать только zip архивы. Для исправления этого недостатка имеет смысл поставить архиватор <a href="http://www.7-zip.org/">7-zip</a>. По функциональности он аналогичен WinRar/WinZip, но не надоедает предложениями купить лицензию. <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Почта. Несмотря на то что у большинства мейл-сервисов есть отличные веб клиенты, корпоративные или хостерские почтовые ящики обычно доступны по imap/pop3/smtp. Для таких случаев очень неплох мозилловский <a href="http://www.mozilla-russia.org/products/thunderbird/">Thunderbird</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/03/minimalnyj-nabor-neobxodimogo-softa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Грабли при использовании nginx+php(fcgi)</title>
		<link>http://dcsk.org.ua/2009/02/grabli-pri-ispolzovanii-nginxphpfcgi/</link>
		<comments>http://dcsk.org.ua/2009/02/grabli-pri-ispolzovanii-nginxphpfcgi/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 21:39:41 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=14</guid>
		<description><![CDATA[Q:  Не работают POST запросы в php при использовании nginx+php(fastcgi)
A: Надо дописать дополнительные параметры в конфигурации nginx`a:
fastcgi_param QUERY_STRING     $query_string;
fastcgi_param REQUEST_METHOD   $request_method;
fastcgi_param CONTENT_TYPE     $content_type;
fastcgi_param CONTENT_LENGTH   $content_length;
fastcgi_param SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param REQUEST_URI        $request_uri;
fastcgi_param DOCUMENT_URI       $document_uri;
fastcgi_param DOCUMENT_ROOT      $document_root;
fastcgi_param SERVER_PROTOCOL    $server_protocol;
fastcgi_param REMOTE_ADDR        $remote_addr;
fastcgi_param REMOTE_PORT        $remote_port;
fastcgi_param SERVER_ADDR        $server_addr;
fastcgi_param SERVER_PORT        $server_port;
Q: Ошибка при запуске сервера directive &#8220;rewrite&#8221; is not terminated by &#8220;;&#8221;
Посмотрим нa [...]]]></description>
			<content:encoded><![CDATA[<p>Q:  Не работают POST запросы в php при использовании nginx+php(fastcgi)</p>
<p>A: Надо дописать дополнительные параметры в конфигурации nginx`a:</p>
<blockquote><p>fastcgi_param QUERY_STRING     $query_string;<br />
fastcgi_param REQUEST_METHOD   $request_method;<br />
fastcgi_param CONTENT_TYPE     $content_type;<br />
fastcgi_param CONTENT_LENGTH   $content_length;<br />
fastcgi_param SCRIPT_NAME        $fastcgi_script_name;<br />
fastcgi_param REQUEST_URI        $request_uri;<br />
fastcgi_param DOCUMENT_URI       $document_uri;<br />
fastcgi_param DOCUMENT_ROOT      $document_root;<br />
fastcgi_param SERVER_PROTOCOL    $server_protocol;<br />
fastcgi_param REMOTE_ADDR        $remote_addr;<br />
fastcgi_param REMOTE_PORT        $remote_port;<br />
fastcgi_param SERVER_ADDR        $server_addr;<br />
fastcgi_param SERVER_PORT        $server_port;</p></blockquote>
<p>Q: Ошибка при запуске сервера <em>directive &#8220;rewrite&#8221; is not terminated by &#8220;;&#8221;</em></p>
<p>Посмотрим нa sysoev.ru и увидим в документации к rewrite такое:<em><br />
</em></p>
<blockquote><p>Если в регулярном выражении встречаются символы &#8220;}&#8221; или &#8220;;&#8221;, то всё выражение нужно заключить в одинарные или двойные кавычки.</p></blockquote>
<p>В моем случае использовалось выражение вида <em>([0-9a-f]{32}) </em> (md5 хеш в запросе) &#8211; и именно из-за <em>([0-9a-f]<strong>{</strong>32<strong>}</strong>) </em>возникала ошибка.</p>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/02/grabli-pri-ispolzovanii-nginxphpfcgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Часто задаваемые вопросы по nginx (FAQ)</title>
		<link>http://dcsk.org.ua/2009/02/nginx_faq/</link>
		<comments>http://dcsk.org.ua/2009/02/nginx_faq/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 10:20:37 +0000</pubDate>
		<dc:creator>dcsk</dc:creator>
				<category><![CDATA[IT статьи]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://dcsk.org.ua/?p=8</guid>
		<description><![CDATA[
* Что такое nginx ?
 * Где можно скачать nginx ?
 * Как задавать expireы контенту ?
 * Как настроить nginx + fastcgi + php ? (начиная с nginx 0.1.29)
 * Как перехватить 404-ю ошибку от fastcgi сервера ?
 * Авторизация по паролю в nginx ?

Данный FAQ был взят из кеша гугла сайта nginx.info, который [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>* Что такое nginx ?</li>
<li> * Где можно скачать nginx ?</li>
<li> * Как задавать expireы контенту ?</li>
<li> * Как настроить nginx + fastcgi + php ? (начиная с nginx 0.1.29)</li>
<li> * Как перехватить 404-ю ошибку от fastcgi сервера ?</li>
<li> * Авторизация по паролю в nginx ?</li>
</ul>
<p>Данный FAQ был взят из кеша гугла сайта nginx.info, который судя по всему закрылся, ну и убрал часть неактуальной информации.</p>
<p><span id="more-8"></span></p>
<p><strong>Что такое nginx ?</strong></p>
<p>nginx [engine x] — это http-сервер, который  начал разрабатывать Игорь Сысоев весной 2002 года. Пдробную информацию Вы можете найти на сайте Игоря &#8211; http://www.sysoev.ru/nginx/</p>
<p><strong>Где можно скачать nginx ?<br />
</strong><br />
Самую последнюю версию nginx всегда можно скачать с сайта Игоря Сысоева &#8211; <a href="http://www.sysoev.ru/nginx/">http://www.sysoev.ru/nginx/</a></p>
<p><strong>Как задавать expireы контенту ?</strong></p>
<p>В nignx доступны следующие варианты задания expires для контента:<br />
expires [время] &#8211; 1s (1 секунда), 1d (1 день и т.п.</p>
<p>expires 0 выдаёт</p>
<p>Date: Fri, 25 Feb 2005 23:56:25 GMT<br />
Expires: Fri, 25 Feb 2005 23:56:25 GMT<br />
Cache-control: max-age=0</p>
<p>expires -1 выдаёт</p>
<p>Date: Fri, 25 Feb 2005 23:56:25 GMT<br />
Expires: Fri, 25 Feb 2005 23:56:24 GMT<br />
Cache-control: no-cache</p>
<p>expires epoch выдаёт</p>
<p>Date: Fri, 25 Feb 2005 23:56:25 GMT<br />
Expires: Thu, 01 Jan 1970 00:00:01 GMT<br />
Cache-control: no-cache</p>
<p><strong>Как настроить nginx + fastcgi + php ? (начиная с nginx 0.1.29)</strong></p>
<p>Каждому пользователю вэб-сервера nginx приходится столкнуться с тем, что возникает необходимость в запуске php скриптов под управлением nginx. В nginx нет поддержки mod_php, как в апаче. Но, nginx перкрасно работает с любым fastcgi сервером, т.е. поддерживает выполнение любых fastcgi скриптов при помощи протокола fastcgi. Эта статья описывает, как настроить такую связку после выхода nginx 0.1.29. Начиная с этой версии изенились директивы fastcgi.<br />
Чтобы настроить связку nginx+fastcgi+php необходимо :</p>
<p>* запустить php как fastcgi сервер (порт или unix сокет)</p>
<p>* прописать в nginx, чтобы файлы с расширением *.php отправлялись на fastcgi сервер (пример фалйа конфигурации ниже)</p>
<p>php можно запустить, как fastcgi сервер, двумя способами:</p>
<p>(в обоих случаях надо сначала собрать php с опцией &#8211;enable-fastcgi)</p>
<p>* непосредсвенно запуская php с опцией -b IP:PORT ( Bind Path for external FASTCGI Server mode). В таком случае php можно заставить соединения только по tcp.</p>
<p>* используя spawn-fcgi+spawn-php.sh из дистрибетива lighttpd</p>
<p>Пример конфигурации для nginx (начиная с 0.1.29):<br />
(это все прописывается в секцию требуемого server {&#8230;})<br />
В данном случае, fastcgi принимает запросы через юникс сокет и все файлы php отправляются к fastcgi серверу</p>
<p>location ~* ^.+\.(php)$ {<br />
root /var/www/domain/root;<br />
#fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_pass unix:/usr/local/fastcgi/fcgi; # сокет<br />
fastcgi_index index.php;<br />
fastcgi_connect_timeout 60;<br />
fastcgi_send_timeout 180;<br />
fastcgi_read_timeout 180;<br />
fastcgi_header_buffer_size 32k;<br />
fastcgi_buffers 4 32k;<br />
fastcgi_busy_buffers_size 32k;<br />
fastcgi_temp_file_write_size 32k;<br />
#fastcgi_temp_path /var/tmp;<br />
#fastcgi_next_upstream error timeout invalid_header http_500 http_404;<br />
#fastcgi_next_upstream error timeout;<br />
fastcgi_x_powered_by off; # default on<br />
fastcgi_redirect_errors on; # для отображения своих страниц об ошибках<br />
fastcgi_x_powered_by off; # убираем отображение версии php, X-Powered..<br />
fastcgi_param   DOCUMENT_ROOT   /path/to/host_root;<br />
fastcgi_param   SCRIPT_FILENAME /path/to/host_root$fastcgi_script_name;<br />
fastcgi_param   PATH_TRANSLATED /path/to/host_root$fastcgi_script_name;<br />
fastcgi_param   SCRIPT_NAME  $fastcgi_script_name;<br />
fastcgi_param   QUERY_STRING    $query_string;<br />
fastcgi_param   CONTENT_TYPE    $content_type;<br />
fastcgi_param   CONTENT_LENGTH  $content_length;<br />
fastcgi_param   REDIRECT_STATUS 200; # если php собрано с опцией &#8211;enable-forece-cgi-redirect<br />
# производится дополнительный системный вызов, без нужды лучше не использовать,<br />
# так как операция ресурсоемкая.<br />
fastcgi_param   SERVER_ADDR     $server_addr;<br />
fastcgi_param   SERVER_PORT     $server_port;<br />
fastcgi_param   SERVER_PROTOCOL $server_protocol;<br />
fastcgi_param   SERVER_SOFTWARE &#8220;nginx/0.1.30&#8243;;<br />
fastcgi_param   GATEWAY_INTERFACE       &#8220;CGI/1.1&#8243;;<br />
fastcgi_param   SERVER_NAME     $server_name;<br />
fastcgi_param   REQUEST_URI     $request_uri;<br />
fastcgi_param   REQUEST_METHOD  $request_method;<br />
fastcgi_param   REMOTE_USER     $remote_user;<br />
fastcgi_param   REMOTE_ADDR     $remote_addr;<br />
fastcgi_param   REMOTE_PORT     $remote_port;<br />
}</p>
<p><strong>Как перехватить 404-ю ошибку от fastcgi сервера ?</strong></p>
<p>При использовании связки nginx+fastcgi+php возникает необходимость в перехвате стандартной 404-й ошибки от php fastcgi сервера, так как стандартная ошибка не очень эстетично выглядит <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8220;No input file specified.&#8221; и дает лишнюю информацию заинтересованным в вашем passwd товарищам <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Как говорится, лучшая защита &#8211; полное отсутствие информации у врага, так как голова у него будет занята <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Чтобы сделать перехват 404-й, нам нужно указать в конфигурации нашего сервера или location директиву</p>
<p>&#8220;error_page 404 /error.html;&#8221;</p>
<p>После этого положить наш html файл с сообщеиием об ошибке в корень сайта.</p>
<p>А Вы спросите &#8211; как заставить nginx показывать этот файл при 404-й ?<br />
А очень просто, есть такая малоизвестная директива &#8220;fastcgi_redirect_errors on;&#8221;.<br />
Именно с помощью этой директивы, которую мы сейчас прописываем в нашу location с fastcgi настройками и даст нужный нам эффект. Прописали ? <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  пробуйте <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Таким образом можно перехватывать и некоторые другие ошибки, которые можно описать через error_page.</p>
<p>Главный залог успеха с nginx &#8211; эксперименты <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , а документация когда-нибудь будет <img src='http://dcsk.org.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Авторизация по паролю в nginx ?</strong></p>
<p>Директивы этого модуля следующие:</p>
<blockquote><p>auth_basic   [&lt;realm&gt;|off]<br />
auth_basic_user_file   path/to/file</p></blockquote>
<p>формат файла с паролями</p>
<blockquote><p># comment<br />
login0:password<br />
login1:password:anything</p></blockquote>
<p>Помните, что пароль должен быть создан с помощью crypt(), другие алгоритмы не поддерживаются. Т.е. чтобы сделать файл с паролями для nginx, запускайте htpasswd с ключом &#8216;-d&#8217; (force CRYPT)</p>
<p>Пример использования:</p>
<blockquote><p>location /bober/<br />
{<br />
auth_basic  &#8220;Bobram hoda net v les&#8221;;<br />
auth_basic_user_file   /no_bobers/les/dub/htpasswd;<br />
&#8230;<br />
}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://dcsk.org.ua/2009/02/nginx_faq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
