Skip to content

Debian no VirtualBox – Instalação de Adicionais para Convidado

Já mostrei aqui no blog como instalar os Adicionais para Convidado do VirtualBox no CentOS. Desta vez farei o mesmo para o Debian. Não vou mais esplicar o que é os Adicionais para Convidado, pois já espliquei. Então, vamos à implementação:

Primeiro abra um terminal e faça login como root.

Atualize seu banco de dados APT:

apt-get update

Instale as atualizações de segurança mais recentes:

apt-get upgrade

Instale os pacotes necessários:

apt-get install build-essential module-assistant

Configure seu sistema para a construção de módulos do kernel:

m-a prepare

No menu da janela da VM, clique em Dispositivos > Instalar Adicionais para Convidado. Insto colocará um CD virtual na VM o qual deve ser montado autoamticamente. Caso não seja montado automaticamente, monte com o comando abaixo:

mount /dev/cdrom /mnt

Agora copie o script de instalação dos Adicionais para Convidado para uma pasta do HD virtual:

cp /mnt/VBoxLinuxAdditions.run /tmp

Dê permissão de execução para o script:

chmod +x /tmp/VBoxLinuxAdditions.run

E execute-o:

/tmp/VBoxLinuxAdditions.run

O restante do processo de instalação é automático.

Para finalizar, reinicie o CentOS da VM novamente:

shutdown -r now

Pronto! Agora faça os testes aumentando e diminuindo o tamanho da janela.

Instalação do PostgreSQL 9.0 e do PostGIS 1.5 no CentOS 5

Final de maio desse ano fiz a implementação do p.mapper 4.1.1 no CentOS 5, como descrevi aqui no blog. Mas para o p.mapper funcionar com um mapa particular, é necessário criar um banco de dados com suporte a objetos geográficos. O PostGIS é um complemento para o PostgreSQL que o habilita a fazer isto.

No meu local de trabalho fiz a implementação do p.mapper no servidor de aplicações web e a implementação do banco de dados no servidor de bancos de dados. Mas antes disso fiz alguns testes em uma máquina virtual isolada, implementando os dois em um só servidor virtual. Tive uma enorme dor de cabeça para conseguir implementar o banco de dados depois de já haver implementado o p.mapper. Por isso, se você for fazer a implementação de ambos no mesmo servidor, recomendo que comece pelo banco de dados.

Repositórios Adicionais

Para instalar o PostgreSQL 9.0 no CentOS é necessário adicionar os repositórios PostgreSQL Global Development Group (PGDG) e Extra Packages for Enterprise Linux (EPEL).

Instalação dos repositórios PGDG:

wget 'http://yum.pgrpms.org/9.0/redhat/rhel-5-i386/pgdg-centos-9.0-2.noarch.rpm'
rpm -Uvh pgdg-centos-9.0-2.noarch.rpm

Instalação dos repositórios EPEL:

wget 'http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm'
rpm -Uvh epel-release-5-4.noarch.rpm

Instalação dos Pacotes

Instale o PostgreSQL 9.0 Server, o PostGIS, o GEOS e o PROJ em um sistema operacional de 64 bits (arquitetura x86_64) usando o gerenciador de pacotes:

yum install postgresql90-contrib.x86_64 postgresql90-devel.x86_64 postgresql90-docs.x86_64 postgresql90-server.x86_64 postgis90 postgis90-docs postgis90-utils proj-devel.x86_64 geos-devel.x86_64 -y

Para um sistema operacional de 32 bits (arquitetura i386), instale os pacotes da seguinte maneira:

yum install postgresql90-contrib postgresql90-devel postgresql90-docs postgresql90-server postgis90 postgis90-docs postgis90-utils proj-devel geos-devel -y

Configuração do PostgreSQL 9.0

Crie uma senha para a conta de usuário postgres do sistema operacional, criada pelo serviço do PostgreSQL, através do comando abaixo. Esta senha é importante para garantir a segurança do sistema:

passwd postgres

Inicialize a base de dados do PostgreSQL com o comando abaixo:

service postgresql-9.0 initdb

Caso o banco de dados for acessado por outras máquinas numa rede e não apenas na máquina local (localhost) o arquivo /var/lib/pgsql/9.0/data/postgresql.conf deverá ser editado modificando as linhas descritas abaixo:

  • Habilite os endereços de escuta:

Localizar linha:

#listen_addresses = 'localhost'

Substituir por:

listen_addresses = '*'
  • Habilite a porta de escuta:

Localizar linha:

#port = 5432

Substituir por:

port = 5432

Facilitando sua vida, edite este arquivo apenas executando o comando abaixo:

sed -i -e '/listen_addresses/s/localhost/*/' -e '/listen_addresses/s/^#//' -e '/^#port/s/^#//' /var/lib/pgsql/9.0/data/postgresql.conf

Como uma forma de segurança, já que o banco de dados está apto a ser acessado por outras máquinas, o arquivo /var/lib/pgsql/9.0/data/pg_hba.conf deverá ser editado para que possa ser informado quais máquinas e/ou usuários poderão acessar todas e/ou determinadas bases de dados criadas no PostgreSQL com determinados métodos de acesso. Como exemplo de alteração, editamos este arquivo com as seguintes regras:

local all all               trust
host  all all 127.0.0.1/32  trust
host  all all 172.29.0.0/16 trust

Neste exemplo, a máquina local e todas as máquinas que possuem o IP dentro da faixa 172.29.0.0/16 podem acessar todas as bases de dados, com todos os usuários com o método de acesso trust (acesso sem a solicitação de senha).

