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

<channel>
	<title>idealMind &#187; servidores</title>
	<atom:link href="http://blog.idealmind.com.br/topicos/servidores/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.idealmind.com.br</link>
	<description>Soluções que facilitam a sua vida</description>
	<lastBuildDate>Sun, 05 Sep 2010 15:53:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Como proteger arquivos e pastas com senha no ubuntu linux usando htaccess e htpasswd</title>
		<link>http://blog.idealmind.com.br/servidores/como-proteger-arquivos-e-pastas-com-senha-no-ubuntu-linux-usando-htaccess-e-htpasswd/</link>
		<comments>http://blog.idealmind.com.br/servidores/como-proteger-arquivos-e-pastas-com-senha-no-ubuntu-linux-usando-htaccess-e-htpasswd/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 03:37:40 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[servidores]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[htaccess e htpasswd]]></category>
		<category><![CDATA[htpasswd]]></category>
		<category><![CDATA[htpasswd e htaccess]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pedir senha]]></category>
		<category><![CDATA[pedir senha para acessar arquivo]]></category>
		<category><![CDATA[pedir senha para acessar pasta]]></category>
		<category><![CDATA[restirngir acesso a pasta]]></category>
		<category><![CDATA[restringir acesso a arquivos]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu linux]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=323</guid>
		<description><![CDATA[Exemplo de como restringir acesso a pastas e arquivos através de login e senha, utlizando htaccess e htpasswd, no servidor linux]]></description>
			<content:encoded><![CDATA[<p>Seguindo o exemplo do post anterior (<a href="http://blog.idealmind.com.br/servidores/como-criar-um-link-simbolico-no-ubuntu-linux/">http://blog.idealmind.com.br/servidores/como-criar-um-link-simbolico-no-ubuntu-linux/</a>), vou exemplificar como criar uma proteção, ou seja, restringir o acesso de um arquivo através de login e senha, onde o servidor requer autenticação, através de htaccess e htpasswd, para acessar ou fazer o download de um arquivo restrito.</p>
<p>Como no exemplo do post  anterior, a idéia é proteger o download do arquivo em http://www.exemplo.com.br/backup/backupdb.sql.gz (que é um link simbólico puxando um arquivo em outro diretório do servidor).</p>
<p>A proteção pode ser feita utilizando o htacces e o htpasswd. Assim:</p>
<p>Entre no diretório onde está o arquivo que você quer restringir:<br />
$ cd /home/exemplo/backup<br />
home/exemplo/backup$ htpasswd -c restrito nomedousuario<br />
New password:<br />
Re-type new password:<br />
Adding password for user nomedousuario<br />
home/exemplo/backup$</p>
<p>onde restrito é o nome do arquivo que arqmazena os usuários e as senhas, e nome do usuário é o nome do usuário que terá acesso.Você vai digitar a senha de acesso para este usuário logo em seguida, e confirmar a senha.</p>
<p>Neste momento, você terá criado um usuário que poderá acessar o arquivo. Porém, o arquivo ainda não está protegido. Então faça o seguinte:<br />
Crie um arquivo .htaccess dentro dessa pasta (/home/exemplo/backup), utilizando, por exemplo,o vim:</p>
<p>home/exemplo/backup$ vim .htaccess</p>
<p>e insira o seguinte conteúdo no arquivo .htaccess:</p>
<p>AuthName &#8220;Acesso Restrito&#8221;<br />
AuthType Basic<br />
AuthUserFile /home/exemplo/backup/restrito<br />
require valid-user</p>
<p>salve e feche o vim (:x).</p>
<p>Pronto, a partir desse momento, para qualquer usuário que acessar http://www.exemplo.com.br/backup/backupdb.sql.gz, será solicitado um login e uma senha, e o acesso ao download do arquivo somente será liberado se o usuário for autenticado com sucesso.</p>
<p>A analogia é a mesma para restrição de diretórios.</p>
<p>Se você quiser adicionar mais usuários para se autenticar com logins e senhas diferentes, basta dar o comando:</p>
<p>home/exemplo/backup$ htpasswd restrito nomedeoutrousuario<br />
New password:<br />
Re-type new password:<br />
Adding password for user nomedeoutrousuario</p>
<p>Note que não precisa do parâmetro -c, que especifica que o arquivo restrito deve ser criado, pois ele já existe.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/servidores/como-proteger-arquivos-e-pastas-com-senha-no-ubuntu-linux-usando-htaccess-e-htpasswd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como criar um link simbólico no ubuntu linux</title>
		<link>http://blog.idealmind.com.br/servidores/como-criar-um-link-simbolico-no-ubuntu-linux/</link>
		<comments>http://blog.idealmind.com.br/servidores/como-criar-um-link-simbolico-no-ubuntu-linux/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 03:15:28 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[servidores]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[download via http]]></category>
		<category><![CDATA[link simbólico]]></category>
		<category><![CDATA[servidor apache]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu linux]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=322</guid>
		<description><![CDATA[Exemplo de como criar um link simbólico de um arquivo em outra pasta do servidor e disponibilizar para download via http.]]></description>
			<content:encoded><![CDATA[<p>Ontem eu tive a necessidade de criar um link simbólico, de forma a disponibilizar o download de um arquivo dentro de uma pasta na raíz do servidor linux.</p>
<p>Para ser mais específico, eu precisei disponibilizar o download do backup do banco de dados, via http, para usuários que não têm acesso ssh e ftp ao servidor, mas que precisam da ultima versão do backup do banco de dados. Porém, o backup fica armazenado em uma pasta dentro da raíz do servidor, de forma que não seria muito prático apenas colocar o backup do banco dentro de uma pasta real que possibilitasse o download direto via http.</p>
<p>A solução foi criar um link simbólico, para que quando os usuários solicitassem o acesso ao arquivo via http, fosse disponibilizado o download do arquivo original, na pasta original.</p>
<p>Vamos à prática.</p>
<p>Supondo que você tenha um arquivo, tipo, no meu caso, backupbd.sql.gz, na pasta /home/backups/, e você quer disponibilizar o download via http, através de um link http://www.exemplo.com.br/backup/backupdb.sql.gz, desse mesmo arquivo.</p>
<p>Se a pasta raíz do seu site se localiza em /home/exemplo ( http://www.exemplo.com.br aponta para /home/exemplo ), você vai criar a pasta backup dentro desse diretório.</p>
<p>$ cd /home/exemplo<br />
home/exemplo$ mkdir backup<br />
home/exemplo$ cd backup<br />
home/exemplo/backups$ ln -s /home/backups/backupbd.sql.gz backupdb.sql.gz</p>
<p>Pronto, você fez um link simbólico, onde se os usuários acessarem http://www.exemplo.com.br/backup/backupdb.sql.gz, será disponibilizado o download do arquivo backupbd.sql.gz localizado em /home/backups/.</p>
<p>Para criar um link simbólico de uma pasta, você usa a mesma lógica.</p>
<p>No próximo post, vou mostrar, ainda em cima deste exemplo, como proteger o download do arquivo via http, solicitando uma senha, através do .htaccess e .htpasswd.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/servidores/como-criar-um-link-simbolico-no-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criando virtual hosts no linux ubuntu 9.10</title>
		<link>http://blog.idealmind.com.br/servidores/criando-virtual-hosts-no-linux-ubuntu-9-10/</link>
		<comments>http://blog.idealmind.com.br/servidores/criando-virtual-hosts-no-linux-ubuntu-9-10/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 18:09:25 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[servidores]]></category>
		<category><![CDATA[apache 2]]></category>
		<category><![CDATA[como criar vhost]]></category>
		<category><![CDATA[como criar virtual hosts]]></category>
		<category><![CDATA[tutorial vhost]]></category>
		<category><![CDATA[tutorial virtual hosts]]></category>
		<category><![CDATA[vhosts]]></category>
		<category><![CDATA[vhosts apache]]></category>
		<category><![CDATA[vhosts apache2]]></category>
		<category><![CDATA[vhosts linux]]></category>
		<category><![CDATA[vhosts linux apache]]></category>
		<category><![CDATA[vhosts ubuntu]]></category>
		<category><![CDATA[virtual hosts]]></category>
		<category><![CDATA[virtual hosts apache]]></category>
		<category><![CDATA[virtual hosts linux]]></category>
		<category><![CDATA[virtual hosts ubuntu]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=315</guid>
		<description><![CDATA[Tutorial detalhado e completo de criação de virtual hosts (vhosts) do apache2 no Ubuntu, com exemplo de uso.]]></description>
			<content:encoded><![CDATA[<p>Para criar um virtual host no apache2 instalado no ubuntu 9.10 (acerdito que funciona também em outras versões do ubuntu), siga os passos abaixo:</p>
<p>Por padrão, o diretório do apache é /var/www</p>
<p>Você pode criar pastas dentro desse diretório, que serão os vhosts. Se o diretório estiver protegido, no terminal execute o seguinte comando:</p>
<p>sudo chmod 777 /var/www</p>
<p>Crie dentro desse diretório um novo diretório chamado, por exemplo, meusite.local<br />
No terminal:<br />
mkdir /var/www/meusite.local<br />
sudo getdit /etc/apache2/sites-available/meusite.local</p>
<p>Adicione o seguinte código:</p>
<pre class="brush: plain;">
&lt;VirtualHost *:80&gt;
	ServerName meusite.local
	DocumentRoot /var/www/meusite.local
	&lt;Directory /var/www/meusite.local/&gt;
		Options FollowSymLinks
		AllowOverride None
		Order deny,allow
		Allow from all
	&lt;/Directory&gt;
&lt;/VirtualHost&gt;
</pre>
<p>Salve e feche.</p>
<p>Edite o arquivo hosts do Ubuntu:</p>
<p>sudo gedit /etc/hosts</p>
<p>Adicione a seguinte linha:<br />
127.0.0.1	meusite.local</p>
<p>Salve e feche.</p>
<p>Abra o arquivo<br />
sudo gedit /etc/apache2/apache2.conf<br />
e certifique-se de que ele possua as linhas</p>
<p>NameVirtualHost *:80<br />
Listen 80</p>
<p>Edite se preciso (adicione as linhas), salve e feche.</p>
<p>No terminal, desabilite o site default do apache:<br />
a2dissite default<br />
e habilite o seu vhost:<br />
a2ensite meusite.local</p>
<p>Dê o seguinte comando<br />
sudo /etc/init.d/apache2 reload</p>
<p>Vá até o diretório /var/www/meusite.local, e crie um novo arquivo, index.html, e insira e salve o seguinte código:</p>
<pre class="brush: xml;">
&lt;h1&gt;Funciona!&lt;/h1&gt;&lt;h2&gt;Esta é a página inicial de meusite.local&lt;/h2&gt;
</pre>
<p>Abra o navegador e acesse http://meusite.local</p>
<p>Você deverá ver as mensagens editadas no arquivo.</p>
<p>Pronto! Você criou um virtual host!</p>
<p>Para criar outros, siga o mesmo processo, substituindo meusite.local pelo nome do seu novo virtual host.</p>
<p>Só para deixar claro, o diretório não precisa ter o mesmo nome do virtual host.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/servidores/criando-virtual-hosts-no-linux-ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache flv streaming &#8211; configurando sem usar php</title>
		<link>http://blog.idealmind.com.br/servidores/apache-flv-streaming-configurando-sem-usar-php/</link>
		<comments>http://blog.idealmind.com.br/servidores/apache-flv-streaming-configurando-sem-usar-php/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 02:55:43 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[servidores]]></category>
		<category><![CDATA[apache flash streaming]]></category>
		<category><![CDATA[apache flv]]></category>
		<category><![CDATA[apache flv streaming]]></category>
		<category><![CDATA[apache streaming server]]></category>
		<category><![CDATA[apache video]]></category>
		<category><![CDATA[flv streaming]]></category>
		<category><![CDATA[http streaming apache]]></category>
		<category><![CDATA[php streaming]]></category>
		<category><![CDATA[streaming server]]></category>
		<category><![CDATA[streaming video apache]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=89</guid>
		<description><![CDATA[Módulo desenvolvido para configurar o Apache como um servidor streaming.]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Hoje eu estava vendo algumas configurações do <a title="FlowPlayer" href="http://www.flowplayer.org" target="_blank">flowplayer</a>, e acabei encontrando uma<a title="Apache FLV streaming done right! (no php)" href="http://flowplayer.org/forum/5/14679" target="_blank"> solução para configurar o apache como um servidor streaming</a> no fórum do flowplayer.</p>
<p>É uma solução desenvolvida por Paul Querna, o <a title="mod_flv" href="http://people.apache.org/~pquerna/modules/mod_flvx.c" target="_blank">mod_flv</a>. É um modulo desenvovido para ser configurado no Apache. Lá também tem uma solução desenvolvida pelo autor do assunto.</p>
<p>Eu não cheguei a testar, pois no momento ainda não tenho necessidade, mas acho que em breve vou precisar, e acredito ser uma ótima solução para que trabalha com vídeos online ou está desenvolvendo alguma solução para FLV streaming.</p>
<p>O link é <a href="http://flowplayer.org/forum/5/14679">http://flowplayer.org/forum/5/14679</a>.</p>
<p>O fórum está em inglês. Se você precisar de ajuda, escreva para mim.</p>
<p>Se você experimentar, deixe um comentário aqui para falar da sua experiência!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/servidores/apache-flv-streaming-configurando-sem-usar-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Workbench, MySQL Administrator e MySQL Query Browser</title>
		<link>http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/</link>
		<comments>http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 02:42:03 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[download mysql]]></category>
		<category><![CDATA[download workbench]]></category>
		<category><![CDATA[mysql 5]]></category>
		<category><![CDATA[mysql 5.0]]></category>
		<category><![CDATA[mysql administrator]]></category>
		<category><![CDATA[mysql download]]></category>
		<category><![CDATA[mysql query browser]]></category>
		<category><![CDATA[mysql workbench]]></category>
		<category><![CDATA[mysql workbench download]]></category>
		<category><![CDATA[procedure mysql]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=70</guid>
		<description><![CDATA[MySQL Workbench, MySQL Administrator e MySQL Query Browser - poderosas ferramentas desenvolvidas pela prória MySQL, para criar, administrar, executar e otimizar comandos SQL no banco de dados MySQL.]]></description>
			<content:encoded><![CDATA[<p>Hoje vou apresentar, se você ainda não conhece, ferramentas muito práticas para se trabalhar com banco de dados MySQL.</p>
<p>Essas ferramentas são desenvolvidas pelo próprio pessoal do MySQL, e são fornecidas gratuitamente, assim como o banco de dados, sob licença GPL.</p>
<p><strong>MySQL Workbench</strong></p>
<p>Uma ferramenta que eu descobri há pouco tempo é o <a title="MySQL Workbench" href="http://dev.mysql.com/downloads/workbench/5.1.html" target="_blank">MySQL Workbench</a>. Essa é uma ferramenta visual muito prática para criar, gerenciar e documentar um banco de dados. É intuitiva e fácil de se trabalhar. Você pode criar estruturas de dados complexas, e até importar bancos de dados existentes em sql.</p>
<p>Você pode fazer o <a title="MySQL Workbench Download" href="http://dev.mysql.com/downloads/gui-tools/5.0.html" target="_blank">download do MySQL Workbench aqui</a>.</p>
<p><strong>MySQL Administrator</strong></p>
<p>É uma poderosa ferramenta de administração de banco de dados. Você pode administrar usuários, fazer e restaurar backups do banco de dados, administrar conexões, acompanhar o desempenho do banco de dados como queries lentas, reiniciar o servidor MySQL, administrar as configurações dos bancos e do servidor, e muitas outras coisas. Algumas coisas são restritas a serem usadas somente no computador local, mas dá para se fazer muita coisa remotamente também.</p>
<p><strong>MySQL Query Browser</strong></p>
<p>É uma ótima ferramenta para se executar queries e scripts SQL. Os resultados de um select são trazidos na própria tela, permitindo desenvolver SQLs complexas e visualizar se o resultado é o que esperamos. Além disso, é possível criar views, inserir e alterar dados, criar triggers e exportar os resultados de um select . Também é ótimo para otimização de Queries usando o comando explain.</p>
<p>O MySQL Administrator e o MySQL Query Browser fazem parte do pacote MySQL GUI Tools, que inclui também mais uma ferramenta chamada MySQL Migration Toolkit (o próprio nome já diz para que serve &#8211; mas nunca usei, então não posso escrever sobre ele).</p>
<p>Você pode fazer o <a title="MySQL GUI Tools Download" href="http://dev.mysql.com/downloads/gui-tools/5.0.html" target="_blank">download do MySQL GUI Tools clicando aqui</a>.</p>
<p>Veja abaixo alguns screenshots dos 3 programas:</p>

<a href='http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/attachment/workbench1-2/' title='MySQL Workbench MySQL Model Screenshot'><img width="150" height="150" src="http://blog.idealmind.com.br/wp-content/uploads/2009/10/workbench11-150x150.jpg" class="attachment-thumbnail" alt="MySQL Workbench MySQL Model" title="MySQL Workbench MySQL Model Screenshot" /></a>
<a href='http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/attachment/workbench2-2/' title='MySQL Workbench EER Diagram Screenshot'><img width="150" height="150" src="http://blog.idealmind.com.br/wp-content/uploads/2009/10/workbench21-150x150.jpg" class="attachment-thumbnail" alt="MySQL Workbench EER Diagram" title="MySQL Workbench EER Diagram Screenshot" /></a>
<a href='http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/attachment/administrator1/' title='MySQL Adminitrator Backup Screenshot'><img width="150" height="150" src="http://blog.idealmind.com.br/wp-content/uploads/2009/10/administrator1-150x150.jpg" class="attachment-thumbnail" alt="MySQL Adminitrator Backup" title="MySQL Adminitrator Backup Screenshot" /></a>
<a href='http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/attachment/administrator4/' title='MySQL Administrator Startup Variables Screenshot '><img width="150" height="150" src="http://blog.idealmind.com.br/wp-content/uploads/2009/10/administrator4-150x150.jpg" class="attachment-thumbnail" alt="MySQL Administrator Startup Variables" title="MySQL Administrator Startup Variables Screenshot" /></a>
<a href='http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/attachment/administrator3/' title='MySQL Administrator Users Screenshot'><img width="150" height="150" src="http://blog.idealmind.com.br/wp-content/uploads/2009/10/administrator3-150x150.jpg" class="attachment-thumbnail" alt="MySQL Administrator Users" title="MySQL Administrator Users Screenshot" /></a>
<a href='http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/attachment/administrator2/' title='MySQL Adminitrator Health Screenshot'><img width="150" height="150" src="http://blog.idealmind.com.br/wp-content/uploads/2009/10/administrator2-150x150.jpg" class="attachment-thumbnail" alt="MySQL Adminitrator Health" title="MySQL Adminitrator Health Screenshot" /></a>
<a href='http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/attachment/query-browser1/' title='MySQL Query Browser Script Tab Screenshot'><img width="150" height="150" src="http://blog.idealmind.com.br/wp-content/uploads/2009/10/query-browser1-150x150.jpg" class="attachment-thumbnail" alt="MySQL Query Browser Script Tab" title="MySQL Query Browser Script Tab Screenshot" /></a>
<a href='http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/attachment/query-browser2/' title='MySQL Query Browser Resultset Screenshot'><img width="150" height="150" src="http://blog.idealmind.com.br/wp-content/uploads/2009/10/query-browser2-150x150.jpg" class="attachment-thumbnail" alt="MySQL Query Browser Resultset" title="MySQL Query Browser Resultset Screenshot" /></a>

<p>Abraços e até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/servidores/mysql-workbench-mysql-administrator-e-mysql-query-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forçar download em servidor remoto como Amazon S3 com opção &#8220;salvar como&#8221;</title>
		<link>http://blog.idealmind.com.br/servidores/forcar-download-em-servidor-remoto-como-amazon-s3-com-opcao-salvar-como/</link>
		<comments>http://blog.idealmind.com.br/servidores/forcar-download-em-servidor-remoto-como-amazon-s3-com-opcao-salvar-como/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 03:26:46 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[servidores]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[amazon S3]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[httpd.conf]]></category>
		<category><![CDATA[mod_proxy]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[mod_rewrite apache]]></category>
		<category><![CDATA[rewrite htaccess]]></category>
		<category><![CDATA[rewrite mod apache]]></category>
		<category><![CDATA[salvar como]]></category>
		<category><![CDATA[save as]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=23</guid>
		<description><![CDATA[Este artigo mostra como fazer para que apareça a opção "salvar como" para downloads de arquivos hospedados em servidores remotos, como Amazon S3.]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Este artigo mostra<strong> como fazer para que apareça a opção &#8220;salvar como&#8221; para downloads de arquivos hospedados em servidores remotos</strong>, o que é muito útil para se poupar recursos do servidor.</p>
<p>Para poder utilizar a solução apresentada aqui, será necessário que o Apache esteja com os módulos mod_rewrite e mod_proxy habilitados, ou que você possa editar o arquivo httpd.conf do servidor Apache (ou solicitar as configurações ao seu serviço de hospedagem).</p>
<p>Há um certo tempo atrás a equipe do <a title="meuInglês" href="http://www.meuingles.com/" target="_blank">meuInglês</a> decidiu hospedar os arquivos pesados do site, como FLV e MP3, e as imagens, nos servidores <a title="Amazon S3" href="http://aws.amazon.com/s3/" target="_blank">Amazon S3</a>. As vantagens eram muitas, tais como a rapidez no carregamento dos arquivos, o baixo custo e a segurança envolvidos. Tudo era maravilhoso, até que esbarrei com as opções de download que o <a title="meuInglês" href="http://www.meuingles.com/" target="_blank">meuInglês</a> oferece aos seus usuários. Outros sites concorrentes também hospedam seus arquivos na Amazon S3, e a opção de download para seus usuários é de clicar com o botão direito do mouse para selecionar salvar o destino do link (pelo menos com instrução, para facilitar a vida de usuários menos experientes).</p>
<p>Particularmente, acho esta solução muito deselegante, pois é tão cômodo para o usuário simplesmente clicar no botão de download e aparecer uma janelinha pedindo para &#8220;Salvar o arquivo como&#8230;&#8221;. Comecei a googlar pesquisando uma solução.</p>
<p>A primeira coisa que fiz foi usar a função <a title="função fopen() do php" href="http://br.php.net/manual/pt_BR/function.fopen.php" target="_blank">fopen()</a> do php com permissão a acessar arquivos remotos, e depois setar o header do php para disponibilizar o arquivo como <em>attachment</em>. Logo vi em conjunto com a equipe de tecnologia que isso não seria uma solução, mas sim um problema, pois a função fopen() baixava os arquivos da Amazon S3 para o servidor, e depois disponibilizava o arquivo para o usuário, logo, iríamos pagar os custos de tranferência de dados duas vezes: uma pela transferência dos arquivos da Amazon S3 para o servidor, e depois do servidor para o usuário, além do tempo de download ser a soma desses dois downloads.</p>
<p>Perdi três preciosos dias buscando uma solução, pesquisando, pensando, tentando várias coisas que encontrei, tais como setar cabeçalhos (HTTP Header) diretamente nos arquivos, ou ao subir os arquivos para a Amazon S3&#8230; Estava quase desistindo, quando encontrei um <a title="Apache e .htdocs" href="http://www.askapache.com/htaccess/pdf-cookies-headers-rewrites.html" target="_blank">site maravilhoso com ótimas dicas de configurações do Apache e do .htdocs</a> (salve nos seus favoritos! Você vai precisar!).</p>
<p>Então saí da câmara escura e comecei a enxergar novos horizontes.</p>
<p>Criei uma pasta downloads na raíz do site e dentro dela coloquei um arquivo .htacces com a seguinte configuração:</p>
<pre class="brush: plain;">

IndexIgnore *
RewriteEngine On

RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^mp3/(.*)$ http://seubucket.s3.amazonaws.com/pasta/$1?%1 [P,E=PERMITE:1]

RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^pdf/(.*)$ http://seubucket.s3.amazonaws.com/pasta/$1?%1 [P,E=PERMITE:1]

RewriteCond %{ENV:PERMITE} !1$ [NC]
RewriteRule .* - [R=404,NS,L]

Header set Content-Disposition &quot;attachment;&quot; env=PERMITE
</pre>
<p><strong>Explicando:</strong></p>
<ol>
<li>A primeira linha simplesmente não permite listar os arquivos do diretório.</li>
<li>A segunda linha habilita o <a title="mod_rewrite" href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html" target="_blank">módulo rewrite</a> do apache.</li>
<li>A quarta linha (assim como a sexta) pega os parâmetros passados pela url (como a autenticação para arquivos protegidos na Amazon S3) através de uma condição Rewrite e coloca no lugar de %1 na linha seguinte.</li>
<li>A quinta linha (assim como a sétima) faz o rewrite, ou seja, reescreve a url recebida para a url original. A mágica acontece ao setar a <em>flag </em>P, que diz que a url será acessada via<a title="mod_proxy" href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html" target="_blank"> mod_proxy</a> do Apache. Nesta linha também é setada uma variável PERMITE, que terá o valor 1 se a condição RewriteRule for satisfeita.</li>
<li>Na décima linha, verifico se a varíavel PERMITE possui valor diferente de 1, através de uma condição Rewrite, e, se for o caso, apresento uma página de erro 404, e ecerro a execução do código (<em>flag</em> L).</li>
<li>Finalmente, na linha 13, se o código chegar até lá (ou seja, pelo menos uma das duas condições foi satisfeita =&gt; PERMITE = 1), defino o cabeçalho do conteúdo como attachment, ou seja, para download, e então aparece aquela janelinha linda de &#8220;Salvar arquivo como&#8230;&#8221;</li>
</ol>
<p>Desta forma, para fazer download do arquivo com a opção &#8220;Salvar como&#8221;, basta que a url do botão/link de download seja no formato</p>
<pre class="brush: plain;">

http://www.exemplo.com.br/downloads/mp3/nomedoarquivo.mp3?par=XXX&amp;par=YYY ou

http://www.exemplo.com.br/downloads/pdf/nomedoarquivo.pdf?par=XXX&amp;par=YYY

(os parâmetros são opcionais dependendo do que você estiver fazendo)
</pre>
<p>Se o arquivo</p>
<pre class="brush: plain; highlight: [1];">

http://seubucket.s3.amazonaws.com/pasta/nomedoarquivo.pdf?par=XXX&amp;par=YYY
</pre>
<p>existir aparecerá a janela de download, caso contrário, será exibido um erro 404.</p>
<p>Enfim, como disse no começo, para isso funcionar, o servidor Apache deve estar com os módulos mod_rewrite e mod_poxy, e mod_proxy_http habilitados. Para isso, certifique-se de que as seguintes linhas do httpd.conf estejam descomentadas:</p>
<pre class="brush: plain;">

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
</pre>
<p>Eu usei Apache 2.2.X e não testei em outras versões.</p>
<p>Espero que este artigo tenha sido útil para você, e, se era isso o que você estava procurando, fico feliz se você encontrou a solução em menos de 3 dias! <img src='http://blog.idealmind.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Até a proxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/servidores/forcar-download-em-servidor-remoto-como-amazon-s3-com-opcao-salvar-como/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
