<?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>pahim.org &#187; Artigos</title>
	<atom:link href="http://www.pahim.org/category/artigos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pahim.org</link>
	<description></description>
	<lastBuildDate>Mon, 25 Jul 2011 18:40:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Virtualizando Desktops com OSDVT</title>
		<link>http://www.pahim.org/2011/07/25/virtualizando-desktops-com-osdvt/</link>
		<comments>http://www.pahim.org/2011/07/25/virtualizando-desktops-com-osdvt/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 13:24:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=627</guid>
		<description><![CDATA[O OSDVT é um projeto que tem o objetivo de oferecer uma estrutura de virtualização de desktops, usando o KVM como Hypervisor, o SPICE como protocolo de acesso remoto e uma interface Python/GTK para que o cliente gerencie suas VMs. Todo o código é licenciado sob GPL. Arquitetura: Nesse artigo iremos percorrer todo o processo<a href="http://www.pahim.org/2011/07/25/virtualizando-desktops-com-osdvt/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://www.ucs.br/projetos/osdvt" target="_blank">OSDVT</a> é um projeto que tem o objetivo de oferecer uma estrutura de virtualização de desktops, usando o KVM como Hypervisor, o SPICE como protocolo de acesso remoto e uma interface Python/GTK para que o cliente gerencie suas VMs. Todo o código é licenciado sob GPL.</p>
<p>Arquitetura:</p>
<p><img class="alignnone" title="OSDVT" src="http://www.ucs.br/projetos/osdvt/images/3/32/Arch.png" alt="" width="360" height="286" /></p>
<p>Nesse artigo iremos percorrer todo o processo de instalação da última versão, a 0.2.2, em um servidoor Fedora 15.</p>
<p><strong><span id="more-627"></span>Preparação</strong></p>
<p>Para esse artigo, usaremos o Fedora 15. O OSDVT 0.2.2 necessita do Spice versão 0.8 para funcionar. No moento que escrevo, as únicas distribuições que possuem essa versão do Spice em seus repositórios são:</p>
<ul>
<li>Fedora 15</li>
<li>Red Hat Enterprise Linux 6</li>
<li>Fedora 14 usando repositório virt-preview.</li>
</ul>
<p>&nbsp;</p>
<p>O CentOS 6 ainda está com Spice v0.4 em seus repositórios, mas o update para 0.8 deve sair em breve.</p>
<p>O spice-server <strong></strong>só funciona em servidores x86_64.</p>
<p><span style="text-decoration: underline;"><strong>SERVIDOR</strong></span></p>
<p>Vamos parar temporariamente o iptables:</p>
<pre>service iptables stop</pre>
<p><strong>Pacotes</strong></p>
<p>Instale os pacotes necessários:</p>
<pre>yum install qemu-kvm qemu-img spice-server \
       mysql-server MySQL-python python-ldap \
       bridge-utils tunctl Django httpd \
       mod_ssl mod_python</pre>
<p><strong>Banco de dados</strong></p>
<p>Inicialize o MySQL:</p>
<pre>service mysqld start</pre>
<p>Defina senha de root do MySQL:</p>
<pre>mysqladmin -u root password 'osdvt'</pre>
<p>Configure o serviço para inicializar no boot:</p>
<pre>chkconfig mysqld on</pre>
<p>Crie o banco de dados:</p>
<pre>mysql --user=root --password=osdvt -e "create database db_osdvt"</pre>
<p><strong>OSDVT Server</strong></p>
<p>Baixe e extraia o pacote do OSDVT Server:</p>
<pre>cd /usr/local/
wget http://www.ucs.br/projetos/osdvt/download/osdvt-server-0.2.2.tgz
tar xvfz osdvt-server-0.2.2.tgz</pre>
<p><strong>Server Web Admin</strong></p>
<p>Entre no diretório do Web Admin</p>
<pre>cd /usr/local/osdvt/osdvtweb</pre>
<p>Ajuste o arquivo &#8220;settings.py&#8221; com as informações do seu banco de dados, caso você tenha host/db/user/pass diferentes do default.</p>
<p>Depois disso, crie a estrutura do banco de dados. Durante esse passo, você poderá definir a senha de root do Django Admin, caso seja a primeira vez que você executa esse comando:</p>
<pre>python manage.py syncdb</pre>
<p>Teste se o Django Admin está funcionando usando o webserver do Django. Isso é apenas um teste, pois iremos usar o Apache para rodar o Django Admin.</p>
<pre>python manage.py runserver 0.0.0.0:8000</pre>
<p>Acesse a URL do Django Admin pelo seu browser (http://server:8000/admin/). Após efetuar o login, você deverá ver uma página como esta:</p>
<p><a href="http://www.ucs.br/projetos/osdvt/index.php/File:022-01.png"><img class="alignnone" title="DjangoAdmin" src="http://www.ucs.br/projetos/osdvt/images/6/61/022-01.png" alt="" width="336" height="277" /></a></p>
<p>Use &#8220;Ctrl+c&#8221; para encerrar o webserver do Django.</p>
<p><strong>Server Daemon</strong></p>
<p>Entre no diretório raiz do daemon:</p>
<pre>cd /usr/local/osdvt/server/</pre>
<p>Edite o arquivo &#8220;etc/osdvt.conf&#8221;. Toda a comunicação entre o cliente e o servidor OSDVT é criptografada com SSL. Um certificado autoassinado é fornecido, mas você pode usar o seu.</p>
<p>Adicionalmente, você pode desabilitar a autenticação LDAP para efetuar testes.</p>
<p>Copie o script de inicialização para o diretório &#8220;init.d&#8221;:</p>
<pre>cp /usr/local/osdvt/server/osdvtd /etc/init.d/</pre>
<p>Adicione o osdvtd ao chkconfig:</p>
<pre>chkconfig --add osdvtd</pre>
<p>Agora, copie o arquivo de configuração do apache para o diretório adequado:</p>
<pre>cp /usr/local/osdvt/server/osdvt.conf /etc/httpd/conf.d/</pre>
<p>Caso você esteja usando o Red Hat 6 ou CentOS 6, você precisa alterar o caminho do Django Media, pois a versão do Python nessas distribuição é a 2.6:</p>
<pre>Alias /media/ /usr/lib/python2.7/site-packages/django/contrib/admin/media/</pre>
<p>Para:</p>
<pre>Alias /media/ /usr/lib/python2.6/site-packages/django/contrib/admin/media/</pre>
<p>Configure o httpd para inicializar no boot:</p>
<pre>chkconfig httpd on</pre>
<p>Inicialize o httpd:</p>
<pre>service httpd start</pre>
<p>Agora, abra o &#8220;Django Admin&#8221; via browser: https://server/osdvtweb/admin/ (para usar o https você precisa ter isntalado o pacote &#8220;mod_ssl&#8221; ).</p>
<p>Crie uma bridge, que será usada para conectar as VMs na sua rede local. Edite o arquivo &#8220;/etc/sysconfig/network-scripts/ifcfg-eth0&#8243;, deixando somente as linhas abaixo:</p>
<pre>DEVICE=eth0
ONBOOT=yes
BRIDGE=br0</pre>
<p>Agora, crie o arquivo &#8220;/etc/sysconfig/network-scripts/ifcfg-br0&#8243;, com suas configurações de rede:</p>
<pre>DEVICE=br0
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Bridge
NAME="bridge"</pre>
<p>Reinicie o serviço &#8220;network&#8221;:</p>
<pre>service network restart</pre>
<p><strong>Firewall</strong></p>
<p>Inicie o iptables:</p>
<pre>service iptables start</pre>
<p>Libere o acesso http e https:</p>
<pre>iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT</pre>
<p>Libere o acesso ao Daemon do OSDVT:</p>
<pre>iptables -I INPUT -p tcp --dport 6970 -j ACCEPT</pre>
<p>Libere as portas que serão usadas pelo SPICE:</p>
<pre>iptables -I INPUT -p tcp --dport 5930:5999 -j ACCEPT</pre>
<p>Salve as regras criadas:</p>
<pre>service iptables save</pre>
<p><strong>Osdvt service</strong></p>
<p>Finalmente, podemos iniciar o serviço osdvt:</p>
<pre>service osdvtd start</pre>
<p><span style="text-decoration: underline;"><strong>CLIENTE</strong></span></p>
<p>Os passos a seguir deverão ser efetuados na estação que acessará as máquinas virtuais. Aqui os testes foram feitos em uma estação com Fedora 15.</p>
<p><strong>Packages</strong></p>
<pre>yum install spice-client python-dialog</pre>
<p><strong>OSDVT Client</strong></p>
<p>Baixe e extraia o pacote com o cliente do OSDVT:</p>
<pre>cd ~
wget http://www.ucs.br/projetos/osdvt/download/osdvt-clients-0.2.2.tgz
tar xvfz osdvt-clients-0.2.2.tgz</pre>
<p>Execute o cliente:</p>
<pre>python ~/osdvt/osdvt-client.py</pre>
<p>ou, ajuste o arquivo &#8220;osdvt-labs-client.py&#8221;&#8230;</p>
<pre>interface = "eth0"
server = "192.168.0.1"
port = 6970</pre>
<p>&#8230; e execute o &#8220;Labs Client&#8221;, que será autenticado pelo IP local em vez de usuário/senha:</p>
<pre>python ~/osdvt/osdvt-labs-client.py</pre>
<p>No próximo artigo mostrarei como criar e usar sua primeira máquina virtual.</p>
<p>Referência: <a href="http://www.ucs.br/projetos/osdvt/index.php/Documentation" target="_blank">http://www.ucs.br/projetos/osdvt/index.php/Documentation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2011/07/25/virtualizando-desktops-com-osdvt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Appliances na hora com BoxGrinder</title>
		<link>http://www.pahim.org/2011/07/12/appliances-na-hora-com-boxgrinder/</link>
		<comments>http://www.pahim.org/2011/07/12/appliances-na-hora-com-boxgrinder/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 19:10:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[fedora15]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[virtualização]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=529</guid>
		<description><![CDATA[O post de hoje é sobre uma ferramenta muito legal chamada BoxGrinder. O BoxGrinder é um projeto membro da comunidade JBoss, produzido pelo Project Odd Team e está (finalmente) nos repositórios oficiais do Fedora 15. O objetivo dessa ferramenta é gerar imagens (appliances) de máquinas virtuais, personalizando a instalação, determinando que pacotes serão instalados e executando tarefas<a href="http://www.pahim.org/2011/07/12/appliances-na-hora-com-boxgrinder/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="BoxGrinder" src="http://boxgrinder.org/images/boxgrinder_logo_450px.gif" alt="" width="187" height="46" />O post de hoje é sobre uma ferramenta muito legal chamada <a href="http://boxgrinder.org/" target="_blank">BoxGrinder</a>. O BoxGrinder é um projeto membro da comunidade <a href="http://www.jboss.org/" target="_blank">JBoss</a>, produzido pelo <a href="http://projectodd.org/" target="_blank">Project Odd Team</a> e está (finalmente) nos repositórios oficiais do Fedora 15.</p>
<p>O objetivo dessa ferramenta é gerar imagens (appliances) de máquinas virtuais, personalizando a instalação, determinando que pacotes serão instalados e executando tarefas pós instalação. Algo muito parecido com o que o <a href="http://fedoraproject.org/wiki/Anaconda/Kickstart" target="_blank">kickstart</a> faz, mas com o foco em virtualização. Assim, o BoxGrinder tem a capacidade de gerar o seu  appliance sem intervenção, nos formatos RAW, vmware e ec2, que podem ser usados pelo KVM, VmWare e pelo serviço de cloud da Amazon, respectivamente. Os formatos vmware e ec2 são gerados fazendo uma conversão a partir do RAW por meio de plugins.</p>
<p>Observe o esquema a seguir:</p>
<p><a href="http://www.pahim.org/wp-content/uploads/2011/07/boxgrinderflux.png"><img class="alignnone size-full wp-image-539" title="boxgrinderflux" src="http://www.pahim.org/wp-content/uploads/2011/07/boxgrinderflux.png" alt="" width="548" height="227" /></a></p>
<p><span id="more-529"></span>Após gerar a imagem no formato base(RAW), o BoxGrinder faz uso de plugins de conversão para os formatos vmware ou ec2. Depois disso, ainda é possível fazer a entrega do appliance usando os plugins de entrega disponíveis. Observe os SOs, formatos e métodos de entrega suportados:</p>
<p>Sistemas operacionais suportados<br />
- CentOS (centos)<br />
- Scientific Linux (sl)<br />
- Red Hat Enterprise Linux (rhel)<br />
- Fedora (fedora)</p>
<p>Formatos suportados<br />
- VMware (vmware)<br />
- Amazon Elastic Compute Cloud (ec2)<br />
- VirtualBox (virtualbox)</p>
<p>Métodos de entrega<br />
- Amazon Simple Storage Service (s3)<br />
- Amazon Simple Storage Service (ami)<br />
- Amazon Simple Storage Service (cloudfront)<br />
- Elastic Block Storage (ebs)<br />
- SSH File Transfer Protocol (sftp)<br />
- ElasticHosts (elastichosts)<br />
- Local file system (local)</p>
<p>O projeto BoxGrinder possui 3 componentes: <strong>build</strong>, <strong>rest</strong> e <strong>studio:</strong></p>
<p><img class="alignnone" title="BoxGrinderComponnents" src="http://boxgrinder.org/images/overview.png" alt="" width="385" height="367" /></p>
<p>Nesse post, usaremos apenas o <strong>build</strong>, que é o utilitário para geração dos appliances. O <strong>rest</strong> é um servidor para processar nos nós (usando o <strong>build</strong>) as solicitações de geração de appliances, oferecendo uma API para interação. O <strong>studio</strong> é uma interface web que ainda não está pronta. Esse seria o ambiente completo para o BoxGrinder:</p>
<p><img class="alignnone" title="BoxGrinderFull" src="http://boxgrinder.org/images/bgrest_process.png" alt="" width="600" height="192" /></p>
<p>Vamos por a mão na massa que vai ficar mais fácil de entender&#8230;</p>
<p>O objetivo aqui é criar um appliance Fedora 14 com apache instalado e configurado para ser inicializado automaticamente. O formato será o VMware e a entrega será via sftp.</p>
<p>Usando o Fedora 15, primeiro, precisamos instalar o pacote do <em>boxgrinder-build</em>:</p>
<pre>[root@localhost ~]# yum install rubygem-boxgrinder-build</pre>
<p>Vou criar um diretório de trabalho:</p>
<pre>[root@localhost ~]# mkdir appliances
[root@localhost ~]# cd appliances</pre>
<p>O segundo passo é criar um arquivo de definição para o appliance. Vou criar um arquivo chamado<em> f14-httpd.appl</em>, com o seguinte conteúdo:</p>
<pre>name: f14-httpd
summary: Appliance Fedora 14 com httpd.
os:
  name: fedora
  version: 14
hardware:
  cpus: 2
  memory: 256
  partitions:
    "/":
      size: 2
packages:
  - @core
  - httpd
repos:
  - name: fedora
    baseurl: http://fedora.c3sl.ufpr.br/linux/releases/14/Fedora/x86_64/os/
post:
  base:
    - "chkconfig httpd on"</pre>
<p>Nesse arquivo definimos o OS <strong>fedora</strong> versão <strong>14</strong>, que terá uma partição <strong>&#8220;/&#8221;</strong> de <strong>2</strong>GB, <strong>2 vcpus</strong> e <strong>256</strong>MB de RAM. Serão instalados os pacotes do grupo <strong>core</strong> e o pacote <strong>httpd</strong>. Tudo isso usando o repositório especificado em <strong>repos</strong> (usar um <a href="http://www.google.com.br/search?q=repositorio+local+fedora" target="_blank">repositório local</a> melhora bastante o desempenho). Após a criação do formato <strong>base </strong>(RAW) será executado o comando <strong>chkconfig </strong>especificado.</p>
<p><em>(UPDATE) Os repositórios padrões de cada distro são automaticamente adicionados quando você define o &#8220;OS&#8221;. Só é necessário informar o parâmetro &#8220;repos&#8221; em caso de repositórios personalizados. Thanks Marek. </em></p>
<p>Depois disso, é necessário criar no diretório <em>~/.boxgrinder/</em> um arquivo de configuração chamado <em>config</em> para os plugins:</p>
<pre>[root@localhost ~]# mkdir ~/.boxgrinder
[root@localhost ~]# vi ~/.boxgrinder/config</pre>
<p>E nesse arquivo colocar os seguintes parâmetros:</p>
<pre>plugins:
  vmware:
    type: personal
    thin_disk: true
  sftp:
    path: /var
    username: root
    password: minhasenha
    host: vmserver.domain.com</pre>
<p>Veja <a href="http://boxgrinder.org/tutorials/boxgrinder-build-plugins/" target="_blank">aqui</a> todas as configurações de plugins.</p>
<p>Hora de executar o comando para gerar o appliance:</p>
<pre>boxgrinder-build f14-httpd.appl -p vmware -d sftp</pre>
<p>Podemos acompanhar a criação do appliance pelo arquivo <em>log/boxgrinder.log</em></p>
<p>Acessando o diretório de entrega no servidor, temos:</p>
<pre>[root@vmserver var]# ls -lah f14-httpd-1.0-fedora-14-x86_64-vmware.tgz
-rw-r--r--. 1 root root 173M Jul 12 15:50 f14-httpd-1.0-fedora-14-x86_64-vmware.tgz</pre>
<p>Descompactando o arquivo:</p>
<pre>[root@vmserver var]# tar xvfz f14-httpd-1.0-fedora-14-x86_64-vmware.tgz
f14-httpd-1.0-fedora-14-x86_64-vmware/
f14-httpd-1.0-fedora-14-x86_64-vmware/README
f14-httpd-1.0-fedora-14-x86_64-vmware/f14-httpd.vmx
f14-httpd-1.0-fedora-14-x86_64-vmware/f14-httpd.vmdk</pre>
<p>Observe que agora temos o arquivo vmx, com as configurações da VM, e o vmdk, a própria imagem gerada.</p>
<p>Tudo pronto&#8230; você já pode subir seu appliance usando o VMware. Mas claro que você prefere o <a href="http://www.linux-kvm.org" target="_blank">KVM</a>!</p>
<p>Até o próximo post.</p>
<p><script type="text/javascript">// <![CDATA[
          bb_bid = "120342";        bb_lang = "pt-BR";        bb_keywords = "linux,servidores,datacenter,hospedagem,hacker,software livre,open source,cloud,nuvem,fotografia,smartphone,android";        bb_name = "custom";        bb_limit = "7";        bb_format = "bbc";
// ]]&gt;</script><br />
<script type="text/javascript" src="http://static.boo-box.com/javascripts/embed.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2011/07/12/appliances-na-hora-com-boxgrinder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Roteamento por padrão de tráfego</title>
		<link>http://www.pahim.org/2011/07/11/roteamento-por-padrao-de-trafego/</link>
		<comments>http://www.pahim.org/2011/07/11/roteamento-por-padrao-de-trafego/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 22:04:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netfilter]]></category>
		<category><![CDATA[roteamento]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=450</guid>
		<description><![CDATA[Esse é um post no mínimo 6 anos atrasado. Há muito tempo usei esse recurso para fazer o roteamento de acordo com o tráfego de rede, marcando os pacotes com a tabela mangle do iptables. Como é um assunto recorrente em várias listas de discussão e vez por outra alguém precisa, segue a dica: É<a href="http://www.pahim.org/2011/07/11/roteamento-por-padrao-de-trafego/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Netfilter" src="http://www.netfilter.org/images/netfilter-logo2.png" alt="" width="159" height="43" />Esse é um post no mínimo 6 anos atrasado. Há muito tempo usei esse recurso para fazer o roteamento de acordo com o tráfego de rede, marcando os pacotes com a tabela <em>mangle</em> do <em>iptables</em>. Como é um assunto recorrente em várias listas de discussão e vez por outra alguém precisa, segue a dica:</p>
<p>É necessária a instalação do &#8220;iproute2&#8243;.</p>
<p><strong>1º</strong> Você precisa marcar os pacotes&#8230; cada numero de marcação será posteriormente associado a uma tabela de roteamento. Pra marcar, use a tabela mangle do iptables, na CHAIN PREROUTING, pra que os pacotes cheguem no &#8220;roteamento&#8221; devidamente marcados:</p>
<pre>iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 25 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 110 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 80 -j MARK --set-mark 4</pre>
<p><span id="more-450"></span>Aqui você pode se divertir com as regras do <em>iptables</em>, marcando qualquer tráfego que desejar. Verifique os pacotes marcados:</p>
<pre>iptables -t mangle -L -n -v</pre>
<p><strong>2º</strong> Você agora precisa criar &#8220;tabelas&#8221; e vinculá-las aos pacotes marcados.  Posteriormente, essas tabelas serão associadas as rotas. Abaixo estou crianda as tabelas &#8220;20&#8243; e &#8220;21&#8243;. Indico também a priridade: 20 por padão.</p>
<pre>ip rule add fwmark 3 table 20 prio 20
ip rule add fwmark 4 table 21 prio 20</pre>
<p><strong>3º</strong> Vamos associar as tabelas com as rotas que você quer seguir:</p>
<pre>ip route add default via 10.10.0.1 dev eth0 table 20
ip route add default via 10.20.0.1 dev eth1 table 21</pre>
<p>Assim, os pacotes marcados com &#8220;3&#8243; foram associados a tabela &#8220;20&#8243; e seguirão pelo roteador &#8220;10.10.0.1&#8243;. Já os pacotes marcados com &#8220;4&#8243; foram pra tabela &#8220;21&#8243; e seguirão pelo roteador &#8220;10.20.0.1&#8243;. Vale lembrar que o computador onde estamos trabalhando está, de alguma forma, na mesma rede dos dois roteadores usados nesse exemplo. Normalmente, cada placa de rede estaria ligada diretamente a um dos roteadores.<strong></strong></p>
<p><strong>4º</strong> Limpe o cache de roteamento:</p>
<pre>ip route flush cache</pre>
<p><strong>5º</strong> Be happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2011/07/11/roteamento-por-padrao-de-trafego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Software and Free Culture</title>
		<link>http://www.pahim.org/2011/07/11/free-software-and-free-culture/</link>
		<comments>http://www.pahim.org/2011/07/11/free-software-and-free-culture/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 19:11:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[cultura livre]]></category>
		<category><![CDATA[fsf]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=421</guid>
		<description><![CDATA[Hoje li dois posts[1][2] muito interessantes sobre Cultura Livre e Software Livre. O primeiro escrito por Nina Paley[3], uma cartunista e ilustradora americana, e o segundo uma espécie de esclarecimento/contestação escrito por Joe Brockmeier[4], lider do Gnome Press Releases[5] team. Os termos &#8220;Software Livre&#8221; e &#8220;liberdade&#8221; aqui tratados dizem respeito aos respectivos conceitos[6] defendidos pela<a href="http://www.pahim.org/2011/07/11/free-software-and-free-culture/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="FSF" src="http://static.fsf.org/fsforg/graphics/widget/widget-logo-big2.png" alt="" width="182" height="65" />Hoje li dois posts<strong>[1][2]</strong> muito interessantes sobre Cultura Livre e Software Livre. O primeiro escrito por Nina Paley<strong>[3]</strong>, uma cartunista e ilustradora americana, e o segundo uma espécie de esclarecimento/contestação escrito por Joe Brockmeier<strong>[4]</strong>, lider do Gnome Press Releases<strong>[5]</strong> team.</p>
<p>Os termos &#8220;Software Livre&#8221; e &#8220;liberdade&#8221; aqui tratados dizem respeito aos respectivos conceitos<strong>[6]</strong> defendidos pela Free Software Foundation.</p>
<p>Basicamente, Paley &#8220;reclama&#8221; de duas coisas:</p>
<p>Primeiro: o fato da FSF não estender seus conceitos de liberdade de software à cultura. Esse argumento é embasado no fato de a FSF recomendar o uso de licenças &#8220;Non Derivatives&#8221; para &#8220;Works that express someone&#8217;s opinion—memoirs, editorials, and so on&#8230;&#8221;[7]. No final, ela responde a dúvida que me acompanhou por todo o post &#8211; &#8220;o que é que eu tenho com isso?&#8221;, ou seja, por que a FSF deveria estender o conceito de liberdade de software às obras culturais? Bom, o argumento dela é, no mínimo, interessante (já explico por que): &#8220;I want the Free Software community &#8211; those who currently best understand the Four Freedoms &#8211; to champion the rest of Culture, not just Software. I want Freedom for All.&#8221;</p>
<p><span id="more-421"></span>Segundo: a realidade atual do movimento de &#8220;Cultura Livre&#8221; ser &#8220;atrofiado&#8221; pela prevalência de restrições &#8220;não comerciais&#8221;, fazendo que com artistas só possam se dedicar ao movimento enquanto hobistas, pois não conseguiriam sobreviver sem ganhar nada com seus trabalhos.</p>
<p>No fundo, me parece que ela gostaria que o Movimento de Cultura Livre fosse tudo que o Movimento de Software Livre é hoje, inclusive pedindo apoio da nossa comunidade, que é quem melhor consegue entender o valor da criação colaborativa, mantendo-se livre de amarras financeiras que contribuam para o surgimento de monopólios aprisionadores de conhecimento e, consequentemente, da própria sociedade &#8211; <em>StallmanMode.enable()</em></p>
<p>Em sua réplica, Brockmeier explica o contexto da criação das &#8220;liberdades&#8221; definidas pela FSF e argumenta sobre as diferenças entre o software e as obras culturais. Ele concentra o texto no aspecto &#8220;Non Derivatives&#8221;, deixando de lado o problema específico do Movimento de Cultura Livre sobre as recorrentes obras sob licenças &#8220;Non Commercial&#8221;. Ele explica: mesmo que você não tenha o direito de alterar um livro ou uma escultura(:|), as obras funcionarão conforme previsto pelo autor. E vai além&#8230; sobre obras que expressam pontos de vista particulares, uma obra derivada iria confundir o público, que não saberia onde termina a opinião original do autor e onde começa a opinião derivada. Assim, Brockmeier deixa claro: não misture as coisas&#8230; padrões diferentes se aplicam a coisas diferentes, mas nada impede que sua obra seja &#8220;licenciada&#8221; como você bem entender.</p>
<p>Leitura recomendadíssima.</p>
<p>Referẽncias:<br />
[1] &#8211; <a href="http://blog.ninapaley.com/2011/07/04/rantifesto/" target="_blank">http://blog.ninapaley.com/2011/07/04/rantifesto/</a><br />
[2] &#8211; <a href="http://www.networkworld.com/community/anti-rantifesto-free-culture-isnt-the-same" target="_blank">http://www.networkworld.com/community/anti-rantifesto-free-culture-isnt-the-same</a><br />
[3] &#8211; <a href="http://www.ninapaley.com/bio.html" target="_blank">http://www.ninapaley.com/bio.html</a><br />
[4] &#8211; <a href="http://dissociatedpress.net/about/" target="_blank">http://dissociatedpress.net/about/</a><br />
[5] &#8211; <a href="http://www.gnome.org/press/" target="_blank">http://www.gnome.org/press/</a><br />
[6] &#8211; <a href="http://www.gnu.org/philosophy/free-sw.html" target="_blank">http://www.gnu.org/philosophy/free-sw.html</a><br />
[7] &#8211; <a href="http://www.gnu.org/licenses/license-list.html#OpinionLicenses" target="_blank">http://www.gnu.org/licenses/license-list.html#OpinionLicenses</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2011/07/11/free-software-and-free-culture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FirewallD &#8211; O firewall dinâmico</title>
		<link>http://www.pahim.org/2011/07/11/firewalld-o-firewall-dinamico/</link>
		<comments>http://www.pahim.org/2011/07/11/firewalld-o-firewall-dinamico/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 17:34:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[redes]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://www.pahim.org/wp/?p=316</guid>
		<description><![CDATA[Dentre as novidades apresentadas pelo Fedora 15, uma que me chamou atenção foi o FirewallD. FirewallD é um serviço que oferece um gerenciamento dinâmico das regras de firewall. A principal motivação para criar um daemon que gerencia regras de firewall é o fato do modelo atual de gerenciamento estático de regras implicar em um reinicio<a href="http://www.pahim.org/2011/07/11/firewalld-o-firewall-dinamico/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Fedora" src="http://fedoraproject.org/w/uploads/thumb/b/b1/Marketing_Stickers_poweredby_sticker.png/128px-Marketing_Stickers_poweredby_sticker.png" alt="" width="60" />Dentre as novidades apresentadas pelo Fedora 15, uma que me chamou atenção foi o FirewallD. FirewallD é um serviço que oferece um gerenciamento dinâmico das regras de firewall.</p>
<p>A principal motivação para criar um daemon que gerencia regras de firewall é o fato do modelo atual de gerenciamento estático de regras implicar em um reinicio completo do firewall, que inclui descarregar os módulos do kernel e recarregar os  módulos necessários para a nova configuração. Isso tem como consequência a perda do estado das conexões ativas.</p>
<p>O daemon de firewall gerencia as regras dinamicamente e aplica as mudanças sem reiniciar todo o firewall. Assim, não é necessário recerragar os módulos do kernel. É importante observar que, usando o FirewallD, todas as modificações no firewall devem ser feitas pelo daemon, assegurando que o estado do daemon e do kernel estão em sincronia. O FirewallD não analisa regras criadas pelo comando <em>iptables</em>, possuindo binários e sintaxe própria.</p>
<p><script type="text/javascript">// <![CDATA[
	bb_bid = "120342";
	bb_lang = "pt-BR";
	bb_keywords = "linux,servidores,datacenter,hospedagem,hacker,software livre,open source,cloud,nuvem,fotografia,smartphone,android";
	bb_name = "custom";
	bb_limit = "7";
	bb_format = "bbc";
// ]]&gt;</script><br />
<script type="text/javascript" src="http://static.boo-box.com/javascripts/embed.js"></script><br />
<span id="more-316"></span>Instalando:</p>
<pre>[root@localhost ~]# yum install firewalld</pre>
<p>Iniciando o serviço:</p>
<pre>[root@localhost ~]# service firewalld start</pre>
<p>Adicionando o serviço na inicialização do sistema:</p>
<pre>[root@localhost ~]# chkconfig firewalld on</pre>
<p>Verificando o processo:</p>
<pre>[root@localhost ~]# ps x | grep firewalld
10125 ?        Ss     0:00 /usr/bin/python /usr/sbin/firewalld</pre>
<p>Habilitando o serviço http:</p>
<pre>[root@localhost ~]# firewall-cmd --enable --service=http</pre>
<p>Verificando serviços liberados:</p>
<pre>[root@localhost ~]# firewall-cmd --list=service
http</pre>
<p>Liberando porta específica por tempo determinado (em segundos):</p>
<pre>[root@localhost ~]# firewall-cmd --enable --port=3306:tcp --timeout=60</pre>
<p>Verificando porta liberada:</p>
<pre>[root@localhost ~]# firewall-cmd --list=port
3306:tcp</pre>
<p>Por fim, desabilitando um serviço:</p>
<pre>[root@localhost ~]# firewall-cmd --disable --service=http</pre>
<p>&#8230; e uma porta:</p>
<pre>[root@localhost ~]# firewall-cmd --disable --port=3306:tcp</pre>
<p>Também é possível gerenciar as regras do FirewallD graficamente usando o <strong>firewall-applet</strong>, mas ele ainda tem alguns bugs de interface que precisam ser resolvidos&#8230;</p>
<p>Instalando:</p>
<pre>[root@localhost ~]# yum install firewall-applet</pre>
<p>Execute:</p>
<pre>[root@localhost ~]# firewall-applet</pre>
<p>E, na bandeja do sistema, temos:<br />
<a href="http://www.pahim.org/wp-content/uploads/2011/07/Captura_de_tela.png"><img class="alignnone size-full wp-image-415" title="Captura_de_tela" src="http://www.pahim.org/wp-content/uploads/2011/07/Captura_de_tela.png" alt="" width="314" height="163" /></a></p>
<p><a href="http://www.pahim.org/wp-content/uploads/2011/07/Captura_de_tela-1.png"><img class="alignnone size-full wp-image-416" title="Captura_de_tela-1" src="http://www.pahim.org/wp-content/uploads/2011/07/Captura_de_tela-1.png" alt="" width="466" height="628" /></a></p>
<p>Site do projeto: <a href="https://fedoraproject.org/wiki/FirewallD/" target="_blank">https://fedoraproject.org/wiki/FirewallD/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2011/07/11/firewalld-o-firewall-dinamico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Libvirt Spice support</title>
		<link>http://www.pahim.org/2010/12/18/libvirt-spice-support/</link>
		<comments>http://www.pahim.org/2010/12/18/libvirt-spice-support/#comments</comments>
		<pubDate>Sun, 19 Dec 2010 01:25:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[libvirt]]></category>
		<category><![CDATA[nuvem]]></category>
		<category><![CDATA[virsh]]></category>
		<category><![CDATA[virtualização]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=248</guid>
		<description><![CDATA[I was testing the libvirt 0.8.6 rpms (http://libvirt.org/sources/), which promises to support SPICE. I changed my VM XML file to this (instead VNC): &#60;graphics type='spice' port='5903' /&#62; When I try to start VM with: # virsh start Ubuntu I got this error: error: Failed to start domain Ubuntu error: internal error Process exited while reading console log<a href="http://www.pahim.org/2010/12/18/libvirt-spice-support/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Spice" src="http://www.spice-space.org/images/content_icon.png" alt="" width="89" height="43" />I was testing the libvirt 0.8.6 rpms (<a href="http://libvirt.org/sources/" target="_blank">http://libvirt.org/sources/</a>), which promises to support SPICE. I changed my VM XML file to this (instead VNC):</p>
<pre>&lt;graphics type='spice' port='5903' /&gt;</pre>
<p>When I try to start VM with:</p>
<pre># virsh start Ubuntu</pre>
<p>I got this error:</p>
<pre>error: Failed to start domain Ubuntu
error: internal error Process exited while reading console log output: qemu-kvm: -spice port=5903,addr=127.0.0.1,disable-ticketing: Invalid parameter 'addr'
parse error: port=5903,addr=127.0.0.1,disable-ticketing</pre>
<p>Taking a good look in the error, we can see what is wrong: The &#8220;addr&#8221; parameter is not supported by Spice.</p>
<p>To fix that, I had to edit the &#8220;src/qemu/qemu_command.c&#8221;, in libvirt source (<a href="http://libvirt.org/downloads.html#Compilatio" target="_blank">http://libvirt.org/downloads.html#Compilatio</a>). Just commenting this lines:</p>
<p><span id="more-248"></span></p>
<pre>/* *       if (def-&gt;graphics[0]-&gt;data.spice.listenAddr)
*          virBufferVSprintf(&amp;opt, ",addr=%s", def-&gt;graphics[0]- gt;data.spice.listenAddr);
*       else if (driver-&gt;spiceListen)
*          virBufferVSprintf(&amp;opt, ",addr=%s", driver-&gt;spiceListen);
*/</pre>
<p>After compiling, I can start my VM:</p>
<pre>#virsh start Ubuntu
Domain Ubuntu started</pre>
<p>Checking ps:</p>
<pre>root     32225 49.5  0.1 871732 22836 ?        Sl   22:27   0:04 /usr/bin/qemu-kvm -S -M pc-0.13 -cpu qemu32 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name Ubuntu -uuid a293bbea-22af-dbef-5a99-07d0e8fe594c -nodefconfig -nodefaults -chardev socket,id=monitor,path=/usr/local/libvirt/var/lib/libvirt/qemu/Ubuntu.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive file=/var/lib/libvirt/images/Ubuntu.img,if=none,id=drive-virtio- isk0,boot=on,format=qcow2 -device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0- -  -netdev tap,fd=15,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:fd:27:81,bus=pci.0,addr=0x3 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -spice port=5903,disable-ticketing -vga cirrus -device AC97,id=sound0,bus=pci.0,addr=0x4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6</pre>
<p>After that, I need to alter the VM video device from:</p>
<pre>&lt;video&gt;
&lt;model type='cirrus' vram='9216' heads='1'/&gt;
&lt;address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/&gt;
&lt;/video&gt;</pre>
<p>to:</p>
<pre>&lt;video&gt;
&lt;model type='qxl' heads='1'/&gt;
&lt;address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/&gt;
&lt;/video&gt;</pre>
<p>But I got another error:</p>
<pre># virsh start Ubuntu
error: Failed to start domain Ubuntu
error: unsupported configuration: This QEMU does not support QXL graphics adapters</pre>
<p>Libvirt finds qemu capabilities with &#8220;qemu -help&#8221;. Take a look in this code from &#8221;src/qemu/qemu_capabilities.c&#8221; file:</p>
<pre>    if ((p = strstr(help, "-vga")) &amp;&amp; !strstr(help, "-std-vga")) {
        const char *nl = strstr(p, "n");

        flags |= QEMUD_CMD_FLAG_VGA;

        if (strstr(p, "|qxl"))
            flags |= QEMUD_CMD_FLAG_VGA_QXL;
        if ((p = strstr(p, "|none")) &amp;&amp; p &lt; nl)
            flags |= QEMUD_CMD_FLAG_VGA_NONE;
    }</pre>
<p>Executing &#8220;qemu -help&#8221; in command, qxl support is not shown:</p>
<pre># qemu -help | grep vga
-vga [std|cirrus|vmware|xenfb|none]</pre>
<p>I think libvirt is OK, but qemu needs to show the correct information about vga capabilities.<br />
So, lets back to libvirt qemu source file, to comment a little more code. For while, I will just skip the Qemu QXL support test:</p>
<pre>/*   if ((def-&gt;videos[0]-&gt;type == VIR_DOMAIN_VIDEO_TYPE_QXL) &amp;&amp;
*    !(qemuCmdFlags &amp; QEMUD_CMD_FLAG_VGA_QXL)) {
*    qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
*                    _("This QEMU does not support QXL graphics adapters"));
*    goto error;
*   }
*/</pre>
<p>After compile once more, we have a libvirt really Spiced!</p>
<pre>#virsh start Ubuntu
Domain Ubuntu started</pre>
<p>And now, my ps looks like this:</p>
<pre>root     29219  6.5  0.1 987516 15144 ?        Sl   22:42   0:00 /usr/bin/qemu-kvm -S -M pc-0.13 -cpu qemu32 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name Ubuntu -uuid a293bbea-22af-dbef-5a99-07d0e8fe594c -nodefconfig -nodefaults -chardev socket,id=monitor,path=/usr/local/libvirt/var/lib/libvirt/qemu/Ubuntu.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive file=/var/lib/libvirt/images/Ubuntu.img,if=none,id=drive-virtio- isk0,boot=on,format=qcow2 -device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0- -  -netdev tap,fd=15,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:fd:27:81,bus=pci.0,addr=0x3 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -spice port=5903,disable-ticketing -vga qxl -device AC97,id=sound0,bus=pci.0,addr=0x4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6</pre>
<p>I reported these bugs:<br />
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=664190" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=664190</a><br />
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=664192" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=664192</a></p>
<p><script type="text/javascript">
       bb_bid = "120342";
       bb_lang = "pt-BR";
       bb_keywords = "hospedagem";
       bb_name = "custom";
       bb_limit = "7";
       bb_format = "bbc";
</script><br />
<script type="text/javascript"
src="http://static.boo-box.com/javascripts/embed.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2010/12/18/libvirt-spice-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primeiras impressões do Red Hat EL 6</title>
		<link>http://www.pahim.org/2010/11/11/primeiras-impressoes-do-red-hat-el-6/</link>
		<comments>http://www.pahim.org/2010/11/11/primeiras-impressoes-do-red-hat-el-6/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 16:41:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[rhel6]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=229</guid>
		<description><![CDATA[Ontem foi o lançamento oficial do Red Hat Enterprise Linux versão 6. Uma versão bastante esperada, seja pelo longo tempo desde a última versão (a 5 foi lançada em 2007), seja pela promessa de novíssimas funcionalidades e melhorias. Essa nova versão sai com 85% mais pacotes que a anterior e é o resultado do trabalho<a href="http://www.pahim.org/2010/11/11/primeiras-impressoes-do-red-hat-el-6/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="RHEL6" src="http://www.redhat.com/g/video_stills/red-hat-code-into-rhel-96x72.png" alt="" width="96" height="72" />Ontem foi o lançamento oficial do Red Hat Enterprise Linux versão 6. Uma versão bastante esperada, seja pelo longo tempo desde a última versão (a 5 foi lançada em 2007), seja pela promessa de novíssimas funcionalidades e melhorias.</p>
<p>Essa nova versão sai com 85% mais pacotes que a anterior e é o resultado do trabalho de mais de 600 engenheiros/ano, que atenderam as 1821 solicitações de funcionalidades por parte dos parceiros e clientes.</p>
<p>Quem estava acostumado com o padrão de instalação antigo do RHEL não terá muita dificuldade em instalar essa nova versão. Porém, alguns itens interessantes já aparecem aqui nesse ponto.</p>
<p>Uma coisa que me chamou atenção de cara foi não ter mais aquele pedido de número da subscription durante a instalação. Isso agora ficou para o <em>firstboot, </em>onde você pode registrar na RHN. No RHEL5, inserir esse número ( mesmo que fosse opcional) me dava uma sensação de &#8220;cadê o serial&#8221; :p<br />
<span id="more-229"></span><br />
Assim que o DVD é carregado aparece um menu, semelhante as ultimas versões do Fedora. Caso você precise passar parâmetros de instalação (linux ks=&#8221;&#8230;&#8221;, por exemplo), você deve apertar <strong>esc</strong><em>.</em></p>
<p><em><a href="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot1.png"><img class="size-full wp-image-231 alignnone" title="Menu" src="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot1.png" alt="" width="500" height="376" /></a></em></p>
<p>O próximo passo interessante na instalação é a possibilidade de já usar dispositivos de <strong>armazenamento especializados</strong>, como iSCSI ou FC:</p>
<p><a href="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-1.png"><img class="alignnone size-full wp-image-232" title="Storage" src="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-1.png" alt="" width="500" height="374" /></a></p>
<p>Abaixo, a tela de configuração de um dispositivo <strong>iSCSI</strong>:</p>
<p><a href="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-2.png"><img class="alignnone size-full wp-image-233" title="iSCSI" src="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-2.png" alt="" width="500" height="374" /></a></p>
<p>Na criação do sistema de arquvios, o destaque fica por conta do suporte nativo (e natural) ao <strong>ext4</strong> e ao <strong>XFS</strong>:</p>
<p><a href="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-3.png"><img class="alignnone size-full wp-image-234" title="File system" src="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-3.png" alt="" width="500" height="373" /></a></p>
<p>Na escolha do tipo de instalação me agrada a opção <strong>minimal</strong>. Era algo que eu realmente sentia falta. Com essa opção selecionada, o sistema será instalado com apenas <strong>219</strong> pacotes, ocupando <strong>693M</strong> de espaço em disco (fora os <strong>29M</strong> do /boot). Nem pense em usar <strong>scp</strong> ou <strong>wget</strong><em>. </em>Mas não tenha medo, o <strong>yum</strong><em> </em>está lá.</p>
<p><a href="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-4.png"><img class="alignnone size-full wp-image-235" title="Instalacao" src="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-4.png" alt="" width="500" height="376" /></a></p>
<p>Outro destaque fica por conta do sumiço (anunciado, é verdade) do suporte ao <strong>Xen</strong>, consolidando o <strong>KVM</strong> como solução de virtualização oficial da Red Hat:</p>
<p><a href="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-5.png"><img class="alignnone size-full wp-image-236" title="KVM" src="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-5.png" alt="" width="500" height="374" /></a></p>
<p>O kernel instalado foi o <strong>2.6.32</strong>.</p>
<p>Talvez para agradar os gremistas, que não gostavam de tanto vermelho nessa distro, as coisas estejam mais azuis!</p>
<p><a href="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-6.png"><img class="alignnone size-full wp-image-237" title="Screenshot-6" src="http://www.pahim.org/wp-content/uploads/2010/11/Screenshot-6.png" alt="" width="500" height="351" /></a></p>
<p>Se você não tem uma <em>subscription</em> pra baixar o RHEL, paciência. Já já o CentOS desembarca por aí.</p>
<p>Comentem com suas experiências (e frustrações, why not?) nessa nova versão.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2010/11/11/primeiras-impressoes-do-red-hat-el-6/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Autenticação Linux LDAP</title>
		<link>http://www.pahim.org/2010/08/02/autenticacao-linux-ldap/</link>
		<comments>http://www.pahim.org/2010/08/02/autenticacao-linux-ldap/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 12:44:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[autenticação]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=164</guid>
		<description><![CDATA[Introdução Este artigo mostra, de maneira objetiva e prática, como é feita a configuração da autenticação dos usuários Linux em base LDAP, utilizando criptografia TLS. Ambiente Os procedimentos abaixo descritos foram testados em duas distribuições: Debian Etch 4.0r6 Ubuntu 8.10 Ambas instaladas em Máquina Virtual (VirtualBox) autenticando no servidor LDAP: Para ambas, o procedimento é<a href="http://www.pahim.org/2010/08/02/autenticacao-linux-ldap/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="OpenLDAP" src="http://www.gnusal.org/wjava/thumbs/openldap2.jpg" alt="" width="45" height="30" /> <strong>Introdução</strong><br />
Este artigo mostra, de maneira objetiva e prática, como é feita a configuração da autenticação dos usuários Linux em base LDAP, utilizando criptografia TLS.</p>
<p><strong>Ambiente</strong><br />
Os procedimentos abaixo descritos foram testados em duas distribuições:</p>
<p style="padding-left: 30px;">Debian Etch 4.0r6<br />
Ubuntu 8.10</p>
<p>Ambas instaladas em Máquina Virtual (VirtualBox) autenticando no servidor LDAP:<br />
Para ambas, o procedimento é idêntico.</p>
<p><span id="more-164"></span><br />
<strong>Instalação</strong><br />
Antes de instalar os pacotes necessários, e recomendado que você atualize seu sistema:</p>
<p>Configurando o Proxy:</p>
<pre>export http_proxy="http://proxy.com:3128″
export ftp_proxy="http://proxy.com:3128″</pre>
<p>Atualizando APT:</p>
<pre>apt-get update</pre>
<p>Atualizando sistema:</p>
<pre>apt-get upgrade</pre>
<p>Vamos precisar do pacote libpam-ldap. Biblioteca que adiciona ao PAM do Linux a funcionalidade de autenticação em servidor LDAP:</p>
<pre>apt-get install libpam-ldap</pre>
<p>Durante a instalação do libpam-ldap, algumas configurações serão solicitadas:</p>
<pre>LDAP Server Uniferm Resource Identifier: ldaps://ldap.com.br
Distinguished name of the search base: ou=People,dc=com,dc=br
LDAP version to use: 3
Make local root Database admin: Não
Does the LDAP database require login: Não</pre>
<p>Feito isso, a instalação será concluída.</p>
<p><strong>Arquvios de configuração</strong></p>
<p><em>/etc/nsswitch.conf</em></p>
<p><em></em>Informando para o sistema que ele irá procurar os usuários na base LDAP e, caso não ache, procura-rá nos arquivos locais.</p>
<p>Edite o arquivo, alterando a linha abaixo:<br />
De:</p>
<pre>passwd: compat</pre>
<p>Para:</p>
<pre>passwd ldap compat</pre>
<p><em>/etc/ldap.conf</em></p>
<p><em></em>Alterando as configurações de acesso ao LDAP.</p>
<p>Descomente e altere a linha:</p>
<pre>#port 389</pre>
<p>Para:</p>
<pre>port 636 #Porta do servico ldaps.</pre>
<p>Descomente a linha:</p>
<pre>#ssl on</pre>
<p>Para:</p>
<pre>ssl on #Habilita LDAPS</pre>
<p>Descomente e altere a linha:</p>
<pre>#tls_checkpeer yes</pre>
<p>Para:</p>
<pre>tls_checkpeer no # Impede que seja feita a checagem do certificado. No nosso caso isso é importante, pois o certificado foi auto-assinado.</pre>
<p>Descomente e altere a linha:</p>
<pre>#tls_cacertfile /etc/ssl/ca.cert</pre>
<p>Para:</p>
<pre>tls_cacert /etc/cacert.pem  # Informa onde está o certificado.</pre>
<p><strong>OBS:</strong> Certifique-se que o certificado cacert.pem está no diretório /etc/</p>
<p><em>/etc/pam.d/common-account</em><br />
Apague todo o conteudo do arquivo e insira o conteúdo abaixo:</p>
<pre>account sufficient pam_unix.so
account sufficient pam_ldap.so
account required pam_deny.so</pre>
<p><em>/etc/pam.d/common-auth</em></p>
<p>Apague todo o conteudo do arquivo e insira o conteúdo abaixo:</p>
<pre>auth sufficient pam_unix.so
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so</pre>
<p><em>/etc/pam.d/common-password</em></p>
<p>Apague todo o conteudo do arquivo e insira o conteúdo abaixo:</p>
<pre>password required pam_unix.so use_authtok nullok md5
password sufficient pam_unix.so use_authtok md5
password sufficient pam_ldap.so use_first_pass use_authtok md5
password required pam_deny.so</pre>
<p><em>/etc/pam.d/common-session</em></p>
<p>Apague todo o conteudo do arquivo e insira o conteúdo abaixo:</p>
<pre>session required pam_limits.so
session required pam_unix.so
session optional pam_ldap.so</pre>
<p><em>/etc/pam.d/login</em></p>
<p>Insira a linha abaixo no final do arquivo:</p>
<pre>account sufficient /lib/security/pam_ldap.so</pre>
<p><strong>Conclusão</strong></p>
<p>Nesse momento você já deve estar conseguindo autenticar em seu linux com uma conta do seu servidor LDAP.</p>
<p><strong>NOTA:</strong> Nesse artigo não foi abordada a necessidade de criação dos certificados nem a criação do diretório &#8220;home&#8221; do usuário automaticamente.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 114px; width: 1px; height: 1px; overflow: hidden;">
<pre>proxy.com</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2010/08/02/autenticacao-linux-ldap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upstart</title>
		<link>http://www.pahim.org/2010/06/25/artigo-upstart/</link>
		<comments>http://www.pahim.org/2010/06/25/artigo-upstart/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 19:04:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[canonical]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=133</guid>
		<description><![CDATA[Na semana passada eu ministrei uma palestra sobre o Upstart, novo inicializador do sistema, substitudo do SysV init, introduzido pela Canonical para o Ubuntu. O Upstart vem sendo adotado ou pretendido por várias outras distribuições, como Debian, Fedora e Chrome OS. Pos isso, agora transformo a palestra em artigo, objetivando mostrar o que muda nas<a href="http://www.pahim.org/2010/06/25/artigo-upstart/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Upstart" src="http://upstart.ubuntu.com/img/upstart80.png" alt="" width="180" height="48" />Na semana passada eu ministrei uma palestra sobre o <a href="http://www.pahim.org/2010/06/21/upstart/" target="_self">Upstart</a>, novo inicializador do sistema, substitudo do SysV init, introduzido pela Canonical para o Ubuntu. O Upstart vem sendo adotado ou pretendido por várias outras distribuições, como Debian, Fedora e Chrome OS. Pos isso, agora transformo a palestra em artigo, objetivando mostrar o que muda nas nossas tarefas diárias de administração de sistemas com esse novo recurso.</p>
<p><strong>SysV init e os Run Levels</strong></p>
<p>O SysV init tem sido o inicializador do sistema padrão no Linux desde o início de sua fase adulta. Ele foi introduzido pelo Unix System V, da AT&amp;T, a partir de 1983 e seu modelo serviu de inspiração para o Linux. O modelo estabelecido pelo SysV init só é completo com o uso dos Run Levels.</p>
<p>Quando o sistema é inicializado, depois que o kernel termina de carregar, o init é chamado recebendo como parâmetro o runlevel que ele deve executar. De acordo com o runlevel, o SysV init inicia os scripts correspondentes ao nível de execução desejado. Pela Linux Standard Base 4.0, temos os seguintes runlevels&#8230;</p>
<p><script type="text/javascript">// <![CDATA[
	bb_bid = "120342";
	bb_lang = "pt-BR";
	bb_keywords = "linux,servidores,datacenter,hospedagem,hacker,software livre,open source,cloud,nuvem,fotografia,smartphone,android";
	bb_name = "custom";
	bb_limit = "7";
	bb_format = "bbc";
// ]]&gt;</script><br />
<script type="text/javascript" src="http://static.boo-box.com/javascripts/embed.js"></script><br />
<span id="more-133"></span></p>
<table border="0">
<tbody>
<tr>
<td> 0</td>
<td> halt</td>
</tr>
<tr>
<td> 1</td>
<td> single user mode</td>
</tr>
<tr>
<td> 2</td>
<td> multiuser with no network services exported</td>
</tr>
<tr>
<td> 3</td>
<td> normal/full multiuser</td>
</tr>
<tr>
<td> 4</td>
<td> reserved for local use, default is normal/full multiuser</td>
</tr>
<tr>
<td> 5</td>
<td> multiuser with a display manager or equivalent</td>
</tr>
<tr>
<td> 6</td>
<td> reboot</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Para cada Run Level temos um diretório no sistema que contém os scripts (ou links para eles) que devem ser inicializados ou parados. Por exemplo, em um servidor RHEL5, podemos achar os seguintes scripts no diretório correspondente ao Run Level 3:</p>
<pre>root@server:~# ls /etc/rc3.d/
S10rsyslog  S16ssh     S21fam   S99rc.local
S12acpid    S20cprint  S24hal   S99rmnologin
S12dbus     S20cups    S89cron  S99stop-bootlogd</pre>
<p>Perceabam que no nome do script há ainda um S, indicando que o script receberá &#8220;start&#8221; como parâmetro (seria K, de Kill, para o script receber o parâmetro stop), e um número que indica a ordem que ele deve ser executado.</p>
<p>Nem todas as distribuições seguem a risca esse padrão de Run Levels. No caso do <a href="http://" target="_blank">Debian</a> e derivados, os níveis de 2 a 5 são idênticos. Nesse caso, a interface gráfica é sempre iniciada caso esteja instalada.</p>
<p><strong>Upstart</strong></p>
<p>Pela definição da Canonical, o<em> &#8220;Upstart é um substituto do daemon /sbin/init baseado em eventos que inicia serviços durante o boot, para-os durante o desligamento e supervisiona-os enquanto o sistema está em funcionamento.&#8221;</em></p>
<p>O Upstart resolve 2 problemas existentes no modo de funcionamento do SysV init. O primeiro, que julgo o menos importante, é que o Upstart executa os scripts de inicialização de forma paralela, dependendo apenas que os eventos estabelecidos como pré-requisitos ocorram, reduzindo drasticamente o tempo de boot. O segundo, importantíssimo pra mim, é que o Upstart tem a capacidade de monitorar um serviço e, em caso de interrupção abrupta, inicializa-lo novamente. O fato de os eventos determinarem quando um serviço é inicializado ou parado traz vantagens para o sistema, já que os eventos podem ser gerados por qualquer processo.</p>
<p>Como forma de manter a compatibilidade com o SysV init, propiciando uma migração suave, existe um script de Upstart que chama o SysV init passando o run level desejado.</p>
<p>Para criar um script upstart, acesse o diretório dos scripts já existentes. Na versão 10.04 do Ubuntu, o diretório é o &#8220;/etc/init&#8221;. Em versões passadas, os scripts ficavam em &#8220;/etc/event.d&#8221;. Os scripts tem a extensão &#8220;.conf&#8221; e possuem três sessões principais:</p>
<ul>
<li>Condições para inicializar ou parar o serviço.</li>
<li>Ações a serem tomadas antes de inicializar e depois de parar o serviço.</li>
<li>Comando ou script que inicializa o serviço.</li>
</ul>
<p>Criaremos então um arquivo chamado &#8220;/etc/init/meuservico.conf&#8221;</p>
<p>1 &#8211; Condições para inicializar ou parar o serviço: aqui iremos definir os eventos esperados para executar ou parar o serviço. Por exemplo:</p>
<pre>start on filesystem and net-device-up IFACE=lo</pre>
<p>Onde &#8220;filesystem&#8221; é um evento gerado pelo sistema quando as partições estiverem montadas e &#8220;net-device-up IFACE=lo&#8221; é um evento gerado pelo sistema quando a interface de loopback estiver &#8220;up&#8221;.</p>
<p>Da mesma forma, devemos ter o evento que para o serviço:</p>
<pre>stop on runlevel [016]</pre>
<p>Onde &#8220;runlevel [016]&#8221; é um evento gerado pelo sistema quando o computador for desligado, ligado ou alternado para monousuário ou reinicializado, respectivamente.</p>
<p>2 &#8211; As ações a serem tomadas antes de inicializar e depois de parar o serviço são definidas pelos parâmetros a seguir:</p>
<pre>pre-start script
 mkdir /tmp/meuservico
end script

post-stop script
 rm -rf /tmp/meuservico
end script</pre>
<p>3 &#8211; E, por último, o comando ou script que inicializa o serviço:</p>
<pre>exec /usr/bin/meuservico.sh</pre>
<p>Onde meuservico.sh pode ser um script ou binário, em qualquer linguagem, inclusive recebendo parâmetros, caso se aplique.</p>
<p>Para gerenciar o serviço criado, usamos os comandos:</p>
<pre>start meuservico
stop meuservico
status meuservico</pre>
<p>Podemos também emitir eventos personalizados, usando o seguinte comando:</p>
<pre>initctl emit evento1</pre>
<p>Esse evento pode ser usado como condição de start ou stop do meu serviço.</p>
<p>Pra encerrar, podemos usar o parâmetro &#8220;respaw&#8221; para que o Upstart monitore e inicie-o novamente em caso de parada abrupta no funcionamento do serviço (tenta dar um kill no processo&#8230;).</p>
<p>O arquivo &#8220;/etc/init/meuservico.conf&#8221; completo ficaria assim:</p>
<pre>start on filesystem and net-device-up IFACE=lo
stop on runlevel [016]

respawn

pre-start script
 mkdir /tmp/meuservico
end script

post-stop script
 rm -rf /tmp/meuservico
end script

exec /usr/bin/meuservico.sh</pre>
<p>Essa foi um breve introdução ao gerenciamento de serviços Upstart. Para mais informações visite:</p>
<p><a href="http://upstart.ubuntu.com/wiki/" target="_blank">http://upstart.ubuntu.com/wiki/</a></p>
<p>Deixe seu comentário!</p>
<p>:wq</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2010/06/25/artigo-upstart/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP5 com suporte a Oracle</title>
		<link>http://www.pahim.org/2010/05/31/php5-com-suporte-a-oracle/</link>
		<comments>http://www.pahim.org/2010/05/31/php5-com-suporte-a-oracle/#comments</comments>
		<pubDate>Mon, 31 May 2010 17:05:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.pahim.org/?p=47</guid>
		<description><![CDATA[Nesse artigo tento mostrar de forma prática como adicionar o suporte a banco de dados oracle no PHP5. Tudo foi feito no Debian Lenny, mas deve funcionar para Ubuntu e outras distros, instalando os pacotes e alterando os diretórios adequadamente. Se algo não funcionar, deixe seu comentário. Preparação Instale os softwares necessários: apt-get install php5-dev<a href="http://www.pahim.org/2010/05/31/php5-com-suporte-a-oracle/"> <br /><br /> (More)…</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Oracle" src="http://www.iconshock.com/img_jpg/BRILLIANT/database/jpg/128/oracle_icon.jpg" alt="" width="128" height="128" />Nesse artigo tento mostrar de forma prática como adicionar o suporte a banco de dados oracle no PHP5. Tudo foi feito no Debian Lenny, mas deve funcionar para Ubuntu e outras distros, instalando os pacotes e alterando os diretórios adequadamente. Se algo não funcionar, deixe seu comentário.</p>
<p><span class="mw-headline"><strong>Preparação </strong></span></p>
<p>Instale os softwares necessários:</p>
<pre>apt-get install php5-dev php-pear libaio1 unzip</pre>
<p>Entre no diretório onde ficarão os fontes do oracle client:</p>
<pre>cd /usr/local/src/</pre>
<p><span id="more-47"></span></p>
<p>Baixe esses dois arquivos. Precisa se registrar no site:</p>
<p><a class="external free" title="http://download.oracle.com/otn/linux/instantclient/112010/instantclient-basic-linux32-11.2.0.1.zip" href="http://download.oracle.com/otn/linux/instantclient/112010/instantclient-basic-linux32-11.2.0.1.zip" rel="nofollow">http://download.oracle.com/otn/linux/instantclient/112010/instantclient-basic-linux32-11.2.0.1.zip</a></p>
<p><a class="external free" title="http://download.oracle.com/otn/linux/instantclient/112010/instantclient-sdk-linux32-11.2.0.1.zip" href="http://download.oracle.com/otn/linux/instantclient/112010/instantclient-sdk-linux32-11.2.0.1.zip" rel="nofollow">http://download.oracle.com/otn/linux/instantclient/112010/instantclient-sdk-linux32-11.2.0.1.zip</a></p>
<p>Agora, descompacte os arquivos:</p>
<pre>unzip instantclient-basic-linux32-11.2.0.1.zip
unzip instantclient-sdk-linux32-11.2.0.1.zip</pre>
<p>Entre no diretório criado</p>
<pre>cd instantclient_11_2</pre>
<p>Crie o link para uma das bibliotecas</p>
<pre>ln -s libclntsh.so.11.1 libclntsh.so<strong></strong></pre>
<p><strong>Instalação </strong></p>
<p>Começando a instalação. Digite:</p>
<pre>pecl install oci8</pre>
<p>Aparecerá essa mensagem:</p>
<pre>downloading oci8-1.3.5.tgz ...
Starting to download oci8-1.3.5.tgz (137,987 bytes)
.............................done: 137,987 bytes
10 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
 1. Please provide the path to the ORACLE_HOME directory. Use
'instantclient,/path/to/instant/client/lib' if you're compiling
with Oracle Instant Client : autodetect

1-1, 'all', 'abort', or Enter to continue:</pre>
<p>Digite:1</p>
<p>Aperte &lt;enter&gt;</p>
<pre>Please provide the path to the ORACLE_HOME directory. Use
'instantclient,/path/to/instant/client/lib' if you're compiling
with Oracle Instant Client [autodetect] :</pre>
<p>Digite: instantclient,/usr/local/src/instantclient_11_2</p>
<p>Aperte &lt;enter&gt;</p>
<pre> 1. Please provide the path to the ORACLE_HOME directory. Use
'instantclient,/path/to/instant/client/lib' if you're compiling with
Oracle Instant Client : instantclient,/usr/local/src/instantclient_11_2</pre>
<p>Aperte &lt;enter&gt;</p>
<p>Configure o PHP:</p>
<pre>vi /etc/php5/apache2/php.ini
extension=oci8.so</pre>
<p>Reinicie o Apache:</p>
<pre>/etc/init.d/apache2 restart</pre>
<p><strong>Verificando se o PHP já mostra o suporte ao Oracle </strong></p>
<p>Crie um arquvivo php:</p>
<pre>vi /var/www/test.php</pre>
<p>Insira o conteúdo:</p>
<pre>&lt;?php
  phpinfo();
?&gt;</pre>
<p>Acesse <a class="external free" title="http://localhost/test.php" href="http://localhost/test.php" rel="nofollow">http://localhost/test.php</a></p>
<p>Verifique o parâmetro &#8220;OCI8 Support: enabled&#8221;</p>
<p><span class="mw-headline"><strong>Testando a conexão com o banco </strong></span><br />
Crie um aquivo php:</p>
<pre>vi /var/www/connect.php</pre>
<p>Insira o conteúdo abaixo, personalizando as informações sobre banco, user, senha e select:</p>
<pre>&lt;?php
$conn = oci_connect('hr', 'hr_password', 'mymachine.mydomain/MYDB');
$query = 'select table_name from user_tables';
$stid = oci_parse($conn, $query);
oci_execute($stid, OCI_DEFAULT);
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
  foreach ($row as $item) {
    echo $item." ";
  }
  echo "&lt;br&gt;n";
}
oci_free_statement($stid);
oci_close($conn);
?&gt;</pre>
<p>Acesse <a class="external free" title="http://localhost/connect.php" href="http://localhost/connect.php" rel="nofollow">http://localhost/connect.php</a></p>
<p><script type="text/javascript">// <![CDATA[
	bb_bid = "120342";
	bb_lang = "pt-BR";
	bb_keywords = "linux,servidores,datacenter,hospedagem,hacker,software livre,open source,cloud,nuvem,fotografia,smartphone,android";
	bb_name = "custom";
	bb_limit = "7";
	bb_format = "bbc";
// ]]&gt;</script><br />
<script type="text/javascript" src="http://static.boo-box.com/javascripts/embed.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pahim.org/2010/05/31/php5-com-suporte-a-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