Quaisquer dúvidas sobre os métodos de acesso, favor pesquisar na documentação do PostgreSQL disponível no site http://www.postgresql.org.

Para executar automaticamente as edições deste arquivo, use os comandos abaixo como modelo, mas não esqueça de fazer as modificações necessárias para a sua realidade. Observe principalmente o endereço de rede da última linha de comando:

sed -i -e '/^local/s/ident/trust/' -e '/127.0.0.1\/32/s/ident/trust/' /var/lib/pgsql/9.0/data/pg_hba.conf
echo '' >> /var/lib/pgsql/9.0/data/pg_hba.conf
echo '# Libera o acesso para as maquinas da rede 172.29.0.0/16' >> /var/lib/pgsql/9.0/data/pg_hba.conf
echo 'host all all 172.29.0.0/16 trust' >> /var/lib/pgsql/9.0/data/pg_hba.conf

Habilite a inicialização do serviço do PostgreSQL junto com a inicialização do sistema operacional com o comando abaixo:

chkconfig postgresql-9.0 on

Inicie o serviço do PostgreSQL com o comando abaixo:

service postgresql-9.0 start

Crie uma senha para o usuário postgres interno ao banco de dados padrão do PostgreSQL, através do comando abaixo, substituindo a palavra senha pela senha desejada. Esta senha é importante para a segurança, já que será necessária para acessar os bancos de dados:

psql -h localhost -U postgres -c "ALTER USER postgres WITH PASSWORD 'senha';"

Template PostGIS

Vamos agora criar um banco de dados que servirá de modelo para criar bancos de dados habilitados espacialmente, como é o caso do banco de dados necessário para o p.mapper. Crie o banco de dados postgis_template com os comandos abaixo:

createdb -h localhost -U postgres -E UTF8 -T template0 postgis_template
createlang -h localhost -U postgres -d postgis_template plpgsql
psql -h localhost -U postgres -d postgis_template -f /usr/pgsql-9.0/share/contrib/postgis-1.5/postgis.sql
psql -h localhost -U postgres -d postgis_template -f /usr/pgsql-9.0/share/contrib/postgis-1.5/spatial_ref_sys.sql
psql -h localhost -U postgres -d postgis_template -c "GRANT ALL ON geometry_columns TO PUBLIC;"
psql -h localhost -U postgres -d postgis_template -c "GRANT ALL ON geography_columns TO PUBLIC;"
psql -h localhost -U postgres -d postgis_template -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
psql -h localhost -U postgres -d postgis_template -c "VACUUM FULL;"
psql -h localhost -U postgres -d postgis_template -c "VACUUM FREEZE;"
psql -h localhost -U postgres -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='postgis_template';"
psql -h localhost -U postgres -d postgres -c "UPDATE pg_database SET datallowconn='false' WHERE datname='postgis_template';"

Banco de Dados da Aplicação

Para finalizar, criamos o banco de dados da aplicação, que no nosso caso é o p.mapper, mas pode ser qualquer aplicação que use bancos de dados habilitados espacialmente. Nos comandos SQL abaixo, entre aspas duplas, substitua a expressão nome_dono pelo nome do usuário que será o dono do banco de dados. Substitua também a expressão nome_banco pelo nome do banco de dados que você deseja criar:

psql -h localhost -U postgres -d postgres -c "CREATE ROLE nome_dono WITH createdb createrole login;"
psql -h localhost -U postgres -d postgres -c "CREATE DATABASE nome_banco WITH owner=nome_dono template=postgis_template;"

Pronto! Agora você tem o banco de dados habilitado espacialmente, no ponto de ser povoado com as informações dos seus mapas para uso do p.mapper.

Script Para Instalação Automática

Segue abaixo um script que realiza de uma vez só todo o trabalho descrito nos passos anteriores de forma automática:

#!/bin/bash

#Definindo variáveis
echo -n "Digite a senha do usuario 'postgres' do sistema operacional: " ; read PWSO
echo -n "Digite a senha do usuario 'postgres' interno ao banco de dados padrão do PostgreSQL: " ; read PWDB
echo -n "Digite o endereco da sua rede no formato IP/Mask: " ; read NETWORK
echo 'Adicione mais redes editando o arquivo /var/lib/pgsql/9.0/data/postgresql.conf'

#Instalacao dos repositorios
wget -q 'http://yum.pgrpms.org/9.0/redhat/rhel-5-i386/pgdg-centos-9.0-2.noarch.rpm'
wget -q 'http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm'
rpm -U pgdg-centos-9.0-2.noarch.rpm epel-release-5-4.noarch.rpm

#Instalacao dos pacotes
if [ `uname -i` = 'i386' ] ; then
	yum install postgresql90-contrib postgresql90-devel postgresql90-docs postgresql90-server postgis90 postgis90-docs postgis90-utils proj-devel geos-devel -y
else
	yum install postgresql90-contrib.x86_64 postgresql90-devel.x86_64 postgresql90-docs.x86_64 postgresql90-server.x86_64 postgis90 postgis90-docs postgis90-utils proj-devel.x86_64 geos-devel.x86_64 -y
fi

