Вы находитесь на странице: 1из 12

MANUAL DE INSTALAO E CONFIGURAO DO IEDUCAR

Esse manual tem como objetivo final, gerar um artigo contendo o processo de instalao
otimizada do I-educar, de maneira que os erros conhecidos de instalao possam ser excludos,
minimizando assim o tempo de instalao.
Foi utilizado como base desse manual, as informaes de instalao que constam no Portal do
Software Publico Brasileiro, com contribuio de Franklin Ribeiro de Jesus e Marcus Paulo de Q.
Amorim, atravs de instalao e testes em vrios sistemas diferentes.
Pr-requisitos

ndice
1. PHP e Apache
2. Extenses PHP
3. Biblioteca PDFLib
4. Banco de dados PostgreSQL
O i-Educar uma aplicao web e depende de alguns outros softwares para o seu funcionamento.
PHP (verso 5.2 e superiores) com as extenses habilitadas:
o ext/pgsql;
o ext/gd;
o pecl/pdflib.
Biblioteca PDFLib;
Servidor web Apache ou outro servidor web que suporte PHP. A documentao assume o uso do
Apache;
Banco de dados PostgreSQL verso 8.2.19
As notas sobre cada uma das dependncias, inclusive com dicas de instalao so explicadas em seguida.

PHP e Apache
As distribuies Linux mais atuais possuem o PHP na verso 5.2 em seus repositrios de pacotes. A
forma mais fcil de instalar o PHP em um Linux usar o gerenciador de pacotes da distribuio ( apt-get
no Debian/Ubuntu, yum no Red Hat/Fedora, entre outros), no Ubuntu 10.10.
# apt-get install php5 php5-pgsql php5-dev php-pear
Para instalar o Apache, com suporte ao PHP, o comando :
# apt-get install libapache2-mod-php5 apache2-dev

Aps instalar o Apache, verifique se a instalao foi bem sucedida ao acessar via navegador o endereo:
http://localhost.
Notas:
Os pacotes php5-dev e php-pear so necessrios para a compilao da extenso pecl/pdflib;
O pacote apache2-dev necessrio pois o utilitrio phpize usado pelo pear/pecl depende dele.

Extenses PHP
No Linux, a instalao das extenses geralmente facilitada pelos gerenciadores de pacote da sua
distribuio favorita. Para instalar as extenses pgsql e gd no Ubuntu, seria necessrio usar o seguinte
comando:
# apt-get install php5-pgsql php5-gd
Aps a instalao das extenses, reinicie o Apache.
# /etc/init.d/apache2 restart

A exceo a extenso pdflib que no faz parte das extenses padres do PHP. Esta extenso tem
como pr-requisito a biblioteca PDFLib. O procedimento completo de instalao da extenso e da
biblioteca PDFLib podem ser visto a seguir.

Compilando a biblioteca PDFLib no UBUNTU


A biblioteca PDFLib um dos requisitos para a instalao do I-Educar. atravs desta biblioteca
que todos os arquivos em formato PDF so gerados pela aplicao.
Esta biblioteca est disponvel em duas verses distintas: a commercial (denominada apenas
PDFLib) e a free software (denominada PDFLib Lite). A PDFLib Lite possui um subconjunto das
funcionalidades da PDFLib e seu cdigo fonte distribudo para uso nos sistemas operacionais Linux/Unix,
Windows e Mac OS X. Para as necessidades do i-Educar, as funcionalidades da PDFLib Lite so suficientes.
Para uso comercial, deve-se observar as restries impostas pela licena da biblioteca.
Esse guia baseado no Ubuntu. Os mesmos passos devero funcionar em outros sistemas
baseados na distro Debian. Todos os passos devem ser realizados com o usurio root ou com o uso do
comando sudo.

Compilao
Como apenas o cdigo fonte da biblioteca PDFLib Lite distribudo, necessrio que este seja
compilado. Os utilitrios necessrios para isso so o make e o GNU C++ Compiler (g++). Para instal-los,
use o apt-get:
# apt-get install make g++

Feito isso, faa o download do cdigo fonte da biblioteca PDFLib Lite para Linux. Seguindo as
convenes, iremos fazer o download no diretrio /usr/src:
#
#
#
#

cd /usr/src
wget http://www.pdflib.com/binaries/PDFlib/704/PDFlib-Lite-7.0.4p4.tar.gz
tar -xzvf PDFlib-Lite-7.0.4p4.tar.gz
cd PDFlib-Lite-7.0.4p4

O processo de compilao no passa do uso dos utilitrios configure e make:


