<?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>Мастерская интернет-разработчика &#187; Операционные системы</title>
	<atom:link href="http://adw0rd.ru/category/operation-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://adw0rd.ru</link>
	<description>Блог Михаила Андреева (aka adw0rd)</description>
	<lastBuildDate>Fri, 11 May 2012 12:49:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Debian. Установка и настройка Jira + GreenHopper</title>
		<link>http://adw0rd.ru/2012/debian-jira-and-greenhopper/</link>
		<comments>http://adw0rd.ru/2012/debian-jira-and-greenhopper/#comments</comments>
		<pubDate>Thu, 10 May 2012 16:12:41 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[DotDeb]]></category>
		<category><![CDATA[Jira]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=7722</guid>
		<description><![CDATA[Сегодня расскажу как установить standalone-версию Jira (то есть ту, которая на сайте Jira значится как &#171;Download&#187; версия) на ваш сервер. Выбран Debian из-за того что на FreeBSD сложнее завести самую свежую Java, которая так нужна Jira. Другие дистрибутивы я не рассматривал, просто потому что мне с Debian проще. Также в качестве СУБД для Jira будет [...]]]></description>
			<content:encoded><![CDATA[<p><noindex><a href="/2012/debian-jira-and-greenhopper/"><img src="http://adw0rd.ru/wp-content/uploads/2012/05/jira.png"  alt="" title="jira" width="152" height="116" class="alignright size-full wp-image-7730" /></a></noindex></p>
<p>Сегодня расскажу как установить <strong>standalone</strong>-версию <strong>Jira</strong> (то есть ту, которая на сайте Jira значится как &laquo;Download&raquo; версия) на ваш сервер. Выбран <strong>Debian</strong> из-за того что на FreeBSD сложнее завести самую свежую <strong>Java</strong>, которая так нужна Jira. Другие дистрибутивы я не рассматривал, просто потому что мне с Debian проще.</p>
<p>Также в качестве СУБД для Jira будет использоваться MySQL. Это обусловлено тем, что потом можно хакать данные жиры, например переименовывать пользователей и т.д. через процедуры, о которых возможно расскажу в другой статье.</p>
<p>В статье рассматривается <strong>Jira 5.0.4</strong>.<br />
<span id="more-7722"></span></p>
<h3>Установка</h3>
<p>Установка будет происходить на минимальной сборке свежеустановленного Debian, поэтому буду устанавливать нужный софт типа <strong>nano</strong> и <strong>sudo</strong>. А также создадим в домашней директории каталог &laquo;Downloads&raquo;, туда будем класть всякие загрузки:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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 install</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span><br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>Downloads</div></div>
<p>Теперь добавим репозиторий <noindex><a rel="nofollow" href="http://www.dotdeb.org/instructions/" >DotDeb</a></noindex>, так как там есть более свежие пакеты:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>sources.list<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> deb http:<span style="color: #000000; font-weight: bold;">//</span>packages.dotdeb.org squeeze all<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> deb-src http:<span style="color: #000000; font-weight: bold;">//</span>packages.dotdeb.org squeeze all</div></div>
<p>Теперь скачаем ключ для DotDeb и применим его:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Downloads<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.dotdeb.org<span style="color: #000000; font-weight: bold;">/</span>dotdeb.gpg<br />
<span style="color: #c20cb9; font-weight: bold;">cat</span> dotdeb.gpg <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-key add</span> -</div></div>
<p>Установим MySQL-сервер версии 5.5 и Nginx:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> mysql-server-<span style="color: #000000;">5.5</span> nginx</div></div>
<p>Выбирите нужную версию Jira на <noindex><a rel="nofollow" href="http://www.atlassian.com/software/jira/download" >этой странице</a></noindex> и скачайте бинарный файл в каталог &laquo;~/Downloads&raquo;.<br />
Так как у меня 32-битная платформа на Linux, я качаю нужный мне бинарник так:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Downloads<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>wpc.29c4.edgecastcdn.net<span style="color: #000000; font-weight: bold;">/</span>8029C4<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>jira<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>atlassian-jira-5.0.4-x32.bin<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x atlassian-jira-5.0.4-x32.bin</div></div>
<p>Создадим каталоги для Jira:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>atlassian<span style="color: #000000; font-weight: bold;">/</span>jira<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>atlassian<span style="color: #000000; font-weight: bold;">/</span>application-data<span style="color: #000000; font-weight: bold;">/</span>jira</div></div>
<p>Теперь запустим бинарник и приступим к установки самой Jira:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">.<span style="color: #000000; font-weight: bold;">/</span>atlassian-jira-5.0.4-x32.bin<br />
<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Unpacking JRE ...<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Starting Installer ...<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> You <span style="color: #000000; font-weight: bold;">do</span> not have administrator rights to this machine and <span style="color: #c20cb9; font-weight: bold;">as</span> such, some installation options will not be available. Are you sure you want to <span style="color: #7a0874; font-weight: bold;">continue</span>?<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Yes <span style="color: #7a0874; font-weight: bold;">&#91;</span>y, Enter<span style="color: #7a0874; font-weight: bold;">&#93;</span>, No <span style="color: #7a0874; font-weight: bold;">&#91;</span>n<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
y<br />
<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> This will <span style="color: #c20cb9; font-weight: bold;">install</span> JIRA 5.0.4 on your computer.<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> OK <span style="color: #7a0874; font-weight: bold;">&#91;</span>o, Enter<span style="color: #7a0874; font-weight: bold;">&#93;</span>, Cancel <span style="color: #7a0874; font-weight: bold;">&#91;</span>c<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
o<br />
<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Choose the appropriate installation or upgrade option.<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Please choose one of the following:<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Express Install <span style="color: #7a0874; font-weight: bold;">&#40;</span>use default settings<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>, Custom Install <span style="color: #7a0874; font-weight: bold;">&#40;</span>recommended <span style="color: #000000; font-weight: bold;">for</span> advanced <span style="color: #c20cb9; font-weight: bold;">users</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>, Upgrade an existing JIRA installation <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">3</span>, Enter<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">2</span><br />
<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Where should JIRA 5.0.4 be installed?<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>adw0rd<span style="color: #000000; font-weight: bold;">/</span>atlassian<span style="color: #000000; font-weight: bold;">/</span>jira<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>atlassian<span style="color: #000000; font-weight: bold;">/</span>jira<br />
<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Default location <span style="color: #000000; font-weight: bold;">for</span> JIRA data<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>adw0rd<span style="color: #000000; font-weight: bold;">/</span>atlassian<span style="color: #000000; font-weight: bold;">/</span>application-data<span style="color: #000000; font-weight: bold;">/</span>jira<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>atlassian<span style="color: #000000; font-weight: bold;">/</span>application-data<span style="color: #000000; font-weight: bold;">/</span>jira<br />
<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Configure <span style="color: #c20cb9; font-weight: bold;">which</span> ports JIRA will use.<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> JIRA requires two TCP ports that are not being used by any other<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> applications on this machine. The HTTP port is where you will access JIRA<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> through your browser. The Control port is used to Startup and Shutdown JIRA.<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Use default ports <span style="color: #7a0874; font-weight: bold;">&#40;</span>HTTP: <span style="color: #000000;">8080</span>, Control: <span style="color: #000000;">8005</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> - Recommended <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span>, Enter<span style="color: #7a0874; font-weight: bold;">&#93;</span>, Set custom value <span style="color: #000000; font-weight: bold;">for</span> HTTP and Control ports <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">1</span><br />
<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Extracting files ...<br />
...<br />
<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Please <span style="color: #7a0874; font-weight: bold;">wait</span> a few moments <span style="color: #000000; font-weight: bold;">while</span> JIRA starts up.<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Launching JIRA ...<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Installation of JIRA 5.0.4 is <span style="color: #7a0874; font-weight: bold;">complete</span><br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Your installation of JIRA 5.0.4 is now ready and can be accessed via your browser.<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> JIRA 5.0.4 can be accessed at http:<span style="color: #000000; font-weight: bold;">//</span>localhost:<span style="color: #000000;">8080</span><br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Finishing installation ...</div></div>
<p>После установки, нам необходим init-скрипт, я создавал небольшой срипт, можете им воспользоваться:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-O</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>jira http:<span style="color: #000000; font-weight: bold;">//</span>adw0rd.ru<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>jira<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>jira</div></div>
<h3>Настройка</h3>
<p>Теперь создадим БД и настроим права доступа для Jira:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span></div></div>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">DATABASE</span> <span style="color: #ff0000;">`jira`</span> CHARSET utf8 <span style="color: #993333; font-weight: bold;">COLLATE</span> utf8_general_ci;<br />
mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> PASSWORD<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'example'</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">-------------------------------------------+</span><br />
<span style="color: #66cc66;">|</span> password<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'example'</span><span style="color: #66cc66;">&#41;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">-------------------------------------------+</span><br />
<span style="color: #66cc66;">|</span> <span style="color: #66cc66;">*</span>57237BB49761F29AB9724BA084E811D70C12393D <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">-------------------------------------------+</span><br />
<span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">ROW</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #993333; font-weight: bold;">SET</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span><br />
mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">GRANT</span> USAGE <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #66cc66;">*.*</span> <span style="color: #993333; font-weight: bold;">TO</span> <span style="color: #ff0000;">'jira'</span>@<span style="color: #ff0000;">'localhost'</span> <span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> PASSWORD <span style="color: #ff0000;">'*57237BB49761F29AB9724BA084E811D70C12393D'</span>;<br />
mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> PRIVILEGES <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #ff0000;">`jira`</span><span style="color: #66cc66;">.*</span> <span style="color: #993333; font-weight: bold;">TO</span> <span style="color: #ff0000;">'jira'</span>@<span style="color: #ff0000;">'localhost'</span>;<br />
mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">SHOW</span> GRANTS <span style="color: #993333; font-weight: bold;">FOR</span> jira@localhost;<br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">-------------------------------------------------------------------------------------------------------------+</span><br />
<span style="color: #66cc66;">|</span> Grants <span style="color: #993333; font-weight: bold;">FOR</span> jira@localhost &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">-------------------------------------------------------------------------------------------------------------+</span><br />
<span style="color: #66cc66;">|</span> <span style="color: #993333; font-weight: bold;">GRANT</span> USAGE <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #66cc66;">*.*</span> <span style="color: #993333; font-weight: bold;">TO</span> <span style="color: #ff0000;">'jira'</span>@<span style="color: #ff0000;">'localhost'</span> <span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> PASSWORD <span style="color: #ff0000;">'*57237BB49761F29AB9724BA084E811D70C12393D'</span> <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">|</span> <span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> PRIVILEGES <span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #ff0000;">`jira`</span><span style="color: #66cc66;">.*</span> <span style="color: #993333; font-weight: bold;">TO</span> <span style="color: #ff0000;">'jira'</span>@<span style="color: #ff0000;">'localhost'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">-------------------------------------------------------------------------------------------------------------+</span><br />
<span style="color: #cc66cc;">2</span> <span style="color: #993333; font-weight: bold;">ROWS</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #993333; font-weight: bold;">SET</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span></div></div>
<p>Отредактируйте &laquo;nginx.conf&raquo;:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>nginx.conf</div></div>
<p>К виду:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http {<br />
&nbsp; &nbsp; ...<br />
&nbsp; &nbsp; upstream jira {<br />
&nbsp; &nbsp; &nbsp; &nbsp; server 127.0.0.1:8080;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; ...<br />
&nbsp; &nbsp; server {<br />
&nbsp; &nbsp; &nbsp; &nbsp; listen 80;<br />
&nbsp; &nbsp; &nbsp; &nbsp; server_name example.org;<br />
&nbsp; &nbsp; &nbsp; &nbsp; location / {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_pass http://jira;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; ...<br />
}</div></div>
<p>Далее, отредактируем конфиг Jira:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>atlassian<span style="color: #000000; font-weight: bold;">/</span>jira<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>server.xml</div></div>
<p>Найдите там &laquo;Service/Connector&raquo; и добавьте туда &laquo;proxyName&raquo; и &laquo;proxyPort&raquo;:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">...<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>Service <span style="color: #007800;">name</span>=<span style="color: #ff0000;">&quot;Catalina&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ...<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;</span>Connector <span style="color: #007800;">port</span>=<span style="color: #ff0000;">&quot;8080&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">maxThreads</span>=<span style="color: #ff0000;">&quot;150&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">minSpareThreads</span>=<span style="color: #ff0000;">&quot;25&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">maxSpareThreads</span>=<span style="color: #ff0000;">&quot;75&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">connectionTimeout</span>=<span style="color: #ff0000;">&quot;20000&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">proxyName</span>=<span style="color: #ff0000;">&quot;example.org&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">proxyPort</span>=<span style="color: #ff0000;">&quot;80&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">enableLookups</span>=<span style="color: #ff0000;">&quot;false&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">maxHttpHeaderSize</span>=<span style="color: #ff0000;">&quot;8192&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">protocol</span>=<span style="color: #ff0000;">&quot;HTTP/1.1&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">useBodyEncodingForURI</span>=<span style="color: #ff0000;">&quot;true&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">redirectPort</span>=<span style="color: #ff0000;">&quot;8443&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">acceptCount</span>=<span style="color: #ff0000;">&quot;100&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #007800;">disableUploadTimeout</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ...<br />
&nbsp; &nbsp; ...<br />
...</div></div>
<p>Перезагружаем Jira для того чтобы применить новый конфиг:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>jira restart</div></div>
<p>Теперь пробуем открыть &laquo;http://example.org/&raquo;. Вам предложат настроить Jira, укажите тип хранилища &laquo;MySQL&raquo; и верные реквизиты доступа, после чего вам предложат настроить учетную запись администратора и т.д.</p>
<h3>Установка GreenHopper</h3>
<p>Для этого надо просто войти в UPM (&laquo;http://example.org/plugins/servlet/upm#install&raquo;) и вбить в поисковую строку &laquo;GreenHopper&raquo;, таким же образом можете установить любые другие плагины доступные в репозитории Jira.</p>
<h3>Ещё пару слов</h3>
<p>При покупке, лицензионный ключ для Jira надо ввести на странице &laquo;http://example.org/secure/admin/ViewLicense!default.jspa&raquo;, а для GreenHopper в UPM.</p>
<p>Если вы неверно указали &laquo;Base URL&raquo; (в нашем примере он &laquo;http://example.org&raquo;), то на странице настроек &laquo;http://example.org/secure/admin/ViewApplicationProperties.jspa&raquo; можете поменять его.</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2012/debian-jira-and-greenhopper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian. Установка и настройка Gitweb + Nginx</title>
		<link>http://adw0rd.ru/2012/debian-gitweb/</link>
		<comments>http://adw0rd.ru/2012/debian-gitweb/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 04:48:23 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Gitweb]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=7375</guid>
		<description><![CDATA[Продолжаем обсуждение инструментария для git-репозиториев, сегодня расскажу про GitWeb, он представляет из себя простую веб-морду для визуализации репозиториев Git&#39;а, в ней можно будет лицезреть свои проекты, историю и т.д., вообщем всё что необходимо. Пользователем Mercurial внешний вид уже знаком, так как его предоставлял hgweb: [web] # стиль gitweb style = gitweb Установка Собирать буду частично [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2012/debian-gitweb/" ><img src="http://adw0rd.ru/wp-content/uploads/2012/04/gitweb_.png" alt="" title="gitweb" width="175" height="67" class="alignright size-full wp-image-7672" /></a></p>
<p>Продолжаем обсуждение инструментария для git-репозиториев, сегодня расскажу про <noindex><a rel="nofollow" href="https://github.com/gawel/GitWeb" >GitWeb</a></noindex>, он представляет из себя простую веб-морду для визуализации репозиториев Git&#39;а, в ней можно будет лицезреть свои проекты, историю и т.д., вообщем всё что необходимо.</p>
<blockquote class="info">
<p>
Пользователем Mercurial внешний вид уже знаком, так как его <a href="/2010/mercurial-freebsd/">предоставлял hgweb</a>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[web]<br />
# стиль gitweb<br />
style = gitweb</div></div>
</blockquote>
<h3>Установка</h3>
<p>Собирать буду частично из исходников, так как нам понадобится вменяемый fcgiwrap (в Debian очень старая версия 1.0, которая нам просто не подойдет). Нам понадобится fcgiwrap 1.0.3 для запуска &laquo;gitweb/index.cgi&raquo;.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> libfcgi-dev gitweb<br />
<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Downloads<br />
<span style="color: #c20cb9; font-weight: bold;">git clone</span> git:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>gnosek<span style="color: #000000; font-weight: bold;">/</span>fcgiwrap.git<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> fcgiwrap<span style="color: #000000; font-weight: bold;">/</span><br />
autoreconf <span style="color: #660033;">-i</span><br />
.<span style="color: #000000; font-weight: bold;">/</span>configure <br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></div></div>
<p><strong>fcgiwrap</strong> выбран потомучто он уже использовался у меня на сервере и я решил найти ему очередное применение. На странице <noindex><a rel="nofollow" href="https://github.com/gawel/GitWeb" >GitWeb на GitHub&#39;е</a></noindex> есть инструкция для <strong>gunicorn</strong>.</p>
<p><span id="more-7375"></span></p>
<h3>Настройка</h3>
<p>Я переписал оригинальный (читать старый из Debian) init-скрипт fcgiwrap&#39;a, который можете взять <a href="/files/fcgiwrap">тут</a>.<br />
Скопируйте его в &laquo;/etc/init.d&raquo;.</p>
<p>Без скрипта можете запустить так:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fcgiwrap <span style="color: #660033;">-s</span> tcp:127.0.0.1:<span style="color: #000000;">8088</span> <span style="color: #660033;">-f</span></div></div>
<p>Со скриптом так:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">service fcgiwrap start</div></div>
<p>Теперь перейдем к Nginx. Отредактируйте &laquo;/etc/nginx/nginx.conf&raquo;:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">upstream gitweb {<br />
&nbsp; &nbsp; server 127.0.0.1:8088;<br />
}</div></div>
<p>И ваш файл виртуального хоста:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">server {<br />
&nbsp; &nbsp; listen 80;<br />
&nbsp; &nbsp; server_name gitweb.example.org;<br />
&nbsp; &nbsp; root /usr/share/gitweb;<br />
<br />
&nbsp; &nbsp; location ~* \.(jpg|txt|jpeg|gif|png|ico|css|zip|js|swf)$ {<br />
&nbsp; &nbsp; &nbsp; &nbsp; expires 0;<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; location / {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_pass gitweb;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param QUERY_STRING $query_string;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param REQUEST_METHOD $request_method;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param REQUEST_URI $request_uri;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param SCRIPT_FILENAME $document_root/index.cgi;<br />
&nbsp; &nbsp; }<br />
}</div></div>
<p>Откройте файл &laquo;/etc/gitweb.conf&raquo; и укажите путь до репозиториев:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># path to git projects (&lt;project&gt;.git)<br />
$projectroot = &quot;/home/git/repositories&quot;;<br />
<br />
...</div></div>
<p>Перезагружаем Nginx и наслаждаемся!</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">nginx -s reload</div></div>
<h3>А какже git-instaweb?</h3>
<p>Простой обозреватель вашего репозитория на основе GitWeb, но когда репозиториев несколько. Минус у этого решения один&nbsp;&mdash; он не преднозначен для запуска на нескольких репозиториях. Точнее вам придется запускать копию для каждого репозитория на разных портах и проксировать на них.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">git instaweb</span> <span style="color: #660033;">--httpd</span>=webrick <span style="color: #7a0874; font-weight: bold;">&#91;</span>--start <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #660033;">--stop</span> <span style="color: #000000; font-weight: bold;">|</span> --restart<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #666666; font-style: italic;"># --httpd поддерживает apache2, lighttpd, mongoose и webrick (по умолчанию lighttpd).</span><br />
<span style="color: #666666; font-style: italic;"># --local слушает только локальный интерфейс (127.0.0.1)</span><br />
<span style="color: #666666; font-style: italic;"># --port можно указать нужный порт (по умолчанию 1234)</span></div></div>
<p>Также вы можете указать в &laquo;.gitconfig&raquo; нужные настройки для instaweb:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[instaweb]<br />
httpd=webrick</div></div>
<p>Ещё можно почитать:<br />
<noindex><a rel="nofollow" href="http://progit.org/book/ch4-6.html" >Pro Git 4.6 Git on the Server GitWeb</a></noindex><br />
<noindex><a rel="nofollow" href="http://gofedora.com/how-to-install-configure-gitweb/" >How To: Install and Configure GitWeb</a></noindex></p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2012/debian-gitweb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android и LG P500. Удаление предустановленных программ</title>
		<link>http://adw0rd.ru/2012/android-lg-p500-remove-preinstalled-apps/</link>
		<comments>http://adw0rd.ru/2012/android-lg-p500-remove-preinstalled-apps/#comments</comments>
		<pubDate>Sun, 29 Apr 2012 22:45:03 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[LG]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[xubuntu]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=7617</guid>
		<description><![CDATA[Сегодня расскажу как получить рутовый доступ на ваш LG Optimus One (он же LG P500) с Android 2.3.3 и удалить предустановленные приложения. Будем удалять всякие фейсбуки, вконтакты и одноклассники, а также бесполезные программы от LG. Статья предназначена для пользователей Linux, но в архиве с ADB имеется и Windows версии. Для начала качаем ADB и распаковываем: [...]]]></description>
			<content:encoded><![CDATA[<p><noindex><a href="/2012/android-lg-p500-remove-preinstalled-apps/"><img alt="" src="http://adw0rd.ru/files/images/android.gif"  title="Android" class="alignright" width="307" height="54" /></a></noindex></p>
<p>Сегодня расскажу как получить рутовый доступ на ваш <strong>LG Optimus One</strong> (он же <strong>LG P500</strong>) с <strong>Android 2.3.3</strong> и удалить предустановленные приложения. Будем удалять всякие фейсбуки, вконтакты и одноклассники, а также бесполезные программы от LG.</p>
<p>Статья предназначена для пользователей Linux, но в архиве с ADB имеется и Windows версии.</p>
<p>Для начала качаем <noindex><a rel="nofollow" href="http://developer.android.com/guide/developing/tools/adb.html" >ADB</a></noindex> и распаковываем:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">wget</span> <span style="color: #660033;">-O</span> ADB.tgz http:<span style="color: #000000; font-weight: bold;">//</span>adw0rd.ru<span style="color: #000000; font-weight: bold;">/</span>wp-content<span style="color: #000000; font-weight: bold;">/</span>uploads<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2012</span><span style="color: #000000; font-weight: bold;">/</span>04<span style="color: #000000; font-weight: bold;">/</span>ADB.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzf</span> ADB.tgz<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ADB</div></div>
<p>Войдите в настройки телефона &laquo;Приложения&raquo; -> &laquo;Дополнительные опции&raquo; и включите режим &laquo;Отладка USB&raquo;, далее подключите ваш телефон по USB кабелю к компьютеру и выполните:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">chmod</span> +x adblinux<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>adblinux devices<br />
<span style="color: #000000; font-weight: bold;">&gt;</span> List of devices attached <br />
<span style="color: #000000; font-weight: bold;">&gt;</span> 80A357486041192199&nbsp; &nbsp; device</div></div>
<p>Отлично, мы успешно подключились, теперь получим рутовый доступ:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> .<span style="color: #000000; font-weight: bold;">/</span>adblinux shell<br />
$ <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>lge_adb.conf</div></div>
<p><span id="more-7617"></span><br />
Вручную перезагрузите телефон (выключите и снова включите) и снова стартуем shell:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> .<span style="color: #000000; font-weight: bold;">/</span>adblinux shell<br />
<span style="color: #666666; font-style: italic;"># exit</span></div></div>
<p>Ура, теперь у нас есть права пользователя root!</p>
<p>Теперь примонтируем &laquo;/system&raquo; с возможностью записи данных:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> .<span style="color: #000000; font-weight: bold;">/</span>adblinux shell<br />
<span style="color: #666666; font-style: italic;"># mount -o rw,remount /dev/block/mmcblk0p1 /system</span></div></div>
<p>После этого мы сможем удалить &laquo;нужный&raquo; нам софт:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># cd /system/app</span><br />
<span style="color: #666666; font-style: italic;"># ls</span><br />
...<br />
<span style="color: #666666; font-style: italic;"># rm Facebook.apk</span><br />
<span style="color: #666666; font-style: italic;"># rm VKontakte.apk</span><br />
<span style="color: #666666; font-style: italic;"># rm Odnoklassniki.apk</span><br />
<span style="color: #666666; font-style: italic;"># rm MobileAgent.apk</span><br />
<span style="color: #666666; font-style: italic;"># rm YandexSearch.apk</span><br />
<span style="color: #666666; font-style: italic;"># rm LGWorld.apk</span><br />
<span style="color: #666666; font-style: italic;"># rm LGMusicClub.apk</span><br />
<span style="color: #666666; font-style: italic;"># rm LiveWallpapers.apk</span><br />
<span style="color: #666666; font-style: italic;"># rm LiveWallpapers.odex</span><br />
<span style="color: #666666; font-style: italic;"># rm LiveWallpapersPicker.apk</span><br />
<span style="color: #666666; font-style: italic;"># exit</span></div></div>
<p>Только не удаляйте &laquo;LGHome.apk&raquo;, как это сделал я по ошибке... Это приложение является рабочим столом и меню вашего телефона, без него смысла в телефоне особого нет, он сможет принимать звонки и сообщения, а также подключаться к сети, больше по сути ничего. В конце статьи я описываю как всетаки восстановил &laquo;LGHome.apk&raquo;.</p>
<h4>Оффтопик</h4>
<p>Сбросить телефон на изначальное состояние (&laquo;Factory reset&raquo;) можно так:</p>
<ol>
<li>Зажать одновременно &laquo;Home + VolumeDown + Power&raquo; и держать несколько секунд, пока не появится картинка на дисплее &laquo;Android с коробочкой&raquo;.</li>
<li>Также можно сбросить телефон на заводские настройки через сервисное меню, для этого наберите номер <strong>3845#*500#</strong> и в появившемся меню нажмите на &laquo;Factory Reset&raquo;.</li>
</ol>
<h4>Если вы всётаки удалили LGHome.apk</h4>
<p>Казалось всё не так плохо, надо просто скачать из сети это приложение и залить его через ADB, но в моем случае все было намного хуже... Я сделал &laquo;Factory Reset&raquo;, после чего у меня слетел root и сбросился режим &laquo;Отладка USB&raquo; и я не смог подключится через ADB. </p>
<p>В итоге мне надо было попасть в &laquo;Настройки&raquo; телефона и включить режим &laquo;Отладка USB&raquo;. Вот как я выкрутился:</p>
<ol>
<li>Сначала залил на свой сайт приложение *.apk (неважно какое);</li>
<li>Потом через телефон (благо GPRS/WIFI работали) скачал это приложение (для этого я послал себе ссылку по смс через бесплатный сервис от мтс);</li>
<li>После скачивания начал его устанавливать, тогда Android меня предупредил о &laquo;неизвестном источнике&raquo; и пустил в меню настроек &laquo;Приложения&raquo; чтобы я указал что &laquo;разрешаю установку приложений из неизвестных источников&raquo;;</li>
<li>Вместо этого я зашёл в &laquo;Дополнительные опции&raquo; и включил режим &laquo;Отладка USB&raquo;, после чего ADB смог определить мой девайс!</li>
</ol>
<p>Как только вы смогли включить режим &laquo;Отладка USB&raquo;, то сразу подключаем USB кабель и вводим в консоль:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>system_apps<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>system_apps<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-O</span> LGHome.apk.tgz http:<span style="color: #000000; font-weight: bold;">//</span>adw0rd.ru<span style="color: #000000; font-weight: bold;">/</span>wp-content<span style="color: #000000; font-weight: bold;">/</span>uploads<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2012</span><span style="color: #000000; font-weight: bold;">/</span>04<span style="color: #000000; font-weight: bold;">/</span>LGHome.apk.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzf</span> LGHome.apk.tgz<br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> LGHome.apk.tgz<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">644</span> LGHome.apk<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> root:root LGHome.apk<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>adblinux shell<br />
<span style="color: #666666; font-style: italic;"># mount -o rw,remount /dev/block/mmcblk0p1 /system</span><br />
<span style="color: #666666; font-style: italic;"># exit</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>adblinux push <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>system_apps <span style="color: #000000; font-weight: bold;">/</span>system<span style="color: #000000; font-weight: bold;">/</span>app<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>adblinux reboot</div></div>
<p>Ну вот и всё, удачи!</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2012/android-lg-p500-remove-preinstalled-apps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>FreeBSD и Debian. Установка и настройка Gitolite</title>
		<link>http://adw0rd.ru/2012/freebsd-debian-gitolite/</link>
		<comments>http://adw0rd.ru/2012/freebsd-debian-gitolite/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 21:13:46 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Gitolite]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=7370</guid>
		<description><![CDATA[В след за статьёй FreeBSD и Debian. Установка и настройка Gitosis хочу рассказать про Gitolite. Это аналогичный по функциональности инструмент, но дающий чуть больше возможностей, например разграничения прав на ветки и теги, и немного проще в использовании. А ещё, в отличие от Gitosis, он до cих пор поддерживается. Будем считать, что вы уже создали пользователя [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2012/freebsd-debian-gitolite/" ><img src="http://adw0rd.ru/wp-content/uploads/2011/04/250px-Git-logo.svg_.png" alt="" title="Git" width="250" height="96" class="alignright size-full wp-image-6311" /></a></p>
<p>В след за статьёй <noindex><a rel="nofollow" href="/2012/freebsd-debian-gitosis/">FreeBSD и Debian. Установка и настройка Gitosis</a> хочу рассказать про <strong>Gitolite</strong>. Это аналогичный по функциональности инструмент, но дающий чуть больше возможностей, например разграничения прав на ветки и теги, и немного проще в использовании. А ещё, в отличие от Gitosis, он до cих пор <a href="https://github.com/sitaramc/gitolite" >поддерживается</a></noindex>.</p>
<p>Будем <a href="/2012/freebsd-debian-gitosis/#git-install">считать</a>, что вы уже создали пользователя и группу &laquo;git&raquo;, а также установил Git на сервере.</p>
<h3>Gitolite</h3>
<p>Иногда для проектов хочется иметь некие &laquo;production&raquo;-ветки и &laquo;release&raquo;-теги, но с ограниченным доступом к ним определенным пользователям. Например разработчики имеют доступ только к ветке &laquo;master&raquo; и собственным веткам созданным на сервере, а &laquo;production&raquo; должен быть для них недоступен, чтобы по воле случая они туда ничего не намержили плохого.<br />
<span id="more-7370"></span></p>
<blockquote>
<p>
Git начал становиться очень популярным в корпоративных средах, где обычно есть дополнительные требования в плане контроля доступа. Gitolite изначально был создан, чтобы посодействовать в выполнении таких требований. Но как оказывается он так же полезен и в мире open source: проект Fedora управляет доступом к своим репозиториям пакетов с помощью gitolite. А ведь этих репозиториев больше 10 000! По видимому это самая большая установка gitolite где бы то ни было.</p>
<p>Gitolite позволяет указать права доступа не только для репозиториев, но и для веток или имён меток внутри каждого репозитория. То есть, вы можете указать, что определённые люди (или группы людей) могут отправлять (push) определённые “ссылки” (ветки или метки), а остальные нет.</p>
<p><noindex><a rel="nofollow" href="http://progit.org/book/ru/ch4-8.html" >Pro Git&nbsp;&mdash; Pro Git 4.8 Git на сервере Gitolite</a></noindex>
</p>
</blockquote>
<h3>Установка Gitolite</h3>
<p>FreeBSD:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>ports<span style="color: #000000; font-weight: bold;">/</span>devel<span style="color: #000000; font-weight: bold;">/</span>gitolite<br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> clean</div></div>
<p>Debian:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> gitolite</div></div>
<p>Из исходников:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">git clone</span> git:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>sitaramc<span style="color: #000000; font-weight: bold;">/</span>gitolite.git<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>src<span style="color: #000000; font-weight: bold;">/</span>gl-system-install</div></div>
<h3>Настройка Gitolite</h3>
<p>Для начала нам надо создать на локальной машине <a href="/2011/ssh-auth-key/">ключ</a> и скопировать его на сервер:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">ssh-keygen</span> <span style="color: #660033;">-C</span> “<span style="color: #000000; font-weight: bold;">&lt;</span>username<span style="color: #000000; font-weight: bold;">&gt;</span>” <span style="color: #660033;">-t</span> rsa<br />
<span style="color: #c20cb9; font-weight: bold;">scp</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa.pub <span style="color: #000000; font-weight: bold;">&lt;</span>username<span style="color: #000000; font-weight: bold;">&gt;@&lt;</span><span style="color: #c20cb9; font-weight: bold;">hostname</span><span style="color: #000000; font-weight: bold;">&gt;</span>:key_for_gitolite.pub<br />
<span style="color: #c20cb9; font-weight: bold;">mv</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>gitolite</div></div>
<p>Теперь добавьте в свой локальный «.ssh/config»:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Host gitolite<br />
&nbsp; &nbsp; User git<br />
&nbsp; &nbsp; Hostname &lt;hostname&gt;<br />
&nbsp; &nbsp; IdentityFile ~/.ssh/gitolite</div></div>
<p>Далее, надо войти на сервер и проинициализировать gitolite:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">su</span> - <span style="color: #c20cb9; font-weight: bold;">git</span><br />
gl-setup <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/&lt;</span>username<span style="color: #000000; font-weight: bold;">&gt;/</span>key_for_gitolite.pub</div></div>
<p>Перейдем снова на локальную машину и попробуем подключится:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">ssh</span> gitolite <span style="color: #660033;">-T</span><br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> hello <span style="color: #000000; font-weight: bold;">&lt;</span>username<span style="color: #000000; font-weight: bold;">&gt;</span>, this is gitolite v2.3-<span style="color: #000000;">0</span>-g01e789a running on <span style="color: #c20cb9; font-weight: bold;">git</span> 1.7.9.3<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> the gitolite config gives you the following access:<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> &nbsp; &nbsp; &nbsp;R &nbsp; W &nbsp; gitolite-admin<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">@</span>R_ <span style="color: #000000; font-weight: bold;">@</span>W_&nbsp; testing</div></div>
<p>Если примерно такой ответ, то есть перечислены репозитории и права, то всё окей, продолжаем!</p>
<h4>Пользователи, макросы и права с refex</h4>
<p>Теперь склонируем репозиторий «gitolite-admin» к себе и отредактируем конфигурационный файл:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">git clone</span> <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>gitolite:gitolite-admin gitolite-admin</div></div>
<p>В полученном репозитории вы увидите каталог &laquo;keydir&raquo;, в котором хранятся все публичные ключи пользователей имеющих доступ к каким-либо репозиториям. Чтобы добавить пользователя, необходимо чтобы вы поместили сгенерированный им публичный ключ в каталог &laquo;keydir&raquo;.</p>
<p>Также, в &laquo;gitolite-admin&raquo; находится каталог &laquo;conf&raquo;, в котором присутствует конфигурационный файл &laquo;gitolite.conf&raquo;, со следующим содержимым:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">repo &nbsp; &nbsp;gitolite-admin<br />
&nbsp; &nbsp; &nbsp; &nbsp; RW+ &nbsp; &nbsp; = &nbsp; adw0rd, &lt;another-username&gt;<br />
<br />
repo &nbsp; &nbsp;testing<br />
&nbsp; &nbsp; &nbsp; &nbsp; RW+ &nbsp; &nbsp; = &nbsp; @all</div></div>
<p>По содержимому понятно как указывать репозитории, права и пользователей. Также есть специальный макрос &laquo;@all&raquo;, который содержит в себе всех пользователей из &laquo;keydir&raquo;.</p>
<p>Вы можете создавать свои макросы и использовать их в дальнейшем:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">@admins &nbsp; &nbsp; = adw0rd vasa_c<br />
@developers = @admins tester &nbsp;# Some comment<br />
@staff &nbsp; &nbsp; &nbsp;= @admins @developers<br />
<br />
repo &nbsp; &nbsp;gitolite-admin<br />
&nbsp; &nbsp; &nbsp; &nbsp; RW+ &nbsp; &nbsp; = &nbsp; @admins<br />
<br />
repo &nbsp; &nbsp;project<br />
&nbsp; &nbsp; &nbsp; &nbsp; RW+ &nbsp; &nbsp; = &nbsp; @developers</div></div>
<p><strong>Возможности прав:</strong></p>
<ul>
<li>&laquo;R&raquo;&nbsp;&mdash; только чтение refs;</li>
<li>&laquo;RW&raquo;&nbsp;&mdash; чтение и запись (в том числе создание новых) refs;</li>
<li>&laquo;RW+&raquo;&nbsp;&mdash; чтение, запись (с перезаписью существующих) и удаление refs;</li>
<li>&laquo;-&raquo;&nbsp;&mdash; доступ отсутствует;</li>
</ul>
<p><strong>Refex</strong> это регулярные выражения для удаленных (remote) веток, тегов и файлов:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">repo &nbsp;project<br />
&nbsp; &nbsp; RW+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = @leaders<br />
&nbsp; &nbsp; - &nbsp; &nbsp;production &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = @all<br />
&nbsp; &nbsp; R &nbsp; &nbsp;refs/heads/experimantal &nbsp;= @all<br />
&nbsp; &nbsp; - &nbsp; &nbsp;refs/heads/experimantal &nbsp;= @all<br />
&nbsp; &nbsp; - &nbsp; &nbsp;refs/tags/rc2000b &nbsp; &nbsp; &nbsp; &nbsp;= @all<br />
&nbsp; &nbsp; RW+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = @all</div></div>
<p>Если вы не указываете явно префикс "refs/<something>", то gitolite сам дописывает в начале &laquo;refs/heads/&raquo;, поэтому для &laquo;- production = @all&raquo; будет равносилен &laquo;- refs/heads/production = @all&raquo;.</p>
<h4>Права на ветки, теги и файлы</h4>
<p>Ну наконец перешли к самому интересному! Для примера сделаем чтобы <b>@leaders</b> имели доступ ко всему, а <b>@developers</b> имели доступ <b>только на чтение</b> к ветке &laquo;production&raquo; и тегам &laquo;rc*&raquo; (но не могли создавать такие теги).</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">repo &nbsp;project<br />
&nbsp; &nbsp; RW+ NAME/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = @leaders<br />
&nbsp; &nbsp; RW+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = @leaders<br />
<br />
&nbsp; &nbsp; # Ветка production (с двумя способами ввода)<br />
&nbsp; &nbsp; R &nbsp; production &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= @developers<br />
&nbsp; &nbsp; - &nbsp; refs/heads/production = @developers<br />
<br />
&nbsp; &nbsp; # Теги rc*<br />
&nbsp; &nbsp; R &nbsp; refs/tags/rc.* &nbsp; &nbsp; &nbsp; &nbsp;= @developers<br />
&nbsp; &nbsp; - &nbsp; refs/tags/rc.* &nbsp; &nbsp; &nbsp; &nbsp;= @developers<br />
<br />
&nbsp; &nbsp; # Также вы можете указать конкретные файлы:<br />
&nbsp; &nbsp; R &nbsp; NAME/.gitignore &nbsp; &nbsp; &nbsp; = @developers<br />
&nbsp; &nbsp; - &nbsp; NAME/.gitignore &nbsp; &nbsp; &nbsp; = @developers<br />
<br />
&nbsp; &nbsp; RW+ NAME/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = @developers<br />
&nbsp; &nbsp; RW+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = @developers</div></div>
<p>Порядок следования правил важен, так как они проверяются последовательно!</p>
<h4>Создание репозитория</h4>
<p>Чтобы создать новый репозиторий необходимо зайти на сервер и выполнить:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">su</span> - <span style="color: #c20cb9; font-weight: bold;">git</span><br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>repositories<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> someproject.git <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">cd</span> someproject.git<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">git init</span> <span style="color: #660033;">--bare</span><br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> 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>someproject.git<span style="color: #000000; font-weight: bold;">/</span></div></div>
<p>Теперь откроем файл &laquo;gitolite-admin/conf/gitolite.conf&raquo; и добавим нужный нам репозиторий:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">repo &nbsp; &nbsp;gitolite-admin<br />
&nbsp; &nbsp; &nbsp; &nbsp; RW+ &nbsp; &nbsp; = &nbsp; adw0rd<br />
<br />
repo &nbsp; &nbsp;someproject<br />
&nbsp; &nbsp; &nbsp; &nbsp; RW+ &nbsp; &nbsp; = &nbsp; adw0rd</div></div>
<p>Для того чтобы настройки вступили в силу надо отправить свои изменения на сервер:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">git commit</span> <span style="color: #660033;">-am</span> <span style="color: #ff0000;">&quot;Added the 'someproject' repo&quot;</span><br />
<span style="color: #c20cb9; font-weight: bold;">git push</span> origin master</div></div>
<p>Далее, можете получить свой репозиторий:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<br />
<span style="color: #c20cb9; font-weight: bold;">git clone</span> <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>gitolite:someproject.git someproject<br />
<br />
<span style="color: #666666; font-style: italic;"># или, если у вас уже есть проект</span><br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>someproject<br />
<span style="color: #c20cb9; font-weight: bold;">git remote</span> add origin <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>gitolite:someproject.git</div></div>
<p>Это всё. Рекомендую также почитать статью <noindex><a rel="nofollow" href="http://habrahabr.ru/post/136815/" >Знакомство с gitolite</a></noindex></p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2012/freebsd-debian-gitolite/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>FreeBSD и Debian. Установка и настройка Gitosis</title>
		<link>http://adw0rd.ru/2012/freebsd-debian-gitosis/</link>
		<comments>http://adw0rd.ru/2012/freebsd-debian-gitosis/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 22:35:32 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Gitosis]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=6301</guid>
		<description><![CDATA[Со временем я перешел с Mercurial на Git, почему это произошло я расскажу в другой статье. А сегодня я расскажу как организовать авторизацию и разграничение прав не репозитории при помощи Gitosis. Установка и настройка Git В любом случае нам понадобится создать группу и пользователя &#171;git&#187;, а также установить Git. FreeBSD: pw group add git adduser [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2012/freebsd-debian-gitosis/" ><img src="http://adw0rd.ru/wp-content/uploads/2011/04/250px-Git-logo.svg_.png" alt="" title="Git" width="250" height="96" class="alignright size-full wp-image-6311" /></a></p>
<p>Со временем я перешел с Mercurial на Git, почему это произошло я расскажу в другой статье. А сегодня я расскажу как организовать авторизацию и разграничение прав не репозитории при помощи Gitosis.</p>
<p><a name="git-install"></a></p>
<h3>Установка и настройка Git</h3>
<p>В любом случае нам понадобится создать группу и пользователя &laquo;git&raquo;, а также установить <strong>Git</strong>.</p>
<p>FreeBSD:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">pw group add <span style="color: #c20cb9; font-weight: bold;">git</span><br />
adduser <span style="color: #c20cb9; font-weight: bold;">git</span><br />
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>ports<span style="color: #000000; font-weight: bold;">/</span>devel<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">git</span><br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></div></div>
<p>Debian:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">groupadd <span style="color: #c20cb9; font-weight: bold;">git</span><br />
useradd <span style="color: #660033;">-g</span> <span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #c20cb9; font-weight: bold;">git</span><br />
<span style="color: #c20cb9; font-weight: bold;">apt-get install</span> <span style="color: #c20cb9; font-weight: bold;">git</span></div></div>
<p><span id="more-6301"></span></p>
<h3>Установка и настройка Gitosis</h3>
<p>В свое время, на работе, мы выбрали Gitosis и не разочаровались. Решение достаточно простое, опирающееся на git-хуки и <a href="/2011/ssh-auth-key/">ssh-ключи</a>, которое обеспечивает нас самым главным&nbsp;&mdash; разграничение прав на проекты.</p>
<blockquote>
<p>
Хранение публичных ключей всех пользователей в authorized_keys для предоставления доступа работает хорошо лишь на время. Когда у вас сотни пользователей это скорее похоже на пытку. Вы должны заходить на сервер каждый раз и нет никакого разграничения доступа — все перечисленные в файле имеют доступ на чтение и на запись к каждому проекту.</p>
<p>На этой стадии вы можете захотеть обратиться к широко используемому ПО под названием Gitosis. Gitosis — это просто набор сценариев (скриптов), который поможет вам управляться с файлом authorized_keys и реализовать простой контроль доступа. Действительно интересно, что интерфейсом для этого инструмента для добавления людей и определения доступа для них является не веб-интерфейс, а специальный git-репозиторий. Вы настраиваете информацию в этом проекте и, когда вы отправляете её в репозиторий, Gitosis исходя из неё перенастраивает сервер, что круто.</p>
<p><noindex><a rel="nofollow" href="http://progit.org/book/ru/ch4-7.html" >Pro Git&nbsp;&mdash; Pro Git 4.7 Git на сервере Gitosis</a></noindex>
</p>
</blockquote>
<p>Вообщем авторизация будет по ключам, а gitosis будет контролировать политику прав. Поехали!</p>
<h4>Установка Gitosis</h4>
<p>FreeBSD:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>ports<span style="color: #000000; font-weight: bold;">/</span>devel<span style="color: #000000; font-weight: bold;">/</span>py-gitosis<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> clean</div></div>
<p>Debian:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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 install</span> gitosis</div></div>
<p>Можно и из исходников, но так как разработка gitosis прекратилась осенью 2009 года, свежее всёравно не будет:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">git clone</span> git:<span style="color: #000000; font-weight: bold;">//</span>eagain.net<span style="color: #000000; font-weight: bold;">/</span>gitosis.git gitosis<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> gitosis<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> python setup.py <span style="color: #c20cb9; font-weight: bold;">install</span></div></div>
<h4>Настройка Gitosis</h4>
<p>Для начала нам надо создать на локальной машине ключ и скопировать его на сервер:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ssh-keygen -C “&lt;username&gt;” -t rsa<br />
scp ~/.ssh/id_rsa.pub &lt;username&gt;@example.org:key_for_gitosis.pub<br />
mv ~/.ssh/id_rsa ~/.ssh/gitosis</div></div>
<p>Теперь добавьте в свой локальный &laquo;.ssh/config&raquo;:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Host gitosis<br />
&nbsp; &nbsp; User git<br />
&nbsp; &nbsp; Hostname &lt;hostname&gt;<br />
&nbsp; &nbsp; IdentityFile ~/.ssh/gitosis</div></div>
<p>Далее, надо войти на сервер и проинициализировать gitosis:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">su</span> - <span style="color: #c20cb9; font-weight: bold;">git</span><br />
gitosis-init <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/&lt;</span>username<span style="color: #000000; font-weight: bold;">&gt;/</span>key_for_gitosis.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></div>
<p>Перейдем снова на локальную машину и попробуем подключится:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ssh git@gitosis -T<br />
&gt;&gt; ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.</div></div>
<p>Если примерно такой ответ, то все хорошо, продолжаем!</p>
<p>Теперь склонируем репозиторий &laquo;gitosis-admin&raquo; к себе и отредактируем конфигурационный файл:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">git clone</span> <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>gitosis:gitosis-admin.git gitosis-admin</div></div>
<p>В полученном репозитории вы увидите каталог &laquo;keydir&raquo;, в котором хранятся все публичные ключи пользователей имеющих доступ к репозиториям. Чтобы добавить пользователя, необходимо чтобы вы поместили сгенерированный им публичный ключ, а после добавили упоминание этого пользователя в файле &laquo;gitosis.conf&raquo; секция &laquo;members&raquo;.</p>
<p>Чтобы создать новый репозиторий необходимо зайти на сервер и выполнить:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>repositories<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> someproject.git <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">cd</span> someproject.git<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">git init</span> <span style="color: #660033;">--bare</span><br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> 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>someproject.git<span style="color: #000000; font-weight: bold;">/</span></div></div>
<p>Далее, добавим в локальный файл &laquo;gitosis.conf&raquo; что-то наподобие:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[group developers]<br />
writable = someproject<br />
members = adw0rd &lt;another-username&gt;</div></div>
<p>Также возможно унаследовать пользователей из другой группы, например:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[group developers]<br />
members = adw0rd example<br />
<br />
[group project]<br />
writable = project<br />
members = @developers tester</div></div>
<p>Вообщем в &laquo;members&raquo; надо перечислить пользователей, у которых есть доступ к репозиторию &laquo;writable&raquo;. И добавить в &laquo;keydir&raquo; публичные ключи полученные от пользователей. Это всё что надо!</p>
<p>Для отладки самого gitsis вам может понадобится эта опция:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[gitosis]<br />
loglevel=DEBUG</div></div>
<p>Gitosis читает файла настроек из этого файла &laquo;/home/git/repositories/.gitosis.conf&raquo;, он симлинк на &laquo;/home/git/repositories/gitosis-admin.git/gitosis.conf&raquo;. Так что вы всегда можете повлиять на конфигурационный файл gitosis&#39;а даже если потеряли доступ к нему из вне отредактировав вручную &laquo;/home/git/repositories/.gitosis.conf&raquo;.</p>
<p>Рекомендую также почитать <noindex><a rel="nofollow" href="https://wiki.archlinux.org/index.php/Gitosis" >Gitosis&nbsp;&mdash; ArchWiki</a></noindex>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2012/freebsd-debian-gitosis/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Обрабатываем LESS &#171;на лету&#187; с помощью Nginx и Node.js</title>
		<link>http://adw0rd.ru/2012/processing-less-via-nginx-and-nodejs/</link>
		<comments>http://adw0rd.ru/2012/processing-less-via-nginx-and-nodejs/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 12:30:09 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[LESS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=6982</guid>
		<description><![CDATA[Сегодня начал использовать twitter-bootstrap и решил процессить less не на клиентской стороне, а средствами сервера, просто по приколу. Сразу же вспомнил про статью на хабре Серверный процессинг LESS файлов «на лету» своими руками и решил реализовать то, что там написано. Принцип работы заключается в том, что все обращения к файлам &#171;*.less&#187; будут проксироваться через Nginx [...]]]></description>
			<content:encoded><![CDATA[<p><noindex><a href="/2012/processing-less-via-nginx-and-nodejs/"><img src="http://adw0rd.ru/wp-content/uploads/2012/03/less-nginx-and-nodejs.png"  alt="" title="less-via-nginx-and-nodejs" width="199" height="97" class="alignright size-full wp-image-6999" /></a></noindex></p>
<p>Сегодня начал использовать <noindex><a rel="nofollow" href="http://twitter.github.com/bootstrap/" >twitter-bootstrap</a></noindex> и решил процессить <noindex><a rel="nofollow" href="http://lesscss.org/" >less</a></noindex> не на клиентской стороне, а средствами сервера, просто по приколу. Сразу же вспомнил про статью на хабре <noindex><a rel="nofollow" href="http://habrahabr.ru/blogs/nginx/138103/" >Серверный процессинг LESS файлов «на лету» своими руками</a></noindex> и решил реализовать то, что там написано.</p>
<p>Принцип работы заключается в том, что все обращения к файлам &laquo;*.less&raquo; будут проксироваться через <strong>Nginx</strong> и преобразовываться на лету (можно и <a href="/2010/nginx-fastcgi-cache/">nginx-кеш</a> прикрутить, если надо) в <strong>css</strong> средствами <strong>node.js</strong>.<br />
<span id="more-6982"></span></p>
<h3>Установка</h3>
<p>Для начала нам надо установить nginx и node.js:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> nginx nodejs</div></div>
<p>Скачиваем <noindex><a rel="nofollow" href="https://github.com/adw0rd/less.js/downloads" >отсюда</a></noindex> последнюю версию <strong>less.js</strong> и устанавливаем:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cd ~<br />
wget -O adw0rd-less.js.tar.gz https://github.com/adw0rd/less.js/tarball/master<br />
tar -xzf adw0rd-less.js.tar.gz<br />
cd adw0rd-less.js-*<br />
<br />
# Проверяем less<br />
make test</div></div>
<h3>Настройка</h3>
<p>Добавим в &laquo;/etc/hosts&raquo; хост &laquo;example.loc&raquo;:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">127.0.0.1 example.loc</div></div>
<h4>Отконфигурируем Nginx</h4>
<p>Добавим в &laquo;/etc/nginx/nginx.conf&raquo; апстрим &laquo;lessserv&raquo;:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">upstream lessserv {<br />
&nbsp; &nbsp; server localhost:1337;<br />
}</div></div>
<p>Отредакируем ваш server-конфиг для &laquo;example.loc&raquo;&nbsp;&mdash; &laquo;/etc/nginx/sites-available/example.conf&raquo;:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">server {<br />
&nbsp; &nbsp; listen 80;<br />
&nbsp; &nbsp; server_name example.loc;<br />
&nbsp; &nbsp; root /path/to/example;<br />
<br />
&nbsp; &nbsp; location ~* \.less$ {<br />
&nbsp; &nbsp; &nbsp; &nbsp; proxy_pass http://lessserv;<br />
&nbsp; &nbsp; }<br />
}</div></div>
<p>После чего не забываем добавить в sites-enabled и зарелоадить Nginx:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span>example.conf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>sites-enabled<span style="color: #000000; font-weight: bold;">/</span>example.conf<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> nginx <span style="color: #660033;">-s</span> reload</div></div>
<h4>Теперь перейдем к node.js</h4>
<p>В файле &laquo;bin/lessserv&raquo; вы можете указать нужный вам <strong>listen_host</strong> и <strong>listen_port</strong>, по умолчанию:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var listen_port = 1337,<br />
&nbsp; &nbsp; listen_host = &quot;127.0.0.1&quot;;</div></div>
<p>Запускаем lessserv, который и будет проксировать наши less-файлы:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cd ~/adw0rd-less.js-*<br />
node bin/lessserv --path=/path/to/example</div></div>
<p>Проверяем по ссылке: <noindex><a rel="nofollow" href="http://example.loc/bootstrap/less/bootstrap.less" >http://example.loc/bootstrap/less/bootstrap.less</a></noindex>, если отдается готовый css-файл, то все у вас получилось!</p>
<blockquote class="info">
<p>
Ествественно, в каталоге &laquo;/path/to/example&raquo; должен присутствовать распакованный каталог <noindex><a rel="nofollow" href="https://github.com/twitter/bootstrap/downloads" >bootstrap</a></noindex>.
</p>
</blockquote>
<p>Далее в <strong>html</strong> подключать можно так:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://example.loc/bootstrap/less/bootstrap.less&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></div></div>
<p>P.S. Вообщем статья это &laquo;толстый Like&raquo; <noindex><a rel="nofollow" href="http://habrahabr.ru/blogs/nginx/138103/" >статьи с хабра</a></noindex>, хотя более подробная в плане настроек, пофикшены инструкции (proxy_pass, вместо proxy_path), а также немного улучшен &laquo;less.js&raquo; на <noindex><a rel="nofollow" href="https://github.com/adw0rd/less.js" >GitHub</a></noindex>&#39;е :)</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2012/processing-less-via-nginx-and-nodejs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Настройка SSD на xubuntu linux</title>
		<link>http://adw0rd.ru/2012/ssd-on-linux/</link>
		<comments>http://adw0rd.ru/2012/ssd-on-linux/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 12:17:07 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[ThinkPad]]></category>
		<category><![CDATA[xubuntu]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=6816</guid>
		<description><![CDATA[Это вторая часть &#171;разделенной&#187; статьи о покупке ThinkPad и настройки SSD на xubuntu. Первая часть находится тут. Недавно прикупил себе Intel 310 SSD и хочу рассказать о его установке и настройке более детально. В первую очередь его надо физически установить, делается это так: Service Videos, смотрите раздел &#171;FRU Removals/Replacements&#187; > &#171;WWAN Adapter&#187;. Вообще на этом [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2012/ssd-on-linux/" ><img src="http://adw0rd.ru/wp-content/uploads/2012/02/thinkpad_ssd.jpg" alt="" title="Linux SSD" width="210" height="197" class="alignright size-full wp-image-6596" /></a></p>
<p>Это вторая часть &laquo;разделенной&raquo; статьи о покупке ThinkPad и настройки SSD на xubuntu. Первая часть находится <a href="/2012/thinkpad-x220i/">тут</a>.</p>
<p>Недавно прикупил себе Intel 310 SSD и хочу рассказать о его установке и настройке более детально. В первую очередь его надо физически установить, делается это так: <noindex><a rel="nofollow" href="http://www.lenovoservicetraining.com/ion/X220/index.html" >Service Videos</a></noindex>, смотрите раздел &laquo;FRU Removals/Replacements&raquo; > &laquo;WWAN Adapter&raquo;. Вообще на этом сайте есть всё что надо для того чтобы пересобрать ноутбук ThinkPad.</p>
<p>Далее, нам понадобится утилита для анализа активности работы I/O. Мне понравился <strong>iotop</strong>:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">$ </span><span style="color: #c20cb9; font-weight: bold;">sudo</span> iotop <span style="color: #660033;">-oa</span></div></div>
<p>Где:</p>
<ul>
<li><strong>-o</strong>&nbsp;&mdash; only show processes or threads actually doing I/O</li>
<li><strong>-a</strong>&nbsp;&mdash; show accumulated I/O instead of bandwidth</li>
</ul>
<p>Таким образом мы получим агрегированную информацию по процессам которые активно используют наш SSD.<br />
<span id="more-6816"></span></p>
<blockquote class="info">
<p>
Сразу скажу, что я использовал <strong>Ext4</strong> и журналирование НЕ отключал, а <strong>swap</strong> я разместил на соседнем HDD, который шёл в комплектации. Статья включающая отключение журналирования находится <noindex><a rel="nofollow" href="http://habrahabr.ru/blogs/linux/129551/" >тут</a></noindex>. Там же в комментариях говорится о том, что перестанет работать <strong>discard</strong> (он же <strong>TRIM</strong>), если вы отключите журналирование!
</p>
</blockquote>
<p>Проверить скорость работы накопителя можно так:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">$ </span><span style="color: #c20cb9; font-weight: bold;">sudo</span> hdparm <span style="color: #660033;">-t</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1</div></div>
<h4>Настройка fstab и включение TRIM</h4>
<p>Будем подключать наш SSD со следующими дополнительными опциями:</p>
<blockquote>
<p>
    <strong>noatime</strong>&nbsp;&mdash; не записывать access-time для <em>файлов</em>, потомучто нам не нужны лишние записи на SSD;<br />
    <strong>nodiratime</strong>&nbsp;&mdash; не записывать access-time для <em>каталогов</em>, потомучто нам не нужны лишние  записи на SSD;<br />
    <strong>discard</strong>&nbsp;&mdash; включение TRIM. TRIM повысит время жизни нашего SSD накопителя.
</p>
</blockquote>
<blockquote>
<p>TRIM — команда, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных больше не используются и могут быть использованы накопителем для подготовки к записи.<br />
<noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/TRIM_%28%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0_SSD%29" >TRIM (команда SSD) — Википедия</a></noindex></p>
</blockquote>
<p>Отредактируйте /etc/fstab до вида:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># My SSD<br />
UUID=&lt;ВАШ_UUID&gt; &nbsp;/ &nbsp;ext4 &nbsp;noatime,nodiratime,discard,errors=remount-ro &nbsp;0 &nbsp;1<br />
<br />
# My SWAP<br />
UUID=&lt;ВАШ_UUID_ДЛЯ_SWAP&gt; &nbsp;none &nbsp;swap &nbsp;sw &nbsp;0 &nbsp;0<br />
<br />
# Memory FS for /tmp and /var/tmp<br />
tmpfs &nbsp;/tmp &nbsp; &nbsp; &nbsp;tmpfs &nbsp;defaults &nbsp;0 &nbsp;0<br />
tmpfs &nbsp;/var/tmp &nbsp;tmpfs &nbsp;defaults &nbsp;0 &nbsp;0</div></div>
<p><strong>swap</strong> можно вообще отключить через команду <strong>swapoff</strong> (см. также <strong>swapon</strong> и их параметры, а для полного отключения закоментируйте определение swap в /etc/fstab), если конечно вам позволяет объем вашей ОЗУ. Я бы рекомендовал именно такой подход: не хватает памяти и активно используется <strong>swap</strong>&nbsp;&mdash; купи памяти, а своп только на аварийный случай.</p>
<p>Для применения настроек необходимо перезагрузиться.</p>
<h4>Теперь проверим работает ли TRIM</h4>
<p>Смысл проверки в том, чтобы <strong>TRIM</strong> затёр данные на нашем накопителе, для этого надо создать файл, потом его удалить и проверить сектора данных где был расположен файл.</p>
<p>Создаем файл:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># cd /</span><br />
<span style="color: #666666; font-style: italic;"># dd if=/dev/urandom of=testfile count=10 bs=512k oflag=direct</span><br />
<span style="color: #000000;">10</span>+<span style="color: #000000;">0</span> records <span style="color: #000000; font-weight: bold;">in</span><br />
<span style="color: #000000;">10</span>+<span style="color: #000000;">0</span> records out<br />
<span style="color: #000000;">5242880</span> bytes <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5.2</span> MB<span style="color: #7a0874; font-weight: bold;">&#41;</span> copied, <span style="color: #000000;">0.885252</span> s, <span style="color: #000000;">5.9</span> MB<span style="color: #000000; font-weight: bold;">/</span>s<br />
<br />
<span style="color: #666666; font-style: italic;"># hdparm --fibmap testfile</span><br />
testfile:<br />
&nbsp;filesystem blocksize <span style="color: #000000;">4096</span>, begins at LBA <span style="color: #000000;">2048</span>; assuming <span style="color: #000000;">512</span> byte sectors.<br />
&nbsp;byte_offset &nbsp;begin_LBA &nbsp; &nbsp;end_LBA &nbsp; &nbsp;sectors<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000000;">0</span> &nbsp; &nbsp;<span style="color: #000000;">5866496</span> &nbsp; &nbsp;<span style="color: #000000;">5876735</span> &nbsp; &nbsp; &nbsp;<span style="color: #000000;">10240</span></div></div>
<p>Копируем <strong>begin_LBA</strong> и вставляем в следующей команде:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># hdparm --read-sector 5866496 /dev/sdb</span><br />
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb:<br />
reading sector <span style="color: #000000;">5866496</span>: succeeded<br />
0c0b a504 8ced cbd8 8f18 f667 694d 3ee0<br />
<span style="color: #000000;">3516</span> a8fc e4ae 0859 8cd5 01fe 786e 3f84<br />
569b e0db 6aa1 89c3 e617 8ace 30fd 9a7d<br />
5d2a 51f6 <span style="color: #000000;">3419</span> 77d8 060f c540 a42b <span style="color: #000000;">2219</span><br />
cecb 2c36 12ec d875 d2ba e86a 4e99 6b89<br />
a84c e40d bf0e aea4 dfcc 72e0 2f46 <span style="color: #000000;">9200</span><br />
c449 f8d2 34b5 <span style="color: #000000;">7018</span> 372c c704 6d49 6cef<br />
8fad ed14 4e39 486c 09e9 8e67 a086 bbad<br />
b229 8d79 0be2 6bef 950e <span style="color: #000000;">9089</span> a95e b633<br />
d1e6 8bca 01dc 0054 <span style="color: #000000;">7302</span> 9f38 6b93 e09a<br />
7cff 4a08 c017 0a21 6f43 <span style="color: #000000;">6710</span> 31df <span style="color: #000000;">3392</span><br />
0f8f ed46 4e4b b0d9 <span style="color: #000000;">5415</span> 9f5e 9d32 fe10<br />
<span style="color: #000000;">3423</span> beda bd5a 981b 0fd9 985d 16fe 3b92<br />
79c0 7b8c a220 3bc0 <span style="color: #000000;">1458</span> 0645 5aa3 5ff9<br />
bd28 8a0d f280 a3ab b3d7 ca05 4d22 312e<br />
43ce 5f3b 9d7b d66b ba35 d257 7be1 6ecd<br />
afc8 205a 36c3 f6e1 743d df89 <span style="color: #000000;">7373</span> 9a95<br />
7aea 091c <span style="color: #000000;">7986</span> 58bc 169c c3dc 794d a613<br />
157e 51ad e5fe e91b a3e1 d40c d0f2 <span style="color: #000000;">2626</span><br />
<span style="color: #000000;">5643</span> 3ec9 006c 68e4 947a bec7 29b4 077e<br />
c79b <span style="color: #000000;">9195</span> fd8f bb06 2cd1 6aad 5ffb 23d9<br />
aefb 52a8 0a55 94e3 4da1 2ce3 06bc 249f<br />
a428 66b1 <span style="color: #000000;">4530</span> 690f c744 3a23 <span style="color: #000000;">6237</span> <span style="color: #000000;">2043</span><br />
<span style="color: #000000;">4759</span> d5c6 <span style="color: #000000;">8020</span> <span style="color: #000000;">2689</span> f0fd b046 34f8 8e0d<br />
4c63 e760 0f0b 0264 02cc 8faf f2fa ce82<br />
6e1e <span style="color: #000000;">7410</span> 2ee7 f838 99f6 dd73 fccb <span style="color: #000000;">4164</span><br />
<span style="color: #000000;">3120</span> 35e0 a388 da2c 655d c140 42bd <span style="color: #000000;">1569</span><br />
87ab 9d83 9f75 eb7e e8d1 61ed b24f 0f09<br />
c454 4c35 006d e831 67cd 0161 a6a6 fb25<br />
79db b76c eeb1 21fb a15f <span style="color: #000000;">8756</span> f35b 5ffe<br />
<span style="color: #000000;">7111</span> 7b58 <span style="color: #000000;">5453</span> 37f3 32d1 2d92 3f37 b4c5<br />
<span style="color: #000000;">7982</span> 884b 1c63 <span style="color: #000000;">8488</span> 0f67 8f5f 2fa5 30ad</div></div>
<p>Ага, всё хорошо, данные в секторах есть, теперь удалим файл и узнаем сработает ли <strong>TRIM</strong>:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># rm testfile </span><br />
<span style="color: #666666; font-style: italic;"># sync</span><br />
<span style="color: #666666; font-style: italic;"># hdparm --read-sector 5866496 /dev/sdb</span><br />
<br />
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb:<br />
reading sector <span style="color: #000000;">5866496</span>: succeeded<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
0000 0000 0000 0000 0000 0000 0000 0000</div></div>
<p>Если у вас получились все нули, то TRIM работает,<br />
Если нет, то проверяйте ваш fstab и пиши комментарии, помогу.</p>
<h4>Настройка grub</h4>
<p>Добавьте в файл &laquo;/etc/default/grub&raquo; -> &laquo;elevator=noop&raquo;. Эта опция нужна для отмены режима парковки HDD (которая включена по дефолту), так как SSD-накопителю этого не надо делать по физическим причинам? то будем отключать:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash&quot;<br />
GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash elevator=noop&quot;</div></div>
<p><!-- See: /sys/block/sda/queue/scheduler --></p>
<p>Для того чтобы изменения вступили в силу выполните:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">$ </span><span style="color: #c20cb9; font-weight: bold;">sudo</span> update-grub</div></div>
<h4>Настройка отложенной записи на диск</h4>
<p>Так как я не отключаю журналирование, то надо настроить систему так, чтобы она больше копила данных в буфере и скидывала на диск реже информацию. Это более экономично для времени автономной работы ноутбука (так как диск будет простаивать некоторое время) и времени жизни самого SSD. Отредактируйте &laquo;/etc/sysctl.conf&raquo; до следующего вида:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># Включаем режим<br />
vm.laptop_mode = 5<br />
# Устанавливаем таймаут, по истечении которого будут сбросаны данные на диск (6000 == 60 секунд, по умолчанию этот параметр равен 500, т.е. 5 секунд)<br />
vm.dirty_writeback_centisecs = 6000</div></div>
<p>Насколько я понимаю, то &laquo;vm.dirty_writeback_centisecs&raquo; это одно и тоже что и &laquo;commit&raquo; в fstab, если я ошибаюсь&nbsp;&mdash; поправьте меня.</p>
<p>Для того чтобы изменения вступили в силу выполните:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ sudo sysctl -p</div></div>
<p>Более подробно об этом и много другом в <noindex><a rel="nofollow" href="http://www.lesswatts.org/tips/disks.php" >Disks and Filesystems / Tips &#038; Tricks / LessWatts.org</a></noindex>.</p>
<h4>Настройка SWAP</h4>
<p>Сам я не пользуюсь этой настройкой, о причинах я говорил уже выше, но для полноты статьи приведу всётаки. Есть настройка &laquo;vm.swappiness&raquo;, в которой задается некий коэффициент, если он большой, то своп используется активно, если он маленький то будет редко использоваться, более подробно тут <noindex><a rel="nofollow" href="http://www.linuxvox.com/2009/10/what-is-the-linux-kernel-parameter-vm-swappiness/" >What Is the Linux Kernel Parameter vm.swappiness?</a></noindex>. Отредактируйте &laquo;/etc/sysctl.conf&raquo;:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># По умолчанию этот параметр равен &quot;60&quot;<br />
vm.swappiness = 10</div></div>
<p>Для того чтобы изменения вступили в силу выполните:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ sudo sysctl -p</div></div>
<h4>Настройка FireFox</h4>
<p>Для того чтобы <em>увеличить жизнь SSD</em> я решил отключить кеш браузера (только на диске, кеша в памяти это не касается), для этого заходим в &laquo;about:config&raquo; и редактируем следующие опции:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">browser.cache.disk.enable -&gt; false<br />
browser.cache.disk_cache_ssl -&gt; false</div></div>
<p><!-- See: network.http.use-cache -> false --><br />
Статистику кеша браузера можно наблюдать если войти в &laquo;about:cache&raquo;, также там будут локейшены до кеша и т.д. Также доступны два параметра для этой статистики:</p>
<ul>
<li>&laquo;about:cache?device=memory&raquo; — список для кеша в памяти;</li>
<li>&laquo;about:cache?device=disk&raquo; — список для кеша на диске.</li>
</ul>
<p><!-- See: about:cache-entry — Shows information about a cache entry. Used in about:cache links. Requires parameters. --></p>
<h3>Что ещё почитать про SSD?</h3>
<ul>
<li><noindex><a rel="nofollow" href="http://www.lesswatts.org/tips/disks.php" >Disks and Filesystems / Tips &#038; Tricks / LessWatts.org</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://habrahabr.ru/blogs/linux/129551/" >Оптимизация Ubuntu (и прочих Linux-ов) под SSD / Linux для всех / Хабрахабр</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://chooselinux.org.ua/optimizaciya-ubuntu-11-04-pod-ssd/" >Оптимизация Ubuntu 11.04 под SSD | ChooseLinux</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://vasilisc.com/ssd_ubuntu" >Установка Ubuntu Linux на SSD</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://optimization.hardlinux.ru/?page_id=224" >Linux optimization » SSD</a></noindex></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2012/ssd-on-linux/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>FreeBSD. Обновление таймзоны по повелению президента</title>
		<link>http://adw0rd.ru/2011/freebsd-msk-timezone/</link>
		<comments>http://adw0rd.ru/2011/freebsd-msk-timezone/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 20:49:02 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=6477</guid>
		<description><![CDATA[8 февраля 2011 года президент России Дмитрий Медведев дал поручение правительству об отмене перевода стрелок: после перехода на летнее время 27 марта 2011 года Россия должна жить только по летнему времени, которое опережает поясное (принятое декретом 1919 года) на 1 или 2 часа в зависимости от региона. В соответствии с этим поручением был подготовлен «Закон [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2011/freebsd-localtime-timezone/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/01/250px-freebsd_logo.png" alt="" title="freebsd" width="250" height="90" class="alignright size-full wp-image-491" /></a></p>
<blockquote>
<p>
8 февраля 2011 года президент России Дмитрий Медведев дал поручение правительству об отмене перевода стрелок: после перехода на летнее время 27 марта 2011 года Россия должна жить только по летнему времени, которое опережает поясное (принятое декретом 1919 года) на 1 или 2 часа в зависимости от региона. В соответствии с этим поручением был подготовлен «Закон об исчислении времени», который Государственная дума приняла 20 мая. 3 июня 2011 года президент подписал Закон, и он вступил в силу с 5 августа 2011 года</p>
<p><noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D1%82%D0%BD%D0%B5%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F" >Летнее время</a></noindex>
</p>
</blockquote>
<p>FreeBSD 8.1 как и многий другой софт не подчинился новому закону Дмитрия Анатольевича, так что будем исправлять ситуацию.</p>
<p>Поставим zoneinfo, оттуда будем брать новую таймзону</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>ports<br />
$ portsnap fetch update<br />
$ <span style="color: #7a0874; font-weight: bold;">cd</span> misc<span style="color: #000000; font-weight: bold;">/</span>zoneinfo<br />
$ <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> clean</div></div>
<p>Проверим работает ли нужная нам таймзона и текущее время:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">zdump</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>zoneinfo<span style="color: #000000; font-weight: bold;">/</span>Europe<span style="color: #000000; font-weight: bold;">/</span>Moscow <br />
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>zoneinfo<span style="color: #000000; font-weight: bold;">/</span>Europe<span style="color: #000000; font-weight: bold;">/</span>Moscow &nbsp;Wed Nov &nbsp;<span style="color: #000000;">9</span> 00:<span style="color: #000000;">16</span>:<span style="color: #000000;">29</span> <span style="color: #000000;">2011</span> MSK<br />
$ <span style="color: #c20cb9; font-weight: bold;">date</span><br />
Wed Nov &nbsp;<span style="color: #000000;">8</span> <span style="color: #000000;">23</span>:<span style="color: #000000;">16</span>:<span style="color: #000000;">40</span> MSK <span style="color: #000000;">2011</span></div></div>
<p>Как видим расходится, так что установим новую хорошую таймзону:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>zoneinfo<span style="color: #000000; font-weight: bold;">/</span>Europe<span style="color: #000000; font-weight: bold;">/</span>Moscow <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>localtime <br />
$ <span style="color: #c20cb9; font-weight: bold;">date</span><br />
Wed Nov &nbsp;<span style="color: #000000;">9</span> 00:<span style="color: #000000;">16</span>:<span style="color: #000000;">56</span> MSK <span style="color: #000000;">2011</span></div></div>
<p><span id="more-6477"></span><br />
Не забудьте перезагрузить &laquo;mysqld&raquo;:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.d<span style="color: #000000; font-weight: bold;">/</span>mysql-server restart</div></div>
<h3>Не взлетел PHP?</h3>
<p>Если PHP не взлетел, то используйте pecl-timezonedb:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>ports<span style="color: #000000; font-weight: bold;">/</span>misc<span style="color: #000000; font-weight: bold;">/</span>pecl-timezonedb<br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> clean</div></div>
<p>и убедитесь что &laquo;timezonedb.so&raquo; добавился в &laquo;/usr/local/etc/php/extensions.ini&raquo;:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">...<br />
<span style="color: #000099;">extension</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">timezonedb.so</span></div></div>
<h3>Синхронизация</h3>
<p>Просинхронизируйте ваше время:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ntpdate <span style="color: #660033;">-v</span> <span style="color: #660033;">-b</span> europe.pool.ntp.org</div></div>
<p>Можете настроить &laquo;rc.conf&raquo; для постоянной синхронизации времени:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">ntpdate_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span><br />
<span style="color: #007800;">ntpdate_hosts</span>=<span style="color: #ff0000;">&quot;europe.pool.ntp.org&quot;</span></div></div>
<p>Так же можете почитать <noindex><a rel="nofollow" href="http://www.manpagez.com/man/8/ntpdate/" >man page ntpdate</a></noindex> и посмотреть какие ещё есть параметры конфигурации для &laquo;rc.conf&raquo;:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">grep</span> <span style="color: #660033;">-r</span> ntpdate <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>defaults<span style="color: #000000; font-weight: bold;">/</span>rc.conf <br />
<span style="color: #007800;">ntpdate_enable</span>=<span style="color: #ff0000;">&quot;NO&quot;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># Run ntpdate to sync time on boot (or NO).</span><br />
<span style="color: #007800;">ntpdate_program</span>=<span style="color: #ff0000;">&quot;/usr/sbin/ntpdate&quot;</span> &nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># path to ntpdate, if you want a different one.</span><br />
<span style="color: #007800;">ntpdate_flags</span>=<span style="color: #ff0000;">&quot;-b&quot;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># Flags to ntpdate (if enabled).</span><br />
<span style="color: #007800;">ntpdate_config</span>=<span style="color: #ff0000;">&quot;/etc/ntp.conf&quot;</span> &nbsp;<span style="color: #666666; font-style: italic;"># ntpdate(8) configuration file</span><br />
<span style="color: #007800;">ntpdate_hosts</span>=<span style="color: #ff0000;">&quot;&quot;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># Whitespace-separated list of ntpdate(8) servers.</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2011/freebsd-msk-timezone/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Xubuntu. Проблемы с авторизацией после апгрейда с 11.04 на 11.10</title>
		<link>http://adw0rd.ru/2011/xubuntu-1104-1110/</link>
		<comments>http://adw0rd.ru/2011/xubuntu-1104-1110/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 18:11:55 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[xubuntu]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=6461</guid>
		<description><![CDATA[Обновил я на той неделе свою Xubuntu с 11.04 на 11.10, как и опасался оно не взлетело с первого раза. Симптомы были следующие: gdm стартовал успешно, но авторизоваться под своим пользователем не получалось, вылетало на авторизацию вновь (gdm), при этом новые учетные записи авторизовывало успешно. Посравнивал свои конфигурационные файлы с другой учетной записью, ничего криминального [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/wp-content/uploads/2011/10/f28838f7915a239766214d95f67-e1319541232350.png" ><img src="http://adw0rd.ru/wp-content/uploads/2011/10/f28838f7915a239766214d95f67-e1319541281528.png" alt="" title="xubuntu" width="99" height="149" class="alignright size-full wp-image-6464" /></a></p>
<p>Обновил я на той неделе свою Xubuntu с 11.04 на 11.10, как и опасался оно не взлетело с первого раза.<br />
Симптомы были следующие: gdm стартовал успешно, но авторизоваться под своим пользователем не получалось, вылетало на авторизацию вновь (gdm), при этом новые учетные записи авторизовывало успешно.<br />
Посравнивал свои конфигурационные файлы с другой учетной записью, ничего криминального не нашёл, кроме того что в моём домашнем каталоге были файлы не от моего пользователя.</p>
<h3>Решение проблемы</h3>
<p>Переключаемся в один из терминалов (например tty1) с помощью Ctrl+Alt+F1 и вводим следующее:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> <span style="color: #000000; font-weight: bold;">&lt;</span>username<span style="color: #000000; font-weight: bold;">&gt;</span>:<span style="color: #000000; font-weight: bold;">&lt;</span>usergroup<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/&lt;</span>username<span style="color: #000000; font-weight: bold;">&gt;</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> shutdown <span style="color: #660033;">-r</span> now</div></div>
<p>Это решило мои проблемы.</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2011/xubuntu-1104-1110/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH. Авторизация через ключ</title>
		<link>http://adw0rd.ru/2011/ssh-auth-key/</link>
		<comments>http://adw0rd.ru/2011/ssh-auth-key/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 17:26:59 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=6386</guid>
		<description><![CDATA[Если вам надоело вводить логин и пароль при подключении по SSH, либо ваше приложение не поддерживает ввод логина и пароля для SSH, а соединиться всётаки надо, то вам просто необходимо использовать авторизацию по ключам! Для этого надо настроить на стороне клиента и сервера ключи, для клиента будет приватный, а на сервере будет храниться публичный ключ. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/2011/ssh-auth-key/"><img src="/wp-content/uploads/2011/08/ssh-auth-key2.jpg" alt="" title="ssh-auth-key2" width="103" height="151" class="alignright size-full wp-image-6403" /></a></p>
<p>Если вам надоело вводить логин и пароль при подключении по <strong>SSH</strong>, либо ваше приложение не поддерживает ввод логина и пароля для <strong>SSH</strong>, а соединиться всётаки надо, то вам просто необходимо использовать авторизацию по ключам!</p>
<p>Для этого надо настроить на стороне клиента и сервера ключи, для клиента будет приватный, а на сервере будет храниться публичный ключ.</p>
<h3>Настройка на стороне клиента</h3>
<p>Создайте и/или отредактируйте файл &laquo;~/.ssh/config&raquo;:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Host example<br />
&nbsp; &nbsp; User username<br />
&nbsp; &nbsp; Hostname example.com<br />
&nbsp; &nbsp; Port <span style="color: #000000;">22</span><br />
&nbsp; &nbsp; IdentityFile ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>username_example</div></div>
<p><strong>Где,</strong></p>
<ul>
<li>&laquo;Host <strong>example&raquo;</strong>&nbsp;&mdash; название хоста, которое вы будете указывать при подключении по SSH (Пример: &laquo;ssh example&raquo;);</li>
<li>&laquo;User <strong>username&raquo;</strong>&nbsp;&mdash; имя вашего пользователя на сервере;</li>
<li>&laquo;Hostname <strong>example.com&raquo;</strong>&nbsp;&mdash; имя хоста вашего сервера (в отличии от <strong>Host</strong> это действительно имя сервера, а не просто имя для соединения);</li>
<li>&laquo;Port <strong>22&raquo;</strong>&nbsp;&mdash; SSH порт;</li>
<li>&laquo;IdentityFile <strong>~/.ssh/username_example&raquo;</strong>&nbsp;&mdash; файл с публичным ключом.</li>
</ul>
<p><span id="more-6386"></span></p>
<h3>Генерация ключей и передача их на сервер</h3>
<p>Далее, сгенерируем ключи.<br />
После чего сразу же перешлём публичный ключ на сервер, а приватный переименуем в &laquo;~/.ssh/username_example&raquo;:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">ssh-keygen</span><br />
<span style="color: #c20cb9; font-weight: bold;">scp</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa.pub username<span style="color: #000000; font-weight: bold;">@</span>example.com:~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>authorized_keys<br />
<span style="color: #c20cb9; font-weight: bold;">mv</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>username_example<br />
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #660033;">-R</span> <span style="color: #000000;">600</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<br />
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">700</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh</div></div>
<p>Теперь должно подключаться по ключу:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">ssh</span> example</div></div>
<p>Если нет, то пишите камменты :)</p>
<h3>Утилита ssh-copy-id</h3>
<p>Также есть более быстрый (меньше телодвижений) и правильный (он добавляет ключ в &laquo;~/.ssh/authorized_keys&raquo; на сервере, а не замещает как &laquo;scp&raquo;) способ передавать публичный ключ на сервер, это утилита <strong>ssh-copy-id</strong>.</p>
<p>То есть вместо:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">ssh-keygen</span><br />
<span style="color: #c20cb9; font-weight: bold;">scp</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa.pub username<span style="color: #000000; font-weight: bold;">@</span>example.com:~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>authorized_keys</div></div>
<p>надо использовать так:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">ssh-keygen</span><br />
ssh-copy-id <span style="color: #660033;">-i</span> username<span style="color: #000000; font-weight: bold;">@</span>example.com</div></div>
<p>Ну вот и всё, смотрите также:<br />
<a href="/2011/wordpress-update-ssh/">WordPress. Обновление движка и плагинов через ssh</a><br />
<a href="/2010/first-measures-security-freebsd/">Первые меры безопасности во FreeBSD</a><br />
<a href="/2009/ssh-auth-keys/">FreeBSD. Без парольный доступ по SSH с использованием шифрованных ключей</a><br />
<a href="/2009/denyhosts/">FreeBSD. DenyHosts защитит вас от брутфорса SSH</a></p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2011/ssh-auth-key/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