#Configuracao do PostgreSQL
echo $PWSO | passwd --stdin postgres
service postgresql-9.0 initdb
sed -i -e '/listen_addresses/s/localhost/*/' -e '/listen_addresses/s/^#//' -e '/^#port/s/^#//' /var/lib/pgsql/9.0/data/postgresql.conf
sed -i -e '/^local/s/ident/trust/' -e '/127.0.0.1\/32/s/ident/trust/' /var/lib/pgsql/9.0/data/pg_hba.conf
echo '' >> /var/lib/pgsql/9.0/data/pg_hba.conf
echo "# Libera o acesso para as maquinas da rede $NETWORK" >> /var/lib/pgsql/9.0/data/pg_hba.conf
echo "host all all $NETWORK trust" >> /var/lib/pgsql/9.0/data/pg_hba.conf
chkconfig postgresql-9.0 on
service postgresql-9.0 start
psql -h localhost -U postgres -c "ALTER USER postgres WITH PASSWORD '""$PWDB""';"

#Template PostGIS
createdb -h localhost -U postgres -E UTF8 -T template0 postgis_template
createlang -h localhost -U postgres -d postgis_template plpgsql
psql -h localhost -U postgres -d postgis_template -f /usr/pgsql-9.0/share/contrib/postgis-1.5/postgis.sql
psql -h localhost -U postgres -d postgis_template -f /usr/pgsql-9.0/share/contrib/postgis-1.5/spatial_ref_sys.sql
psql -h localhost -U postgres -d postgis_template -c "GRANT ALL ON geometry_columns TO PUBLIC;"
psql -h localhost -U postgres -d postgis_template -c "GRANT ALL ON geography_columns TO PUBLIC;"
psql -h localhost -U postgres -d postgis_template -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
psql -h localhost -U postgres -d postgis_template -c "VACUUM FULL;"
psql -h localhost -U postgres -d postgis_template -c "VACUUM FREEZE;"
psql -h localhost -U postgres -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='postgis_template';"
psql -h localhost -U postgres -d postgres -c "UPDATE pg_database SET datallowconn='false' WHERE datname='postgis_template';"

#Banco de Dados da Aplicacao
psql -h localhost -U postgres -d postgres -c "CREATE DATABASE database WITH owner=postgres template=postgis_template;"

Este script, ao ser executado em um sistema operacional CentOS 5 GNU/Linux, configura os repositórios necessários, instala os requisitos de software, configura o PostgreSQL, cria o template do PostGIS e cria um banco de dados habilitado espacialmente chamado database com o usuário postgres como dono, permitindo o povoamento do banco com as informações de mapas.

Copie todo o código do script para um arquivo de texto e salve com nome postgis.sh. Entre no diretório onde se encontra o script e digite os comandos abaixo para executá-lo:

chmod +x postgis.sh
./postgis.sh

Após a execução do script, o banco de dados com nome database está pronto para ser povoado.

Finalizando

Estamos mais um passo a frente para o uso do p.mapper pelos usuários/clientes. Esta novela inda levará ao menos dois capítulos para concluir esta implementação. Novamente espero que meu trabalho possa ajudar outras pessoas. Até o próximo post!

Instalação do Cisco Packet Tracer 5 no Ubuntu amd64

Para quem está estudando para a certificação Cisco Certified Network Associate (CCNA 640-802), uma ferramenta muito importante é o Cisco Packet Tracer. Esta ferramenta é disponibilizada no Cisco Networking Academy, um portal fechado para estudantes cadastrados. Porém, se você não é cadastrado, há várias formas paralelas de obter o Packet Tracer. Basta uma rápida pesquisa no Google.

O Cisco Packet Tracer se encontra hoje na versão 5.3.2 e temos à nossa disposição instaladores para Windows, Ubuntu e Fedora. Porém, o instalador para Ubuntu só suporta sistemas de 32 bits. Como uso o Ubuntu amd64, tive que encontrar uma solução para o problema:

Vamos começar instalando os pacotes dos quais o Packet Tracer depende para o correto funcionamento no Ubuntu. Instalaremos os pacotes ia32-libs, que contém algumas bibliotecas do sistema 32 bits para o sistema 64 bits, e o msttcorefonts, que adiciona fontes de texto proprietários da Microsoft no sistema, evitando que as letras no Packet Tracer fiquem grandes e dificulte a leitura da interface do programa:

sudo apt-get install ia32-libs msttcorefonts

Agora faça o download do Cisco Packet Tracer (seja lá de onde você conseguir) e dê permissão de execução ao arquivo:

sudo chmod +x PacketTracer*_i386_*installer-deb.bin

Execute o instalador:

sudo ./PacketTracer*_i386_*installer-deb.bin

A instalação iniciará, será exibido um contrato de licença, aperte espaço para rolar o texto. No final vai perguntar se você aceita o contrato (Y/N). NÃO RESPONDA Y/N AGORA! Abra outro Terminal e faça a seguinte pesquisa:

sudo find /tmp -iname packettracer*.deb

Este comando resultará no diretório onde se encontra o arquivo DEB de instalação do Packet Tracer. Deverá ser um diretório como este: /tmp/selfextract.XXXXXXX, onde os Xs representam caracteres aleatórios. Copie o arquivo DEB do diretório encontrado no passo anterior para outra pasta, seu home, por exemplo.

cp /tmp/selfextract.*/PacketTracer*.deb ~

Volte à janela anterior do Terminal e responda ao contrato de licença da instalação do PacketTracer*_i386_*installer-deb.bin. Se responder com Y vai dar erro na instalação. Se responder com N o processo de instalação é encerrado. Instale o Packet Tracer da seguinte forma:

sudo dpkg -i --force-all ~/PacketTracer*.deb