# ./configure --without-java --without-perl --without-py --without-ruby --without-tcl --withoutPLOP --without-PCOS --without-TET --without-CL
O sumrio do comando dever apresentar o seguinte ao final:
For your convenience, here's a summary of configure's results:
Support for shared libraries:
yes
C++ language binding for PDFlib:
yes
Java language binding for PDFlib:
no
Perl language binding for PDFlib:
no
Python language binding for PDFlib: no
Ruby language binding for PDFlib:
no
Tcl language binding for PDFlib:
no
PDF import library (PDI):
no
Large file support:
yes
Note: if you purchase the additional PDF import library (PDI)
you can also manipulate existing PDF documents with PDFlib.
The additional block feature can be used to personalize PDF.
See http://www.pdflib.com for details.
Please observe the licensing terms for commercial PDFlib usage.
PDFlib license agreement and purchase order can be found in the doc directory.
Esse comando configure, est desabilitando o suporte para os bindings Java, Perl, Python e Ruby
assim como os produtos PLOP, PCOS e TET da PDFLib Gmbh. As opes completas do configure podem ser
obtidas com ./configure --help.
Para testar o configure antes da compilao, use o make test, aps isso, execute o make install:
# make
# make test
# make install
Por padro, a biblioteca ser compilada para uso compartilhado em /usr/local/lib/:
# ls -lh /usr/local/lib/
total 11M
-rw-r--r-- 1 root staff 6,5M Set 8 14:52 libpdf.a
-rw-r--r-- 1 root staff 789 Set 8 14:52 libpdf.la
lrwxrwxrwx 1 root staff 15 Set 8 14:52 libpdf.so -> libpdf.so.6.0.4
lrwxrwxrwx 1 root staff 15 Set 8 14:52 libpdf.so.6 -> libpdf.so.6.0.4
-rw-r--r-- 1 root staff 4,1M Set 8 14:52 libpdf.so.6.0.4

Integrando a biblioteca no PHP

Para integrar a biblioteca PDFLib Lite no PHP, necessrio instalar a extenso PECL (PHP Extension
Community Library) pdflib. A instalao de extenses PECL bastante simples, pois usa-se o mesmo
sistema de empacotamento do PEAR (PHP Extension and Application Repository).
Para ter o utilitrio pecl instalado, necessrio instalar o pacote php5-dev.
# cd
# pecl install pdflib
O PECL ir fazer o download do pacote e perguntar qual o local em que a biblioteca foi instalada. Informe
/usr/local:
# path to pdflib installation? : /usr/local
Ao final da compilao da extenso PECL, a seguinte mensagem aparecer:
Build process completed successfully
Installing '/usr/lib/php5/20060613+lfs/pdf.so'
install ok: channel://pecl.php.net/pdflib-2.1.8
Pronto! A biblioteca PDFLib foi instalada e j est adicionada no seu arquivo php.ini.
Throubleshooting
Muito provavelmente, voc dever acrescentar em seu arquivo php.ini a seguinte linha:
extension=pdf.so
# nano /etc/php5/apache2/php.ini
Caso a linha no esteja no arquivo, adicione-a no final do arquivo e reinicie o Apache.
Banco de dados PostgreSQL
Compilando o PostgreSQL 8.2 no Debian Lenny
A verso 1.X do i-Educar est homologada para funcionar com o banco de dados PostgreSQL em
sua verso 8.2. Porm, as distribuies Linux mais atuais (como o Debian e o Ubuntu) no possuem mais
suporte a esta verso.
Para instal-lo, necessrio compil-lo ou instalar os pacotes pr-compilados de sua distribuio
(no recomendvel pois pode quebrar dependncias de sistema). Este guia segue a primeira opo,
ento prepare-se para a compilao.
Dependncias
Para compilar o PostgreSQL, necessrio resolver algumas dependncias:
$ apt-get install gcc g++ zlibc
$ apt-get install libreadline5-dev zlib1g-dev -y
Compilando o PostgreSQL
Faa o download do cdigo fonte do banco (arquivo postgresql-8.2.19.tar.gz) no site do projeto
PostgreSQL e compile o cdigo fonte (observe que os dois ltimos comandos devem ser dados como
root). Este guia foi baseado na verso 8.2.19.
$ wget http://ftp.esat.net/mirrors/ftp.postgresql.org/pub/source/v8.2.19/postgresql-8.2.19.tar.gz

$ tar -zvxf postgresql-8.2.19.tar.gz


$ cd postgresql-8.2.19
$ ./configure --prefix=/usr/local/pgsql --without-readline
$ make
# make install
# cp /usr/local/pgsql/bin/* /usr/bin

