


<?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/"
		xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>DeServ - Info &#187; Linux</title>
	<atom:link href="http://blog.deserv.info/category/geral/sistemas-operacionais-uncategorized/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.deserv.info</link>
	<description>Seu Caderno de Anotações de Informática</description>
	<lastBuildDate>Wed, 08 Feb 2012 18:50:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<copyright>Copyright &#xA9; DeServ - Info 2011 </copyright>
	<managingEditor>flavio.aparecido@gmail.com (DeServ - Info)</managingEditor>
	<webMaster>flavio.aparecido@gmail.com (DeServ - Info)</webMaster>
	<image>
		<url>http://blog.deserv.info/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>DeServ - Info</title>
		<link>http://blog.deserv.info</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Seu Caderno de Anotações de Informática</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>DeServ - Info</itunes:author>
	<itunes:owner>
		<itunes:name>DeServ - Info</itunes:name>
		<itunes:email>flavio.aparecido@gmail.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://blog.deserv.info/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Aula 2 Linux: Introdução Linux parte 2</title>
		<link>http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/</link>
		<comments>http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 18:50:31 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[aula]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[básico]]></category>
		<category><![CDATA[características]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[lesson]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[modo]]></category>
		<category><![CDATA[texto]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=662</guid>
		<description><![CDATA[Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foidesenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença. Inicialmente desenvolvido e utilizado [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2012%252F02%252F08%252Faula-2-linux-introducao-linux-parte%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Aula%202%20Linux%3A%20Introdu%C3%A7%C3%A3o%20Linux%20parte%202%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><iframe src="http://www.youtube.com/embed/_05H5QEWlT8" frameborder="0" width="420" height="315"></iframe></p>
<p>Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi<a href="http://www.apostilaz.com.br/informatica/aula-2-linux-introducao-linux-parte-2.html#" rel="nofollow">desenvolvido</a> pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, <a href="http://www.apostilaz.com.br/informatica/aula-2-linux-introducao-linux-parte-2.html#" rel="nofollow">estudar</a>, modificar e distribuir de acordo com os termos da licença.</p>
<p>Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-Packard, Red Hat, Novell e a Canonical. Com isso aumentou bastante também o número de colaborações dos usuários, o que ajudou muito o <a href="http://www.apostilaz.com.br/informatica/aula-2-linux-introducao-linux-parte-2.html#" rel="nofollow">projeto</a>, principalmente em sua tradução.</p>
<p><a href="http://www.apostilaz.com.br/">http://www.apostilaz.com.br</a></p>
<div class="shr-publisher-662"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aula 1 Linux: Introdução Linux parte 1</title>
		<link>http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/</link>
		<comments>http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 11:55:16 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Aula Linux]]></category>
		<category><![CDATA[curso linux]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=659</guid>
		<description><![CDATA[Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença.  Inicialmente desenvolvido [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2012%252F02%252F07%252Faula-1-linux-introducao-linux-parte-1%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Aula%201%20Linux%3A%20Introdu%C3%A7%C3%A3o%20Linux%20parte%201%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença. <span id="more-659"></span></p>
<p>Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-Packard, Red Hat, Novell e a Canonical. Com isso aumentou bastante também o número de colaborações dos usuários, o que ajudou muito o <a href="http://www.apostilaz.com.br/informatica/aula-1-linux-introducao-linux-parte-1.html#" rel="nofollow">projeto</a>, principalmente em sua tradução.</p>
<p><iframe src="http://www.youtube.com/embed/Cd_Rwth0BGA" frameborder="0" width="420" height="315"></iframe><br />
Fonte: <a href="http://www.apostilaz.com.br/">http://www.apostilaz.com.br</a></p>
<div class="shr-publisher-659"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que esperar do Linux em 2012</title>
		<link>http://blog.deserv.info/2012/01/25/o-que-esperar-do-linux-em-2012/</link>
		<comments>http://blog.deserv.info/2012/01/25/o-que-esperar-do-linux-em-2012/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 17:47:08 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[Barnes & Noble]]></category>
		<category><![CDATA[Btrfs]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Kindle Fire]]></category>
		<category><![CDATA[Nook]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[plataforma ARM]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[Roku]]></category>
		<category><![CDATA[sistemas embarcados]]></category>
		<category><![CDATA[spanning]]></category>
		<category><![CDATA[SUSE Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=648</guid>
		<description><![CDATA[Na falta de um roadmap formal, apontamos quatro incrementos que você pode esperar ver no sistema este ano, já em discussão na comunidade de desenvolvedores. O último ano foi muito emocionante para o Linux. O que começou como passatempo, na Finlândia, completou 20 anos e dominou quase tudo, desde dispositivos móveis a supercomputadores.  E tudo [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2012%252F01%252F25%252Fo-que-esperar-do-linux-em-2012%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22O%20que%20esperar%20do%20Linux%20em%202012%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><span style="font-size: small;"><span style="line-height: normal;">Na falta de um roadmap formal, apontamos quatro incrementos que você pode esperar ver no sistema este ano, já em discussão na comunidade de desenvolvedores.</span></span></p>
<p><img class="alignleft" src="http://www.deserv.com.br/site/imagens/noticias/linux-distribuicoes.png" alt="" width="400" height="300" />O último ano foi muito emocionante para o Linux. O que começou como passatempo, na Finlândia, completou 20 anos e dominou quase tudo, desde dispositivos móveis a supercomputadores.  <span id="more-648"></span>E tudo leva a crer que 2012 ainda será um ano interessante para o sistema operacional.</p>
<p>O Linux não chega a ter um roadmap. O desenvolvimento é resultado da colaboração entre centenas de desenvolvedores de muitas empresas. Não existe ninguém elaborando uma lista de recursos a serem adicionados e direcionando desenvolvedores a trabalharem nela, ou em melhorias no kernel. Mas se você prestar atenção nas discussões da comunidade Linux, poderá ter uma ideia razoavelmente boa do que vai acontecer no futuro próximo.</p>
<p>Aqui estão algumas coisas que você pode esperar ver no Linux em 2012.</p>
<p><strong>1 &#8211; Melhorias no Btrfs</strong></p>
<p>Uma das grandes contribuições da Oracle para o kernel do Linux é o Btrfs, o sistema de arquivos que adiciona muitas características que as empresas gostariam de ver no OS. Por exemplo, o Btrfs suporta uma série de recursos e benefícios ausentes em outros sistemas para Linux, como pooling, instantâneos de estado do disco, soma de verificação, spanning integral de múltiplos dispositivos, uma maior integridade dos dados através da soma de verificação, instantâneos do sistema inteiro de arquivos antes de qualquer grande mudança, melhor gerenciamento de volume e RAID.</p>
<p>No entanto, faltam ao Btrfs algumas características- principalmente, a ferramenta fsck &#8211; que muita gente gostaria de ver implementada antes de colocá-lo em produção. A previsão era a de qu a ferramenta fsck estivesse diponível no fim de 2011. É provável que esteja pronta ainda no início de 2012, o que deve acelerar a adoção do Btrfs por algumas das distribuições Linux muito rapidamente.</p>
<p>Se eu tivesse que fazer uma previsão, diria que o Btrfs acabará por suplantar o Ext4 como sistema de arquivos padrão para a maioria das principais distribuições Linux. Mas não espere ver uso generalizado em ambientes de produção antes de meados de 2013.</p>
<p><strong>2 &#8211; Android, alinhamento com plataforma ARM e foco nos sistemas embarcados</strong></p>
<p>O Linux em sistemas embarcados vai continuar a ser um dos principais focos em 2012. Isso inclui tudo, desde set-top boxes, o Roku para telefones Android e tablets, e até sistemas para impressoras e qualquer outra coisa que você possa pensar.</p>
<p>Há muito barulho na imprensa especializada em TI sobre o fato do Android ser uma &#8220;ramificação&#8221; do Linux. Aqui está algo sobre o qual você não deve ter ouvido falar muito a respeito: o pessoal do kernel Linux e o do Android tem trabalhado duro para sincronizar o kernel principal e o kernel do Android.</p>
<p>Com o kernel 3.3, a maioria das funcionalidades do Android deve estar presente no kernel principal. Não tudo, mas progressos estão sendo feitos muito rapidamente. Se tudo correr bem, os usuários devem ser capazes de executar Android em cima de um vanilla kernel (kernel reduzido) até o fim do ano.</p>
<p>Note que este tipo de inclusão assíncrona não é incomum, e não há nenhuma razão para pânico. O Xen esteve fora do kernel padrão durante anos, enquanto sua equipe aprendia a trabalhar com a comunidade responsável pelo kernel (e vice-versa). A Red Hat e outras distribuições de Linux têm incluído patches para recursos ou dispositivos constantemente. É algom comum à plataforma.</p>
<p>Ao mesmo tempo, o pessoal do kernel continua a tentar domar o &#8220;oeste selvagem&#8221; da arquitetura ARM. Em um dado momento, havia cerca de 70 sub-arquiteturas ARM na árvore do kernel. Compare isso com outras arquiteturas, e você verá um problema aí. A boa notícia é que você também verá um esforço maior este ano para a resolução do problema.</p>
<p>Parte dele é o suporte a longo prazo da árvore do kernel para os fornecedores de eletrônicos de consumo. A Long Term Stable Kernel Initiative (LTSI) é focada na produção de um kernel estável, que estará disponível por aproximadamente a mesma quantidade de tempo de vida da maioria dos dispositivos eletrônicos de consumo (2 a 3 anos). O fato de muitos fornecedores estarem trabalhando juntos em um único núcleo deve fornecer uma série de benefícios.</p>
<p>A Canonical também anunciou na CES que está trabalhando em um Linux para set top boxes e DVRs. Será interessante ver a receptividade dos principais fabricantes desses dispositivos. Sou cético sobre suas chances de sucesso, a menos que consigam emplacar em algum dispositivo de uma grande marca, que o torne atraente para os usuários.</p>
<p><strong>3 &#8211; Melhor ajuste e provisionamento</strong></p>
<p>O cgroups é um recurso do Kernel do Linux, desde a versão 2.6.24, que tem como finalidade limitar, contabilizar e isolar o uso de recursos. Continua a evoluir e permitir um controle mais refinado do sistema. Por exemplo, no Linux 3.2 (lançado em 04 de janeiro) temos um novo recurso chamado CPU bandwidth control que permite que os administradores definam quanto tempo de CPU um grupo de processos pode usar.</p>
<p>A versão 3.2 acrescentou também ajustes finos de provisionamento ao Linux Device Mapper, que permite que administradores possam controlar o excesso de oferta de cotas de armazenamento para cada usuário. Isso pode parecer duvidoso, mas se você tiver algumas centenas de usuários em um sistema, será necessário definir um limite superior para a quantidade de armazenamento que poderão usar. Claro que, se configurado corretamente, a maioria dos usuários não se aproximará desse valor. Então você provavelmente não precisará de armazenamento suficiente para dar a cada usuário sua quota máxima.</p>
<p>Você pode esperar ver a melhoria contínua do cgroups e de outras áreas no kernel para permitir que os administradores de TI possam definir limites de recursos e outras formas de afinar seus sistemas ainda mais. As melhorias podem deixar de estar presentes em futuras versões do Linux por alguns ciclos, mas estão a caminho. Suspeito que o SUSE Enterprise Linux será lançado com um kernel 3.0 em 2013.</p>
<p><strong>4 -Crescimento do OpenStack</strong></p>
<p>Finalmente, esperamos ver o OpenStack sendo implantado até o fim de 2012 ou início de 2013. O projeto foi anunciado em 2010 e já atraiu mais de 140 empresas e organizações. É também a pilha de IaaS para o SUSE Linux e o Ubuntu. A partir das minhas conversas com membros da comunidade OpenStack, SUSE e Rackspace, digo, sem medo de errar, que o OpenStack terá um grande impulso em meados do ano.</p>
<p>Basicamente, o Linux vai continuar a melhorar para uso nas empresas e nas plataforma móveis. Com o Kindle Fire e o Nook, da Barnes &amp; Noble, acho que veremos mais e mais tablets Android ganhando mercado. E, a não ser que algo drástico aconteça, o Android continuará a manter uma liderança firme no mercado de telefonia. O único lugar em que o Linux continuará a definhar será no desktop. Mas não se pode ter tudo, certo?</p>
<p>Fonte:</p>
<h5>Joe Brockmeier, CIO/EUA</h5>
<h4>Publicada em 13 de janeiro de 2012</h4>
<p><a href="http://cio.uol.com.br/" target="_blank">http://cio.uol.com.br/</a></p>
<div class="shr-publisher-648"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/01/25/o-que-esperar-do-linux-em-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup Automático em Servidores Linux</title>
		<link>http://blog.deserv.info/2012/01/21/backup-automatico-em-servidores-linux/</link>
		<comments>http://blog.deserv.info/2012/01/21/backup-automatico-em-servidores-linux/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 22:03:48 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Gerenciamento de Arquivos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Backup Automático em Servidores Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Servidores LInux]]></category>
		<category><![CDATA[sh]]></category>
		<category><![CDATA[Shell Scripts]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=642</guid>
		<description><![CDATA[Hoje em um servidor, seja ele web, de arquivos, ou qualquer outro serviço essencial para o dia-a-dia a ele denominado é primordial que um administrador possua alguma rotina de backup imposta sobre o mesmo. É fato que esse trabalho é crítico pois no mundo da informação o que não queremos é perde-la, pois se isto [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2012%252F01%252F21%252Fbackup-automatico-em-servidores-linux%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FxhodoV%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Backup%20Autom%C3%A1tico%20em%20Servidores%20Linux%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.nacaolivre.com.br/wp-content/uploads/2010/02/backup-database.jpg"><img class="alignleft" title="backup-database" src="http://www.nacaolivre.com.br/wp-content/uploads/2010/02/backup-database-150x150.jpg" alt="" width="150" height="150" /></a>Hoje em um servidor, seja ele web, de arquivos, ou qualquer outro serviço essencial para o dia-a-dia a ele denominado é primordial que um administrador possua alguma rotina de backup imposta sobre o mesmo.</p>
<p>É fato que esse trabalho é crítico pois no mundo da informação o que não queremos é perde-la, pois se isto acontecer poderá colocar os seus negócios no fio da navalha e certamente cabeças irão rolar. <span id="more-642"></span></p>
<p>É complexo colocar nesta postagem um backup que resolva tudo, mas vou colocar e explicar como executar em um servidor web um backup das contas de usuários de sites hospedados e seus respectivos bancos de dados, ainda duplicando o backup efetuado como segurança para outro servidor. É claro que o conteúdo aqui proposto pode ser adaptado por você para executar rotinas de backup expecíficas.</p>
<p>O arquivo em shell script pode ser obtido neste link: <a class="downloadlink" href="http://blog.deserv.info/wallpaper4" title=" downloaded 3 times" >backup-shell.sh (3)</a></p>
<p>Você pode fazer o download e colocar na “crontab” do seu sistema para que o mesmo efetue o backup na hora que melhor lhe convir.</p>
<h2><strong>Funcionamento</strong></h2>
<p>No início do arquivo shell script do link citado acima, teremos declarações de variaveis de controle do fluxo do programa.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<blockquote>
<div>#!/bin/sh<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
#   backup.sh &#8211; Executa backup das pastas &#8220;public_html&#8221; de cada<br />
#                      usuário da pasta home do sistema.<br />
#<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
administrator=&#8221;root&#8221;<br />
mysql_user=&#8221;root&#8221;<br />
mysql_password=&#8221;senha_do_mysql&#8221;<br />
dir_backup=&#8221;backup&#8221;<br />
dir_sites=&#8221;sites&#8221;<br />
dir_backup_local=$(hostname)<br />
dir_home=&#8221;home&#8221;<br />
dir_sql=&#8221;sql&#8221;<br />
dir_web=&#8221;public_html&#8221;<br />
exclude_list=&#8221;ftp user admin lixo&#8221;<br />
server_list=&#8221;server1.devel server2.devel&#8221;<br />
mail_list=&#8221;admin@admin.com.br&#8221;</div>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<p>O que vemos acima são variaveis de controle, como nome de usuário e senha do mysql, nomes de pastas para o armazenamento dos arquivos e diretórios capturados da origem, lista de exclusão de diretórios que não queremos que seja efetuado o backup e lista de servidores que queremos duplicar o backup ocorrido, ainda temos uma lista de e-mail para informar os responsáveis da ação efetuada pelo nosso backup.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<blockquote>
<div>#<br />
# Lista os Bancos disponiveis<br />
#<br />
sql_database=$(mysql -u$mysql_user -hlocalhost -p$mysql_password -Bse<br />
&#8216;SHOW DATABASES WHERE `database`<br />
!= &#8220;information_schema&#8221; AND `database`<br />
!= &#8220;mysql&#8221;&#8216;)for db in ${sql_database}; do<br />
mysqldump &#8211;databases $db -hlocalhost -u$mysql_user -p$mysql_password &#8211;hex-blob &gt; /$dir_home/$dir_sql/$dir_web/sql-$db.sql<br />
done</div>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<p>Neste trecho é gerado uma lista de todos os bancos de dados existentes no Servidor MySQL excluindo as bases de dados da instalação básica do servidor como “information_schema” e “mysql” utilizando o comando “mysql” para efetuar o login e executar a ação.</p>
<p>Com o comando “mysqldump” efetuamos o backup das bases de dados existentes na lista capturada no comando anterior e salvamos a saida do resultado para um arquivo em disco contendo as informaçãoes como criação da base de dados, tabela e inserções de registros.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<blockquote>
<div>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
# Inicia o backup<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
for user in ${users}; do<br />
if [ ! -d "/$dir_backup/$dir_sites/$dir_backup_local/$user" ]; then<br />
CreateDir &#8221;/$dir_backup/$dir_sites/$dir_backup_local/$user&#8221;<br />
firsync -avz &#8211;exclude &#8217;wp-cache&#8217; &#8211;exclude \<br />
&#8216;cache&#8217; &#8221;/$dir_home/$user/$dir_web/&#8221; \<br />
&#8220;/$dir_backup/$dir_sites/$dir_backup_local/$user/&#8221;<br />
done</div>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<p>Aqui é executado o backup da pasta public_html de cada usuário existente, repare ainda que na sincronia podemos excluir diretórios utilizando a opção –exclude do comando rsync.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<blockquote>
<div>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</div>
<div># Sincroniza o backup com os servidores da listagem</div>
<div>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</div>
<div>for server in ${server_list}; do</div>
<div>rret=`ssh $administrator@$server \</div>
<div>&#8220;mkdir -p /$dir_backup&#8221;`</div>
<div>rret=`ssh $administrator@$server \</div>
<div>&#8220;mkdir -p /$dir_backup/$dir_sites/&#8221;`</div>
<div>rret=`ssh $administrator@$server \</div>
<div>&#8220;mkdir -p /$dir_backup/$dir_sites/$dir_backup_local&#8221;`log=$(rsync -avz &#8221;/$dir_backup/$dir_sites/$dir_backup_local/&#8221; \<br />
&#8220;$administrator@$server:</div>
<div>/$dir_backup/$dir_sites/$dir_backup_local/&#8221;)</div>
<div>#done</div>
<div></div>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<p>Com a lista de servidor(es) efetuamos um loop e sincronizamos os dados do diretório de backup efetuado com o comando anterior.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<div>
<blockquote><p>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
# Envia para a lista de e-mail informações sobre o backup efetuado.<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
cat &lt;&lt; EOF &gt; /tmp/backup-mail.out<br />
Backup e sincronismo entre servidors efetuado as $(date) com sucesso em &lt;$dir_backup_local&gt;\<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Lista de servidores:$server_list\<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Lista de sites/usuarios:</p>
<p>$users</p>
<p>\<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Logs de Sincronismo (rsync)</p>
<p>$log</p>
<p>EOF</p>
<p>#mail -v -s &#8220;Backup e Sincronismo de Servidores&#8221; $mail_list &amp;lt; /tmp/backup-mail.out</p></blockquote>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>E por fim geramos um arquivo de log com as informações obtidas de cada comando efetuado no backup e enviamos para a lista de e-mail.</p>
<p>Claro que este backup pode ser melhorado e adaptado para outras situações que fogem do escopo desta postagem. A Idéia aqui é dar uma luz para aqueles que não a possui, espero que tenha ajudado.</p>
<p>Fonte:  <a href="http://www.nacaolivre.com.br/" target="_blank">http://www.nacaolivre.com.br</a></p>
<div class="shr-publisher-642"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/01/21/backup-automatico-em-servidores-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerenciando Acesso a Portas</title>
		<link>http://blog.deserv.info/2012/01/10/gerenciando-acesso-a-portas-de-acesso/</link>
		<comments>http://blog.deserv.info/2012/01/10/gerenciando-acesso-a-portas-de-acesso/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 19:07:11 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Acesso Remoto]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[gerenciamento de portas]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[portas de acesso]]></category>
		<category><![CDATA[regras de firewall]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=637</guid>
		<description><![CDATA[Você que tem IP Dinamico e não sabe como fazer para bloquear o acesso ao seu servidor, vai uma dica de regra de IPTables, onde você manipula a liberação de seu acesso com telnet. Com a grande facilidade de se ter um servidor Cloud, Decidado ou outros, e o mesmo ficar aberto para a internet [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2012%252F01%252F10%252Fgerenciando-acesso-a-portas-de-acesso%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Gerenciando%20Acesso%20a%20Portas%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Você que tem IP Dinamico e não sabe como fazer para bloquear o acesso ao seu servidor, vai uma dica de regra de IPTables, onde você manipula a liberação de seu acesso com telnet.</p>
<p>Com a grande facilidade de se ter um servidor Cloud, Decidado ou outros, e o mesmo ficar aberto para a internet as portas de acesso como portas de SSH (22), FTP (21), Banco de Dados (mysql=3306); (postgres=5432) entre outros serviços, muitas vezes somos obrigados a mudar as portas para ter um pouco mais de segurança, com uma simples regra de firewall irei exemplificar uma forma de mudar isto<span id="more-637"></span>, vamos a ela.</p>
<p><strong>1- Crie um arquivo /etc/init.d/firewall ;</strong></p>
<p><strong></strong><strong>2- Setar permissão de execução chmod +x /etc/init.d/firewall ;</strong></p>
<p><strong></strong><strong>3- Adicionar o conteúdo abaixo neste arquivo (/etc/init.d/firewall);</strong></p>
<p>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p>
<p>#!/bin/bash</p>
<p># chkconfig: &#8211; 55 45<br />
# description: Firewall IPTables<br />
# Autor: Flávio Silva<br />
# E-mail: contato@flaviosilva.net.br<br />
# Site: http://www.deserv.com.br / http://blog.deserv.info<br />
# probe: false</p>
<p># Define o caminho do comando iptables<br />
IPTABLES=`which iptables`<br />
function OK() {<br />
echo -e &#8220;\\033[1;39m [ \\033[1;32mOK\\033[1;39m ]\\033[1;0m"<br />
}</p>
<p>function FALHOU() {<br />
echo -e "\\033[1;39m [ \\033[1;31mFALHOU\\033[1;39m ]\\033[1;0m&#8221;<br />
}</p>
<p>function STOP(){</p>
<p>###############################################################<br />
# Flushing filter #<br />
###############################################################<br />
$IPTABLES -F<br />
$IPTABLES -P INPUT ACCEPT<br />
$IPTABLES -P OUTPUT ACCEPT<br />
$IPTABLES -X<br />
OK<br />
}</p>
<p>function START(){<br />
###############################################################<br />
# Default Policies #<br />
###############################################################<br />
$IPTABLES -P INPUT DROP<br />
$IPTABLES -P OUTPUT ACCEPT</p>
<p>###################<br />
# Stateful Input #<br />
###################<br />
$IPTABLES -A INPUT -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT</p>
<p>#######################################<br />
# REGRA DE ACESSO DINAMICO SSH #<br />
#######################################</p>
<p>HOST_IP=&#8221;0.0.0.0/0.0.0.0&#8243;</p>
<p>$IPTABLES -A INPUT -p tcp &#8211;dport 12345 -m recent &#8211;set &#8211;name SSH-ACCESS<br />
$IPTABLES -A INPUT -p tcp -s $HOST_IP &#8211;dport 22 -m recent &#8211;rcheck &#8211;seconds 3600 &#8211;name SSH-ACCESS -j ACCEPT<br />
$IPTABLES -A INPUT -m state &#8211;state NEW -m tcp -p tcp &#8211;dport 123456 -m recent &#8211;name SSH-ACCESS &#8211;remove</p>
<p>####################<br />
# Loopback traffic #<br />
####################<br />
$IPTABLES -A INPUT -s 127.0.0.1 -i lo -j ACCEPT</p>
<p>##########################<br />
# ICMP Filtering #<br />
# and TRACEROUTE INPUT #<br />
##########################<br />
$IPTABLES -A INPUT -p icmp -j ACCEPT<br />
$IPTABLES -A INPUT -p udp &#8211;dport 33434:33523 -j ACCEPT</p>
<p>#######################<br />
# Drop stealth scans #<br />
#######################<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags FIN,SYN FIN,SYN -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags SYN,RST SYN,RST -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags FIN,RST FIN,RST -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags FIN,ACK FIN -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags ACK,URG URG -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags PSH,ACK PSH -j DROP</p>
<p>#################################<br />
# Regras de Gerenciamento INPUT #<br />
#################################</p>
<p>$IPTABLES -A INPUT -s XXX.XXX.XXX.XX -j ACCEPT #CASO TENHA ALGUM IP FIXO LIBERE ELE AQUI, SE NAO COMENTE ESTA LINHA COM &#8220;#&#8221;</p>
<p>#################################<br />
# Fechando conexoes SSH OUTPUT #<br />
#################################<br />
$IPTABLES -A OUTPUT -p tcp &#8211;dport 22 -j DROP</p>
<p>#################################<br />
# Regras de Clientes INPUT #<br />
#################################<br />
$IPTABLES -A INPUT -p tcp &#8211;dport 80 -j ACCEPT # HTTP<br />
$IPTABLES -A INPUT -p tcp &#8211;dport 443 -j ACCEPT # HTTPS<br />
$IPTABLES -A INPUT -p tcp &#8211;dport 3306 -j ACCEPT # MYSQL<br />
$IPTABLES -A INPUT -p tcp &#8211;dport 21 -j ACCEPT # FTP</p>
<p>OK<br />
}<br />
#FW options</p>
<p>case $1 in<br />
start)<br />
echo &#8220;Carregando Modulo de firewall&#8230;&#8221;<br />
START<br />
;;</p>
<p>stop)<br />
echo &#8220;Parando Modulo de firewall&#8230;&#8221;<br />
STOP<br />
;;</p>
<p>restart)<br />
echo &#8220;Restartando Modulo de firewall&#8230;&#8221;<br />
STOP<br />
START<br />
;;</p>
<p>*)</p>
<p>echo -e &#8220;Tente $0 {start|stop|restart}&#8221;<br />
;;<br />
Esac</p>
<p>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p>
<p>OBS: Veja que a porta &#8220;12345&#8243; indicada no bloco de &#8220;REGRAS DE ACESSO DINAMICO SSH&#8221;, foi configurada para efetuar a liberação da porta 22 neste exemplo, e a porta &#8220;123456&#8243;, para o bloqueio do acesso, abaixo efetuaremos os devidos testes.</p>
<p><strong>4- Adicionar os modulos de Firewall a serem carregados</strong></p>
<blockquote><p>touch /etc/rc.modules<br />
chmod 755 /etc/rc.modules</p>
<p>Conteudo do arquivo /etc/rc.modules</p>
<p>/sbin/modprobe ip_conntrack</p>
<p>source /etc/rc.modules &lt;- Carrega o conteudo do arquivo</p></blockquote>
<p><strong>5- Execute o Arquivo de Firewall</strong></p>
<p>OBS.: ANTES DE EXECUTAR O FIREWALL TENHA ALGUMA FORMA ALTERNATIVA DE ACESSO AO SERVIDOR PARA PODER EFETUAR OS DEVIDOS TESTES, POIS AO SUBIR O FIREWALL VOCÊ PODERÁ PERDER O ACESSO AO SERVIDOR</p>
<blockquote><p>/etc/init.d/firewall start/stop/restart</p></blockquote>
<p><strong>6- Efetuando teste de acesso:</strong><br />
Com o Firewall habilitado, efetue o telnet na porta que você definiu para a abertura do SSH, no nosso exemplo a porta 12345:</p>
<blockquote><p>telnet xxx.xxx.xxx.xxx 12345</p></blockquote>
<p>Feito o telnet, seu IP será liberado no arquivo &#8220;/proc/net/ipt_recent/SSH-ACCESS&#8221; e o acesso é liberado para acessar o servidor diretamente na porta 22</p>
<p>O arquivo lhe mostrará o IP da seguinte forma: &#8220;src=xxx.xxx.xxx.xxx ttl: 61 last_seen: 523542876 oldest_pkt: 2 523539875, 523542876&#8243;</p>
<p>Para bloquear o acesso a porta 22 novamente, basta efetuar o telnet na porta de fechamento, no nosso caso a porta 123456.</p>
<blockquote><p>telnet xxx.xxx.xxx.xxx 123456</p></blockquote>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="shr-publisher-637"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/01/10/gerenciando-acesso-a-portas-de-acesso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando SED</title>
		<link>http://blog.deserv.info/2011/11/25/utilizando-sed/</link>
		<comments>http://blog.deserv.info/2011/11/25/utilizando-sed/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 13:12:20 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Sed]]></category>
		<category><![CDATA[Utilizando SED]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=627</guid>
		<description><![CDATA[PREENCHIMENTO DE ARQUIVOS: # duplicar o tamanho de um arquivo sed G # duplicar o tamanho de um arquivo que jah contém linhas em branco. # O arquivo de saída deve conter não mais que uma linha branca # entre linhas de texto sed '/^$/d;G' # triplicar o tamanho de um arquivo sed 'G;G' # [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F11%252F25%252Futilizando-sed%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Utilizando%20SED%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><pre>PREENCHIMENTO DE ARQUIVOS:

 # duplicar o tamanho de um arquivo
 sed G

 # duplicar o tamanho de um arquivo que jah contém linhas em branco.
 # O arquivo de saída deve conter não mais que uma linha branca
 # entre linhas de texto
 sed '/^$/d;G'</pre>
<p><span id="more-627"></span></p>
<pre>

 # triplicar o tamanho de um arquivo
 sed 'G;G'

 # desfazer a duplicação de tamanho (assume que as linhas de numeração par
 # estejam em branco)
 sed 'n;d'

 # insere uma linha em branco acima de cada linha que contem "regex"
 sed '/regex/{x;p;x;}'

 # insere uma linha em branco abaixo de cada linha que contem "regex"
 sed '/regex/G'

 # insere uma linha em branco acima e abaixo de cada linha que contem "regex"
 sed '/regex/{x;p;x;G;}'

NUMERACÃO:

 # numera cada linha de um arquivo (com alinhamento simples a esquerda). Usar
 # uma tabulação em vez do espaço vai preservar as margens. (veja a observação
 # sobre o '\t' no final desse arquivo)
 sed = arquivo | sed 'N;s/\n/\t/'

 # numera cada linha de um arquivo (números a esquerda, alinhados a direita)
 sed = arquivo | sed 'N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /'

 # numera cada linha de um arquivo, mas só imprime os números se a linha não
 # estiver em branco
 sed '/./=' arquivo | sed '/./N; s/\n/ /'

 # conta as linhas (emula o "wc -l")
 sed -n '$='

CONVERSÃO DE TEXTO E SUBSTITUIÇÃO:

 # EM AMBIENTE UNIX: converte o caractere de linha nova do DOS (CR/LF) para o
 # formato Unix
 sed 's/.$//'            # assume que todas as linhas terminam com CR/LF
 sed 's/^M$//'           # no bash/tcsh, pressione Ctrl-V depois Ctrl-M
 sed 's/\x0D$//'         # gsed 3.02.80, mas os scripts acima sao mais simples

 # EM AMBIENTE UNIX: converte o caractere de linha nova do Unix (LF) para
 # o formato DOS
 sed "s/$/`echo -e \\\r`/"            # comando usado com o ksh
 sed 's/$'"/`echo \\\r`/"             # comando usado com o bash
 sed "s/$/`echo \\\r`/"               # comando usado com o zsh
 sed 's/$/\r/'                        # gsed 3.02.80

 # EM AMBIENTE DOS: converte o caractere de linha nova do Unix (LF) para
 # o formato DOS
 sed "s/$//"                          # método 1
 sed -n p                             # método 2

 # EM AMBIENTE DOS: converte o caractere de linha nova do DOS (CR/LF) para
 # o formato Unix. Só pode ser feito com o sed UnxUtils, versão 4.0.7
 # ou maior. A versão do UnxUtils pode ser identificada pelo parâmetro padrão
 # "--text" que aparece quando o "--help" é usado. De outra forma, mudar
 # os caracteres de linha nova do DOS para o formato Unix não pode ser
 # feito em um ambiente DOS. Use o "tr" para isso.
 sed "s/\r//" arquivo_entrada &gt;arquivo_saida         # sed UnxUtils versão v4.0.7 ou maior
 tr -d \r &lt;arquivo_entrada &gt;arquivo_saida            # tr GNU versão 1.22 ou maior

 # apaga o espaço em branco inicial (espaços, tabulações) do começo
 # de cada linha, puxando o texto para a esquerda
 sed 's/^[ \t]*//'                    # veja a nota sobre o '\t' no final
                                      # deste arquivo

 # apaga o espaço em branco final (espaços, tabulações) do final de cada linha
 sed 's/[ \t]*$//'                    # veja a nota sobre o '\t' no final
                                      # deste arquivo

 # deleta AMBOS os espaços em branco final e inicial de cada linha
 sed 's/^[ \t]*//;s/[ \t]*$//'

 # insere 5 espaços em branco no ínicio de cada linha (faz o <em>offset</em> da página)
 sed 's/^/     /'

 # alinha tudo a direita, numa coluna de 79 caracteres de largura
 sed -e :a -e 's/^.\{1,78\}$/ &amp;/;ta'  # definido como 78 mais 1 espaço

 # centraliza todo o texto no meio de uma coluna de 79 caracteres de
 # largura. No método 1, os espaços no começo da linha são significativos,
 # e espaços em branco são anexados ao final de cada linha. No método 2,
 # os espaços no início de cada linha são descartados ao centralizar
 # a linha e não é adicionado nenhum espaço no final de cada linha.
 sed  -e :a -e 's/^.\{1,77\}$/ &amp; /;ta'                     # método 1
 sed  -e :a -e 's/^.\{1,77\}$/ &amp;/;ta' -e 's/\( *\)\1/\1/'  # método 2

 # substituir (achar e trocar) "foo" por "bar" em cada linha
 sed 's/foo/bar/'             # troca somente a 1a instância de uma linha
 sed 's/foo/bar/4'            # troca somente a 4a instância de uma linha
 sed 's/foo/bar/g'            # troca TODAS as instâncias de uma linha
 sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # troca o 'próximo-para-último'
 sed 's/\(.*\)foo/\1bar/'     # troca somente a última occorrência

 # substitui "foo" por "bar" SOMENTE nas linhas que contem "baz"
 sed '/baz/s/foo/bar/g'

 # substitui "foo" por "bar" EXCETO nas linhas que contem "baz"
 sed '/baz/!s/foo/bar/g'

 # troca "scarlet" ou "ruby" ou "pucy" para "red"
 sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'   # na maioria dos seds
 gsed 's/scarlet\|ruby\|puce/red/g'                # somente no GNU sed 

 # reverter a ordem das linhas (emula o "tac")
 # um bug/função do HHsed v1.5 fazia com que as linhas em branco fossem deletadas
 sed '1!G;h;$!d'              # método 1
 sed -n '1!G;h;$p'            # método 2

 # reverte cada caractere em cada linha (emula o "rev")
 sed '/\n/!G;s/\(.\)\(.*\n\)/&amp;\2\1/;//D;s/.//'

 # une pares de linhas lado a lado (como o "paste")
 sed '$!N;s/\n/ /'

 # se uma linha termina com uma barra invertida, a próxima linha é
 # anexada a ela
 sed -e :a -e '/\\$/N; s/\\\n//; ta'

 # se uma linha termina com um sinal de igual, ela é anexada a linha
 # anterior e o sinal de "=" é substituído por um espaco simples.
 sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'

 # adiciona vírgulas a strings numéricos, mudando "1234567" para "1,234,567"
 gsed ':a;s/\B[0-9]\{3\}\&gt;/,&amp;/;ta'                     # GNU sed
 sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # outros seds

 # adiciona vírgulas em números com pontos decimais e sinais de negativo (GNU sed)
 gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'

 # adiciona uma linha em branco a cada 5 linhas (após as linhas 5, 10, 15, 20, etc.)
 gsed '0~5G'                  # somente no GNU sed
 sed 'n;n;n;n;G;'             # outros seds

IMPRESSÃO SELETIVA DE CERTAS LINHAS:

 # imprime as primeiras 10 linhas de um arquivo (emula o comportamento do "head")
 sed 10q

 # imprime a primeira linha de um arquivo (emula o "head -1")
 sed q

 # imprime as últimas 10 linhas de um arquivo (emula o "tail")
 sed -e :a -e '$q;N;11,$D;ba'

 # imprime as 2 últimas linhas de um arquivo (emula o "tail -2")
 sed '$!N;$!D'

 # imprime somente a última linha de um arquivo (emula o "tail -1")
 sed '$!d'                    # método 1
 sed -n '$p'                  # método 2

 # imprime somente as linhas que se encaixam na expressão regular
 # (emula o "grep")
 sed -n '/regexp/p'           # método 1
 sed '/regexp/!d'             # método 2

 # imprime somente as linhas que NÃO se encaixam na regexp (emula o "grep -v")
 sed -n '/regexp/!p'          # método 1, corresponde ao descrito acima
 sed '/regexp/d'              # método 2, sintaxe mais simples

 # imprime a linha imediatamente anterior a expressão regular, mas
 # não a linha contendo a expressão
 sed -n '/regexp/{g;1!p;};h'

 # imprime a linha imediatamente posterior a expressão regular, mas
 # não a linha contendo a expressão
 sed -n '/regexp/{n;p;}'

 # imprime uma linha de contexto antes e depois da expressão regular,
 # com o número da linha indicando onde a expressão regular
 # aparece (similar ao "grep -A1 -B1")
 sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h

 # procura e imprime por AAA e BBB e CCC (em qualquer ordem)
 sed '/AAA/!d; /BBB/!d; /CCC/!d'

 # procura e imprime por AAA e BBB e CCC (nessa ordem)
 sed '/AAA.*BBB.*CCC/!d'

 # procura e imprime por AAA ou BBB ou CCC (emula o "egrep")
 sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d    # maioria dos seds
 gsed '/AAA\|BBB\|CCC/!d'                        # somente com o sed GNU

 # imprime um parágrafo se ele possuir AAA (linhas vazias separam os parágrafos).
 # Com o HHsed v1.5 deve ser inserido o 'G;' apos o 'x;', nos 3 scripts abaixo
 sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'

 # imprime um parágrafo se ele possuir AAA e BBB e CCC (em qualquer ordem)
 sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'

 # imprime o parágrafo inteiro se ele possuir AAA ou BBB ou CCC
 sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
 gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d'         # somente com o GNU sed

 # imprime somente as linhas com 65 caracteres ou mais
 sed -n '/^.\{65\}/p'

 # imprime somente as linhas com menos que 65 caracteres
 sed -n '/^.\{65\}/!p'        # método 1, corresponde ao descrito acima
 sed '/^.\{65\}/d'            # método 2, sintaxe mais simples

 # imprime uma parte do arquivo que vai da expressão regular até
 # o final do mesmo
 sed -n '/regexp/,$p'

 # imprime uma parte do arquivo baseada nos números das linhas (linhas 8-12,
 # inclusive)
 sed -n '8,12p'               # método 1
 sed '8,12!d'                 # método 2

 # imprime a linha de número 52
 sed -n '52p'                 # método 1
 sed '52!d'                   # método 2
 sed '52q;d'                  # método 3, eficiente com arquivos grandes

 # começando na linha 3, imprime cada sétima linha
 gsed -n '3~7p'               # somente o GNU sed
 sed -n '3,${p;n;n;n;n;n;n;}' # outros seds

 # imprime um pedaço de arquivo que está entre as duas
 # expressões regulares (inclusive)
 sed -n '/Iowa/,/Montana/p'             # é <em>case sensitive</em>

DELEÇÃO SELETIVA DE CERTAS LINHAS:

 # imprime todo o arquivo EXCETO a parte entre 2 expressões regulares
 sed '/Iowa/,/Montana/d'

 # deleta linhas duplicadas consecutivas de um arquivo (emula o "uniq"). A primeira
 # linha de um conjunto de linhas duplicadas é mantida, o resto é deletada
 sed '$!N; /^\(.*\)\n\1$/!P; D'

 # deleta linhas duplicadas não consecutivas. Tome cuidado para nao estourar
 # o tamanho do <em>buffer</em> do espaco de reserva (<em>hold space</em>), ou então use o sed GNU.
 sed -n 'G; s/\n/&amp;&amp;/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'

 # deleta todas as linhas exceto as linhas duplicadas (emula o "uniq -d").
 sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'

 # deleta as 10 primeiras linhas de um arquivo
 sed '1,10d'

 # deleta a última linha de um arquivo
 sed'$d'

 # deleta as 2 últimas linhas de um arquivo
 sed 'N;$!P;$!D;$d'

 # deleta as 10 últimas linhas de um arquivo
 sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # método 1
 sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # método 2

 # deleta cada oitava linha
 gsed '0~8d'                           # somente no GNU sed
 sed 'n;n;n;n;n;n;n;d;'                # outros seds

 # deleta as linhas que combinarem com padrão
 sed '/padrao/d'

 # deleta TODAS as linhas em branco de um arquivo (o mesmo que "grep '.' ")
 sed '/^$/d'                           # método 1
 sed '/./!d'                           # método 2

 # deleta todas as linhas brancas CONSECUTIVAS de um arquivo exceto a primeira;
 # ainda deleta todas as linhas em branco do início e fim do arquivo (emula o
 # "cat -s")
 sed '/./,/^$/!d'          # método 1, permite 0 brancos no topo, 1 no
                           # final do arquivo
 sed '/^$/N;/\n$/D'        # método 2, permite 1 branco no top, 0 no
                           # final do arquivo

 # deleta todas as linhas em branco CONSECUTIVAS do arquivo, exceto as 2 primeiras:
 sed '/^$/N;/\n$/N;//D'

 # deleta todas as linhas em branco iniciais, no início do arquivo
 sed '/./,$!d'

 # deleta todas as linhas em branco finais, no final do arquivo
 sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  # funciona com todos os sed
 sed -e :a -e '/^\n*$/N;/\n$/ba'        # o mesmo, exceto gsed 3.02*

 # deleta a última linha de cada parágrafo
 sed -n '/^$/{p;h;};/./{x;/./p;}'

APLICAÇÕES ESPECIAIS:

 # remove <em>overstrikes nroff</em> (caracter, backspace) das man pages. O comando
 # 'echo' pode precisar da opção -e se você usar Unix System V ou uma
 # shell bash
 sed "s/.`echo \\\b`//g"    # as aspas duplas são necessárias em ambiente Unix
 sed 's/.^H//g'             # no bash/tcsh, pressione Ctrl-V e depois Ctrl-H
 sed 's/.\x08//g'           # expressão hexadecimal para o sed v1.5

 # mostra as mensagens de cabeçalho de um Usenet/e-mail
 sed '/^$/q'                # deleta tudo após a primeira linha em branco

 # mostra o corpo da mensagem de um Usenet/e-mail
 sed '1,/^$/d'              # deleta tudo até a primeira linha em branco

 # mostra o cabeçalho <em>Subject</em>, mas remove a porção inicial "Subject :"
 sed '/^Subject: */!d; s///;q'

 # pega o cabeçalho de endereço de resposta
 sed '/^Reply-To:/q; /^From:/h; /./d;g;q'

 # verifica o endereço de maneira correta. Pega o endereço de e-mail
 # através da 1a linha do cabeçalho de endereço de retorno (veja
 # o script acima)
 sed 's/ *(.*)//; s/&gt;.*//; s/.*[:&lt;] *//'

 # adiciona um sinal de maior com um espaço a cada linha (citação de uma
 # mensagem)
 sed 's/^/&gt; /'

 # deleta o sinal de maior e o espaço de cada linha (remove a
 # citação de uma mensagem)
 sed 's/^&gt; //'

 # remove a maioria das <em>tags</em> HTML (acomoda <em>tags</em> de múltiplas linhas)
 sed -e :a -e 's/&lt;[^&gt;]*&gt;//g;/&lt;/N;//ba'

 # extrai binários <em>uuencoded</em> com múltiplos pedaços, removendo informações
 # estranhas/extras, fazendo com que só a parte <em>uuencoded</em> permaneça. Os
 # arquivos devem ser passados ao sed na ordem correta. A versão 1 pode
 # ser executada a partir da linha de comando; a versão 2 pode ser
 # executada a partir de um shell script Unix. (Modificado de um
 # script criado por Rahul Dhesi.)
 sed '/^end/,/^begin/d' arquivo1 arquivo2 ... arquivoX | uudecode   # vers. 1
 sed '/^end/,/^begin/d' $* | uudecode                      # vers. 2

 # Ordena parágrafos de arquivos alfabeticamente. Parágrafos são separados
 # por linhas em branco. O GNU sed usa o \v como tabulação vertical, ou qualquer
 # caracter único serve.
 sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort | sed '1s/={NL}=//;s/={NL}=/\n/g'
 gsed '/./{H;d};x;y/\n/\v/' file | sort | sed '1s/\v//;y/\v/\n/'

 # zipa cada arquivo .TXT individualmente, deletando o arquivo fonte
 # e definindo o nome de cada .ZIP para o nome base do arquivo .TXT.
 # (no DOS: o comando "dir /b" retorna nomes de arquivo reduzidos e em caixa alta).
 echo @echo off &gt;zipup.bat
 dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" &gt;&gt;zipup.bat

USO TÍPICO: O sed pega um ou mais comandos de edição e aplica todos eles,
em sequência, a cada linha de entrada. Após todos os comandos terem sido
aplicados a primeira linha de entrada, ela é jogada para a saída e a
segunda linha de entrada começa a ser processada, recomeçando o ciclo.
Os exemplos acima assumem que a entrada venha do dispositivo padrão  (por exemplo,
o console, onde  normalmente a entrada é via pipe). Um ou mais nomes de
arquivo podem ser passados na linha de comando se a entrada não vier da
entrada padrão. A saída é mandada para a saída padrão (a tela). Assim:

 cat arquivo | sed '10q'        # usa a entrada via pipe
 sed '10q' arquivo              # tem o mesmo efeito, mas evita o uso do "cat"
 sed '10q' arquivo &gt; novo-arquivo    # redireciona a saída para o disco

Para instruções de sintaxe adicionais, incluindo a maneira de aplicar
comandos de edição a partir de um arquivo no disco, ao invés da linha
de comando, consulte "sed &amp; awk, 2nd Edition," por Dale Dougherty e
Arnold Robbins (O'Reilly, 1997; <a href="http://www.ora.com/">http://www.ora.com</a>), "UNIX Text
Processing," por Dale Dougherty e Tim O'Reilly (Hayden Books, 1987)
ou os tutoriais do Mike Arst distribuídos como U-SEDIT2.ZIP (em vários
sites). Para explorar totalmente o poder do sed, deve-se entender
as "expressões regulares". Para isso, veja "Mastering Regular Expressions"
de Jeffrey Friedl (O'Reilly, 1997). As páginas de manual ("man pages")
dos sistemas Unix podem ser úteis (tente "man sed", "man regexp", ou
a subseção sobre expressões regulares no "man ed"), mas as páginas
de manual são notadamente mais difíceis de se compreender. Elas
não são escritas para ensinar o uso do sed ou das expressões
regulares para usuários iniciantes, mas como texto de referência
para aqueles que já tem certa experiência com as duas ferramentas.

SINTAXE DAS ASPAS: Os exemplos acima utilizam as aspas simples ('...')
ao invés das aspas duplas ("...") para agrupar comandos de edição,
visto que o sed é comumente utilizado em plataformas Unix. As
aspas simples impedem que a shell Unix interprete o cifrão ($)
e a crase (`...`), os quais seriam expandidos pela shell se estivessem
dentro das aspas duplas. Usuários da shell "csh" e derivadas
ainda precisarão utilizar a barra invertida (\) antes do sinal de
exclamação (por exemplo \!) para conseguir rodar os exemplos acima, mesmo
usando as aspas simples. Versões do sed escritas para o DOS
invariavelmente necessitam das aspas duplas ("...") ao invés das
aspas simples para agrupar os comandos de edição.

USO DO '\t' NOS SCRIPTS SED: Para maior clareza na documentação, nós
utilizamos a expressão '\t' para indicar o caractere de tabulação
(0x09) nos scripts sed. Porém, a maioria das versões do sed não reconhece
a abreviação '\t', logo, quando for executar estes scripts via linha
de comando, você deve apertar a tecla TAB. A abreviação '\t' só
é reconhecida como um metacaractere nas expressões regulares no
awk, perl, HHsed, sedmod, e o GNU sed v3.02.80.

VERSÕES DO SED: As versões do sed diferem entre si, logo, algumas
variações na sintaxe são esperadas. Em particular, a maioria
não suporta o uso de rótulos (:nome) ou instruções ramificadas
(b,t) na edição dos comandos, exceto no final dos mesmos. Nós utilizamos
uma sintaxe que seria portável para a maioria dos usuários do sed,
mesmo sabendo que a popular versão GNU do sed permite uma sintaxe
mais sucinta. Quando o leitor vê um comando comprido como esse:

   sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d

é importante que ele saiba que o GNU sed permite uma redução, como:

   sed '/AAA/b;/BBB/b;/CCC/b;d'		# ou mesmo
   sed '/AAA\|BBB\|CCC/b;d'

Lembre-se ainda que, apesar de muitas versões do sed aceitarem comandos
como "/one/ s/RE1/RE2/", algumas não permitem o uso de "/one/! s/RE1/RE2/",
a qual contém um espaço antes do 's'. Omita o espaço quando for digitar
o comando.

OTIMIZANDO PARA MAIOR VELOCIDADE: Se a velocidade de execução precisa
aumentar (em virtude de grandes arquivos de entrada ou de processadores
e discos rígidos lentos), a substituição será executada mais rapidamente
se a expressão de "procura" é especificada antes da instrução
"s/.../.../". Assim:

   sed 's/foo/bar/g' arquivo         # comando de substituição padrão
   sed '/foo/ s/foo/bar/g' arquivo   # executa de forma mais rápida
   sed '/foo/ s//bar/g' arquivo      # sintaxe mais sucinta

Na seleção ou remoção de linhas nas quais você somente precisa
ver uma primeira parte de um arquivo, o comando "quit" (q) no script
irá reduzir drasticamente o tempo de processamento para arquivos
grandes. Assim:

   sed -n '45,50p' arquivo           # imprime as linhas 45-50
   sed -n '51q;45,50p' arquivo       # mesma coisa, mas faz muito mais
                                     # rapidamente</pre>
<pre></pre>
<pre>Fonte: <a href="http://sed.sourceforge.net/">http://sed.sourceforge.net/</a></pre>
<div class="shr-publisher-627"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/25/utilizando-sed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando Apache para Performance Maxima</title>
		<link>http://blog.deserv.info/2011/11/17/configurando-apache-para-performance-maxima-2/</link>
		<comments>http://blog.deserv.info/2011/11/17/configurando-apache-para-performance-maxima-2/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 17:34:54 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Softwares Adicionais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[AllowOverride]]></category>
		<category><![CDATA[Apache-performance]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[FollowSymLinks]]></category>
		<category><![CDATA[KeepAlive and KeepAliveTimeout]]></category>
		<category><![CDATA[MaxClients]]></category>
		<category><![CDATA[MaxRequestsPerChild]]></category>
		<category><![CDATA[MaxSpareServers]]></category>
		<category><![CDATA[MinSpareServers]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[StartServers]]></category>
		<category><![CDATA[SymLinksIfOwnerMatch]]></category>
		<category><![CDATA[Vishnu Ram]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=624</guid>
		<description><![CDATA[Introdução Apache é a implementação open source de um servidor HTTP. Ele é o webserver mais popular na Internet. Uma pesquisa realizada em 2005 pela NetCraft mostra que cerca de 70% dos sites na Internet rodam sobre o Apache. Opções de Configuração em tempo de Compilação Carrege apenas os módulos necessários O servidor Apache é [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F11%252F17%252Fconfigurando-apache-para-performance-maxima-2%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Configurando%20Apache%20para%20Performance%20Maxima%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Introdução</h2>
<p align="justify">Apache é a implementação open source de um servidor HTTP. Ele é o webserver mais popular na Internet. Uma pesquisa realizada em 2005 pela NetCraft mostra que cerca de 70% dos sites na Internet rodam sobre o Apache. <span id="more-624"></span></p>
<h2>Opções de Configuração em tempo de Compilação</h2>
<h3>Carrege apenas os módulos necessários</h3>
<p align="justify">O servidor Apache é um programa modular onde o administrador pode escolher entre as funcinalidade que deseja incluir no servidor selecionando um pacote de módukis. Os módulos podem ser compilados estaticamente no binário httpd ou dinamicamente como DSOs(Dynamic Shared Objects). Módulos DSO podem ser compilados quando o servidor for compilado ou poem ser compilados utilizando o apxs para adicioná-los mais tarde. O modulo mod_so deve ser compilado estaticamente no Apache para que o suporte a DSO seja ativo.</p>
<p align="justify">Execute o apache apenas com os módulos necessários. Isto reduz o consumo de memória aumenta a performance do servidor. Compilar os módulos estaticamente irá reduzir o consumo de RAM que é utilizado para suportar módulos compilados dinamicamente, mas será necessário recompilar o apache toda vez que um módulo for adicionado ou removido. È aqui que o DSO se torna útil. Uma vez que o modulo mod_so seja compilado estaticamente, qualquer outro módulo pode ser inserido ou removido utilizando o comando LoadModule no arquivo httpd.conf &#8211; , mas você terá que compilar os módulos utilizando apxs se ele não foi compilado quando o servidor foi feito.</p>
<h3>Escolha o MPM apropriado</h3>
<p align="justify">O apache vem com uma selação de Módulos Multi-Processadores (MPMs) que são responsáveis por abrir as portas de rede na máquina, aceitando requisições, e despachando processos para cuidar das requisições. Apenas um MPM pode ser carregado por vez.</p>
<p align="justify">Escolher o MPM depende de vários fatores, por exemplo se o SO suporta threads, quanta memória está disponível, escalabilidade versus estabilidade, modulos externos,etc .. Sistemas Linux podem escolher entr utilizar um MPM com suporte (worker) a threads ou um prefork sem threads:</p>
<p align="justify">O MPM Worker utiliza múltiplos processos. Ele é multi-threaded com cada processo e cada thread cuidando de uma única conexão. Esté é mais rápido e mais escalável e a memória consumida e relativamente baixa. Funciona bem com múltiplos processadores. Porém, o worker é menos tolerante a módulos defeituosos, e threads defeituosas podem afetar todas as outras threads de um processo.</p>
<p align="justify">O MPM Prefork utiliza múltiplos processos filhos, cada filho cuidad de apenas uma conexão por vez. Prefork é muito bem gerenciada por processadores simples ou múlitplos, a velocidade é comparável ao worker e é mais tolerante a falhas em modulos e processos que terminam inesperadamente. Mas o consumo de memória é alto, mais tráfego leva a mais consumo de memória.</p>
<h2>Opções de Configuração em Tempo de Execução</h2>
<h3>DNS lookup</h3>
<p align="justify">A diretiva HostnameLookips habilita a consulta de DNS, então os hostnames podem ser logados ao invés de endereços IP. Isto adiciona latência em cada requisição desde que a consulta do DNS tem que ser completada antes que a requisição seja terminada. Esta opção é desabilitada por padrão no Apache 1.3 e superiores. Deixe isto inativo e utilize programas pós-processamento como o logresolve para determinar os IPs dos logs. Logresolve vem com Apache.</p>
<p align="justify">Quando utilizar as diretivas Allow from ou Deny from, utilize endereços IP ao invés de nomes de domínios. Caso contrário uma consulta dupla ao DNS será executada para ter certeza de que o domínio ou host não está sendo spoofado.</p>
<h3>AllowOverride</h3>
<p align="justify">Se o AllowOverride está setado para &#8216;None&#8217;, então o Apache irá tentar abrir o arquivo .htaccess (especificada pela diretiva AccessFileName) em cada diretório que for acessado. Por exemplo:</p>
<blockquote>
<pre>DocumentRoot /var/www/html
&lt;Directory /&gt;
AllowOverride all
&lt;/Directory&gt;</pre>
</blockquote>
<p align="justify">Se uma requisição for feita para acessar /index.html, o Apache irá tentar abrir /.htaccess, /var/.htaccess, /var/www/.htaccess, and /var/www/html/.htaccess. Estas tentativas aumentam a latência. Se o arquivo .htaccess for necessário para um diretório, habilite apenas para este diretório.</p>
<h3>FollowSymLinks e SymLinksIfOwnerMatch</h3>
<p align="justify">Se a opção FollowSymLinks estiver setada, então o servidor permitirá que links simbólicos possam ser seguidos neste diretório. Se a opção SymLinksIfOwnerMatch estiver setada, então o servidor permitirá acessar o link apenas se o destino dele bater com o dono do link.</p>
<p align="justify">Se a opção SymLinksIfOwnerMatch estiver setada, então o Apache terá que realizar consultas adicionais ao sistema para verificar se os donos coincidem. Chamadas adicionais também são necessárias quando a opção FollowSymLinks NÃO está setada. Por exemplo:</p>
<blockquote>
<pre>DocumentRoot /vaw/www/html
&lt;Directory /&gt;
Options SymLinksIfOwnerMatch
&lt;/Directory&gt;</pre>
</blockquote>
<p align="justify">Para uma requisição feita para /index.html, o Apache irá executar lstat() em /var, /var/www, /var/www/html, and /var/www/html/index.html. Estas requisições adicionais também irão aumentar a lantência. Os resultados do lstat não são cacheados, então as consultas irão ocorrer em cada requisição.</p>
<p align="justify">Para uma máxima performance, sete FollowSymLinks em cada lugar e nunca sete SymLinksIfOwnerMatch. Ou então, se SymLinksIfOwnerMatch for necessário para um diretório, sete ele para apenas este diretório.</p>
<h3>Content Negotiation</h3>
<p align="justify">Evite utilizar content negotiation para respostas mais rápidas. Se content negotiation é necessário para o site, utilize arquivos type-map ao invés da diretiva Options MultiViews. Com MultiViews, Apache precisa scanear o diretório em busca de arquivos, o que adiciona latência.</p>
<h3>MaxClients</h3>
<p align="justify">O MaxClients seta o número máximo de clientes simultâneos que pode ser suportada por cada servidor. Nenhum processo além do que está definido será aberto. Ele não deve conter um número muito baixo já que as requisições serão colacadas em fila, o que eventualmente irá dar time-out e os recursos do servidor continuarão não utilizados. Setar este valor muito alto irá causar o início de swap e o tempo de resposta irá cair drasticamente. O valor apropriado para MaxClientes pode ser calculado por: MaxClientes = Total RAM / Tamanho Máximo de Processos . O tamanho dos processos para arquivos estáticos é de mais ou menos 2-3MB. Para dinâmicos como PHP, deve ser por volta de 15MB. A coluna RSS de:</p>
<blockquote>
<pre># ps -ylC httpd --sort:rss</pre>
</blockquote>
<p align="justify">Mostra a memória física non-swapped utilizada pelos processos do Apache em kilo Bytes.</p>
<p align="justify">Se existem mais usuários concorrentes do que MaxClients, as requisições serão colocadas em fila até o número baseado na diretiva ListenBacklog. Aumente o ServerLimit para setar o MaxClients acima de 256.</p>
<h3>MinSpareServers, MaxSpareServers, e StartServers</h3>
<p align="justify">MaxSpareServers e MinSpareServers determina quantos processos filhos devem ser mantidos rodando. Se MinSpareServers for muito baixo e muitas requisições forem iniciadas, então o Apache terá que abrir processos adicionais para atender as requisições. Criar processos filhos é relativamente caro. Se o servidor estiver ocupado criando processos, ele não estará disponível para servir as requisições imediatamente. MaxSpareServers não deve ser muito alto, ele pode causar problemas de recursos desde que cada processo consome os recursos da máquina.</p>
<p align="justify">Sete MinSpareServers e MaxSpareServers para um valor com que o Apache não precise frequentemente abrir mais de 4 processos por segundo. (O Apache pode abrir o máximo de 32 processos por segundo). Quando mais de 4 processos por segundo forem abertos, uma mensagem será logada no ErrorLog.</p>
<p align="justify">A diretiva StartServers define o número de processos criados na inicialização do Apache. O Apache irá continuar abrir os processos até que alcance o número de MinSpareServers. Não afeta muito a performance já que o servidor não é reiniciado frequentemente. Se existem muitas requisições e o Apache é reiniciado frequentemente, sete este valor para um número alto.</p>
<h3>MaxRequestsPerChild</h3>
<p align="justify">A diretiva MaxRequestsPerChild definie o número de requisições que um processo do servidor irá gerenciar. Depois as requisições MaxRequestsPerChild irão morrer. É definido para 0 por padrão, o que significa que o processo não irá expirar nunca. É apropriado setar este valor para alguns milhares. Isto pode ajudar a previnir vazamento de memória desde que o processo morre depois de servir um número de requisições. Não sete este valor muito baixo, já que criar novos processos causa overhead.</p>
<h3>KeepAlive and KeepAliveTimeout</h3>
<p align="justify">A diretiva KeepAilve permite que múltiplas requisições possam ser enviadas pela mesma conexão TCP. Isto é útil para páginas com muitas imagens. Se o KeepAlive estiver Off, então para cada imagem, uma nova conexão TCP precisa ser aberta.</p>
<p align="justify">KeepAliveTimeout determinada quanto tempo deve esperar até a próxima requisição. Sete para um valor baixo, por volta de 2 a 5 segundos. Se for setado para um valor muito alto, os processos ficam amarrados esperando pelo cliente quando eles poderiam ser utilizados para servir novos clientes.</p>
<h2>Compressão HTTP &amp; Caching</h2>
<p align="justify">O servidor utiliza os métodos gzip ou deflate para as respostas payload antes que ele seja enviado para os clientes. Então o cliente descompacta o payload. Não existe necessidade de instalar softwares adicionais no lado do cliente desde que a maioria dos navegadores suporta isto. Utilizar compressão irá economizar banda e irá aumentar o tempo de resposta, estudos mostram que em média o ganho da compressão é de 75%. A compressão pode ser habilitada utilizando módulo mod_deflate. O Payload é compactado apenas se o navegador requisitar a compactação, ou então o conteúdo descompactado será enviado. Um navegador capaz de utilizar o conteúdo compactado envia o seguinte cabeçalho na requisição: &#8220;Accept-Encoding: gzip,deflate&#8221;. Então o servidor irá enviar o payload compactado e o cabeçalho da reposta é &#8220;Content-Encoding: gzip&#8221;</p>
<p align="justify">O exemplo a seguir utiliza o telnet para verificar os cabeçalhos de requisição e de resposta:</p>
<blockquote>
<pre>bash-3.00$ telnet www.webperformance.org 80
Trying 24.60.234.27...
Connected to www.webperformance.org (24.60.234.27).
Escape character is '^]'.
HEAD / HTTP/1.1
Host: www.webperformance.org
Accept-Encoding: gzip,deflate

HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 02:29:22 GMT
Server: Apache/2.0
X-Powered-By: PHP/5.1.1
Cache-Control: max-age=0
Expires: Sat, 31 Dec 2005 02:29:22 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Content-Type: text/html; charset=ISO-8859-1</pre>
</blockquote>
<p align="justify">O module mod_cache pode ser utilizado no lado do servidor, está em produção estável na versão 2.2 do Apache.</p>
<h2>Servidor separado para conteúdo estático e dinâmico</h2>
<p align="justify">Processos do apache para conteúdo dinâmico consome cerca de 3-20MB de RAM. E cresce para acomodar o conteúdo e nunca diminui até que o processo termine. Digamos que um processo cresca até os 20MB para servir um conteúdo dinâmico. Depois de completar a requisição, ele está libre para servir outra requisição. Se vier uma requisição para uma imagem, então esses 20MB de processos está servindo um conteúdo estático que poderia ser executado por um processo de 1MB. A memória é utilizada ineficientemente.</p>
<p align="justify">Utilize uma pequena compilação do Apache (com o mínimo de módulos compilados estaticamente) como sendo o servidor front-end para servir conteúdos estáticos. As requisições para conteúdos dinâmicos serão encaminhadas para um apache robusto (compilado com todos os módulos necessários). Utilizar um servidor front-end leve tem a vantagem de que os conteúdos estáticos são enviados rapidamente sem o consumo alto de memória e apenas o conteúdo dinâmico é passado para o servidor robusto.</p>
<p align="justify">Encaminhamento de requisições pode ser implementado utilizando os módulos mod_proxy e mod_rewrite. Suponha que exista um servidor apache leve rodando na porta 80 e o robusto na porta 8088. Então a configuração a seguir pode ser utilizada no apache leve para encaminhar todas as requisições de conteúdo dinâmico para o servidor robusto.</p>
<blockquote>
<pre>ProxyPassReverse / http://%{HTTP_HOST}:8088/
RewriteEngine on
RewriteCond   %{REQUEST_URI} !.*\.(gif|png|jpg)$
RewriteRule ^/(.*) http://%{HTTP_HOST}:8088/$1 [P]</pre>
</blockquote>
<p align="justify">Todas as requisições, exceto as imagens serão encaminhadas para o apache robusto. As respostas são recebidas pelo servidor front-end que as encaminha para o cliente. Todas as respostas aparentam vir de um único servidor.</p>
<h2>Conclusão</h2>
<p align="justify">Configurar o Apache para obter o máximo de performance pode ser traiçoeiro, não existem regras rápidas. Entenda as necessidades do servidor web e experimente com várias opções. Utiliza ferramentas como ab e httperf para medir a performance do servidor. Servidores leves como tux, thttpd também podem ser utilizados como servidores front-end. Se um servidor de banco de dados é utilizado, tenha certeza de que ele está otimizado para que ele não crie nenhum gargalo. No caso do MySQL, mtop pode ser utilizado para monitorar querys lentas. Performance de scripts PHP pode ser melhorada utilizando produtos de cache como o Turck MMCache. Ele elimina o overhead da compilação realizando cache dos scripts em seu estado compilado.</p>
<p>&nbsp;</p>
<h2>Fonte</h2>
<ul>
<li><a href="http://www.howtoforge.net/configuring_apache_for_maximum_performance" rel="nofollow">http://www.howtoforge.net/configuring_apache_for_maximum_performance</a></li>
<li>http://under-linux.org/wiki/Tutoriais/Apache/Apache-performance</li>
</ul>
<h2>Autor</h2>
<p align="justify">Escrito por: Vishnu Ram is an MTech. in Communication Systems from IIT Madras. He joined Bobcares in 2003 and has been working for Poornam since then.</p>
<div class="shr-publisher-624"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/17/configurando-apache-para-performance-maxima-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Port knocking para SSH rápido e fácil com iptables</title>
		<link>http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/</link>
		<comments>http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 17:46:28 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Acesso Remoto]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Iptables]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Port knocking]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=618</guid>
		<description><![CDATA[Port knocking funciona como um cadeado de segredo para ter acesso ao servidor, onde o usuário ou invasor terá que &#8220;bater&#8221; em um determinado número de portas com um limite de tempo também determinado para fazer a sequência para só assim liberar o ip que ele estiver usando também por um determinado tempo. O acesso [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F11%252F15%252Fport-knocking-para-ssh-rapido-e-facil-com-iptables%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Port%20knocking%20para%20SSH%20r%C3%A1pido%20e%20f%C3%A1cil%20com%20iptables%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><em>Port knocking</em> funciona como um cadeado de segredo para ter acesso ao servidor, onde o usuário ou invasor terá que &#8220;bater&#8221; em um determinado número de portas com um limite de tempo também determinado para fazer a sequência para só assim liberar o ip que ele estiver usando também por um determinado tempo. O acesso a porta que queremos aqui no caso é a 22 (ssh).  <span id="more-618"></span></p>
<p>Vamos construir um cenário onde você queira primeiro liberar o acesso direto a alguns IPs sem precisar passar pelo segredo das portas, depois liberaremos todos os IPs (ou alguma rede específica) somente se acertarem a sequência das portas e por último bloquearemos todo o resto.</p>
<p>A configuração a seguir pode ser adicionada a seu script de firewall.</p>
<p>Como este é o primeiro tutorial que escrevo, tentarei ser o mais claro possível (espero que me perdoem se não conseguir):</p>
<div>####### Libera ssh para um determinado ip sem precisar passar pelo segredo ##############<br />
####### xxx.xxx.xxx.xxx = IP que deseja liberar#######################</div>
<div>iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx &#8211;dport ssh -j ACCEPT<br />
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx &#8211;dport ssh -j ACCEPT<br />
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx &#8211;dport ssh -j ACCEPT</div>
<div>
<p>####### A rede que você quer que tenha acesso ao segredo (aqui no caso está para qualquer uma)</p>
<p>HOST_IP=&#8221;0.0.0.0/0.0.0.0&#8243;</p>
<p>####### Fases do Segredo ##################################<br />
/sbin/iptables -N INTO-FASE2<br />
/sbin/iptables -A INTO-FASE2 -m recent &#8211;name FASE1 &#8211;remove<br />
/sbin/iptables -A INTO-FASE2 -m recent &#8211;name FASE2 &#8211;set<br />
/sbin/iptables -A INTO-FASE2 -j LOG &#8211;log-prefix &#8220;INTO FASE2: &#8221;</p>
<p>/sbin/iptables -N INTO-FASE3<br />
/sbin/iptables -A INTO-FASE3 -m recent &#8211;name FASE2 &#8211;remove<br />
/sbin/iptables -A INTO-FASE3 -m recent &#8211;name FASE3 &#8211;set<br />
/sbin/iptables -A INTO-FASE3 -j LOG &#8211;log-prefix &#8220;INTO FASE3: &#8221;</p>
<p>/sbin/iptables -N INTO-FASE4<br />
/sbin/iptables -A INTO-FASE4 -m recent &#8211;name FASE3 &#8211;remove<br />
/sbin/iptables -A INTO-FASE4 -m recent &#8211;name FASE4 &#8211;set<br />
/sbin/iptables -A INTO-FASE4 -j LOG &#8211;log-prefix &#8220;INTO FASE4: &#8221;</p>
<p>/sbin/iptables -A INPUT -m recent &#8211;update &#8211;name FASE1</p>
<p>####### Aqui você determina o número das portas e o tempo que o ip ficará em cada uma das fazes aguardando a próxima porta ser digitada. Por ex.: Você terá 15 segundos para passar de cada fase, se o tempo se expirar na fase 3 terá que começar da fase1 novamente. ###########<br />
####### Dica: não é aconselhável utilizar portas em sequências crescentes ou decrescentes como neste exemplo (100, 200, 300, 400) e sim intercalando os valores uma mais alta e uma mais baixa para evitar que algum scan consiga adivinhar a sequência. #######</p>
<p>/sbin/iptables -A INPUT -p tcp &#8211;dport 100 -m recent &#8211;set &#8211;name FASE1<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 200 -m recent &#8211;rcheck &#8211;seconds 15 &#8211;name FASE1 -j INTO-FASE2<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 300 -m recent &#8211;rcheck &#8211;seconds 15 &#8211;name FASE2 -j INTO-FASE3<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 400 -m recent &#8211;rcheck &#8211;seconds 15 &#8211;name FASE3 -j INTO-FASE4</p>
<p>####### Aqui chegamos a FASE4, que é a última deste exemplo, onde será liberada a conexão com a porta 22 (ssh). O tempo aqui está setado para 3600 segundos (1 hora). Depois disso será fechada novamente para o ip em questão, lembrando que se ele ainda estiver logado não fará diferença, será fechada mesmo assim. Então aumente o tempo conforme desejado.####</p>
<p>/sbin/iptables -A INPUT -p tcp -s $HOST_IP &#8211;dport 22 -m recent &#8211;rcheck &#8211;seconds 3600 &#8211;name FASE4 -j ACCEPT</p>
<p>####### Por último fechamos todos acessos a porta 22 ########</p>
<p>/sbin/iptables -A INPUT -p tcp &#8211;dport 22 -j DROP</p>
</div>
<p>Testando:</p>
<p>A forma mais fácil que eu acho para testar é utilizando o telnet. Por ex.:</p>
<p><strong>$ telnet IP_SERVIDOR 100<br />
$ telnet IP_SERVIDOR 200<br />
$ telnet IP_SERVIDOR 300<br />
$ telnet IP_SERVIDOR 400</strong></p>
<p>e agora é só entrar com ssh normalmente.</p>
<p>Por: Leandro Lanini<br />
Fonte: http://www.vivaolinux.com.br</p>
<div class="shr-publisher-618"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iRedMail: Servidor de e-mails fácil e rápido</title>
		<link>http://blog.deserv.info/2011/11/01/iredmail-servidor-de-e-mails-facil-e-rapido/</link>
		<comments>http://blog.deserv.info/2011/11/01/iredmail-servidor-de-e-mails-facil-e-rapido/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 20:36:28 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[E-mails - Anti Virus]]></category>
		<category><![CDATA[Instalação e Compilação de SW]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[MTA]]></category>
		<category><![CDATA[pop]]></category>
		<category><![CDATA[servidor de email; iRedMail]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=611</guid>
		<description><![CDATA[Introdução O e-mail é a forma de comunicação mais utilizada hoje em dia. Se o servidor de e-mails de uma empresa parar, é como se o mundo acabasse para os usuários! O telefone não vai parar de tocar, e-mails importantes não serão entregues/recebidos podendo gerar grandes prejuízos financeiros para empresas. Imaginando um cenário desses, você [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F11%252F01%252Firedmail-servidor-de-e-mails-facil-e-rapido%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22iRedMail%3A%20Servidor%20de%20e-mails%20f%C3%A1cil%20e%20r%C3%A1pido%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img title="iredmaillogo" src="http://images.pedropereira.net/2009/05/iredmaillogo.png" alt="iredmaillogo" width="126" height="53" /></p>
<p><strong>Introdução</strong></p>
<p>O e-mail é a forma de comunicação mais utilizada hoje em dia. Se o servidor de e-mails de uma empresa parar, é como se o mundo acabasse para os usuários! O telefone não vai parar de tocar, e-mails importantes não serão entregues/recebidos podendo gerar grandes prejuízos financeiros para empresas.</p>
<p>Imaginando um cenário desses, você com certeza não escolheria qualquer solução para implantar na sua empresa, certo? Atualmente, um dos melhores, mais seguros e mais estáveis softwares MTA (Mail Transport Agent) disponíveis é o Postfix. <span id="more-611"></span></p>
<p>Embora ele seja simples para quem já possui experiência na administração de servidores Linux, ele pode ser um pouquinho complicado para quem está apenas começando na administração de sistemas.</p>
<p>Por isso, neste artigo vou mostrar uma solução para facilitar a configuração do Postfix: o iRedMail. Este é um software que automatiza todo o processo de instalação e configuração de um servidor de e-mails utilizando as distribuições CentOS e Red Hat. Ele permite que você escolha o backend de gerenciamento de usuários (MySQL ou OpenLDAP), qual o webmail que você quer utilizar, gerenciador MySQL ou OpenLDAP, entre várias outras opções.</p>
<p>Aqui, vou assumir que você já possui um servidor CentOS configurado e funcional com acesso à Internet.</p>
<p><strong>Quais os softwares que o iRedMail utiliza?</strong></p>
<p>O iRedMail faz o download de todos os softwares automaticamente. Porém, obviamente você precisa saber quais são estes softwares que ele utiliza e suas versões também.</p>
<p>Segue uma lista de alguns dos softwares utilizados por ele:</p>
<ul>
<li>Amavisd-new 2.6.2-2</li>
<li>Clamav 0.94.2-1</li>
<li>Dovecot 1.1.11</li>
<li>Postfix 2.5.6</li>
</ul>
<p>Claro que esta não é a lista completa. Para verificar todos os pacotes que foram baixados para a sua máquina entre no diretório pkgs/rpms dentro do diretório criado quando você descompacta o iRedMail.</p>
<p><strong>Download do iRedMail</strong></p>
<p>O site oficial do iRedMail é <a href="http://code.google.com/p/iredmail/">http://code.google.com/p/iredmail/</a><a href="http://code.google.com/p/iredmail/">.</a></p>
<p>Vá até a seção “Downloads”. Lá você irá encontrar todas as versões do iRedMail que foram publicadas. Até a data de publicação deste texto, a versão mais recente é a 0.4.0, que pode ser obtida no link: <a href="http://iredmail.googlecode.com/files/iRedMail-0.4.0.tar.bz2">http://iredmail.googlecode.com/files/iRedMail-0.4.0.tar.bz2</a>.</p>
<p><strong>Instalação</strong></p>
<p>O script de instalação do iRedMail cuida de todo o processo, inclusive do download de todos os RPM’s necessários para que a instalação seja feita sem problemas. Vamos à instalação.</p>
<p>Primeiro, descompacte o arquivo que você baixou do site oficial:</p>
<p><strong># tar xjvf iRedMail-0.4.0.tar.bz2</strong></p>
<p>Será criado um diretório chamado iRedMail-0.4.0. Entre nele:</p>
<p><strong># cd iRedMail-0.4.0</strong></p>
<p>O seu diretório se parecerá com este:</p>
<p><img title="listagemdirprin" src="http://images.pedropereira.net/2009/05/listagemdirprin.png" alt="listagemdirprin" width="720" height="448" /></p>
<p>Entre no diretório pkgs e execute o script que faz o download de todos os pacotes necessários:</p>
<p><strong># bash get_all.sh</strong></p>
<p>E vá tomar um café. Dependendo da velocidade da sua conexão esta etapa poderá demorar um pouco para ser concluída. Quando ela terminar, podemos começar a configuração do nosso servidor de e-mail.</p>
<p>Para isso, faça o seguinte. Suba um nível em relação ao diretório pkgs (o diretório raíz do iRedMail) e execute o script iRedMail.sh:</p>
<p><strong># cd .. ; bash iRedMail.sh</strong></p>
<p>Você verá a tela inicial da instalação do iRedMail:</p>
<p><img title="tela1" src="http://images.pedropereira.net/2009/05/tela1.png" alt="tela1" width="720" height="448" /></p>
<p>Esta tela é apenas informativa. Aperte enter para passarmos para a próxima tela.</p>
<p><img title="tela2" src="http://images.pedropereira.net/2009/05/tela2.png" alt="tela2" width="720" height="448" /></p>
<p>Esta tela permite que você escolha qual será o diretório home do usuário vmail. Como não serão criados usuários no sistema (todos os usuários serão virtuais), todos os e-mails serão entregues ao vmail e ele irá “distribuir” estas mensagens aos usuários certos.</p>
<p>Como este diretório irá conter todos os e-mails que chegam ao sistema, pode ser que ele cresça bastante com o tempo, portanto pense no futuro e reserve um espaço considerável para o home do usuário vmail.</p>
<p>Você pode deixar o padrão ou modificar para outro diretório que você queira. Depois selecione “OK”.</p>
<p><img title="tela3" src="http://images.pedropereira.net/2009/05/tela3.png" alt="tela3" width="720" height="448" /></p>
<p>Agora, devemos escolher qual vai ser o backend do nosso servidor de e-mail. Isto irá informar ao iRedMail como nós queremos que ele guarde as informações de contas de usuários, autenticação, etc.</p>
<p>Se você escolher MySQL, o webmail será o RoundCube (um webmail excelente) e a ferramenta de administração será o PostfixAdmin. Se você escolher o OpenLDAP ele irá utilizar o SquirrelMail como webmail (o RoundCube não suporta OpenLDAP) e a ferramenta de administração será o phpLDAPadmin.</p>
<p>O MySQL é o recomendado, aqui iremos utilizá-lo. Obviamente, os passos daqui para frente serão diferentes dependendo do que você escolher aqui. Em outro artigo tratarei a configuração do OpenLDAP como backend. Vamos para a próxima tela.</p>
<p><img title="tela4" src="http://images.pedropereira.net/2009/05/tela4.png" alt="tela4" width="720" height="448" /></p>
<p>Aqui devemos informar ao iRedMail qual a senha queremos utilizar para o usuário root do MySQL. Informe a senha com cuidado pois não haverá chance de confirmá-la mais tarde. Tenha certeza que digitou a senha corretamente.</p>
<p><img title="tela5" src="http://images.pedropereira.net/2009/05/tela5.png" alt="tela5" width="720" height="448" /></p>
<p>Nesta tela devemos informar a senha do usuário administrador do Vmail. Aqui acontece a mesma coisa que aconteceu com a senha do root do MySQL: você não vai poder confirmar a senha que escreveu. Portanto, tenha certeza que digitou a senha corretamente.</p>
<p><img title="tela6" src="http://images.pedropereira.net/2009/05/tela6.png" alt="tela6" width="720" height="448" /></p>
<p>Aqui acabam as diferenças de configuração entre MySQL e OpenLDAP.</p>
<p>Você precisa informar o domínio que você quer utilizar. Lembre-se, este é um domínio virtual. Você poderá adicionar outros domínios sem problema algum quando precisar.</p>
<p><img title="tela7" src="http://images.pedropereira.net/2009/05/tela7.png" alt="tela7" width="720" height="448" /></p>
<p>Nesta tela você deve definir qual será o nome de usuário do administrador do domínio. O padrão em todos os servidores de e-mail é definir “postmaster” para este usuário. Seguiremos o padrão aqui.</p>
<p><img title="tela8" src="http://images.pedropereira.net/2009/05/tela8.png" alt="tela8" width="720" height="448" /></p>
<p>Aqui devemos definir qual será a senha da conta “postmaster”, o administrador do domínio.</p>
<p><img title="tela9" src="http://images.pedropereira.net/2009/05/tela93.png" alt="tela9" width="720" height="448" /></p>
<p>Nesta tela você pode criar o primeiro usuário “normal” do seu domínio. Ele não terá direito especial algum, é apenas um usuário.</p>
<p><img title="tela10" src="http://images.pedropereira.net/2009/05/tela10.png" alt="tela10" width="720" height="448" /></p>
<p>Nesta tela você pode definir a senha para o usuário. Ele irá utilizar esta senha quando for ler o e-mail ou acessar o webmail.</p>
<p><img title="tela11" src="http://images.pedropereira.net/2009/05/tela11.png" alt="tela11" width="720" height="448" /></p>
<p>Aqui você deve escolher se quer habilitar ou não o suporte a SPF e DKIM. Segue uma breve descrição sobre o que são ambos:</p>
<ul>
<li><strong>DKIM: </strong>DomainKeys Identified Mail. Basicamente, o DKIM oferece um método para validar um nome de domínio associado a um e-mail através de autenticação criptográfica.</li>
<li><strong>SPF:</strong> O objetivo do SPF é impedir que worms, vírus e spammers utilizem endereços arbitrários (ou inexistentes) no campo “sender” do envelope do e-mail. Os administradores do domínio devem publicar registros SPF no DNS e os administradores do servidor de e-mail devem utilizar MTAs (como o Postfix) que possuam suporte ao SPF para que ele compreenda os registros SPF. Estes registros informam quais servidores possuem autoridade para enviar e-mails. Qualquer outro servidor enviando e-mails destes domínios não possui credibilidade e os e-mails são descartados.</li>
</ul>
<p>Você pode habilitar ambos ou nenhum, fica à sua escolha.</p>
<p><img title="tela12" src="http://images.pedropereira.net/2009/05/tela12.png" alt="tela12" width="720" height="448" /></p>
<p>O pysieved é um serviço que gerencia scripts Sieve que os usuários utilizam.</p>
<p>&nbsp;</p>
<p>Sieve é uma linguagem especializada no tratamento e filtragem de e-mails. Não é uma linguagem de programação completa.</p>
<p>&nbsp;</p>
<p>Ela permite que se desenvolva pequenos scripts (que podem ser implementados no cliente ou no servidor de e-mails) que filtram e-mails, como por exemplo recusando e-mails maiores de 1MB e enviando uma mensagem de aviso de volta à origem da mensagem (ao remetente).</p>
<p>&nbsp;</p>
<p>O pysieved permite que os usuários executem scripts Sieve no servidor sem precisar de uma conta nele.</p>
<p><img title="tela13" src="http://images.pedropereira.net/2009/05/tela13.png" alt="tela13" width="720" height="448" /></p>
<p>Nesta tela você pode escolher se vai prover suporte a POP3/IMAP utilizando SSL.</p>
<p>&nbsp;</p>
<p>É recomendado que se utilize o SSL pois ele criptografa todo o conteúdo das mensagens impedindo que sniffers e ataques como “man in the middle” consigam ler todo o conteúdo transferido por estas mensagens.</p>
<p><img title="tela14" src="http://images.pedropereira.net/2009/05/tela14.png" alt="tela14" width="720" height="448" /></p>
<p>Nesta tela você pode escolher o webmail que deseja utilizar no seu servidor. Escolha o seu favorito e selecione “OK”.</p>
<p><img title="tela15" src="http://images.pedropereira.net/2009/05/tela15.png" alt="tela15" width="720" height="448" /></p>
<p>Neste passo da instalação você poderá definir qual será a língua principal utilizada no seu webmail. Basta utilizar a seta para baixo para rolar por todas as opções e utilizar a barra de espaço para selecionar.</p>
<p><img title="tela16" src="http://images.pedropereira.net/2009/05/tela16.png" alt="tela16" width="720" height="448" /></p>
<p>Nesta tela você pode escolher se quer instalar o phpMyAdmin (para administrar o banco de dados MySQL via web), o PostfixAdmin (para gerenciar domínios e contas de usuários via web) e o AwStats (para verificar estatísticas sobre o servidor de e-mails).</p>
<p><img title="tela17" src="http://images.pedropereira.net/2009/05/tela17.png" alt="tela17" width="720" height="448" /></p>
<p>Aqui você escolhe o usuário administrador do PostfixAdmin (não do domínio). O padrão é usar o “postmaster”, mas você pode usar qualquer usuário que deseje.</p>
<p><img title="tela18" src="http://images.pedropereira.net/2009/05/tela18.png" alt="tela18" width="720" height="448" /></p>
<p>Aqui você irá criar um “alias”, um nome alternativo, para o usuário root. Isso é necessário pois é o usuário root quem irá receber as mensagens de falhas, problemas, etc do sistema.</p>
<p>Isso conclui toda a configuração do seu servidor de e-mail.</p>
<p>Depois, responda “Y” e pressione a tecla “enter” para dar continuidade ao processo de instalação do sistema.</p>
<p>Agora o iRedMail irá instalar e configurar (de acordo com os parâmetros passados a ele nos passos anteriores) todos os softwares envolvidos com o serviço de entrega de e-mails. Além disso, ele também irá atualizar todos os pacotes que já estão na máquina. O processo irá levar bastante tempo, seja paciente e aguarde até o final.</p>
<p>Quando o iRedMail perguntar se você deseja remover o sendmail, diga que sim.</p>
<p>Depois, o programa irá perguntar se você quer utilizar as regras de IPTables configuradas no iRedMail ou não. Se você quiser fazer as suas próprias regras, responda não. Caso deseje utilizar estas regras, responda sim. Se utilizar as regras, reinicie o IPTables quando for questionado.</p>
<p>Se você já estiver utilizando o MySQL para outras finalidades, responda não quando for questionado se quer sobrescrever o arquivo de configuração do MySQL utilizando um modelo fornecido pelo iRedMail. Caso não esteja utilizando o MySQL para outras finalidades, pode resopnder afirmativamente sem problemas.</p>
<p>Logo após, ele irá perguntar se você quer atualizar o Clamav. É recomendado que já faça isso para que você não corra o risco de esquecer de fazê-lo mais tarde. Para atualizar, responda “Y”.</p>
<p>Por último, o software irá perguntar se você quer inicializar o Postfix. Responda que sim. Ele irá inicializar o Postfix e todos os serviços que ele necessitar para funcionar corretamente.</p>
<p>Pronto! Seu servidor de e-mail está ativo! Basta agora você adicionar outros usuários ao banco de dados para que os outros usuários também possam utilizar o seu servidor (você pode utilizar o PostfixAdmin para isso).</p>
<p><strong>Acessando webmail e o PostfixAdmin</strong></p>
<p>Para acessar todos os serviços web configurados no seu servidor de e-mails, recomendo que configure um registro no seu DNS para facilitar as coisas.</p>
<p>Para acessar o webmail utilize a URL <a href="http://servidor/mail">http://servidor/mail</a> ou <a href="http://servidor/webmail">http://servidor/webmail</a>. Isto irá acessar o webmail que você escolheu durante a configuração do iRedMail.</p>
<p>O Postfixadmin ficará ativo no endereço <a href="http://servidor/postfixadmin">http://servidor/postfixadmin</a>.</p>
<p>Estas e muitas outras informações como localização de logs, arquivos de configuração utilizados, etc. estão localizados no arquivo dentro do diretório criado quando você descompacta o pacote do iRedMail, chamado iRedMail.tips. Nele você irá encontrar todas as informações que precisar.</p>
<p><strong>Conclusão</strong></p>
<p>O iRedMail é uma excelente ferramenta que simplifica e muito o processo de configurar um servidor de e-mails para a sua empresa. Porém, não confie 100% nele.</p>
<p>Faça todas as análises de segurança necessárias para garantir que seu servidor não será comprometido. Atualize sempre os softwares utilizados, tente configurar CHRoot, atualize sempre o anti-vírus, utilize senhas fortes, etc. Sempre tente garantir que seu servidor está o mais seguro possível.</p>
<p>&nbsp;</p>
<p>Fonte: http://www.pedropereira.net</p>
<div class="shr-publisher-611"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/01/iredmail-servidor-de-e-mails-facil-e-rapido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell Script: tratamento de argumentos e opções</title>
		<link>http://blog.deserv.info/2011/11/01/shell-script-tratamento-de-argumentos-e-opcoes/</link>
		<comments>http://blog.deserv.info/2011/11/01/shell-script-tratamento-de-argumentos-e-opcoes/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 20:11:40 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[argumentos]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[shell script]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=607</guid>
		<description><![CDATA[Escrito por Hugo Cisneiros (Eitch) Na grande maioria das vezes, a linguagem shell-script é usada para criar uma sequência de comandos que automatizam uma tarefa. Nisso, ela é extremamente eficiente e rápida. Combinar comandos é uma grande vantagem que o jeito UNIX de ser nos trouxe: várias ferramentas que fazem tarefas básicas, especializadas, e que [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F11%252F01%252Fshell-script-tratamento-de-argumentos-e-opcoes%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Shell%20Script%3A%20tratamento%20de%20argumentos%20e%20op%C3%A7%C3%B5es%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><table>
<tbody>
<tr>
<td width="100%"></td>
<td align="right" width="100%"></td>
<td align="right" width="100%"></td>
<td align="right" width="100%"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td valign="top">Escrito por Hugo Cisneiros (Eitch)</td>
</tr>
<tr>
<td valign="top"></td>
</tr>
<tr>
<td valign="top">Na grande maioria das vezes, a linguagem shell-script é usada para criar uma sequência de comandos que automatizam uma tarefa. Nisso, ela é extremamente eficiente e rápida. Combinar comandos é uma grande vantagem que o jeito UNIX de ser nos trouxe: várias ferramentas que fazem tarefas básicas, especializadas, e que quando se juntam realizam grandes <em>feitos</em>trabalhando juntas. Mas isso nunca impediu que se criasse também programas completos em shell-script.Uma característica para deixar um shell-script mais robusto e menos “<em>sequencial/batch-mode</em>” é o tratamento de argumentos. No meu clássico tutorial <a href="http://www.devin.com.br/shell_script/"><span style="text-decoration: underline;"><span style="color: #0066cc;">Programando em Shell-Script</span></span></a>, o tópico <em>Variáveis Especiais</em> nos traz os primeiros itens que devemos aprender para o tratamento de argumentos. Existem variáveis especiais que tratam os argumentos passados para um programa ou uma função.  <span id="more-607"></span>Estes são:</p>
<ul>
<li><strong>$0</strong> – Retorna o nome do script que foi executado</li>
<li><strong>$N</strong> – Onde N é um número, corresponde ao argumento passado (1 = primeiro argumento, 2 = segundo argumento, 3 = terceiro argumento, etc)</li>
<li><strong>$*</strong> – Retorna todos os argumentos de uma vez.</li>
<li><strong>$#</strong> – Retorna a quantidade de argumentos passado para o script. (<em>argc</em>)</li>
</ul>
<p>Vejamos agora um shell-script exempo que faz uso de todos esses argumentos:</p>
<div id="highlighter_425191">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>#!/bin/bash</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>if</code> <code>[ $</code><code># -lt 1 ]; then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>   </code><code>echo</code> <code>"Faltou utilizar pelo menos um argumento!"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code>   </code><code>exit</code> <code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>echo</code> <code>"Numero de argumentos: $#"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>COUNT=0</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>for</code> <code>ARG </code><code>in</code> <code>$*; </code><code>do</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td><code>   </code><code>COUNT=`</code><code>expr</code> <code>$COUNT + 1`</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code>   </code><code>echo</code> <code>"Argumento $COUNT: $ARG"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>14</code></td>
<td><code>done</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>As linhas <em>3 a 6</em> verificam se a quantidade de argumentos (<em>$#</em>) é menor (<em>-lt – less than</em>) que 1. Ou seja, se o usuário não chamou o programa com nenhum argumento, ele imprime um erro e sai do programa com status 1.</p>
<p>A linha <em>8</em> mostra quantos argumentos foram utilizados, usando novamente o <em>$#</em>.</p>
<p>O resto das linhas, <em>10 a 14</em>, usam o <em>$*</em> com um laço <em>for</em> e um contador para mostrar quais foram os argumentos.</p>
<p>Executando agora este script sem argumentos:</p>
<pre>$ ./tmp.sh
Faltou utilizar pelo menos um argumento!</pre>
<p>Agora executando com dois argumentos:</p>
<pre>$ ./tmp.sh naosei testando
Numero de argumentos: 2
Argumento 1: naosei
Argumento 2: testando</pre>
<p>E agora com 4 argumentos:</p>
<pre>$ ./tmp.sh a b c d
Numero de argumentos: 4
Argumento 1: a
Argumento 2: b
Argumento 3: c
Argumento 4: d</pre>
<p>Bem simples né?</p>
<h2>Argumentos como opções e seus valores</h2>
<p>Algo comum que vemos nos programas são opções. Opções não deixam de ser argumentos para um programa, mas eles tem um significado especial. Do tipo: Se a opção <em>-d</em> existir, ativar durante o programa o modo de depuração. Se houver um <em>-h</em>, então mostre uma ajuda e não faça mais nada. Se houver um <em>-v</em> mostre a versão, e por aí vai.</p>
<p>Exemplo:</p>
<div id="highlighter_661011">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>#!/bin/bash</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>case</code> <code>$1 </code><code>in</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>   </code><code>"-h"</code><code>) </code><code>echo</code> <code>"Isto seria uma ajuda... Mas fiquei com preguiça de escrevela."</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>   </code><code>"-v"</code><code>) </code><code>echo</code> <code>"Versao 666."</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>   </code><code>*) </code><code>echo</code> <code>"Opcao invalida!"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code>      </code><code>exit</code> <code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>      </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>esac</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Exemplos do uso do script:</p>
<pre>$ ./tmp.sh -h
Isto seria uma ajuda... Mas fiquei com preguiça de escrevela.

$ ./tmp.sh -v
Versao 666.

$ ./tmp.sh -O
Opcao invalida!

$ ./tmp.sh
Opcao invalida!</pre>
<p>Com isso a gente resolve um problema e cria mais outros dois…</p>
<ul>
<li>E se o usuário colocar as duas opções? Só uma funcionaria.</li>
<li>E se uma das opções precisasse de um valor? Estilo “<em>-f arquivo.log</em>” gravaria um arquivo de log com as operações.</li>
</ul>
<p>Poderíamos escrever vários algoritmos que verificassem cada um de todos os argumentos, testasse se fosse um ou outro, utilizasse as opções… Mas felizmente não precisamos fazer nada disso! O bash conta com uma função <em>interna</em> que trata os argumentos: o famoso <strong>getopts</strong>.</p>
<h2>Utilizando o getopts para tratar tratar argumentos e opções</h2>
<p>Seguindo a mesma linha de raciocínio, vamos logo para um exemplo de programa. Supondo que queiramos um shell-script que faça isso:</p>
<ul>
<li>Caso a opção <em>-h</em> seja usada, mostra a ajuda e sai do programa.</li>
<li>Caso a opção <em>-v</em> seja usada, mostra a versão e sai do programa.</li>
<li>Caso a opção <em>-o</em> &lt;arquivo&gt; seja usada, grava um arquivo de log com as operações efetuadas e resultados.</li>
<li>Caso a opção <em>-u</em> seja usada, mostra o resultado do comando “uname -a”</li>
<li>Caso a opção <em>-m</em> seja usada, mostra o resultado do comando “free -m”</li>
<li>Caso a opção <em>-s</em> seja usada, mostra o resultado do comando “swap -s”</li>
</ul>
<p>Note que apenas as opções <em>-h</em> e <em>-v</em> saem do programa após a execução. Agora vamos ao código:</p>
<div id="highlighter_591304">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>#!/bin/bash</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>function</code> <code>PrintUsage() {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>   </code><code>echo</code> <code>"Uso: `basename $0` &lt;-umsf&gt; [-ohv]"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code>   </code><code>exit</code> <code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>while</code> <code>getopts</code> <code>"hvo:umsf"</code> <code>OPTION</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code>do</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>   </code><code>case</code> <code>$OPTION </code><code>in</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>      </code><code>h) PrintUsage</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code>      </code><code>v</code><code>) </code><code>echo</code> <code>"`basename $0` versao 666."</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>14</code></td>
<td><code>         </code><code>exit</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>15</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>16</code></td>
<td><code>      </code><code>o) ARQUIVO_LOG=$OPTARG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>17</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>18</code></td>
<td><code>      </code><code>u) DO_UNAME=1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>19</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>20</code></td>
<td><code>      </code><code>m) DO_FREE=1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>21</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>22</code></td>
<td><code>      </code><code>s) DO_SWAPON=1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>23</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>24</code></td>
<td><code>      </code><code>?) PrintUsage</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>25</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>26</code></td>
<td><code>   </code><code>esac</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>27</code></td>
<td><code>done</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>28</code></td>
<td><code>shift</code> <code>$((OPTIND-1))</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>29</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>30</code></td>
<td><code>if</code> <code>[ -z </code><code>"$DO_UNAME"</code> <code>] &amp;&amp; [ -z </code><code>"$DO_FREE"</code> <code>] &amp;&amp; [ -z </code><code>"$DO_SWAPON"</code> <code>] &amp;&amp; [ -z </code><code>"$DO_FDISK"</code> <code>]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>31</code></td>
<td><code>   </code><code>PrintUsage</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>32</code></td>
<td><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>33</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>34</code></td>
<td><code>if</code> <code>[ </code><code>"$ARQUIVO_LOG"</code> <code>]; </code><code>then</code>   <code>echo</code> <code>"Execucao iniciada em `date`."</code> <code>&gt;&gt; $ARQUIVO_LOG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>35</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>36</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_UNAME"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>37</code></td>
<td><code>      </code><code>uname</code> <code>-a &gt;&gt; $ARQUIVO_LOG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>38</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>39</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>40</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_FREE"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>41</code></td>
<td><code>      </code><code>free</code> <code>-m &gt;&gt; $ARQUIVO_LOG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>42</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>43</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>44</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_SWAPON"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>45</code></td>
<td><code>      </code><code>swapon -s &gt;&gt; $ARQUIVO_LOG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>46</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>47</code></td>
<td><code>else</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>48</code></td>
<td><code>   </code><code>echo</code> <code>"Execucao iniciada em `date`."</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>49</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_UNAME"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>50</code></td>
<td><code>      </code><code>uname</code> <code>-a</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>51</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>52</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>53</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_FREE"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>54</code></td>
<td><code>      </code><code>free</code> <code>-m</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>55</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>56</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>57</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_SWAPON"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>58</code></td>
<td><code>      </code><code>swapon -s</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>59</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>60</code></td>
<td><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>O interessante para nós são as linhas <em>8</em> a <em>28</em>. O laço <em>while getopts</em> começa a tratar todos os argumentos. A cada iteração do laço, ele coloca a letra da opção na variável <em><strong>$OPTION</strong></em>.</p>
<p>Note que para cada opção que precisamos, colocamos uma letra no primeiro argumento do getopts:</p>
<pre>while getopts "hvo:umsf" OPTION</pre>
<p>Note também que depois da letra o temos um dois pontos (<em>:</em>). Esse dois pontos significa que logo após a opção -o, o usuário precisa fornecer um valor. Este valor é automaticamente armazenado na variável <em><strong>$OPTARG</strong></em>.</p>
<p>Dessa maneira, podemos executar esse programa de diversas formas:</p>
<pre>./tmp.sh -o arquivo.log -u
(executa o "uname -a" e grava no arquivo arquivo.log)

./tmp.sh -um
(executa os comandos "uname -a" e "free -m")

./tmp.sh -m -s -u
(executa os comandos "free -m", "swapon -s" e "uname -a")</pre>
<p>Ou seja, não importa a ordem, o getopts vai reconhecer e executar as ações de acordo com a opção especificada.</p>
<p>E se você colocar uma opção que não está contemplatada… O “?” do case irá ser executado, por exemplo:</p>
<pre>$ ./tmp.sh -a
./tmp.sh: illegal option -- a
Uso: tmp.sh &lt;-umsf&gt; [-ohv]</pre>
<p>E dessa forma fica bem fácil de entender e usar o getopts <img src='http://blog.deserv.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Depois que o laço é todo feito e executado em todos os argumentos (no meu caso, preferi apenas configurar variáveis para cada opção e tratá-las depois), ele executa o comando que está na linha 28:</p>
<pre>shift $((OPTIND-1))</pre>
<p>Este comando faz com que os <strong>argumentos de opções</strong> sejam “<em>comidos</em>“, até que não sobre nenhuma opção. Em outras palavras, os argumentos representados pelas variáveis <strong><em>$N</em></strong> só serão aqueles que não pertençam a nenhuma opção. Exemplo:</p>
<pre>./tmp.sh -u -o arquivo.log -m argumento1 argumento2</pre>
<p>Nesse caso, o $1 seria o argumento1 e o $2 seria o argumento2, quando na verdade, sem o shift, eles seriam respectivamente o $5 e $6.</p>
<p>Como nem tudo é perfeito, a função getopts do bash <strong>não aceita opções longas</strong> (<em>–nome-da-opcao</em>), ou seja, voce só pode utilizar uma letra como opção. Represente bem suas opções com as letras! <img src='http://blog.deserv.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Argumentos dentro de funções</h2>
<p>Se dentro de um shell-script temos uma função, essa função é enxergada pela shell como se fosse um comando. Nesse sentido, dentro de uma função as variáveis $N definidas pelo programa <strong>não funcionarão</strong>. Exemplo:</p>
<div id="highlighter_432454">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>#!/bin/bash</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>function</code> <code>Dummy() {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>   </code><code>echo</code> <code>"Numero de argumentos: $#"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>   </code><code>COUNT=0</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td><code>   </code><code>for</code> <code>ARG </code><code>in</code> <code>$*; </code><code>do</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>      </code><code>COUNT=`</code><code>expr</code> <code>$COUNT + 1`</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code>      </code><code>echo</code> <code>"Argumento $COUNT: $ARG"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>   </code><code>done</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code>Dummy</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Não importa o que você executar com o script acima, a saída será sempre a mesma: 0 números de argumentos, como mostrado a seguir.</p>
<pre>$ ./tmp.sh
Numero de argumentos: 0

$ ./tmp.sh naosei temporario
Numero de argumentos: 0

$ ./tmp.sh a b c d e f g
Numero de argumentos: 0</pre>
<p>Para a função <strong><em>Dummy</em></strong>, as variáveis especiais dos argumentos <strong>funcionam apenas para a função</strong> e não para o programa inteiro. É como se as variáveis fossem <em>locais</em>, e não <em>globais</em>. Vamos então substituir a linha da chamada da função <em>Dummy (linha 13)</em> por:</p>
<pre>Dummy a b c d</pre>
<p>E tentar executar novamente:</p>
<pre>$ ./tmp.sh
Numero de argumentos: 4
Argumento 1: a
Argumento 2: b
Argumento 3: c
Argumento 4: d</pre>
<p>Sabendo disso, não se percam na hora de usar os argumentos dentro das funções e lembrem-se que isto pode ser útil na hora de implementar diversas funções dentro de um script. Um bom exemplo disso é implementar a função PrintUsage que usamos anteriormente para, além de mostrar uma mensagem de uso, mostrar também uma mensagem de erro personalizada:</p>
<div id="highlighter_265612">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>1</code></td>
<td><code>function</code> <code>PrintUsage() {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>2</code></td>
<td><code>   </code><code>[ </code><code>"$1"</code> <code>] &amp;&amp; </code><code>echo</code> <code>-</code><code>ne</code> <code>"Erro: $1\n"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>3</code></td>
<td><code>   </code><code>echo</code> <code>"Uso: $(basename $0)  &lt;-umsf&gt; [-ohv]"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>4</code></td>
<td><code>   </code><code>exit</code> <code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>5</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Agora é so chamar a função como…</p>
<pre>PrintUsage "Faltando parâmetros."
PrintUsage "Opção inválida."
PrintUsage "No donut for you."</pre>
<p>Use a criatividade de um programador (afinal, programação é arte) e comece a aprimorar suas ferramentas bash! <img src='http://blog.deserv.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>Fonte: www.prefirolinux.com.br</td>
</tr>
</tbody>
</table>
<div class="shr-publisher-607"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/01/shell-script-tratamento-de-argumentos-e-opcoes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ataques DDoS: Prevenção e Mitigação</title>
		<link>http://blog.deserv.info/2011/09/06/ataques-ddos-prevencao-e-mitigacao/</link>
		<comments>http://blog.deserv.info/2011/09/06/ataques-ddos-prevencao-e-mitigacao/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 20:29:15 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Softwares Adicionais]]></category>
		<category><![CDATA[Ataques]]></category>
		<category><![CDATA[Ataques DDoS]]></category>
		<category><![CDATA[DDos]]></category>
		<category><![CDATA[DoS]]></category>
		<category><![CDATA[Mitigação]]></category>
		<category><![CDATA[Prevenção]]></category>
		<category><![CDATA[Proteção]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=581</guid>
		<description><![CDATA[O conceito de Distributed Denial of Service (DDoS) entrou na consciência pública após principais websites enorme como Change.org , WordPress , e vários governos e notíciassites de diferentes países foram recentemente vítimas de uma série de ataques. Apelidado de instrumento moderno de cyber-guerra, uma maneira rápida e simples para descrever DDoS é que, sob a [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F09%252F06%252Fataques-ddos-prevencao-e-mitigacao%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FoKrIUB%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ataques%20DDoS%3A%20Preven%C3%A7%C3%A3o%20e%20Mitiga%C3%A7%C3%A3o%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>O conceito de Distributed Denial of Service (DDoS) entrou na consciência pública após principais websites enorme como Change.org , WordPress , e vários governos e notíciassites de diferentes países foram recentemente vítimas de uma série de ataques.<span id="more-581"></span></p>
<p>Apelidado de instrumento moderno de cyber-guerra, uma maneira rápida e simples para descrever DDoS é que, sob a tática, códigos maliciosos infectam computadores para desencadear ataques em massa contra sites segmentados, fazendo-a ser inacessíveis ao tráfego legítimo. Ataques DDoS, apesar de sofisticados, são difíceis de defender e nesta parte, você vai descobrir o porquê.</p>
<p>Provavelmente, o maior equívoco sobre os ataques DDoS é que quando você tem um único software de proteção instalado e estão sendo executados em uma plataforma de Internet bem conhecidos ou hospedar, você já está seguro &#8211; recentes ataques a grandes sites que têm refutado. Temos muita sorte de ter caras da <a href="http://translate.googleusercontent.com/translate_c?hl=pt-BR&amp;langpair=en%7Cpt&amp;rurl=translate.google.com.br&amp;twu=1&amp;u=http://www.radware.com/&amp;usg=ALkJrhjIW-x0I63SYm9zq_IF7ipp1dEv6Q" target="_blank">Radware</a> , um sistema integrado de entrega de aplicativos empresa de soluções, especializada em DDoS prevenção e mitigação, para nos levar para um olhar mais atento sobre os ataques DDoS.</p>
<h3>Como os principais sites, incluindo WordPress, foram violados com sucesso com os ataques DDoS</h3>
<p>Radware nos disse que as metas ainda muito maiores têm sido privados de conectividade com a Internet básica no passado, incluindo infra-estruturas de Internet de países inteiros &#8211; cujos cidadãos não foram capazes de usar a Internet durante os ataques DDoS em curso.</p>
<p>Muitos destes ataques teve sucesso porque muitas empresas e redes ainda estão mal equipados, quando se trata de enfrentar os ataques DoS &#8211; enquanto os gerentes de segurança estão muito bem versados ​​na escolha das tecnologias mais adequado para combater as ameaças, como invasões, worms e explorações aplicação web &#8211; Há um equívoco comum entre a comunidade de segurança que estas mesmas tecnologias podem também ser invocado para proteção DoS.</p>
<p>Um exemplo seria o <a href="http://en.wikipedia.org/wiki/Intrusion_prevention_system" target="_blank">Intrusion Prevention System</a> , que na maior parte se concentra em tecnologia baseada em assinaturas. A solução IPS contém regras pré-definidas ou assinaturas para a identificação de tráfego malicioso conhecido. Ela geralmente usa hardware especializado para a detecção de tráfego, tais com taxas de alto rendimento, bem como a análise do complexo da camada de protocolos e 7 a normalização do tráfego para evitar técnicas de evasão diferentes. Além disso, tradicionalmente fornece básica &#8220;Anti-DoS&#8221; características tais como taxa de limites.</p>
<p>Radware explica:</p>
<p>Proteger contra ataques DoS, distribuídos ou não, normalmente não exigem a funcionalidade acima (por exemplo, detecção baseada em assinaturas normalização do tráfego) &#8211; cada pedido, enviado como parte de um ataque DoS, pode ver completamente legítimo em si renderização assinatura de detecção de inútil e taxa-limite de características tipicamente limitar o tráfego legítimo da mesma forma que o tráfego ilegítimo &#8211; trazendo a condição de DoS à IPS ao invés da entidade sob ataque como o IPS inicia bloqueando o tráfego legítimo.</p>
<p>Soluções mais tradicionais IPS são, portanto, incapaz de proteger contra os ataques DDoS.</p>
<h3>O caminho, manual ineficaz</h3>
<p>Uma vez afetado, enquanto despreparados, embora exija conhecimentos técnicos, pode-se tentar manualmente analisar o tráfego, distinguir as características de ataque da norma &#8211; então tentar bloquear o ataque, usando as características de ataque com base em métodos, dependendo do tipo de ataque. Radware explica:</p>
<p>Se o dilúvio é stateful (exigindo a realização de um handshake TCP completa, garantindo os endereços IP de origem não são falsificados), por exemplo uma inundação HTTP &#8211; e é fácil de pegar que o atacante é pelo cruzamento de transação HTTP layer-7 estatísticas por endereço IP, os endereços de IP pode ser seguramente na lista negra no ACL router.</p>
<p>A questão é que fazer o acima manualmente pode ser muito demorado e muitas vezes não vai produzir nenhum resultado se o ataque é muito intenso para hardware commodity de manusear.</p>
<h3>O melhor esforço para prevenir ataques DDoS</h3>
<p>Uma solução Anti-DoS deve ser composto de tecnologia Anti-DDoS e Anti-DDoS serviços de resposta de emergência a fim de ser eficaz, e chegar a 100% de prevenção DDoS:</p>
<p>I. Anti-DDoS tecnologia</p>
<ul>
<li>Desempenho de mitigação &#8211; DDoS alta taxa deve ser mitigado por hardware especializado para suportar a carga de ataque, permitindo o tráfego legítimo para passar &#8211; por exemplo, Anti-DDoS soluções usando ASIC baseada em motores de Mitigação de DDoS</li>
<li>Reduzindo o tempo de reação &#8211; Análise Comportamental de Rede Tecnologia (NBA) deve ser utilizado para automaticamente e com precisão distinguir o tráfego ataque de tráfego legítimo &#8211; em todas as camadas, incluindo camada 7 (por exemplo, HTTP)</li>
<li>Bloqueio de múltiplos vetores de ataque &#8211; usando NBA, IPS e DoS tecnologias dentro de uma solução anti-DDoS único garante nenhum ataque é negligenciado durante uma campanha de ataque multi-vector</li>
</ul>
<p>II. Anti-DDoS serviços</p>
<ul>
<li>Resposta de emergência &#8211; usando a tecnologia anti-DDoS avançadas deve ser complementado por engenheiros de segurança comprovada, experiente e conhecedor que são bem versados ​​na mitigação DDoS ataque e o funcionamento da solução escolhida Anti-DDoS. A 24 × 7 centralizado serviço desse tipo (por exemplo, fornecido por um vendedor de Anti-DDoS) pode garantir o fator humano necessário para mitigar os ataques DDoS forma mais eficiente possível</li>
</ul>
<h3>Você deve se preocupar?</h3>
<p>Quando afetados, o impacto direto é simplesmente um &#8220;Denial of Service&#8221; &#8211; o serviço sob o ataque irá parar de responder &#8211; às vezes, toda a rede do serviço sob o ataque pode parar de responder, se o ataque é forte o suficiente para afetar equipamentos de rede no perímetro do alvo (por exemplo, firewalls).</p>
<p>O elemento chave compartilhada por todos os alvos de ataques DDoS tem sido a incapacidade de lidar com uma <a href="http://translate.googleusercontent.com/translate_c?hl=pt-BR&amp;langpair=en%7Cpt&amp;rurl=translate.google.com.br&amp;twu=1&amp;u=http://thenextweb.com/media/2010/12/19/how-ddos-attacks-became-the-frontline-tool-of-cyber-war/&amp;usg=ALkJrhgleE00vSdBOOZ8ouM0Txrdd9YFNA">década de idade</a> ameaça. No entanto, isso não tem a ver com a falta de preparação, mas mais de vítimas de queda de um dedicado, ataques coordenados por hacktivistas, como podemos chamá-los.</p>
<p>Embora não seja um impacto direto de DoS &#8211; ataques podem ser lançados não só para derrubar um serviço, mas também para servir como uma distração, enquanto se infiltrar em outros servidores na organização e de devastar &#8211; comprometer informações confidenciais, o plantio de código malicioso e muito mais.</p>
<p>A menos que você está um blog ou site grandes que são especificamente orientadas por hackers, você não tem muito que se preocupar. No entanto, se você for, seria melhor ter uma equipe dedicada ao monitoramento e mitigação de tais ataques, ou apenas pegar um especialista de terceiros no fornecimento de soluções para fazê-lo.</p>
<p>Fonte: <strong><a href="http://thenextweb.com/" target="_blank">http://thenextweb.com/</a></strong></p>
<div class="shr-publisher-581"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/09/06/ataques-ddos-prevencao-e-mitigacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vulnerabilidades no PhpMyAdmin</title>
		<link>http://blog.deserv.info/2011/09/02/vulnerabilidades-no-phpmyadmin/</link>
		<comments>http://blog.deserv.info/2011/09/02/vulnerabilidades-no-phpmyadmin/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 18:46:34 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[gerenciador de banco de dados mysql]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[vulnerabilidade]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=578</guid>
		<description><![CDATA[Várias vulnerabilidades foram reportadas no phpMyAdmin, de acordo com a empresa de segurança Secunia. Elas podem ser exploradas para conduzir ataques XSS e potencialmente comprometer um sistema vulnerável ou revelar dados sensíveis e privados. 1) Certas entradas passadas para o table name no script de table print view não são adequadamente tratadas antes de serem [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F09%252F02%252Fvulnerabilidades-no-phpmyadmin%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Vulnerabilidades%20no%20PhpMyAdmin%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Várias vulnerabilidades foram reportadas no phpMyAdmin, de acordo com a empresa de segurança Secunia. Elas podem ser exploradas para conduzir ataques XSS e potencialmente comprometer um sistema vulnerável ou revelar dados sensíveis e privados. <span id="more-578"></span></p>
<p>1) Certas entradas passadas para o table name no script de table print view não são adequadamente tratadas antes de serem retornadas ao usuário. Isso pode ser explorado para executar código malicioso de HTML e de script em uma sessão do navegador do usuário, no contexto de um site afetado. Essa vulnerabilidade é reportada na versão 3.4.3.1 e anteriores.</p>
<p>2) Certas entradas passadas para o parâmetro de transformação MIME-type não são adequadamente verificadas antes de serem usadas para incluir arquivos. Isso pode ser explorado para incluir arquivos maliciosos de recursos locais.</p>
<p>3) Certas entradas passadas para um parâmetro não-especificado no código ‘relational schema‘ não são adequadamente tratadas antes de serem usadas para concatenar um nome de classe. Isso também pode ser explorado para incluir arquivos maliciosos de recursos locais. As vulnerabilidades 2 e 3 são reportadas nas versões 3.4.0 a 3.4.3.1.</p>
<p>4) Um erro não-especificado na autenticação Swekey pode ser explorado para sobreescrever variáveis de sessão. Essa vulnerabilidade é reportada na versão 3.4.3.1 e anteriores.</p>
<p>A solução é atualizar para a versão 3.4.5</p>
<p><strong><a href="http://www.phpmyadmin.net/home_page/downloads.php" target="_blank">Clique Aqui para Baixar a versão mais recente</a></strong></p>
<p>Fonte: http://www.hackerinfo.com.br  |  <a title="http://www.net-security.org/" href="http://www.net-security.org/" target="_blank">http://www.net-security.org</a></p>
<p><a title="http://www.net-security.org/" href="http://www.net-security.org/" target="_blank">http://www.net-security.org/</a></p>
<div class="shr-publisher-578"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/09/02/vulnerabilidades-no-phpmyadmin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atualizando VMWARE Esxi 4.0 para 4.1</title>
		<link>http://blog.deserv.info/2011/08/30/atualizando-vmware-esxi-4-0-para-4-1/</link>
		<comments>http://blog.deserv.info/2011/08/30/atualizando-vmware-esxi-4-0-para-4-1/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 14:50:54 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Instalação e Compilação de SW]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[atualização]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[esx]]></category>
		<category><![CDATA[esxi]]></category>
		<category><![CDATA[máquinas virtuais]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[virtualização]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=571</guid>
		<description><![CDATA[Para quem tem o VMWare Esxi 4.0 aqui vão os comandos para atualizar para o 4.1, a grande novidade no 4.1 é o suporte USB para as máquinas virtuais. Baixar o pacote de atualização do VMWare Esxi no site, .zip: http://downloads.vmware.com/d/info/datacenter_downloads/vmware_vsphere_hypervisor_esxi/4 ESXi 4.1 (upgrade ZIP from ESXi 4.0) 07/13/10 &#124; 4.1 &#124; 202 MB &#124; [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F08%252F30%252Fatualizando-vmware-esxi-4-0-para-4-1%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Atualizando%20VMWARE%20Esxi%204.0%20para%204.1%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Para quem tem o <em>VMWare Esxi 4.0</em> aqui vão os comandos para atualizar para o 4.1, a grande novidade no 4.1 é o suporte USB para as máquinas virtuais. <span id="more-571"></span></p>
<p>Baixar o pacote de atualização do VMWare Esxi no site, .zip:</p>
<ul>
<li><a href="http://downloads.vmware.com/d/info/datacenter_downloads/vmware_vsphere_hypervisor_esxi/4">http://downloads.vmware.com/d/info/datacenter_downloads/vmware_vsphere_hypervisor_esxi/4</a></li>
</ul>
<p>ESXi 4.1 (upgrade ZIP from ESXi 4.0)<br />
07/13/10 | 4.1 | 202 MB | Binary (.zip)</p>
<p>Conectar ao seu servidor Esxi com o VMware vSphere Client.</p>
<p>Desligar todas as máquinas virtuais do servidor.</p>
<p>Clicar com botão direito na árvore e colocar o esxi em modo de manutenção.</p>
<p>Feito isso, acesse o datastore pelo VMware vSphere Client, configurações &#8211; datastore &#8211; clicar com botão direito em &#8220;datastoreI&#8221; e explorar.</p>
<p>Note que nas opções acima tem &#8220;UPLOAD&#8221;, clique nela e em seguida faça upload do arquivo .zip para o seu datastore.</p>
<p>Próximo passo é acessar o servidor VMWare por putty.</p>
<p>Caso não esteja habilitado o ssh no VMWARE, fazer os seguintes passos no console do servidor:</p>
<ol>
<li>alt + F1, para que apareça algo na tela, digite &#8220;unsupported&#8221;</li>
<li>digite a senha de root</li>
<li>vi /etc/inetd.conf</li>
<li>descomente a linha que contém os parâmetros do SSH e salve o arquivo.</li>
<li>reinicie o servidor.</li>
</ol>
<p>Pronto, com o SSH habilitado acesse o servidor via putty.</p>
<p>Checando o arquivo:</p>
<p><strong># esxupdate &#8211;bundle=/vmfs/volumes/datastoreI/upgrade-from-ESXi4.0-to-4.1.0-0.0.260247-release.zipcheck </strong></p>
<p>Caso &#8220;Check ok&#8221;, rodar update:</p>
<p><strong># esxupdate &#8211;bundle=/vmfs/volumes/datastoreI/upgrade-from-ESXi4.0-to-4.1.0-0.0.260247-release.zip update</strong></p>
<p>Assim que ele terminar o UPDATE o servidor vai reiniciar sozinho, assim que ele subir basta conectar nele com o VMware vSphere Client, tirar do modo manutenção e subir as máquinas virtuais.</p>
<p>Obs. importante:</p>
<p>Para funcionar a USB, as máquinas virtuais devem estar na versão 7 e adicionar o USB Controller na VM, caso esteja na versão 4, com a máquina virtual desligada é só clicar com o botão direito em cima dela de upgrade versão 7.</p>
<p>&nbsp;</p>
<p>Fonte: http://www.vivaolinux.com.br</p>
<div class="shr-publisher-571"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/08/30/atualizando-vmware-esxi-4-0-para-4-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como criar máquinas virtuais no VMware ESXi</title>
		<link>http://blog.deserv.info/2011/08/30/como-criar-maquinas-virtuais-no-vmware-esxi/</link>
		<comments>http://blog.deserv.info/2011/08/30/como-criar-maquinas-virtuais-no-vmware-esxi/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 14:47:43 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Instalação e Compilação de SW]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[esx]]></category>
		<category><![CDATA[esxi]]></category>
		<category><![CDATA[máquinas virtuais]]></category>
		<category><![CDATA[virtualização]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=575</guid>
		<description><![CDATA[Como foi noticiado aqui no Blog do Vicente, a VMware lançou gratuitamente o produto para virtualização VMWARE ESXi. É um produto robusto que, acredito, deve alterar sensivelmente os datacenters por todo o mundo. Na minha opinião, a não ser que o servidor tenha uma carga muito alta, já não faz mais sentido instalar o sistema [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F08%252F30%252Fcomo-criar-maquinas-virtuais-no-vmware-esxi%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Como%20criar%20m%C3%A1quinas%20virtuais%20no%20VMware%20ESXi%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Como foi noticiado aqui no <a onclick="Pal1254175293hw.hwClqnaj(&quot;Blog&quot;);return false;" onmouseover="Pal1254175293hw.hwShow(event,<br />
this, &quot;Blog&quot;); this.style.cursor=&quot;hand&quot;;<br />
this.style.textDecoration=&quot;underline&quot;; this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal1254175293hw.hideMaybe(this, &quot;Blog&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://blogdovicente.com/2008/08/13/como-criar-uma-maquina-virtual-no-vmware-esxi/#" rel="nofollow">Blog</a> do Vicente, a VMware lançou gratuitamente o<a href="http://blogdovicente.com/2008/07/31/vmware-lanca-versao-esxi-gratis-seu-datacenter-nunca-mais-sera-o-mesmo/" target="_blank"> produto para virtualização VMWARE ESXi</a>. É um produto robusto que, acredito, deve alterar sensivelmente os datacenters por todo o mundo. Na minha opinião, a não ser que o servidor tenha uma carga muito alta, já não faz mais sentido instalar o <a onclick="Pal1254175293hw.hwClqnaj(&quot;sistema<br />
operacional&quot;);return false;" onmouseover="Pal1254175293hw.hwShow(event, this, &quot;sistema operacional&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal1254175293hw.hideMaybe(this, &quot;sistema operacional&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://blogdovicente.com/2008/08/13/como-criar-uma-maquina-virtual-no-vmware-esxi/#" rel="nofollow">sistema operacional</a>diretamente no hardware. O VMware ESXi deve então se tornar a plataforma padrão para servidores. <span id="more-575"></span></p>
<p>Hoje vamos ver como criar máquinas <a onclick="Pal1254175293hw.hwClqnaj(&quot;virtuais&quot;);return<br />
false;" onmouseover="Pal1254175293hw.hwShow(event,<br />
this, &quot;virtuais&quot;); this.style.cursor=&quot;hand&quot;;<br />
this.style.textDecoration=&quot;underline&quot;; this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal1254175293hw.hideMaybe(this, &quot;virtuais&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://blogdovicente.com/2008/08/13/como-criar-uma-maquina-virtual-no-vmware-esxi/#" rel="nofollow">virtuais</a>. Como pré-requisito para este tutorial você deve ter <a href="http://blog.deserv.info/2011/08/30/como-instalar-o-vmware-esxi/" target="_blank">instalado o VMware ESXi</a>, baixado e instalado o software de <a onclick="Pal1254175293hw.hwClqnaj(&quot;gerenciamento&quot;);return false;" onmouseover="Pal1254175293hw.hwShow(event,<br />
this, &quot;gerenciamento&quot;); this.style.cursor=&quot;hand&quot;;<br />
this.style.textDecoration=&quot;underline&quot;; this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal1254175293hw.hideMaybe(this, &quot;gerenciamento&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://blogdovicente.com/2008/08/13/como-criar-uma-maquina-virtual-no-vmware-esxi/#" rel="nofollow">gerenciamento</a>.</p>
<p>&nbsp;</p>
<p>Execute o VMware Infrastructure Client do seu desktop ou do menu iniciar. Digite o IP ou nome do seu servidor, o usuário root e a senha que você cadastrou na configuração do servidor. Para acessar o servidor pelo nome você precisa ter cadastrado o nome no DNS da sua rede.</p>
<p><a title="logon-vmesx.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/logon-vmesx.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/logon-vmesx.thumbnail.JPG" alt="logon-vmesx.JPG" /></a></p>
<p>Depois de logar, esta é a tela inicial do cliente de administração do VMware.</p>
<p><a title="tela-inicial-vmesx.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/tela-inicial-vmesx.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/tela-inicial-vmesx.thumbnail.JPG" alt="tela-inicial-vmesx.JPG" /></a></p>
<p>Clique com o botão direito no servidor e escolha a opção <strong>New Virtual Machine</strong>.</p>
<p><a title="nova-maquina.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina.thumbnail.JPG" alt="nova-maquina.JPG" /></a></p>
<p>Será iniciado um wizard (assistente) para a criação da máquina virtual. Selecione a opção <strong>Typical</strong> e clique em Next.</p>
<p><a title="nova-maquina-passo1.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo1.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo1.thumbnail.JPG" alt="nova-maquina-passo1.JPG" /></a></p>
<p>Nesta opção você deve informar o nome da máquina virtual e clicar em <strong>Next</strong>.</p>
<p><a title="nova-maquina-passo2.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo2.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo2.thumbnail.JPG" alt="nova-maquina-passo2.JPG" /></a></p>
<p>Aqui você deve informar em qual datastore serão armazenados os discos. Se você tiver só discos internos aparecerá só uma opção. Se você tiver acesso a discos externos via SAN ou NFS, outras opções de datastore poderão estar disponíveis. Selecione o datastore desejado e clique em <strong>Next</strong>.</p>
<p><a title="nova-maquina-passo3.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo3.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo3.thumbnail.JPG" alt="nova-maquina-passo3.JPG" /></a></p>
<p>Selecione qual sistema operacional será instalado. Escolha a opção desejada e clique em <strong>Next</strong>. IMPORTANTE: 32 e 64 bits fazem diferença aqui.</p>
<p><a title="nova-maquina-passo4.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo4.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo4.thumbnail.JPG" alt="nova-maquina-passo4.JPG" /></a></p>
<p>Escolha quantos processadores você vai atribuir à máquina. Neste exemplo como o servidor tem 2 processadores, é possível escolher 1 ou 2. Se você tiver mais processadores, é possível escolher 1, 2 ou 4 processadores. Se a máquina que você for criar não precise de tantos recursos, crie com somente 1, pois 2 ou 4 processadores vão gastar mais memória. Selecione a quantidade desejada e clique em <strong>Next</strong>. Observação: Em máquinas Dual o Quad Core, cada core é considerado um processador.</p>
<p><a title="nova-maquina-passo5.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo5.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo5.thumbnail.JPG" alt="nova-maquina-passo5.JPG" /></a></p>
<p>Selecione a quantidade de memória desejada e clique em <strong>Next</strong>.</p>
<p><a title="nova-maquina-passo6.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo6.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo6.thumbnail.JPG" alt="nova-maquina-passo6.JPG" /></a></p>
<p>Selecione em qual rede a máquina será conectada. É possível colocar redes diversas na mesma máquina. Por exemplo: Uma máquina virtual pode estar ligada na sua rede interna e na internet servindo como seu servidor Web. Para isso é possível usar 2 placas de rede ou utilizar VLANs pelo protocolo 802.1Q na mesma placa de rede. Selecione a rede desejada e clique em <strong>Next</strong>.</p>
<p><a title="nova-maquina-passo7.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo7.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo7.thumbnail.JPG" alt="nova-maquina-passo7.JPG" /></a></p>
<p>Selecione o tamanho do disco da máquina virtual e clique em <strong>Next</strong>.</p>
<p><a title="nova-maquina-passo8.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo8.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo8.thumbnail.JPG" alt="nova-maquina-passo8.JPG" /></a></p>
<p>Revise as opções selecionadas para a sua máquina virtual e clique em Finish para concluir.</p>
<p><a title="nova-maquina-passo9.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo9.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/nova-maquina-passo9.thumbnail.JPG" alt="nova-maquina-passo9.JPG" /></a></p>
<p>Agora que sua máquina virtual foi criada, é preciso selecionar a mídia de instalação para sua máquina virtual. Para isso edite a máquina virtual clicando com o botão direito do mouse na máquina virtual recém-criada e selecione a opção <strong>Edit Settings</strong>.</p>
<p><a title="editando-nova-maquina.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/editando-nova-maquina.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/editando-nova-maquina.thumbnail.JPG" alt="editando-nova-maquina.JPG" /></a></p>
<p>Selecione o <strong>CD/DVD Drive 1</strong> e escolha a opção desejada. Neste caso usaremos a opção <strong>Client Device</strong>, que é utilizar o CD da máquina em que está sendo gerenciado o servidor. As outras opções são: <strong>Host Device</strong>, que usa o CD do servidor e <strong>Datastore ISO file</strong>, que pode instalar a máquina virtual a partir de uma imagem de disco ISO que esteja no datastore. A última opção é a mais rápida, já que o acesso a disco é mais rápido que do CD ou DVD. Clique em <strong>OK </strong>para sair.</p>
<p><a title="inserindo-disco-instalacao.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/inserindo-disco-instalacao.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/inserindo-disco-instalacao.thumbnail.JPG" alt="inserindo-disco-instalacao.JPG" /></a></p>
<p>Agora você já pode iniciar a máquina virtual clicando com o botão direito do mouse na máquina virtual e clicando na opção <strong>Power ON</strong>. Para utilizar o CD do seu computador, insira do disco de instalação do sistema operacional desejado no drive e clique no botão <strong>Connect CD/DVD 1</strong>.</p>
<p><a title="ligando-maquina-virtual.JPG" href="http://blogdovicente.com/wp-content/uploads/2008/08/ligando-maquina-virtual.JPG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/ligando-maquina-virtual.thumbnail.JPG" alt="ligando-maquina-virtual.JPG" /></a></p>
<p>Pronto! Agora é só instalar a máquina virtual do mesmo jeito que instalaria se fosse uma máquina física. Com a vantagem de que é muito mais rápido! Verifique se a versão instalada é afetada pelo <a href="http://blogdovicente.com/2008/08/13/bug-do-vmware-esxi-impede-power-on-de-maquinas-virtuais/" target="_blank">bug do dia 12 de agosto</a>. Se for aplique os patches necessários para evitar a ocorrência do erro <strong>General System Error Ocurred: Internal Error</strong>.</p>
<p><strong>Atualização em 17/11/2008</strong>: Depois que instalar o sistema operacional, não esqueça de instalar o software VMware Tools que é indispensável para haver a comunicação entre Host VMware e a máquina virtual, bem como otimizar o uso de memória no Host. Para instalar basta clicar com o botão direito do mouse na máquina virtual e clicar na opção Install/Upgrade VMware Tools. Será aberta uma tela em que é possível instalar o software de modo interativo ou automático. Na maior parte das vezes, o modo automático funciona bem.</p>
<p>IMPORTANTE: Se você for instalar Windows XP por exemplo, precisará do driver da placa SCSI Bus Logic, que o VMware emula. Não é possível simular hds IDE no VMware ESXi. Do mesmo jeito que se usa CDs virtuais, é possível capturar imagens de disquetes.</p>
<p>&nbsp;</p>
<p>Fonte: http://blogdovicente.com</p>
<div class="shr-publisher-575"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/08/30/como-criar-maquinas-virtuais-no-vmware-esxi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como instalar o VMware ESXi</title>
		<link>http://blog.deserv.info/2011/08/30/como-instalar-o-vmware-esxi/</link>
		<comments>http://blog.deserv.info/2011/08/30/como-instalar-o-vmware-esxi/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 14:44:06 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Instalação e Compilação de SW]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[esx]]></category>
		<category><![CDATA[esxi]]></category>
		<category><![CDATA[máquinas virtuais]]></category>
		<category><![CDATA[virtualização]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=573</guid>
		<description><![CDATA[Este dias eu mostrei as vantagens de utilizar o VMware ESXi no seu datacenter. Hoje eu vou mostrar como instalá-lo. Para este tutorial foi utilizado um servidor Dell PowerEdge 2950 com 4GB de RAM e 2 processadores Xeon Dual Core 1.6 GHz. As telas foram capturadas pela console remota provida pela DRAC do servidor. Baixe [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F08%252F30%252Fcomo-instalar-o-vmware-esxi%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Como%20instalar%20o%20VMware%20ESXi%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Este dias eu mostrei as <a onclick="Pal713843861hw.aqkqhblqnaj(&quot;vantagens&quot;);return<br />
false;" onmouseover="Pal713843861hw.hwShow(event,<br />
this, &quot;vantagens&quot;); this.style.cursor=&quot;hand&quot;;<br />
this.style.textDecoration=&quot;underline&quot;; this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal713843861hw.hideMaybe(this, &quot;vantagens&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://blogdovicente.com/2008/08/08/como-instalar-o-vmware-esxi/#" rel="nofollow">vantagens</a> de utilizar o <a href="http://blogdovicente.com/2008/07/31/vmware-lanca-versao-esxi-gratis-seu-datacenter-nunca-mais-sera-o-mesmo/" target="_blank">VMware ESXi no seu datacenter</a>. Hoje eu vou mostrar como instalá-lo. Para este tutorial foi utilizado um servidor Dell PowerEdge 2950 com 4GB de RAM e 2 processadores Xeon Dual Core 1.6 GHz. As telas foram capturadas pela console remota provida pela DRAC do servidor. <span id="more-573"></span></p>
<p>Baixe o software e registre-se no <a href="http://www.vmware.com/products/esxi/" target="_blank">site da VMware</a>.</p>
<p>Queime a <a onclick="Pal713843861hw.aqkqhblqnaj(&quot;imagem&quot;);return<br />
false;" onmouseover="Pal713843861hw.hwShow(event,<br />
this, &quot;imagem&quot;); this.style.cursor=&quot;hand&quot;;<br />
this.style.textDecoration=&quot;underline&quot;; this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal713843861hw.hideMaybe(this, &quot;imagem&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://blogdovicente.com/2008/08/08/como-instalar-o-vmware-esxi/#" rel="nofollow">imagem</a> em um CD, coloque do drive e reinicie o servidor.</p>
<p>Quando a tela abaixo aparecer tecle <strong>Enter </strong>para instalar:</p>
<p><a title="esxi11.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi11.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi11.thumbnail.png" alt="esxi11.png" /></a></p>
<p>Pressione <strong>F11 </strong>para aceitar a licença e continuar o processo de instalação:</p>
<p><a title="esxi2.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi2.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi2.thumbnail.png" alt="esxi2.png" /></a></p>
<p>Escolha o disco que quer instalar o VMware ESXi. IMPORTANTE: Não é possível utilizar Dual Boot, uma vez que você escolha a partição que quer instalar, todos os dados que estiverem lá serão perdidos:</p>
<p><a title="esxi3.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi3.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi3.thumbnail.png" alt="esxi3.png" /></a></p>
<p>Tecle <strong>Enter </strong>para excluir as partições existentes no disco:</p>
<p><a title="esxi4.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi4.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi4.thumbnail.png" alt="esxi4.png" /></a></p>
<p>Tecle <strong>F11 </strong>para começar a instalação:</p>
<p><a title="esxi5.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi5.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi5.thumbnail.png" alt="esxi5.png" /></a></p>
<p>Aguarde os <a onclick="Pal713843861hw.aqkqhblqnaj(&quot;arquivos&quot;);return<br />
false;" onmouseover="Pal713843861hw.hwShow(event,<br />
this, &quot;arquivos&quot;); this.style.cursor=&quot;hand&quot;;<br />
this.style.textDecoration=&quot;underline&quot;; this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal713843861hw.hideMaybe(this, &quot;arquivos&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://blogdovicente.com/2008/08/08/como-instalar-o-vmware-esxi/#" rel="nofollow">arquivos</a> serem copiados:</p>
<p><a title="esxi6.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi6.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi6.thumbnail.png" alt="esxi6.png" /></a></p>
<p>Depois de instalado tecle <strong>Enter </strong>para reiniciar o servidor:</p>
<p><a title="esxi7.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi7.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi7.thumbnail.png" alt="esxi7.png" /></a></p>
<p>Aguarde:</p>
<p><a title="esxi8.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi8.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi8.thumbnail.png" alt="esxi8.png" /></a></p>
<p>Uma vez iniciado, o ESXi está disponível para uso. Eu não gosto de deixar servidores utilizando IP da rede DHCP. Eles podem mudar e você precisaria ir lá na frente do servidor para descobrir que IP ele pegou. Para tanto, vamos configurar um a rede do servidor. Tecle <strong>F2 </strong>para alterar as configurações do servidor:</p>
<p><a title="esxi9.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi9.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi9.thumbnail.png" alt="esxi9.png" /></a></p>
<p>Selecione a opção abaixo e tecle <strong>Enter </strong>para criar uma senha para o usuário root:</p>
<p><a title="esxi10.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi10.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi10.thumbnail.png" alt="esxi10.png" /></a></p>
<p>Digite uma senha, de preferência bem complexa, confirme e tecle <strong>Enter </strong>para continuar:</p>
<p><a title="esxi111.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi111.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi111.thumbnail.png" alt="esxi111.png" /></a></p>
<p>Selecione a terceira opção na tela inicial de configuração para configurar a rede:</p>
<p><a title="esxi-rede.PNG" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi-rede.PNG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi-rede.thumbnail.PNG" alt="esxi-rede.PNG" /></a></p>
<p>Selecione a opção <strong>IP Configuration</strong> e na tela que abrir configure para utilizar IP estático e preencha o IP, máscara e Gateway e tecle <strong>Enter </strong>para continuar:</p>
<p><a title="esxi12.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi12.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi12.thumbnail.png" alt="esxi12.png" /></a></p>
<p>Na tela de configuração de rede, selecione a opção <strong>DNS Configuration</strong>, preencha os servidores DNS da sua rede e preencha o nome do servidor que está configurando e tecle <strong>Enter</strong>:</p>
<p><a title="esxi-dns.PNG" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi-dns.PNG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi-dns.thumbnail.PNG" alt="esxi-dns.PNG" /></a></p>
<p>Tecle <strong>Esc </strong>para voltar à tela inicial e selecione a opção <strong>Restart Network Management</strong> para efetivar as alterações que foram feitas:<strong> </strong></p>
<p><a title="esxi14.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi14.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi14.thumbnail.png" alt="esxi14.png" /></a></p>
<p>Tecle <strong>F11 </strong>para continuar:</p>
<p><a title="esxi15.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi15.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi15.thumbnail.png" alt="esxi15.png" /></a></p>
<p>Pronto! Tecle <strong>Enter </strong>para continuar e tecle <strong>Esc </strong>para sair do utilitário de configuração:</p>
<p><a title="esxi16.png" href="http://blogdovicente.com/wp-content/uploads/2008/08/esxi16.png"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/esxi16.thumbnail.png" alt="esxi16.png" /></a></p>
<p>Uma vez configurado o seu servidor, abra um browser no seu micro, faça download e instale o software cliente:</p>
<p><a title="web-esxi.PNG" href="http://blogdovicente.com/wp-content/uploads/2008/08/web-esxi.PNG"><img src="http://blogdovicente.com/wp-content/uploads/2008/08/web-esxi.thumbnail.PNG" alt="web-esxi.PNG" /></a></p>
<p>Fonte: http://blogdovicente.com</p>
<p>&nbsp;</p>
<div class="shr-publisher-573"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/08/30/como-instalar-o-vmware-esxi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remover Virus Tipo Rootkit do Seu Windows</title>
		<link>http://blog.deserv.info/2011/08/24/remover-virus-tipo-rootkit-do-seu-windows/</link>
		<comments>http://blog.deserv.info/2011/08/24/remover-virus-tipo-rootkit-do-seu-windows/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 22:22:17 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Kaspersky]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[Rootkit Revealer]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[Sophos]]></category>
		<category><![CDATA[TDSSKiller by Kaspersky]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=568</guid>
		<description><![CDATA[O vírus chamado de Rootkit se instala no computador de um jeito completamente invisível para abrir acesso irrestrito aos seus dados, por isso o nome “root” que vem do termo utilizado em acesso privilegiado nos sistemas Unix, com a palavra kit do software ou componente instalado. O Rootkit para ser instalado no seu computador precisa [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F08%252F24%252Fremover-virus-tipo-rootkit-do-seu-windows%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FnZpPuK%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Remover%20Virus%20Tipo%20Rootkit%20do%20Seu%20Windows%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>O vírus chamado de Rootkit se instala no computador de um jeito completamente invisível para abrir acesso irrestrito aos seus dados, por isso o nome “root” que vem do termo utilizado em acesso privilegiado nos sistemas Unix, com a palavra kit do software ou componente instalado. <span id="more-568"></span></p>
<p>O Rootkit para ser instalado no seu computador precisa explorar alguma vulnerabilidade do navegadortal como o Internet Explorer, e depois de instalado ele permite que o atacante acesse todos seus dados de forma invisível. O Rootkit pode ser também chamado de Malware mas é mais complicado do que este de ser detectado por anti-vírus comuns do mercado.</p>
<p><img src="http://www.gusleig.com/sos/wp-content/uploads/2011/08/kaspersky-anti-virus.jpg" alt="kaspersky anti virus" width="200" height="194" /></p>
<p>Para quem tem o computador realmente infectado, uma boa <a onclick="Pal2026016586hw.aqkqhblqnaj(&quot;solução&quot;);return<br />
false;" onmouseover="Pal2026016586hw.hwShow(event,<br />
this, &quot;solução&quot;); this.style.cursor=&quot;hand&quot;;<br />
this.style.textDecoration=&quot;underline&quot;; this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal2026016586hw.hideMaybe(this, &quot;solução&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://www.gusleig.com/sos/2011/08/downloads/remover-virus-tipo-rootkit-do-seu-windows/#" rel="nofollow">solução</a> é <a title="baixar cd remover virus gratis kaspersky disk rescue" href="http://www.gusleig.com/sos/2011/07/downloads/remover-virus-do-windows-com-cd-de-boot-kaspersky-disk-rescue-10/">baixar o CD de boot Disk Rescue 10 da Kaspersky</a>. Mas você precisa de um computador funcionando para poder gravar no CD o <a onclick="Pal2026016586hw.aqkqhblqnaj(&quot;arquivo&quot;);return<br />
false;" onmouseover="Pal2026016586hw.hwShow(event,<br />
this, &quot;arquivo&quot;); this.style.cursor=&quot;hand&quot;;<br />
this.style.textDecoration=&quot;underline&quot;; this.style.borderBottom=&quot;solid&quot;;" onmouseout="Pal2026016586hw.hideMaybe(this, &quot;arquivo&quot;);<br />
this.style.cursor=&quot;hand&quot;; this.style.textDecoration=&quot;underline&quot;;<br />
this.style.borderBottom=&quot;dotted 1px&quot;; " href="http://www.gusleig.com/sos/2011/08/downloads/remover-virus-tipo-rootkit-do-seu-windows/#" rel="nofollow">arquivo</a> ISO que irá baixar.</p>
<h3>Como Remover Rootkit do Computador?</h3>
<p>Para detectar e remover um rootkit você precisa de um bom anti-vírus como o Kapersky, mas que é mais caro, ou então utilizar de ferramentas específicas para este típo de vírus. Vou listar aqui algumas ferramentas grátis que podem ser encontradas na internet.</p>
<p><strong>1. RootkitRevealer: </strong> Uma avançada ferramenta de detecção para Windows XP (32-bit) e Windows Server 2003 (32-bit) que monta uma lista de discrepâncias encontradas no registro do sistema operacional assim como em outras bibliotecas do Windows. O RootkitRevealer é parte da própria Microsoft e está hospedado no site technet.</p>
<p><img src="http://www.gusleig.com/sos/wp-content/uploads/2011/08/rootkitrevealer.jpg" alt="rootkitrevealer" width="350" height="189" /></p>
<p><a title="rootkit revealer baixar" href="http://technet.microsoft.com/pt-br/sysinternals/bb897445">Baixar Rootkit Revealer</a></p>
<p><strong>2. TDSSKiller by Kaspersky: </strong> Criado pela empresa Kaspersky, mesma que desenvolve um dos melhores antivírus, o TDSSKiller encontra rootkits que nenhum outro programa pode encontrar como da família rootkit.win32.tdss e também do tipo bootkits (MBR).</p>
<p><img src="http://www.gusleig.com/sos/wp-content/uploads/2011/08/TDSSKiller.jpg" alt="TDSSKiller" width="350" height="229" /></p>
<p><a title="baixar tdsskiller" href="http://support.kaspersky.com/faq/?qid=208283363">Baixar TDSSKiller</a></p>
<p><strong>3. Sophos Anti-Rootkit: </strong> Um dos mais avançados e completos programas de remoção de rootkit, o Sohos tem uma interface fácil e simples de usar. Ele tem a vantagem de ser grátis e ser compatível desde o Windows 2000, XP, Vista até com o Windows 7 e Server, inclusive plataformas 64-bits.</p>
<p><img src="http://www.gusleig.com/sos/wp-content/uploads/2011/08/sopho-antirootkit.jpg" alt="sopho antirootkit" width="350" height="237" /></p>
<p>&nbsp;</p>
<p><a title="baixar sophos antirootkit" href="http://www.sophos.com/en-us/products/free-tools/sophos-anti-rootkit.aspx">Baixe Sophos Anti-Rootkit</a></p>
<p>&nbsp;</p>
<p>Fonte: http://www.gusleig.com</p>
<div class="shr-publisher-568"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/08/24/remover-virus-tipo-rootkit-do-seu-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)</title>
		<link>http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/</link>
		<comments>http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 19:24:19 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Instalação e Compilação de SW]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Softwares Adicionais]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[Memcached]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[otimização]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=564</guid>
		<description><![CDATA[Depois de apresentar a configuração do Apache, PHP, APC e Memcached na primeira parte, agora é hora do Nginx. Basicamente, vamos utilizar o Nginx para servir apenas conteúdo estático (imagens, css, javascript, etc), pois ele possui recursos que garantem uma boa performance para este fim, como por exemplo usar o Memcached como cache. Quando ele [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F08%252F16%252Fnginx-apache-php5-apc-linux-memcached-performance-parte-2%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FofLwXW%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Nginx%20%2B%20Apache%20%2B%20PHP5%20%2B%20APC%20%2B%20Linux%20%2B%20Memcached%20%3D%20PERFORMANCE%21%21%20%28parte%202%29%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Depois de apresentar a configuração do <a href="http://httpd.apache.org/" target="_blank">Apache</a>, <a href="http://www.php.net/" target="_blank">PHP</a>, <a href="http://pecl.php.net/package/APC" target="_blank">APC</a> e <a href="http://memcached.org/" target="_blank">Memcached</a> na <a href="http://www.bragil.net/linux-unix/nginx-apache-php5-apc-memcached-linux-performance-1/" target="_self">primeira parte</a>, agora é hora do <a href="http://wiki.nginx.org/Main" target="_blank">Nginx</a>. Basicamente, vamos utilizar o <a href="http://wiki.nginx.org/Main" target="_blank">Nginx</a> para servir apenas conteúdo estático (imagens, css, javascript, etc), pois ele possui recursos que garantem uma boa performance para este fim, como por exemplo usar o <a href="http://memcached.org/" target="_blank">Memcached</a> como cache. Quando ele recebe uma requisição para processar um arquivo <a href="http://www.php.net/" target="_blank">PHP</a>, ele “passa a bola” para o <a href="http://httpd.apache.org/" target="_blank">Apache</a>, servindo também como um proxy. Fica mais fácil de entender olhando o fluxo abaixo: <span id="more-564"></span></p>
<blockquote>
<pre>                                PHP
requisição --&gt; [Nginx] ------------&gt; [Apache] ---&gt; (PHP + APC)
                  |
                  |
                  |
                  | conteúdo estático
                  | (imagens, js, css, etc)
                  |
            (Memcached)</pre>
<p>Após o famoso comando <strong>apt-get install nginx</strong>, devemos editar os arquivos de configuração e acertar os detalhes para que tudo isso aí em cima funcione corretamente. Vamos começar pelo arquivo <strong>/etc/nginx/nginx.conf</strong>, onde estão as configurações globais:</p></blockquote>
<div>
<div>
<blockquote>
<pre>user www-data;
worker_processes  2;
 
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
 
events {
    worker_connections  1024;
}
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    access_log  /var/log/nginx/access.log;
    client_body_temp_path /var/lib/nginx/body 1 2;
    sendfile        on;
 
    keepalive_timeout  65;
    tcp_nodelay        on;
 
    # Habilitar a compressão gzip
    gzip  on;
    gzip_buffers 32 8k;
    gzip_comp_level   6;
    gzip_http_version 1.0;
    gzip_min_length   0;
    gzip_types        text/html text/css image/x-icon
        application/x-javascript application/javascript text/javascript application/atom+xml application/xml ;
 
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}</pre>
</blockquote>
</div>
</div>
<p>Não há muito segredo, principalmente se você já mexeu com os arquivos de configuração de outros web servers, como o <a href="http://httpd.apache.org/" target="_blank">Apache</a>. O próximo passo agora é a configuração do virtual server, onde ficam os detalhes mais importantes. O arquivo para configuração do virtual server default é o <strong>/etc/nginx/sites-enabled/default</strong>:</p>
<div>
<div>
<blockquote>
<pre># O alias "wordpressapache" aponta para o servidor Apache,
# onde serão redirecionados os scripts PHP para processamento.
upstream wordpressapache {
        server dominio.com:8080 weight=1 fail_timeout=120s;
}
 
server {
        listen   80;
        server_name www.dominio.com;
        access_log  /var/log/nginx/wordpressapache.access.log;
 
        location / {
                # Diretório raiz do site
                root /home/site;
                # As linhas abaixo servem para configurar o redirecionamento
                # para o servidor Apache, quando necessário.
                proxy_pass      http://wordpressapache;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                client_max_body_size 10m;
                client_body_buffer_size 128k;
                proxy_connect_timeout 90;
                proxy_send_timeout 90;
                proxy_read_timeout 90;
                proxy_buffer_size 4k;
                proxy_buffers 4 32k;
                proxy_busy_buffers_size 64k;
                proxy_temp_file_write_size 64k;
 
                # Aqui vão as configurações para que o Nginx use o Memcached
                # como cache, para aumentar a performance.
                set $memcached_key $uri;
                memcached_pass 127.0.0.1:11211;
                error_page 404 = @fallback;
        }
 
        # Caso a página não seja encontrada no memcached, passa para o Apache.
        location @fallback {
                proxy_pass      http://wordpressapache;
        }
 
        # Quando forem requisitados scripts PHP, redireciona para o Apache.
        location ~* wp\-.*\.php|wp\-admin {
                proxy_pass      http://wordpressapache;
        }
 
        # Todo o conteúdo estático será processado pelo Nginx.
        location ~* \.(htm|html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
                root /home/site;
                expires max;
                break;
        }
 
        if (-f $request_filename) {
                break;
        }
 
        # Nega o acesso aos arquivos .htaccess
        location ~ /\.ht {
                deny all;
        }
 
}</pre>
</blockquote>
</div>
</div>
<p>Após acertar as configurações, reinicie o daemon do <a href="http://wiki.nginx.org/Main" target="_blank">Nginx</a> com o comando <strong>/etc/init.d/nginx restart</strong>. Podemos conferir o benchmark usando o Apache Benchmark:</p>
<div>
<div>
<blockquote>
<pre> ab -n 1000 -c 5 http://www.dominio.com:80/
This is ApacheBench, Version 2.3 &amp;lt;$Revision: 655654 $&amp;gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
 
Benchmarking www.dominio.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
 
Server Software:        nginx/0.6.32
Server Hostname:        www.dominio.com
Server Port:            80
 
Document Path:          /
Document Length:        91427 bytes
 
Concurrency Level:      5
Time taken for tests:   1.230 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      91715000 bytes
HTML transferred:       91427000 bytes
Requests per second:    812.80 [#/sec] (mean)
Time per request:       6.152 [ms] (mean)
Time per request:       1.230 [ms] (mean, across all concurrent requests)
Transfer rate:          72798.78 [Kbytes/sec] received
 
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     2    6   1.8      6      12
Waiting:        1    5   1.4      5      10
Total:          2    6   1.8      6      12
 
Percentage of the requests served within a certain time (ms)
  50%      6
  66%      7
  75%      7
  80%      7
  90%      8
  95%      9
  98%     10
  99%     10
 100%     12 (longest request)</pre>
</blockquote>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
</div>
<p>Fonte: http://www.bragil.net/</p>
<div class="shr-publisher-564"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)</title>
		<link>http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/</link>
		<comments>http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 19:20:22 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Instalação e Compilação de SW]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Softwares Adicionais]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[Memcached]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[otimização]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=562</guid>
		<description><![CDATA[A seguir vou detalhar o passo-a-passo resumido da configuração usada, que eu apelidei carinhosamente de NAPALM (sigla para Nginx + Apache + PHP + APC + Linux + Memcached). Nginx é um servidor web que tem ganhado fama por ser extremamente rápido e também por ser uma excelente escolha para servir conteúdo estático, sendo usado [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F08%252F16%252Fnginx-apache-php5-apc-linux-memcached-performance-parte-1%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FmZL7DL%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Nginx%20%2B%20Apache%20%2B%20PHP5%20%2B%20APC%20%2B%20Linux%20%2B%20Memcached%20%3D%20PERFORMANCE%21%21%20%28parte%201%29%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>A seguir vou detalhar o passo-a-passo resumido da configuração usada, que eu apelidei carinhosamente de <strong>NAPALM</strong> (sigla para <a href="http://wiki.nginx.org/Main">Nginx</a> + <a href="http://httpd.apache.org/" target="_blank">Apache</a> + <a href="http://www.php.net/" target="_blank">PHP</a> + <a href="http://pecl.php.net/package/APC" target="_blank">APC</a> + Linux + <a href="http://memcached.org/" target="_blank">Memcached</a>).</p>
<p><a href="http://wiki.nginx.org/Main">Nginx</a> é um servidor web que tem ganhado fama por ser extremamente rápido e também por ser uma excelente escolha para servir conteúdo estático, sendo usado como proxy para servidores de aplicação.</p>
<p>O <a href="http://httpd.apache.org/" target="_blank">Apache </a>dispensa apresentações, assim como o <a href="http://www.php.net/" target="_blank">PHP</a>. <span id="more-562"></span></p>
<p>O <a href="http://pecl.php.net/package/APC" target="_blank">APC</a> é uma extensão para o <a href="http://www.php.net/" target="_blank">PHP</a> que otimiza o código intermediário e mantém um cache dos dados e do código compilado na memória compartilhada. Isto faz aumentar sensivelmente a performance de aplicações <a href="http://www.php.net/" target="_blank">PHP</a>.</p>
<p>O <a href="http://memcached.org/" target="_blank">Memcached</a> é um sistema de cache em memória de alta performance, bastante usado por grandes nomes da Internet, como <a href="http://twitter.com/" target="_blank">Twitter</a>, <a href="http://www.flickr.com/" target="_blank">Flickr</a>, <a href="http://www.wikipedia.org/" target="_blank">Wikipedia</a>, <a href="http://www.youtube.com/" target="_blank">Youtube</a>, dentre outros.</p>
<p>Quer performance para sua aplicação <a href="http://www.php.net/" target="_blank">PHP</a>? Basta misturar isso tudo!! E o melhor, a configuração é tranquila.</p>
<p>Para começar, instale o <a href="http://httpd.apache.org/" target="_blank">Apache</a> 2 e o <a href="http://www.php.net/" target="_blank">PHP</a> 5. Não vou abordar a instalação e configuração do servidor <a href="http://httpd.apache.org/" target="_blank">Apache</a> 2 + <a href="http://www.php.net/" target="_blank">PHP</a> 5, pois basta ir no Google, você encontrará bastante coisa.</p>
<p><strong>Configuração do Apache</strong></p>
<p>Depois do <a href="http://httpd.apache.org/" target="_blank">Apache</a> + <a href="http://www.php.net/" target="_blank">PHP</a> instalados e configurados, altere a porta onde o <a href="http://httpd.apache.org/" target="_blank">Apache</a> receberá as conexões para 8080. No Debian, edite as seguintes linhas do arquivo /etc/apache2/ports.conf para o seguinte:</p>
<div>
<div>
<blockquote>
<pre>NameVirtualHost dominio.com:8080
Listen 8080</pre>
</blockquote>
</div>
</div>
<p>E altere também a porta na configuração do virtual host:</p>
<div>
<div>
<blockquote>
<pre>VirtualHost dominio.com:8088</pre>
</blockquote>
</div>
</div>
<p>Isto significa que o <a href="http://httpd.apache.org/" target="_blank">Apache</a> deixará de atender as requisições na porta 80 (padrão). Ou seja, usaremos o <a href="http://httpd.apache.org/" target="_blank">Apache</a> apenas para processar os arquivos <a href="http://www.php.net/" target="_blank">PHP</a>, deixando todo o conteúdo estático (imagens, javascript, css, etc) para o <a href="http://wiki.nginx.org/Main">Nginx</a>.</p>
<p>Reinicie o servidor <a href="http://httpd.apache.org/" target="_blank">Apache</a>. No Debian, o comando é <strong>/etc/init.d/apache2 restart</strong>.</p>
<p><strong>Instalação e Configuração do APC</strong></p>
<p>Agora é a instalação do <a href="http://pecl.php.net/package/APC" target="_blank">APC</a>. No Debian 5, isso é extremamente simples:</p>
<div>
<div>
<blockquote>
<pre>apt-get install php-apc</pre>
</blockquote>
</div>
</div>
<p>Após instalar, edite o arquivo /etc/php5/conf.d/apc.ini, adicionando as seguintes linhas:</p>
<div>
<div>
<blockquote>
<pre>extension=apc.so
apc.enabled=1</pre>
</blockquote>
</div>
</div>
<p>É possível configurar vários parâmetros, consulte a documentação do <a href="http://pecl.php.net/package/APC" target="_blank">APC</a>.</p>
<p>Para a nova configuração surtir efeito, reinicie o <a href="http://httpd.apache.org/" target="_blank">Apache</a>:</p>
<div>
<div>
<blockquote>
<pre>/etc/init.d/apache2 restart</pre>
</blockquote>
</div>
</div>
<p><strong>Instalação e Configuração do Memcached</strong></p>
<div>
<div>
<blockquote>
<pre>apt-get install memcached</pre>
</blockquote>
</div>
</div>
<p>Após a instalação, edite o arquivo <strong>/etc/memcached.conf</strong>. Geralmente não é necessário mudar muita coisa, a não ser o tamanho máximo da memória para o <a href="http://memcached.org/" target="_blank">Memcached</a> (o default é 64 MB). O <a href="http://memcached.org/" target="_blank">Memcached</a> usa a porta 11211 por padrão, mas também é possível mudar. O arquivo de configuração vem todo comentado, não há segredo.</p>
<p>Para alterar o tamanho do espaço de memória, altere a linha <strong>-m 64</strong> para o quanto for necessário (128, 256, 512, 1024,…). Lembrando que o <a href="http://memcached.org/" target="_blank">Memcached</a> só ocupa o espaço de memória que estiver em uso pelo cache, ele não reserva todo o espaço inicialmente. Feita a configuração, reinicie o daemon do <a href="http://memcached.org/" target="_blank">Memcached</a> com o comando:</p>
<div>
<div>
<pre>/etc/init.d/memcached restart</pre>
</div>
</div>
<p>Agora só falta o <a href="http://wiki.nginx.org/Main">Nginx</a>.</p>
<p><strong>Instalação do Nginx</strong></p>
<p>Adivinhem?</p>
<div>
<div>
<blockquote>
<pre>apt-get install nginx</pre>
</blockquote>
</div>
</div>
<p>Vamos abordar a configuração em um outro artigo. Até lá, que tal dar uma olhada nos arquivos de configuração do Nginx, em <strong>/etc/nginx </strong>? Bons estudos!</p>
<p>Fonte: http://www.bragil.net/</p>
<div class="shr-publisher-562"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resolvendo os problemas do tamanho do ibdata1 no MySQL</title>
		<link>http://blog.deserv.info/2011/05/24/resolvendo-os-problemas-do-tamanho-do-ibdata1-no-mysql/</link>
		<comments>http://blog.deserv.info/2011/05/24/resolvendo-os-problemas-do-tamanho-do-ibdata1-no-mysql/#comments</comments>
		<pubDate>Tue, 24 May 2011 21:18:05 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SGBD]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[ibdata]]></category>
		<category><![CDATA[innodb]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=555</guid>
		<description><![CDATA[Um problema que enfrentava sempre que colocava um aplicativo utilizando o MySQL é o tamanho sempre crescente do arquivo /var/lib/mysql/ibdata1. Este arquivo armazena as tableas do tipo InnoDB e, mesmo que os dados sejam removidos ou elimine tabelas e, até mesmo, banco de dados, o tamanho do ibdata1 não diminui, o que pode ocasionar problemas [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F05%252F24%252Fresolvendo-os-problemas-do-tamanho-do-ibdata1-no-mysql%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FiYN8nh%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Resolvendo%20os%20problemas%20do%20tamanho%20do%20ibdata1%20no%20MySQL%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a rel="nofollow" href="http://www.adilson.net.br/2009/12/resolvendo-os-problemas-do-tamanho.html"></a>Um  problema que enfrentava sempre que colocava um aplicativo utilizando o  MySQL é o tamanho sempre crescente do arquivo /var/lib/mysql/ibdata1.  Este arquivo armazena as tableas do tipo InnoDB e, mesmo que os dados  sejam removidos ou elimine tabelas e, até mesmo, banco de dados, o  tamanho do ibdata1 não diminui, o que pode ocasionar problemas de espaço  em disco mais para frente.</p>
<div>
<div>
<div><span id="more-555"></span>Fazendo uma  pesquisa na rede descobri uma boa solução para esta complicação que é  definida como padrão em várias instalações do MySQL.</div>
<div>A  primeira coisa a fazer é criar um backup de todos os bancos de dados do  MySQL que utiliza as tabelas InnoDB. Vamos imaginar que temos apenas um  banco de dados deste tipo no servidor MySQL. Então será feito o  seguinte:</div>
<blockquote>
<div><span style="font-family: 'courier new',monospace;"><span style="color: #38761d;">mysqldump -u&#8221;usuario&#8221; &#8211;password=&#8221;senha&#8221; &#8211;routines bancodedados &gt; bancodedados.sql</span></span></div>
</blockquote>
<div>Remove o banco de dados propriamente dito no console do MySQL:</div>
<blockquote>
<div><span style="font-family: 'courier new',monospace;">DROP DATABASE bancodedados;</span></div>
</blockquote>
<div>Desative o serviço do MySQL:</div>
<blockquote>
<div><span style="color: #38761d;"><span style="font-family: 'courier new',monospace;">/etc/init.d/mysql stop</span></span></div>
</blockquote>
<div>remove o arquivo ibdata1</div>
<blockquote>
<div><span style="font-family: 'courier new',monospace;"><span style="color: #38761d;">rm -rf /var/lib/mysql/ibdata1</span></span></div>
</blockquote>
<div>Edita o /etc/mysql/my.cf e adiciona a seguinte linha aonde está o InnoDB:</div>
<blockquote>
<div><span style="font-family: 'courier new',monospace;">innodb_file_per_table</span></div>
</blockquote>
<div>Esta linha faz com que as informações das tabelas fiquem em arquivos em separado.</div>
<blockquote>
<div><span style="color: #38761d;">/etc/init.d/mysql start</span></div>
</blockquote>
<div>Recria o banco de dados no console do MySQL</div>
<blockquote>
<div><span style="font-family: 'courier new',monospace;">CREATE DATABASE bancodedados;</span></div>
</blockquote>
<div>Restaura o backup dos banco de dados removido:</div>
<blockquote>
<div><span style="color: #38761d;"><span style="font-family: 'courier new',monospace;">mysql -u root -p bancodedados &lt; bancodedados.sql</span></span></div>
</blockquote>
<div>Depois  desta configuração, os dados não ficam mais no ibdata1, e sim nos  arquivos *.ibd dentro da pasta do banco de dados relacionado. Em algumas  tabelas, este arquivo também cresce e, as vezes, não diminui o tamanho  mesmo eliminando dados. Mas, para este problema, existe uma maneira de  obter mais espaço no servidor após remover os dados.</div>
<div>Dentro do banco de dados, no console do MySQL, rode o comando</div>
<blockquote>
<div><span style="font-family: 'courier new',monospace;">OPTIMIZE TABLE tabela;</span></div>
</blockquote>
<div>Este comando faz com que todo espaço vazio dos dados removidos seja liberado no servidor.</div>
</div>
</div>
<div><strong>Obs:</strong> Este mesmo procedimento funciona no Windows. Vale atentar que a localização do arquivo em questão fica em:<strong> c:\ibdata\ibdata1 </strong>de acordo com o link: <a rel="nofollow" href="http://dev.mysql.com/doc/refman/5.5/en/windows-server-first-start.html">http://dev.mysql.com/doc/refman/5.5/en/windows-server-first-start.html</a></div>
<div></div>
<div>Fonte: <a href="http://wiki.adilson.net.br/">http://wiki.adilson.net.br/</a></div>
<div class="shr-publisher-555"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/05/24/resolvendo-os-problemas-do-tamanho-do-ibdata1-no-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1.3. Convertendo para um Sistema de Arquivo ext3</title>
		<link>http://blog.deserv.info/2011/03/17/1-3-convertendo-para-um-sistema-de-arquivo-ext3/</link>
		<comments>http://blog.deserv.info/2011/03/17/1-3-convertendo-para-um-sistema-de-arquivo-ext3/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 20:30:48 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Infra-Estrutura]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[ext3]]></category>
		<category><![CDATA[EXT4]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Guia de Administração do Sistema]]></category>
		<category><![CDATA[LVM]]></category>
		<category><![CDATA[Red Hat Enterprise Linux]]></category>
		<category><![CDATA[reparticionamento]]></category>
		<category><![CDATA[RHEL]]></category>
		<category><![CDATA[Sistemas de Arquivos]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[SWAP]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=553</guid>
		<description><![CDATA[O programa tune2fs pode adicionar um journal em um sistema de arquivo ext2 existente sem alterar os dados já contidos na partição. Se o sistema de arquivo já está montado ao ser transicionado, o journal será visto como o arquivo .journal no diretório raiz do sistema de arquivo. Se o sistema de arquivo não está [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.deserv.info%252F2011%252F03%252F17%252F1-3-convertendo-para-um-sistema-de-arquivo-ext3%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%221.3.%20Convertendo%20para%20um%20Sistema%20de%20Arquivo%20ext3%22%20%7D);"></div>
<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>O programa <tt>tune2fs</tt> pode adicionar um  journal em um sistema de arquivo ext2 existente sem alterar os dados já  contidos na partição. Se o sistema de arquivo já está montado ao ser  transicionado, o journal será visto como o arquivo <tt>.journal</tt> no diretório raiz do sistema de arquivo. Se o sistema de arquivo não  está montado, o journal será escondido e não aparecerá de modo algum no  sistema de arquivo. <span id="more-553"></span></p>
<p>Para converter um sistema de arquivo ext2  para ext3, autentique-se como root e digite:</p>
<table width="100%" bgcolor="#dcdcdc">
<tbody>
<tr>
<td>
<pre><tt>/sbin/tune2fs -j /dev/<tt><em>hdb</em></tt><tt><em>X</em></tt></tt></pre>
</td>
</tr>
</tbody>
</table>
<p>No comando acima, substitua /dev/<tt><em>hdb</em></tt> pelo nome do dispositivo e <tt><em>X</em></tt> pelo  número da partição.</p>
<p>Após fazer isso, certifique-se de alterar o  tipo de partição de ext2 para ext3 no <tt>/etc/fstab</tt>.</p>
<p>Se você está transicionando seu sistema de arquivo root, terá  que usar uma imagem <tt>initrd</tt> (ou disco RAM) para  inicializar a máquina. Para criá-la, execute o programa <tt>mkinitrd</tt>. Para informações sobre o uso do comando <tt>mkinitrd</tt>, digite <tt>man mkinitrd</tt>.  Também certifique-se de que a configuração de seu GRUB ou LILO carregue  o <tt>initrd</tt>.</p>
<p>Se você não conseguir  executar esta alteração, o sistema ainda inicializará, mas o sistema de  arquivo será montado como ext2 ao invés de ext3.</p>
<div class="shr-publisher-553"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->
]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/03/17/1-3-convertendo-para-um-sistema-de-arquivo-ext3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