Reinicie sua sessão (logout e login) ou reinicie o computador. Pronto! Packet Tracer instalado. Vá em Aplicativos > Internet > Cisco Packet Tracer para executá-lo.

Fontes:
Fonte de Consulta 01 ; Fonte de Consulta 02 ; Fonte de Consulta 03

CentOS no VirtualBox – Instalação de Adicionais para Convidado

Sempre que instalamos um sistema operacional em uma VM do VirtualBox temos que instalar os Adicionais para Convidado. Insto é como um pacote de drivers para o hardware virtual da VM, o que habilita uma série de recursos para a interação entre as máquinas Host (máquina real) e Guest (máquina virtual). Um recurso muito almeijado é a facilidade de você maximizar a janela da VM e a resolução de tela do sistema operacional Guest se adaptar ao novo tamanho da janela. Ou ainda, com a tecla de hospedeiro (configurável) mais a tecla F, você pode colocar a janela da VM em full screen e fica parecendo que o sistema operacional Guest está instalado na sua máquina real.

Nas máquinas virtuais que você instala o Windows, independente de versão, é muito simples de instalar os Adicionais para Convidado, mas no CentOS a instalação é feita através de compilação. Mas não se assuste, pois há um script provido pelo próprio VirtualBox que automatiza todo o processo de compilação, mas requer a instalação de alguns pacotes antes de sua execução.

Primeiro faça login como root e entre no terminal.
Instale os pacotes necessários com o comando abaixo:


yum install gcc kernel kernel-devel -y

Reinicie o CentOS da VM:

shutdown -r now

Logue novamente como root e crie o seguinte link simbólico:

ln -s /usr/src/kernels/`uname -r`-`uname -p` /usr/src/linux

No menu da janela da VM, clique em Dispositivos > Instalar Adicionais para Convidado. Insto colocará um CD virtual na VM o qual deve ser montado autoamticamente. Caso não seja montado automaticamente, monte com o comando abaixo:

mount /dev/cdrom /mnt

Agora copie o script de instalação dos Adicionais para Convidado para uma pasta do HD virtual:

cp /mnt/VBoxLinuxAdditions.run /tmp

Dê permissão de execução para o script:

chmod +x /tmp/VBoxLinuxAdditions.run

E execute-o:

/tmp/VBoxLinuxAdditions.run

O restante do processo de instalação é automático.
Para finalizar, reinicie o CentOS da VM novamente:

shutdown -r now

Pronto! Agora faça os testes aumentando e diminuindo o tamanho da janela.

Sistemas de arquivos XFS no CentOS 5

Hoje fiz um post falando do p.mapper no CentOS e prometi que explicaria como criar e montar um sistema de arquivos XFS no CentOS. Por padrão o CentOS não dá suporte a este sistema de arquivos, mas possui pacotes em seus repositórios padrão que implementam esse suporte. Bastam alguns poucos comandos para conseguir montar um sistemas de arquivos XFS.

Por Que XFS?

Na verdade, quando tive a necessidade de usar um sistema de arquivos XFS no CentOS não foi uma decisão minha. Um colega de trabalho que me garantiu que era melhor usar o XFS para armazenamento de arquivos de imagem. No momento da implementação não procurei saber se isso era verdade e segui o conselho do colega. Depois fiz uma pequena pesquisa e encontrei um site que diz:

  • Alguns sistemas de arquivos, como o EXT2 e até mesmo o EXT3, mas em menor escala, são extremamente lentos quando você tem milhares de arquivos em um mesmo diretório. Então, para estes sistemas de arquivos, usar subdiretórios é uma boa idéia.
  • Outros sistemas de arquivos, como o XFS, não ficam lentos com a presença de milhares de arquivos em um mesmo diretório. Então não importa se você tem um grande diretório ou vários pequenos subdiretórios.
  • O sistema de arquivos ReiserFS também não fica lento nesta situação, mas este sistema de arquivos não é recomendado para nada que seja importante, pois ele é experimental e possui um histórico de falhas catastróficas.

Imagino que o motivo seja este, mas não sei se o p.mapper tem realmente a característica de possuir milhares de arquivos em um único diretório. Em um outro site encontrei algumas vantagens:

  • É um sistema de arquivos de 64 bits
  • Em sistemas operacionais de 64 bits suporta tamanhos de blocos de até 64KB
  • Possui sistema de quotas próprio
  • Possui uma grande coleção de programas administrativos, o pacote xfsprogs
  • Após uma queda do sistema, a restauração é fantasticamente rápida, quase imperceptível
  • Possui tamanho máximo do sistema de arquivos de 1.125 EB
    • EB significa exabyte. 1 EB = 1.073.741.824 GB
  • Possui tamanho máximo de um único arquivo de 562,5 PB
    • PB significa petabyte. 1 PB = 1.048.576 GB

Com estas informações creio que já seja o suficiente para você se decidir se precisa ou não usar o sistema de arquivos XFS.

Instalação de Pacotes

Instale os pacotes necessários ao suporte do sistema de arquivos XFS no CentOS com o gerenciador de pacotes:

yum install binutils kmod-xfs xfsprogs yum-kmod -y

Particionamento e Formatação

No exemplo da implementação do p.mapper, eu já instalei o CentOS deixando o espaço necessário em disco para a criação da partição XFS. Sendo assim é necessário criar uma nova partição usando todo o espaço restante em disco. O argumento /dev/sda do comando abaixo é apenas um exemplo. Especifique o disco correto a ser particionado:

fdisk /dev/sda

