<?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>Chronosbox &#187; Servidores</title>
	<atom:link href="http://chronosbox.org/blog/categories/linux/servidores/feed" rel="self" type="application/rss+xml" />
	<link>http://chronosbox.org/blog</link>
	<description>idéias e dicas de uma mente insana trabalhando com TI</description>
	<lastBuildDate>Sun, 30 Oct 2011 04:57:21 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Erro do django-reversion 1.5 com django </title>
		<link>http://chronosbox.org/blog/erro-do-django-reversion-1-5-com-django</link>
		<comments>http://chronosbox.org/blog/erro-do-django-reversion-1-5-com-django#comments</comments>
		<pubDate>Tue, 27 Sep 2011 14:06:47 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[apache wsgi django reversion]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=397</guid>
		<description><![CDATA[Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços! Isso me aconteceu a [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Nota</strong>: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo <a href="http://twitter.com/handrus">Handrus Nogueira</a>, portanto não deixem de visitar o <a href="http://devwithpassion.com">Dev With Passion</a>! Todos os posts do ChronosBox estarão no <a href="http://devwithpassion.com">Dev With Passion</a>, exceto por alguns comentários novos. Abraços!</em></p>
<p>Isso me aconteceu a pouco e eu não vi resultados no google para o erro em específico, então estou eu aqui fazendo minha parte <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Caso você ver o erro abaixo e tiver rodando reversion 1.5 + django 1.2.x, você precisa instalar alguma versão menor que a 1.5 do reversion, pois a 1.5 só suporta django 1.3 (<a href="https://github.com/etianen/django-reversion/wiki/Compatible-Django-Versions">veja tabela de versões aqui</a>).</p>
<p>Segue a exception:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="log" style="font-family:monospace;color: #FCFFBA;">[Tue Sep 27 10:19:17 2011] [error] MyLDAPUser-&gt;AUTHENTICATE: felipe.rafael@pdg.com.br authenticated :D
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] mod_wsgi (pid=14847): Exception occurred processing WSGI script '/var/www/qas3/portal/apache/virtualenv-qas3.wsgi'.
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] Traceback (most recent call last):
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/core/handlers/wsgi.py&quot;, line 252, in __call__
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     response = middleware_method(request, response)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/site-packages/reversion/middleware.py&quot;, line 20, in process_response
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     reversion.revision.end()
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/site-packages/reversion/revisions.py&quot;, line 301, in end
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     comment = self._state.comment,
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/manager.py&quot;, line 138, in create
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return self.get_query_set().create(**kwargs)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/query.py&quot;, line 358, in create
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     obj.save(force_insert=True, using=self.db)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/base.py&quot;, line 458, in save
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     self.save_base(using=using, force_insert=force_insert, force_update=force_update)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/base.py&quot;, line 551, in save_base
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     result = manager._insert(values, return_id=update_pk, using=using)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/manager.py&quot;, line 195, in _insert
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return insert_query(self.model, values, **kwargs)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/query.py&quot;, line 1524, in insert_query
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return query.get_compiler(using=using).execute_sql(return_id)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/sql/compiler.py&quot;, line 788, in execute_sql
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     cursor = super(SQLInsertCompiler, self).execute_sql(None)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/sql/compiler.py&quot;, line 732, in execute_sql
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     cursor.execute(sql, params)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/backends/util.py&quot;, line 15, in execute
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return self.cursor.execute(sql, params)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/backends/mysql/base.py&quot;, line 86, in execute
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return self.cursor.execute(query, args)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/site-packages/MySQLdb/cursors.py&quot;, line 176, in execute
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     if not self._defer_warnings: self._warning_check()
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/site-packages/MySQLdb/cursors.py&quot;, line 92, in _warning_check
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     warn(w[-1], self.Warning, 3)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] Warning: Field 'manager_slug' doesn't have a default value</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/erro-do-django-reversion-1-5-com-django/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrando bases de dados LATIN1 para UTF-8 com o PostgreSQL</title>
		<link>http://chronosbox.org/blog/moving-postgresql-databases-from-latim1-to-utf8</link>
		<comments>http://chronosbox.org/blog/moving-postgresql-databases-from-latim1-to-utf8#comments</comments>
		<pubDate>Sat, 06 Feb 2010 05:59:22 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Debian/Ubuntu]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[clusters]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[iso-8859-1]]></category>
		<category><![CDATA[latin1]]></category>
		<category><![CDATA[pgsql]]></category>
		<category><![CDATA[psql]]></category>
		<category><![CDATA[servers]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[utf-8]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=264</guid>
		<description><![CDATA[Nos dias atuais é um padrão que todos os sites e servidores web rodem ao menos com UTF-8 como encoding default, entretanto pode-se encontrar casos onde ainda se roda LATIN1 ou até mesmo ASCII. O caso que tratamos hoje é de um servidor Debian, versão 5.0.3 (lenny), que usava o encode LATIN1 quando instalado e [...]]]></description>
			<content:encoded><![CDATA[<p>Nos dias atuais é um padrão que todos os sites e servidores web rodem ao menos com UTF-8 como encoding default, entretanto pode-se encontrar casos onde ainda se roda LATIN1 ou até mesmo ASCII.</p>
<p>O caso que tratamos hoje é de um servidor Debian, versão 5.0.3 (lenny), que usava o encode LATIN1 quando instalado e configurado o Postgresql, e não me deixava criar uma base de dados UTF-8, gerando o seguinte erro:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># su postgres -c 'createdb teste3  -E UTF-8'</span>
createdb: database creation failed: ERROR:  encoding UTF8 does not match server<span style="color: #ff0000;">'s locale en_US
DETAIL:  The server'</span>s LC_CTYPE setting requires encoding LATIN1.</pre></div></div>

<p><span id="more-264"></span></p>
<h3>Porque??</h3>
<p>O Postgresql, quando roda pela primeira vez, cria um cluster usando o encode default do sistema, e após feito isso, não se pode alterar o encode do cluster. O cluster default é o main, em todas as intalações que eu vi. </p>
<p>No caso deste servidor o encode default (locales) era en_US, que para o Debian significa en_US.ISO-8859-1. Por default o Debian Lenny, nas minhas instalações do zero, usa en_US.UTF-8, então o servidor provavelmente deveria ser um antigo Debian Etch atualizado.</p>
<h3>A solução</h3>
<p>Depois de alguma pesquisa, descobri que, após configurar o encode do servidor para usar UTF-8, poderia criar um novo cluster que suportasse tal encode.</p>
<p>Vamos ao passo a passo da solução do problema.</p>
<ul>
<li><strong>Criando um novo cluster:</strong> Para criar um novo cluster no Debian, é bastante simples:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># pg_createcluster 8.3 utf8_cluster</span>
Creating new cluster <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>configuration: <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster, data: <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>lib<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span>...
Moving configuration <span style="color: #c20cb9; font-weight: bold;color: #577A61;">file</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>lib<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql.conf to <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster...
Moving configuration <span style="color: #c20cb9; font-weight: bold;color: #577A61;">file</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>lib<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>pg_hba.conf to <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster...
Moving configuration <span style="color: #c20cb9; font-weight: bold;color: #577A61;">file</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>lib<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>pg_ident.conf to <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster...
Configuring postgresql.conf to use port <span style="color: #000000;color: #DDD;">5433</span>...
&nbsp;
debian:~<span style="color: #666666; font-style: italic;"># /etc/init.d/postgresql-8.3 restart</span></pre></div></div>

<p>O cluster vai rodar na primeira porta livre que achar depois da 5432, a não ser que você especifique. Para ter efeito, reinicia-se o Postgresql.</li>
<li><strong>Criando o usuário:</strong> Agora crie o usuário da base de dados, recomendo o mesmo nome e senha além de editar sua autenticação para trust no pg_hba.conf do seu cluster:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># su postgres -c &quot;createuser -P pyuser -p 5433&quot;</span>
Enter password <span style="color: #000000; font-weight: bold;color: #B83A24;">for</span> new role:
Enter it again:
Shall the new role be a superuser? <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>y<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>n<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span> n
Shall the new role be allowed to create databases? <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>y<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>n<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span> n
Shall the new role be allowed to create <span style="color: #c20cb9; font-weight: bold;color: #577A61;">more</span> new roles? <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>y<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>n<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span> n</pre></div></div>

</li>
<li><strong>Migrando as bases:</strong> Agora você deve migrar as bases de dados. Primeiro crie ela e depois faça um dump seguido de um psql, direto na linha de comando. Siga o exemplo:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># su postgres -c &quot;createdb teste3 -e -p 5433 -O pyuser&quot;</span>
CREATE DATABASE teste3 OWNER pyuser;</pre></div></div>

<p>Agora liste a base de dados:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># su postgres -c &quot;psql -l -p 5433&quot;</span>
        List of databases
   Name    <span style="color: #000000; font-weight: bold;color: #CCC;">|</span>  Owner   <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> Encoding
-----------+----------+----------
 postgres  <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> postgres <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> UTF8
 template0 <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> postgres <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> UTF8
 template1 <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> postgres <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> UTF8	
 teste3    <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> pyuser   <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> UTF8
<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #000000;color: #DDD;">4</span> rows<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span></pre></div></div>

<p>Após criar a base de dados, então faremos a população dela, atenção quanto as portas:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># pg_dump -U pyuser teste3 | psql -U pyuser -p 5433 teste3</span></pre></div></div>

</li>
<li><strong>Configurando sua aplicação:</strong> Esta é a parte mais simples, apenas altere a porta da sua aplicação para a porta do novo cluster.</li>
</ul>
<p>Repita os passos da criação da base de dados para cada base que precisa ser movida, e pronto, tudo funcionando agora com suporte a UTF-8.</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/moving-postgresql-databases-from-latim1-to-utf8/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Compilando fácil com Debian/Ubuntu</title>
		<link>http://chronosbox.org/blog/compilando-facil-com-debianubuntu</link>
		<comments>http://chronosbox.org/blog/compilando-facil-com-debianubuntu#comments</comments>
		<pubDate>Sun, 03 Jan 2010 21:28:48 +0000</pubDate>
		<dc:creator>Handrus Nogueira</dc:creator>
				<category><![CDATA[Debian/Ubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=255</guid>
		<description><![CDATA[Como usuário do bom e velho gentoo, sempre senti falta da possibilidade de compilar softwares para ganhar uma certa performance. Principalmente em se tratando e softwares de uso em servidor, como Java, PHP, apache, mysql e porstgres. Nos meus testes sempre senti diferença entre as versões pré-compiladas e compilada in loco. No Debian/Ubuntu a descoberta [...]]]></description>
			<content:encoded><![CDATA[<p>Como usuário do bom e velho gentoo, sempre senti falta da possibilidade de compilar softwares para ganhar uma certa performance. Principalmente em se tratando e softwares de uso em servidor, como Java, PHP, apache, mysql e porstgres. Nos meus testes sempre senti diferença entre as versões pré-compiladas e compilada in loco.<br />
No Debian/Ubuntu a descoberta do apt-build me ajudou a contornar o problema com a mesma classe e <strong>quase</strong> a mesma eficiência que o portage.</p>
<p>Vamos ao passo-a-passo:</p>
<p>Para instalar o apt-build:<br />
<code>sudo apt-get install apt-build auto-apt</code></p>
<p>Configure para sua máquina:<br />
<code>dpkg-reconfigure apt-build</code><br />
Escolha sua arquitetura de processador e o nível de otimização, o indicado é o médio.<br />
As opções ficam salvas no arquivo <strong>/etc/apt/apt-build.conf</strong> ; Vamos apenas ajustar o número de processadores na ultima linha do arquivo altere-o para<br />
<code>make_options = " -j4"</code><br />
onde o número é igual ao número de &#8220;cores&#8221; + 1. Portanto um quadcore seria &#8220;-j5&#8243;.</p>
<p>Para evitar que os pacotes compilados sejam atualizados pelos pacotes oficiais vamos editar o arquivo <strong>/etc/apt/preferences</strong> adicionando:<br />
<code>Package: *<br />
Pin: release o=apt-build<br />
Pin-Priority: 990</code></p>
<p>Não se esqueça de adicionar os repositórios de código fonte (deb-src) e pronto!<br />
Agora ao invés do tradicional apt-get install
<pacote> utilize <code>apt-build install
<pacote></code></p>
<p>Exemplo: sudo apt-build install xchat emesene</p>
<p>Tutorial rápido sobre apt-build:</p>
<p><strong>apt-build install &#8211;reinstall
<pack></strong> para reinstalar<br />
<strong>apt-build upgrade</strong> Upgrade nos softwares instalados<br />
<strong>apt-build world</strong> Recompila todo o sistema<br />
<strong>apt-build remove programa</strong> Remove o programa<br />
<strong>apt-build clean-build</strong> Remove pacotes compilados<br />
<strong>apt-build clean-sources</strong> Remove os códigos fonte baixados.</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/compilando-facil-com-debianubuntu/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Atualize o hosts.deny para bloquear tentativas de brute force</title>
		<link>http://chronosbox.org/blog/update-hosts-deny-script</link>
		<comments>http://chronosbox.org/blog/update-hosts-deny-script#comments</comments>
		<pubDate>Wed, 02 Sep 2009 17:14:22 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[brute force]]></category>
		<category><![CDATA[hosts.deny]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=232</guid>
		<description><![CDATA[Ai embaixo um simples script para você bloquear hosts tentando brute force no seu SSH, muitas das vezes pode sanar o problema de ter uma porta diferente pro ssh O script varre o /var/log/messages para detectar tentativas de invasão, pega os hosts, e adiciona no /etc/hosts.deny Código: #!/bin/bash&#60;/code&#62; &#160; cp /etc/hosts.deny /var/tmp/hosts.deny &#160; # Jun [...]]]></description>
			<content:encoded><![CDATA[<p>Ai embaixo um simples script para você bloquear hosts tentando brute force no seu SSH, muitas das vezes pode sanar o problema de ter uma porta diferente pro ssh <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>O script varre o /var/log/messages para detectar tentativas de invasão, pega os hosts, e adiciona no /etc/hosts.deny</p>
<p>Código:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;"><span style="color: #666666; font-style: italic;">#!/bin/bash&lt;/code&gt;</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">cp</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>tmp<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny
&nbsp;
<span style="color: #666666; font-style: italic;"># Jun  8 00:39:43 mintaka sshd[23332]: User root from 222.77.183.51 not allowed because not listed in AllowUsers</span>
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">egrep</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$(date +%b)</span> (<span style="color: #007800;">$(date +%d)</span>|<span style="color: #007800;">$(date +%e)</span>).*User .* from [a-z0-9\.]* not allowed because not listed in AllowUsers&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>log<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>messages <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/.* from \([a-z0-9\.]*\) .*/\1/'</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sort</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">uniq</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/^/ALL:/'</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny ;
<span style="color: #666666; font-style: italic;">#Jun  8 11:54:33 mintaka sshd[31221]: Invalid user bob from 62.204.145.224</span>
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">egrep</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$(date +%b)</span> (<span style="color: #007800;">$(date +%d)</span>|<span style="color: #007800;">$(date +%e)</span>).*Invalid user .* from [a-z0-9\.]*$&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>log<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>messages <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/.*Invalid user .* from//'</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sort</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">uniq</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/^/ALL:/'</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny ;
&nbsp;
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">diff</span> <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>tmp<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>dev<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>null <span style="color: #000000; font-weight: bold;color: #CCC;">||</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;** hosts.deny updated **&quot;</span> ; <span style="color: #c20cb9; font-weight: bold;color: #577A61;">cat</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span></pre></div></div>

<p>Script funcionando:<br />
<code><br />
Sep  2 16:55:02 mintaka -- MARK --<br />
Sep  2 13:58:10 mintaka sshd[20790]: Did not receive identification string from 189.2.118.72<br />
Sep  2 13:58:34 mintaka sshd[20795]: Invalid user suporte from 189.2.118.72<br />
# Tentativa de brute force<br />
Sep  2 13:58:41 mintaka sshd[20798]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:58:43 mintaka sshd[20800]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:58:46 mintaka sshd[20802]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:58:49 mintaka sshd[20804]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:58:51 mintaka sshd[20806]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:59:24 mintaka sshd[20817]: Did not receive identification string from 189.2.118.72<br />
# Script roda<br />
** hosts.deny updated **<br />
ALL:74.221.239.100<br />
ALL: 189.2.118.72<br />
ALL: 200.27.79.101<br />
ALL: 74.221.239.100<br />
# E os hosts agora estão bloqueados<br />
Sep  2 14:00:09 mintaka sshd[20826]: Invalid user teste2008 from 189.2.118.72<br />
Sep  2 14:00:10 mintaka sshd[20864]: refused connect from 189.2.118.72 (189.2.118.72)<br />
</code></p>
<p>Eu rodo em minha máquina a cada 2 minutos <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/update-hosts-deny-script/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>pingping &#8211; Verificando conexão com servidores.</title>
		<link>http://chronosbox.org/blog/alertar-caso-servidores-caiam</link>
		<comments>http://chronosbox.org/blog/alertar-caso-servidores-caiam#comments</comments>
		<pubDate>Mon, 25 Jun 2007 15:28:38 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet GentooBR]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[icmp]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[servers]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/2007/06/25/alertar-caso-servidores-caiam/</guid>
		<description><![CDATA[Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços! Ai em baixo meu [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Nota</strong>: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo <a href="http://twitter.com/handrus">Handrus Nogueira</a>, portanto não deixem de visitar o <a href="http://devwithpassion.com">Dev With Passion</a>! Todos os posts do ChronosBox estarão no <a href="http://devwithpassion.com">Dev With Passion</a>, exceto por alguns comentários novos. Abraços!</em></p>
<p>Ai em baixo meu script <strong>pingping</strong>. Ele vai alertar os emails quando algum servidor parar. Leia ele <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># This script send ICMP requests for each server on SERVIDORES list and sends</span>
<span style="color: #666666; font-style: italic;"># emails for emails in LISTA_EMAILS list why one of servers doesn't reply</span>
<span style="color: #666666; font-style: italic;"># You only receive alerts if in last time that script request server we have a success reply</span>
<span style="color: #666666; font-style: italic;"># or if we not tested server yet.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Author: Felipe Rafael Prenholato - chronos@gentoobr.org</span>
<span style="color: #666666; font-style: italic;"># IRC: nick chronos at irc.freenode.net</span>
<span style="color: #666666; font-style: italic;"># Date: 21 de Junho de 2006.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This script is under GPLv2. Read it at http://www.gnu.org/licenses/gpl-2.0.txt.</span>
<span style="color: #666666; font-style: italic;"># Any changes please send me a mail :).</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># IP or name of servers to test</span>
<span style="color: #007800;">SERVIDORES</span>=<span style="color: #ff0000;color: #666666;">&quot;elise prime odissey&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># emailo to send alerts</span>
<span style="color: #007800;">LISTA_EMAILS</span>=<span style="color: #ff0000;color: #666666;">&quot;chronos@gentoobr.org philipe_rp@yahoo.com.br&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># date format to send in email</span>
<span style="color: #007800;">data</span>=$<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #c20cb9; font-weight: bold;color: #577A61;">date</span> +<span style="color: #ff0000;color: #666666;">&quot;%T de %d/%m/%Y&quot;</span><span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># this function sends ping</span>
ping_server<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#123;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;color: #8FB394;">local</span> pingreturn
<span style="color: #7a0874; font-weight: bold;color: #8FB394;">local</span> serversts
<span style="color: #7a0874; font-weight: bold;color: #8FB394;">local</span> TMPFILE
<span style="color: #7a0874; font-weight: bold;color: #8FB394;">local</span> server
&nbsp;
<span style="color: #007800;">server</span>=<span style="color: #007800;">$1</span>
<span style="color: #007800;">TMPFILE</span>=<span style="color: #ff0000;color: #666666;">&quot;/tmp/ping_<span style="color: #007800;">$server</span>.tmp&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Debug</span>
<span style="color: #666666; font-style: italic;">#echo &quot;Server: $server&quot;</span>
<span style="color: #666666; font-style: italic;">#echo &quot;Temp file: $TMPFILE&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># ping and get return</span>
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">ping</span> <span style="color: #660033;">-c3</span> <span style="color: #007800;color: blue;">$server</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;color: #CCC;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>null;
<span style="color: #007800;">pingreturn</span>=<span style="color: #007800;">$?</span>;
&nbsp;
<span style="color: #666666; font-style: italic;"># 0 means ok</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">if</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#91;</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$pingreturn</span>&quot;</span> == <span style="color: #ff0000;color: #666666;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#93;</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">then</span>
<span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;1&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&gt;</span> <span style="color: #007800;color: blue;">$TMPFILE</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># 1 means problems</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">if</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#91;</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$pingreturn</span>&quot;</span> == <span style="color: #ff0000;color: #666666;">&quot;1&quot;</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#93;</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">then</span>
&nbsp;
<span style="color: #000000; font-weight: bold;color: #B83A24;">if</span> <span style="color: #000000; font-weight: bold;color: #CCC;">!</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #007800;color: blue;">$TMPFILE</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#93;</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">then</span>
<span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;1&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&gt;</span> <span style="color: #007800;color: blue;">$TMPFILE</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">fi</span>
&nbsp;
<span style="color: #007800;">serversts</span>=$<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #c20cb9; font-weight: bold;color: #577A61;">cat</span> <span style="color: #007800;color: blue;">$TMPFILE</span><span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># send mail if have problems</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">if</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#91;</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$serversts</span>&quot;</span> == <span style="color: #ff0000;color: #666666;">&quot;1&quot;</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#93;</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">then</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;0&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&gt;</span> <span style="color: #007800;color: blue;">$TMPFILE</span>
<span style="color: #007800;">msg</span>=<span style="color: #ff0000;color: #666666;">&quot;Servidor <span style="color: #007800;">$server</span> fora do ar em <span style="color: #007800;">$data</span>. Contatar responsavéis.&quot;</span>
<span style="color: #007800;">ass</span>=<span style="color: #ff0000;color: #666666;">&quot;Servidor <span style="color: #007800;">$server</span> fora do ar.&quot;</span>
<span style="color: #007800;">LC_ALL</span>=<span style="color: #ff0000;color: #666666;">&quot;en_US.ISO-8859-1&quot;</span> <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$msg</span>&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> mail <span style="color: #660033;">-s</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$ass</span>&quot;</span> <span style="color: #007800;color: blue;">$LISTA_EMAILS</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;color: #B83A24;">fi</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># roda ping_server para cada servidor.</span>
<span style="color: #000000; font-weight: bold;color: #B83A24;">for</span> e <span style="color: #000000; font-weight: bold;color: #B83A24;">in</span> $<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #007800;color: blue;">$SERVIDORES</span><span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span>;
<span style="color: #000000; font-weight: bold;color: #B83A24;">do</span>
ping_server <span style="color: #007800;color: blue;">$e</span>;
<span style="color: #000000; font-weight: bold;color: #B83A24;">done</span></pre></td></tr></table></div>

<p>Ele precisa ser instalado em um servidor que possa pingar os demais e enviar emails. Versões antigas do postfix não vão funcionar, tem q suportar a opção -a no comando mail, seu uso é:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">.<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>script</pre></div></div>

<p>Coloque ele para rodar no cron e fique numa boa <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/alertar-caso-servidores-caiam/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