Criando o usurio postgres e criando o cluster


Crie o usurio postgres (o super usurio do banco de dados).
# adduser postgres
Cadastre uma senha e preencha as informaes do usurio. Depois confirme as informaes.
Crie o diretrio do cluster e d posse para o usurio postgres recm criado:
# mkdir /usr/local/pgsql/data
# chown postgres /usr/local/pgsql/data -v
Inicie o cluster:
# su - postgres
$ cd /usr/local/pgsql/
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
Teste se o PostgreSQL est realmente funcionando:
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
Se o Postgresql estiver realmente funcionando, algo parecido com o trecho abaixo ser exibido
LOG:
LOG:
LOG:
LOG:
LOG:
LOG:

database system was shut down at 2009-08-04 09:02:16 BRT


checkpoint record is at 0/42C424
redo record is at 0/42C424; undo record is at 0/0; shutdown TRUE
next transaction ID: 0/593; next OID: 10820
next MultiXactId: 1; next MultiXactOffset: 0
database system is ready

Para poder parar este ltimo comando, utilize o atalho CTRL+C.


Deslogue do usurio postgres e retorne ao usurio root apenas com o comando exit.
Copie o script de inicializao do PostgreSQL (est no diretrio em que voc descompactou o tar.gz).
Este comando ir facilitar as aes de iniciar, parar e reiniciar o banco:
# cd postgresql-8.2.19
# cp contrib/start-scripts/linux /etc/init.d/postgresql
# chmod +x /etc/init.d/postgresql
Ative a capacidade a conexes TCP/IP no prprio script de inicializao: Escolha uma das duas
formas de editores apresentadas abaixo
Para usar o editor nano (editor via terminal)
# nano /etc/init.d/postgresql
se quiser usar o gedit (editor grfico)

# gedit /etc/init.d/postgresql
Altere as seguintes linhas:
echo -n "Starting PostgreSQL: "
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
Para:
echo -n "Starting PostgreSQL: "
su - $PGUSER -c "$DAEMON -i -D '$PGDATA' &" >>$PGLOG 2>&1
Atenco: observe que apenas foi acrescentado o parmetro -i antes do -D.
Para verificar se o PostgreSQL est rodando na porto padro, utilize o comando netstat:
# netstat -avnp |grep 5432
O resultado esperado dever ser prximo de:
netstat:
netstat:
netstat:
netstat:

no
no
no
no

support
support
support
support

for
for
for
for

`AF
`AF
`AF
`AF

IPX' on this system.


AX25' on this system.
X25' on this system.
NETROM' on this system.

Como o postgresql est sendo compilado, ele no iniciado automaticamente ao se iniciar o sistema.
Utilizaremos os comandos abaixo para resolver esse problema.
# cd /etc/init.d
# chmod 775 postegresql
Isso dar as permisses necessrias para o arquivo ser executado.

Aps ter feito isso, utilize o seguinte comando:


# update-rc.d postgresql defaults
Isso atualizar os diretrios rc.d, adicionando seu script na inicializao do sistema.
Start o postgresql:
# /etc/init.d/postgresql start

Comandos bsicos do PostgreSQL


Iniciar
# /etc/init.d/postgresql start
Parar
# /etc/init.d/postgresql stop

Reiniciar
# /etc/init.d/postgresql restart
Verificar status
# /etc/init.d/postgresql status

Instalando o i-Educar
Instalar o i-Educar em si um processo bastante simples. Mas antes de instalar, importante que os
requisitos do sistema estejam satisfeitos:

PHP 5.2
o

ext/gd

ext/pgsql

pecl/pdflib

Biblioteca PDFLib

Servidor web Apache

PostgreSQL 8.2.19

Download do software
Faa o download dos arquivos do sistema antes de prosseguir. A verso atual da famlia 1.1.0, est
disponvel em pacotes ZIP e Gzip. Ao descompactar, voc ter dois diretrios: intranet/ com os arquivos
da aplicao e misc/, onde se encontra o script SQL para a criao do banco de dados.
Crie uma pasta ieducar em /var/www e d as devidas permisses.
# chmod 777 R /var/www
# mkdir /var/www/ieducar
# chmod 777 R /var/www/ieducar
Faa o login no Portal do Software Pblico Brasileiro (www.softwarepublico.gov.br) e baixe o ieducar
na pasta /var/www/ieducar. Descompacte o arquivo baixado e depois mova todo o contedo da pasta
ieducar-1.1.0 que foi criada depois de descompactar para pasta /var/www/ieducar/.
#
#
#
#