Os comandos internos ao fdisk vão variar de acordo com a situação. No meu caso usei a seguinte sequência de comandos:

  • n – Inicia o procedimento para criar uma nova partição;
  • p – Define a partição a ser criada como uma partição primária;
  • 3 – Define o número da partição como 3. No meu caso é a minha terceira partição;
  • Enter – Aceita a sugestão do fdisk de primeiro cilindro;
  • Enter – Aceita a sugestão do fdisk de último cilindro;
  • w – Grava a nova tabela de partições no disco e sai do fdisk.

Para que as alterações na tabela de partições tenham efeito, é necessário fazer o reboot:

shutdown -r now

Depois do reboot, formate a partição com o sistema de arquivos XFS e defina um label. No exemplo, usei o label label-exemplo:

mkfs -t xfs /dev/sda3
xfs_admin -L label-exemplo /dev/sda3

Se você tiver bastante memória no sistema, algo em torno de 2GB de RAM e uns 3GB de SWAP, recomendo que faça uma checagem no novo sistema de arquivos XFS:

xfs_check /dev/sda3

Migração de Arquivos e Montagem

Esta partição foi criada para montar em /var/www, mas antes preciso migrar os arquivos existentes nesse diretório para dentro do sistema de arquivos XFS. Para isto, monte a partição em um diretório temporário e copie os arquivos:

mount /dev/sda3 /mnt
cp -rpd /var/www/* /mnt
umount /mnt

O uso das opções -rpd no comando cp garantem que todos os arquivos e subdiretórios serão copiados mantendo suas propriedades e permissões e que a cópia não seguirá os links simbólicos, copiando-os como o são.

Opcionalmente, você pode apagar todo o conteúdo em /var/www, já que ele foi copiado para o sistema de arquivos XFS, mas por segurança não fiz isso. Se quiser apagar tudo, recomendo remover antes o alias do comando rm. Basta usar os comandos:

unalias rm
rm -r /var/www/*
alias rm='rm -i'

Para finalizar, edite o arquivo /etc/fstab incluindo uma entrada para a montagem automática da partição XFS no início do sistema operacional. Logo em seguida monte a partição XFS:

echo 'LABEL=label-exemplo /var/www xfs defaults 0 0' >> /etc/fstab
mount /var/www

Finalizando

Após todo o processo, seu sistema de arquivos XFS deverá estar montado corretamente e configurado para ser remontado no reboot do sistema operacional.

Para esta tarefa me orientei através de consultas à página Adding a XFS filesystem to CentOS 5.

Espero ter ajudado.

Instalação do p.mapper 4.1.1 no CentOS 5

Recentemente onde trabalho houve a necessidade de migrar o p.mapper de servidor, pois o hardware antigo estava comprometido. Aproveitando a migração, foi feito também uma atualização da versão 3.2.0 para 4.1.1, e uma mudança de Sistema Operacional, de Kubuntu para CentOS. Minha função foi apenas de fazer o p.mapper rodar no browser do próprio CentOS. As configurações da aplicação e do banco de dados ficaram sob responsabilidade de outras pessoas da equipe, as quais ainda não completaram suas atividades até a presente data.

Fui incentivado a escrever este post devido à dificuldade de encontrar algum material relacionado na internet, até mesmo em inglês. Sem mencionar que é uma documentação útil do meu trabalho de implementação. No site oficial do p.mapper existem as instruções para a implementação no Debian. Neste site inclusive há um link para um repositório que contém todos os pacotes necessários para a instalação do p.mapper 4.0.0 e 3.2.0 em distribuições GNU/Linux que trabalham com pacotes DEB.

Hardware Utilizado

O novo hardware para rodar o p.mapper é virtual, alocado em um servidor de VMs de nossa rede. O software de virtualização que utilizamos é o VMware vSphere. Configuração alterada de uma VM padrão:

  • Disco Rígido de 40GB
  • Memória RAM de 2GB

Sistema Operacional e Particionamento

A terceira partição primária foi criada após a instalação do CentOS. Consulte o post Sistemas de arquivos XFS no CentOS 5.

  • Sistema operacional instalado: GNU/Linux CentOS 5.6 i386
  • Particionamento usado:
    • Primária 1: 10GB; Sistema de arquivos EXT3; Monta a raiz do sistema de arquivos.
    • Primária 2: 3GB; Monta a SWAP.
    • Primária 3: 27GB; Sistema de arquivos XFS; Monta /var/www.

Requisitos de Software

Nesta implementação foi necessária a instalação dos seguintes softwares:

  • Mozilla Firefox 3
  • Apache 2.2
  • PHP 5.1
  • Proj 4.7 (Software de projeção cartográfica)
  • Geos 3.2 (Portabilidade C++ da Suíte de Topologia Java)
  • Gdal 1.7.2 (Biblioteca de formato de arquivo GIS – Sistema de Informação Geográfica)
  • MapServer 5.6.5 (Ambiente para a construção de aplicações web espacialmente habilitadas)

Repositórios Adicionais

Para a instalação dos softwares citados foi necessário a adição dos repositórios Extra Packages for Enterprise Linux (EPEL) e Enterprise Linux GIS (ELGIS).

Instalação dos repositórios EPEL:

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh epel-release-5-4.noarch.rpm

Instalação dos repositórios ELGIS:

wget http://elgis.argeo.org/repos/5/elgis-release-5-5_0.noarch.rpm
rpm -Uvh elgis-release-5-5_0.noarch.rpm

Instalação do Apache

Por padrão o Apache 2.2.3 já vem instalado no CentOS através do pacote httpd. Para verificar se o pacote httpd está realmente instalado:

rpm -q httpd

Se o pacote httpd estiver instalado será mostrado algo parecido com isto:

httpd-2.2.3-45.el5.centos

Caso o pacote esteja ausente do seu sistema, será exibido:

o pacote httpd não está instalado

Instale o Apache com o gerenciador de pacotes do sistema:

yum install httpd -y

Instalação do PHP

Novamente, por padrão o PHP 5.1.6 já vem instalado no CentOS, mas há algumas extensões a serem adicionadas. Os pacotes php-pear-Spreadsheet-Excel-Writer e php-pecl-zip instalam as extensões que habilitam o p.mapper a exportar resultados em formatos xls e csv, respectivamente. Você pode verificar se os pacotes necessários se encontram instalados:

rpm -q php php-cli php-common php-devel php-gd php-imap php-ldap php-pear php-pear-OLE php-pear-Spreadsheet-Excel-Writer php-pecl-zip

Haverá uma linha de resposta para cada um dos pacotes, similares às linhas exemplificadas anteriormente na instalação do pacote httpd. Instale todos os pacotes que não estiverem atualmente no sistema. Para instalar todos eles de uma vez só:

yum install php php-cli php-common php-devel php-gd php-imap php-ldap php-pear php-pear-OLE php-pear-Spreadsheet-Excel-Writer php-pecl-zip -y

Este comando irá instalar os pacotes que você não possuir instalado e irá atualizar os pacotes já instalados. É recomendável analisar a compatibilidade dos seus aplicativos com os novos pacotes antes de atualizá-los.

Configuração do Apache e do PHP

Para configurar o Apache devemos editar o arquivo /etc/httpd/conf/httpd.conf. Eu costumo utilizar o editor de textos vim, mas use o editor que preferir, desde que edite o arquivo conforme descrito nos itens abaixo:

  • Configure o diretório raiz:

Localize o trecho:

Options FollowSymLinks
AllowOverride None

Substitua por:

Options FollowSymLinks
AllowOverride All
  • Configure o diretório /var/www/html:

Localize o trecho:

#   Options FileInfo AuthConfig Limit
#
    AllowOverride None

Substitua por:

#   Options FileInfo AuthConfig Limit
#
    AllowOverride All

Edite também o arquivo /etc/httpd/conf.d/php.conf, conforme descrito abaixo:

  • Especifique os tipos de arquivos php:

Localize a linha:

AddType text/html .php

Adicione uma linha após, contendo:

AddType application/x-httpd-php .php .phps .php3 .phtml
  • Especifique os tipos de arquivos index:

Localize a linha:

DirectoryIndex index.php

Substitua por:

DirectoryIndex index.php index.phtml

Se você estiver sem tempo ou com preguiça de editar os arquivos manualmente, então apenas execute os comandos abaixo que eles farão o serviço pra você:

sed -i -e '0,/AllowOverride None/s/None/All/g' -e '0,/AllowOverride None/s/None/All/g' /etc/httpd/conf/httpd.conf
sed -i -e '/AddType text\/html .php/s/$/\nAddType application\/x-httpd-php .php .phps .php3 .phtml/' -e '/DirectoryIndex/s/$/ index.phtml/' /etc/httpd/conf.d/php.conf

Agora com tudo configurado, inicie o serviço do Apache:

service httpd start

Para que o serviço do Apache seja reiniciado sempre que o sistema fizer um reboot:

chkconfig httpd on

Testes do Apache e do PHP

Verifique se o serviço do Apache está em execução (start):

service httpd status

Se o serviço do Apache estiver em execução será mostrada a mensagem abaixo, mas provavelmente com um PID diferente do exemplo:

httpd (pid  23780) está rodando...

Caso contrário, será exibida a seguinte mensagem:

httpd está parado

Para um serviço parado, repita o comando de inicialização:

service httpd start

Já para um serviço em execução, teste-o com seu browser usando um dos endereços URL abaixo:

http://localhost

ou

http://127.0.0.1

Deverá aparecer a seguinte página:

Para testar se o serviço do Apache está interpretando o PHP, verifique a execução de um código PHP no servidor Apache. Para isso, crie o arquivo /var/www/html/phpinfo.php contendo a linha de código PHP abaixo:

<?php phpinfo(); ?>

Você pode fazer isso simplesmente executando o comando:

echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php

Abra uma janela do browser e acesse um dos endereços URL abaixo:

http://localhost/phpinfo.php

ou

http://127.0.0.1/phpinfo.php

A página abaixo é apresentada caso o Apache esteja interpretando o PHP corretamente:

Verifique se existem as extensões iconv e imap, as quais são essenciais para o funcionamento do p.mapper:

Instalação dos Pacotes PROJ e GEOS

Verifique se os pacotes proj e geos já estão instalados:

rpm -q proj geos

Se os pacotes estiverem instalados será mostrado algo parecido com isto:

proj-4.7.0-2.el5.elgis
geos-3.2.2-2.el5.elgis

Caso os pacotes estejam ausentes do seu sistema, será exibido:

o pacote proj não está instalado
o pacote geos não está instalado

Instale o proj e o geos com o gerenciador de pacotes do sistema:

yum install proj geos -y

Instalação da Biblioteca de Formato de Arquivo GIS (GDAL)

Verifique se o pacote gdal já está instalado:

rpm -q gdal

Se o pacote estiver instalado será mostrado algo parecido com isto:

gdal-1.7.2-5_0.el5.elgis

Caso o pacote esteja ausente do seu sistema, será exibido:

o pacote gdal não está instalado

Instale o gdal com o gerenciador de pacotes do sistema:

yum install gdal-1.7.2 -y

Observe que para instalar o gdal foi especificado inclusive a versão. Isto foi feito por já haver no repositório ELGIS a versão 1.8 do gdal, mas em meus testes apenas a versão 1.7 foi capaz de rodar o p.mapper.

Instalação do MapServer

Verifique se o MapServer e a extensão MapScript do PHP já estão instalados:

rpm -q mapserver php-mapserver

Se os pacotes estiverem instalados será mostrado algo parecido com isto:

mapserver-5.6.5-3.el5.elgis
php-mapserver-5.6.5-3.el5.elgis

Caso os pacotes estejam ausentes do seu sistema, será exibido:

o pacote mapserver não está instalado
o pacote php-mapserver não está instalado

Instale os pacotes com o gerenciador de pacotes do sistema:

yum install mapserver-5.6.5 php-mapserver-5.6.5 -y

Observe que para instalar os pacotes mapserver e php-mapserver foi especificado inclusive a versão. Isto foi feito por já haver no repositório ELGIS versões mais recentes destes pacotes, mas em meus testes apenas a versão 5.6.5 foi capaz de rodar o p.mapper.

Agora reinicie o serviço do Apache:

service httpd restart

Testes da Extensão MapScript do PHP

Para testar se a extensão MapScript do PHP está sendo executada usaremos o arquivo phpinfo.php que criamos após a instalação do PHP. Acesse um dos endereços URL abaixo:

http://localhost/phpinfo.php

ou

http://127.0.0.1/phpinfo.php

Veja se nesta página está apresentando a extensão MapScript, como demonstrado na ilustração abaixo:

Bloqueio dos Pacotes Instalados

Para evitar que um update utomático atualize os pacotes instalados, que devem permanecer nestas versões, devemos bloqueá-los. Para isto istalaremos o plugin yum-versionlock do gerenciador de pacotes:

yum install yum-versionlock -y

Bloqueamos pacotes incluindo seus nomes no arquivo /etc/yum/pluginconf.d/versionlock.list. Os nomes dos pacotes nesse arquivo devem seguir o formato “EPOCH:NAME-VERSION-RELEASE.ARCH”, os quais podem ser obtidos com o comando abaixo:

rpm -q proj geos gdal mapserver php-mapserver --queryformat "%{EPOCH}:%{NAME}-%{VERSION}-%{RELEASE}\n"

Adicione a saída do comando acima ao arquivo /etc/yum/pluginconf.d/versionlock.list redirecionando a saída padrão:

rpm -q proj geos gdal mapserver php-mapserver --queryformat "%{EPOCH}:%{NAME}-%{VERSION}-%{RELEASE}\n" >> /etc/yum/pluginconf.d/versionlock.list

Com este procedimento os pacotes chave para o funcionamento do p.mapper (proj, geos, gdal, mapserver e php-mapserver) serão bloqueados para atualização.

Instalação do p.mapper

A instalação do p.mapper é apenas baixar um arquivo compactado do site oficial e descompactá-lo em /var/www/html. O site oficial do p.mapper é http://www.pmapper.net. O único arquivo realmente necessário é o pmapper-4.1.1.tar.gz, mas eu baixei também os arquivos pmapper-demodata-4.zip e release-notes-4.1.1.txt para documentação e futuras necessidades de suporte. Vamos primeiramente baixar estes arquivos:

wget 'http://downloads.sourceforge.net/project/pmapper/p.mapper%204/4.1.1/pmapper-4.1.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpmapper%2Ffiles%2Fp.mapper%25204%2F4.1.1%2F&ts=1306242013&use_mirror=ufpr'
wget 'http://downloads.sourceforge.net/project/pmapper/p.mapper%20demo%20data/p.mapper%20demo%20data%204/pmapper-demodata-4.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpmapper%2Ffiles%2Fp.mapper%2520demo%2520data%2Fp.mapper%2520demo%2520data%25204%2F&ts=1306242121&use_mirror=ufpr'
wget 'http://downloads.sourceforge.net/project/pmapper/p.mapper%204/4.1.1/release-notes-4.1.1.txt?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpmapper%2Ffiles%2Fp.mapper%25204%2F4.1.1%2F&ts=1306242078&use_mirror=ufpr'

Agora descompacte eles e os mova para o diretório /var/www/html:

tar -xvzpf pmapper-4.1.1.tar.gz
unzip pmapper-demodata-4.zip
mv demodata pmapper-4.1.1 release-notes-4.1.1.txt /var/www/html

Precisamos criar um diretório chamdo tmp dentro do diretório /var/www/html, onde serão armazenadas as imagens de mapeamento temporárias processadas pelo p.mapper:

mkdir /var/www/html/tmp

Mude a propriedade dos arquivos e diretórios criados em /var/www/html para o Apache:

chown -R apache:apache /var/www/html/*

Para finalizar, edite o arquivo /var/www/html/pmapper-4.1.1/config/default/pmapper_demo.map conforme descrito abaixo:

Desconsiderando as linhas comentadas, onde houver:

WEB
  TEMPLATE "map.html"
  IMAGEPATH "/home/www/tmp/"
  IMAGEURL "/tmp/"
  METADATA
  END
 END

Substitua a linha:

IMAGEPATH "/home/www/tmp/"

Pela linha:

IMAGEPATH "/var/www/html/tmp/"

Você também pode editar rapidamente este arquivo com o comando abaixo:

sed -i '/IMAGEPATH/s/home\/www/var\/www\/html/' /var/www/html/pmapper-4.1.1/config/default/pmapper_demo.map

Após a configuração deste arquivo, o p.mapper estará pronto para ser executado e poderá ser visualizado pelo browser através de um dos endereços URL abaixo:

http://localhost/pmapper-4.1.1

ou

http://127.0.0.1/pmapper-4.1.1

Observação: Para que o mapa de demonstração do p.mapper possa ser exibido com sucesso é preciso que este servidor esteja com accesso direto à internet, ou seja, sem nehum bloqueio de proxy sobre ele, pois por padrão o p.mapper acessa um banco de dados remoto na internet com as informações de mapeamento.

Script Para Instalação Automática do p.mapper

Segue abaixo um script que realiza de uma vez só todo o trabalho descrito nos passos anteriores de forma automática:

#!/bin/bash

#Instalacao dos repositorios
wget -q http://elgis.argeo.org/repos/5/elgis-release-5-5_0.noarch.rpm
wget -q http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -U elgis-release-5-5_0.noarch.rpm1.7.2 epel-release-5-4.noarch.rpm

#Instalacao do Apache
yum install httpd -y

#Instalacao do PHP
yum install php php-cli php-common php-devel php-gd php-imap php-ldap php-pear php-pear-OLE php-pear-Spreadsheet-Excel-Writer php-pecl-zip -y

#Configuracao do Apache e do PHP
sed -i -e '0,/AllowOverride None/s/None/All/g' -e '0,/AllowOverride None/s/None/All/g' /etc/httpd/conf/httpd.conf
sed -i -e '/AddType text\/html .php/s/$/\nAddType application\/x-httpd-php .php .phps .php3 .phtml/' -e '/DirectoryIndex/s/$/ index.phtml/' /etc/httpd/conf.d/php.conf
chkconfig httpd on
service httpd start
echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php

#Instalacao do PROJ e do GEOS
yum install proj geos -y

#Instalacao do GDAL
yum install gdal-1.7.2 -y

#Instalacao do MapServer
yum install mapserver-5.6.5 php-mapserver-5.6.5 -y
service httpd restart

#Bloqueio dos pacotes instalados
yum install yum-versionlock -y
rpm -q proj geos gdal mapserver php-mapserver --queryformat "%{EPOCH}:%{NAME}-%{VERSION}-%{RELEASE}\n" >> /etc/yum/pluginconf.d/versionlock.list

#Instalacao do p.mapper
wget -q 'http://downloads.sourceforge.net/project/pmapper/p.mapper%204/4.1.1/pmapper-4.1.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpmapper%2Ffiles%2Fp.mapper%25204%2F4.1.1%2F&ts=1306242013&use_mirror=ufpr'
wget -q 'http://downloads.sourceforge.net/project/pmapper/p.mapper%20demo%20data/p.mapper%20demo%20data%204/pmapper-demodata-4.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpmapper%2Ffiles%2Fp.mapper%2520demo%2520data%2Fp.mapper%2520demo%2520data%25204%2F&ts=1306242121&use_mirror=ufpr'
wget -q 'http://downloads.sourceforge.net/project/pmapper/p.mapper%204/4.1.1/release-notes-4.1.1.txt?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpmapper%2Ffiles%2Fp.mapper%25204%2F4.1.1%2F&ts=1306242078&use_mirror=ufpr'
tar xzpf pmapper-4.1.1.tar.gz
unzip -q pmapper-demodata-4.zip
mv pmapper-4.1.1 demodata release-notes-4.1.1.txt /var/www/html
mkdir /var/www/html/tmp
chown -R apache:apache /var/www/html/*
sed -i '/IMAGEPATH/s/home\/www/var\/www\/html/' /var/www/html/pmapper-4.1.1/config/default/pmapper_demo.map
firefox http://127.0.0.1/pmapper-4.1.1 http://127.0.0.1/phpinfo.php &

Este script, ao ser executado em um sistema operacional CentOS 5 GNU/Linux, configura os repositórios necessários, instala os requisitos de software e instala a aplicação web, permitindo a execução completa do p.mapper na sua rede local.

Copie todo o código do script para um arquivo de texto e salve com nome pmapper.sh. Entre no diretório onde se encontra o script e digite os comandos abaixo para executá-lo:

chmod +x pmapper.sh
./pmapper.sh

Após a execução do script, o p.mapper está pronto para ser executado e poderá ser visualizado pelo browser através de um dos endereços URL abaixo:

http://localhost/pmapper-4.1.1

ou

http://127.0.0.1/pmapper-4.1.1

Serviços de Acesso Implementados

Para possibilitar o acesso ao servidor pelo restante da equipe, os desenvolvedores, os quais irão configurar a aplicação p.mapper, instalei os serviços VNC e SFTP. Escreverei um post para a implementação de cada um deles no CentOS.

Finalizando

Para o p.mapper finalmente ficar acessível aos usuários ainda falta muito trabalho. Fico na espera pelo desenvolvimento dos outros membros da minha equipe para poder criar um novo post concluindo esta implementação. Mas espero que com a publicação do meu trabalho eu possa ajudar pessoas que estejam querendo realizar algo similar. Peço desculpas aos Administradores Linux por ter descrito inclusive comandos básicos, deixando a leitura um pouco cansativa, mas meu intuito é ajudar o máximo de pessoas que trabalhem com GNU/Linux. Até o próximo post!