cd /var/www/ieducar
tar xzvf ieducar-1.1.0.tar.gz
cd ieducar-1.1.0
mv * /var/www/ieducar/

Tambm pode ser feito via terminal. Aps fazer o login no site, digite no terminal:
# cd /var/www/ieducar
# wget http://softwarepublico.gov.br/file/21983010/ieducar-1.1.0.tar.gz

# tar xzvf ieducar-1.1.0.tar.gz


# cd ieducar-1.1.0
# mv * /var/www/ieducar/
Criando o banco de dados
Crie o banco de dados ao qual o i-Educar usur para armazenar todos os dados digitados atravs da
interface web. Os seguintes comandos iro criar:

Um usurio ieducaruser no servidor PostgreSQL;

Um banco de dados ieducardb com a senha de acesso ieducar.

Observao: voc pode usar o nome de usurio, banco de dados e senha que desejar. No i-Educar existe
um arquivo onde estes parmetros de conexo so configurados. Caso decida dar outro nome ao banco
de dados, comente a linha 21 do arquivo ieducar.sql com dois hfens.
Faa login no servidor de banco de dados PostgreSQL com o cliente psql:
$ su postgres
# psql
postgres=#
Crie o usurio de banco de dados que ser utilizado pelo i-Educar:
postgres=# CREATE ROLE ieducaruser;
postgres=# ALTER ROLE ieducaruser WITH SUPERUSER INHERIT NOCREATEROLE CREATEDB
LOGIN PASSWORD 'ieducar';
Crie o banco de dados:
postgres=# CREATE DATABASE ieducardb WITH TEMPLATE = template0 OWNER = ieducaruser
ENCODING = 'LATIN1';
postgres=#\q
postgres@usuario:~$ exit
Faa o restore para criar as tabelas do sistema:
$ sudo u postgres psql -d ieducardb -f /var/www/ieducar/misc/database/ieducar.sql
Ateno: em algumas plataformas, o restore do banco tem que ser feito no mesmo diretrio em que o
arquivo sql reside seno o cliente psql mostra um erro FATAL no relacionado com a operao com a
tarefa.

Ajustando o search_path
Algumas instalaes do i-Educar tiveram o problema de no conseguir fazer o login no sistema aps a
criao do banco de dados. A mensagem de erro dever ser semelhante a essa durante o login:
Warning: pg_query() [function.pg-query]: Query failed: ERRO: relao "funcionario" no existe in
/var/www/ieducar/intranet/include/clsBancoPgSql.inc.php
on line 191 SQL invalido: SELECT ref_cod_pessoa_fj FROM funcionario WHERE matricula = 'adm'

Isso pode ter acontecido pelo fato do search_path no ter sido recuperado corretamente durante a
importao do arquivo SQL. Primeiro, faa um login no PostgreSQL pelo psql com o usurio ieducaruser e
verifique se o seu search_path est como o seguinte:
$ sudo -u postgres psql -U ieducaruser ieducardb
ieducardb=# SHOW search_path;
search_path
---------------"$user", public, portal, cadastro, acesso, alimentos, consistenciacao, historico, pmiacoes,
pmicontrolesis, pmidrh, pmieducar, pmiotopic, urbano
(1 row)
Caso no esteja, ser necessrio configur-lo corretamente. Ainda no psql, d o seguinte comando
para ajustar o search_path:
ieducardb=# ALTER DATABASE ieducardb SET search_path TO "$user", public, portal, cadastro,
acesso, alimentos, consistenciacao, historico, pmiacoes, pmicontrolesis, pmidrh, pmieducar,
pmiotopic, urbano;
ieducardb=#\q

Configurando o PHP
O i-Educar funciona com a configurao padro do PHP 5. Apenas alguns ajustes so necessrios para
evitar um mau comportamento da aplicao. Edite o arquivo php.ini ajustando as seguintes diretivas:
# nano /etc/php5/apache2/php.ini

memory_limit: altere para no mnimo 32M (devido ao gerador de relatrios, em plataformas 64 bit,
pode ser necessrio aumentar para uma quantidade maior);
memory_limit = 32M

error_reporting: altere para E_ALL & ~E_NOTICE para evitar que avisos do nvel E_NOTICE
(comuns na verso atual), apaream nas telas quebrando o layout do sistema;
error_reporting = E_ALL & ~E_NOTICE

display_errors: altere para Off em produo e deixe On para no seu ambiente de desenvolvimento.
display_errors = Off

short_open_tag: altere para On.


short_open_tag = On

Aps qualquer alterao no arquivo php.ini, reinicie seu servidor web (no nosso caso, o apache2):
# /etc/init.d/apache2 restart
Existem dois diretrios em que o i-Educar pode gravar arquivos e que precisam de permisso de
escrita (usurios Windows no precisam se preocupar com este passo):

intranet/pdf

intranet/tmp

Ao invs de dar uma permisso 777, mude o grupo do diretrio e d permisso de escrita para o
grupo tambm:
#
#
#
#

chgrp www-data /var/www/ieducar/intranet/pdf


chgrp www-data /var/www/ieducar/intranet/tmp
chmod 775 /var/www/ieducar/intranet/pdf
chmod 775 /var/www/ieducar/intranet/tmp

Configurando os parmetros de acesso ao banco


Caso o nome do seu banco de dados, do usurio de acesso ou a senha diferirem do que foi sugerido
anteriormente, voc precisa ajustar uma configurao a mais antes de tentar acessar a aplicao. Acesse
e edite o arquivo clsBanco.inc.php.
# nano /var/www/ieducar/intranet/include/clsBanco.inc.php

Altere o valor das seguintes variveis:


/*protected*/var $strHost
= localhost; // IP do servidor do banco de dados (localhost para
banco de dados na mesma mquina)
/*protected*/var $strBanco = ieducardb; // Nome do banco de dados
/*protected*/var $strUsuario = ieducaruser; // Usurio do banco de dados
/*protected*/var $strSenha = ieducar;
// Senha do usurio do banco de dados
/*protected*/var $strPort
= 5432;
// Senha do usurio do banco de dados
Altere tambm o arquivo ieducar.ini.
# nano /var/www/ieducar/configuration/ieducar.ini
Altere o valor das seguintes variveis:
app.database.dbname
app.database.username
app.database.hostname
app.database.password
app.database.port
=

= ieducardb
= ieducaruser
= localhost
= ieducar
5432

Acessando a aplicao
Aps realizar os passos anteriores, basta acessar o endereo http://localhost/ieducar e comear a
navegar pela aplicao.

Usurio admin (senha admin): usurio com privilgios de criao de usurios;

Observao: se voc recebeu um erro 403 Forbidden do Apache, provvel o diretrio (sub-diretrios e
arquivos) da aplicao esteja sem permisso de leitura. Para corrigir este problema rapidamente, execute
os seguintes comandos:

// Procura por todos os sub-diretrios e aplica a permisso 755


$ find /var/www/ieducar -type d -exec chmod 755 {} \;
// Procura por todos os arquivos e aplica a permisso 644
$ find /var/www/ieducar -type f -exec chmod 644 {} \;

Criando um virtual host no Apache 2


Este passo no necessrio para o funcionamento do i-Educar mas facilita o acesso a aplicao no
ambiente de desenvolvimento, ao permitir o acesso ao i-Educar atravs de URLs como http://ieducar e
http://ieducar.local. Crie um arquivo chamado ieducar.local no diretrio /etc/apache2/sites-available/ com
o seguinte contedo:
<VirtualHost *:80>
ServerName ieducar.local
DocumentRoot /var/www/ieducar
<Directory /var/www/ieducar>
Order deny,allow
AllowOverride all
</Directory>
</VirtualHost>

Edite o arquivo /etc/hosts (no Windows esse arquivo fica em C:\WINDOWS\system32\drivers\etc\hosts) e


adicione a seguinte linha:
127.0.0.1

ieducar.local

Reinicie o Apache:
# /etc/init.d/apache2 restart
Acesse o endereo http://ieducar.local. Se tudo estiver correto, a tela inicial ir aparecer.

Em alguns casos, provvel acontecer algum erro ao cadastrar a foto do aluno.


Nesses casos, execute o procedimento abaixo:
Crie uma pasta chamada aluno dentro do diretrio /var/www/ieducar/intranet/arquivos/educar.
Mova as pastas(big, original e small) que se encontram no diretrio educar para a nova pasta
criada(aluno).
# cd /var/www/ieducar/intranet/arquivos/educar
# mkdir aluno
# mv small original big aluno
Esse o caminho correto definido no cdigo onde a imagem cadastrada ser salva.
Tambm, e necessrio modificar as permisses da pasta "aluno" sendo a pasta recem criada, a permisso
normalmente utilizada e a "775", assim pode-se ser resolvido o problema da foto do aluno.
# chmod 775 aluno

18/08/2011

Elaborao: Marcus Paulo de Q. Amorim


Contribuio:
Franklim Ribeiro de Jesus
Portal do Software Pblico Brasileiro