1) O documento fornece instruções para instalação e configuração do sistema I-Educar, incluindo requisitos do sistema, como PHP, Apache, PostgreSQL e biblioteca PDFLib.
2) Ele descreve o processo de compilação e instalação da biblioteca PDFLib no Ubuntu, necessária para geração de PDFs pelo I-Educar.
3) Também explica como baixar, descompactar e configurar o banco de dados PostgreSQL 8.2.19, versão homologada para o I-Educar.
1. MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO DO I-
EDUCAR
Esse manual tem como objetivo final, gerar um artigo contendo o processo de instalação
otimizada do I-educar, de maneira que os erros conhecidos de instalação possam ser excluídos,
minimizando assim o tempo de instalação.
Foi utilizado como base desse manual, as informações de instalação que constam no Portal do
Software Publico Brasileiro, com contribuição de Franklin Ribeiro de Jesus e Marcus Paulo de Q.
Amorim, através de instalação e testes em vários sistemas diferentes.
Pré-requisitos
Índice
1. PHP e Apache
2. Extensões PHP
3. Biblioteca PDFLib
4. Banco de dados PostgreSQL
O i-Educar é uma aplicação web e depende de alguns outros softwares para o seu funcionamento.
PHP (versão 5.2 e superiores) com as extensões habilitadas:
o ext/pgsql;
o ext/gd;
o pecl/pdflib.
Biblioteca PDFLib;
Servidor web Apache ou outro servidor web que suporte PHP. A documentação assume o uso do
Apache;
Banco de dados PostgreSQL versão 8.2.19
As notas sobre cada uma das dependências, inclusive com dicas de instalação são explicadas em seguida.
PHP e Apache
As distribuições Linux mais atuais possuem o PHP na versão 5.2 em seus repositórios de pacotes. A
forma mais fácil de instalar o PHP em um Linux é usar o gerenciador de pacotes da distribuição (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
2. Após instalar o Apache, verifique se a instalação foi bem sucedida ao acessar via navegador o endereço:
http://localhost.
Notas:
Os pacotes php5-dev e php-pear são necessários para a compilação da extensão pecl/pdflib;
O pacote apache2-dev é necessário pois o utilitário phpize usado pelo pear/pecl depende dele.
Extensões PHP
No Linux, a instalação das extensões geralmente é facilitada pelos gerenciadores de pacote da sua
distribuição favorita. Para instalar as extensões pgsql e gd no Ubuntu, seria necessário usar o seguinte
comando:
# apt-get install php5-pgsql php5-gd
Após a instalação das extensões, reinicie o Apache.
# /etc/init.d/apache2 restart
A exceção é a extensão pdflib que não faz parte das extensões padrões do PHP. Esta extensão tem
como pré-requisito a biblioteca PDFLib. O procedimento completo de instalação da extensão e da
biblioteca PDFLib podem ser visto a seguir.
Compilando a biblioteca PDFLib no UBUNTU
A biblioteca PDFLib é um dos requisitos para a instalação do I-Educar. É através desta biblioteca
que todos os arquivos em formato PDF são gerados pela aplicação.
Esta biblioteca está disponível em duas versões 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 código fonte é distribuído para uso nos sistemas operacionais Linux/Unix,
Windows e Mac OS X. Para as necessidades do i-Educar, as funcionalidades da PDFLib Lite são suficientes.
Para uso comercial, deve-se observar as restrições impostas pela licença da biblioteca.
Esse guia é baseado no Ubuntu. Os mesmos passos deverão funcionar em outros sistemas
baseados na distro Debian. Todos os passos devem ser realizados com o usuário root ou com o uso do
comando sudo.
Compilação
Como apenas o código fonte da biblioteca PDFLib Lite é distribuído, é necessário que este seja
compilado. Os utilitários necessários para isso são o make e o GNU C++ Compiler (g++). Para instalá-los,
use o apt-get:
# apt-get install make g++
3. Feito isso, faça o download do código fonte da biblioteca PDFLib Lite para Linux. Seguindo as
convenções, iremos fazer o download no diretório /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 compilação não passa do uso dos utilitários configure e make:
# ./configure --without-java --without-perl --without-py --without-ruby --without-tcl --without-
PLOP --without-PCOS --without-TET --without-CL
O sumário 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 opções completas do configure podem ser
obtidas com ./configure --help.
Para testar o configure antes da compilação, use o make test, após isso, execute o make install:
# make
# make test
# make install
Por padrão, 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
4. Para integrar a biblioteca PDFLib Lite no PHP, é necessário instalar a extensão PECL (PHP Extension
Community Library) pdflib. A instalação de extensões PECL é bastante simples, pois usa-se o mesmo
sistema de empacotamento do PEAR (PHP Extension and Application Repository).
Para ter o utilitário pecl instalado, é necessário 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 compilação da extensão 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 não 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 versão 1.X do i-Educar está homologada para funcionar com o banco de dados PostgreSQL em
sua versão 8.2. Porém, as distribuições Linux mais atuais (como o Debian e o Ubuntu) não possuem mais
suporte a esta versão.
Para instalá-lo, é necessário compilá-lo ou instalar os pacotes pré-compilados de sua distribuição
(não é recomendável pois pode quebrar dependências de sistema). Este guia segue a primeira opção,
então prepare-se para a compilação.
Dependências
Para compilar o PostgreSQL, é necessário resolver algumas dependências:
$ apt-get install gcc g++ zlibc
$ apt-get install libreadline5-dev zlib1g-dev -y
Compilando o PostgreSQL
Faça o download do código fonte do banco (arquivo postgresql-8.2.19.tar.gz) no site do projeto
PostgreSQL e compile o código fonte (observe que os dois últimos comandos devem ser dados como
root). Este guia foi baseado na versão 8.2.19.
$ wget http://ftp.esat.net/mirrors/ftp.postgresql.org/pub/source/v8.2.19/postgresql-8.2.19.tar.gz
5. $ 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 usuário postgres e criando o cluster
Crie o usuário postgres (o super usuário do banco de dados).
# adduser postgres
Cadastre uma senha e preencha as informações do usuário. Depois confirme as informações.
Crie o diretório do cluster e dê posse para o usuário postgres recém 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: database system was shut down at 2009-08-04 09:02:16 BRT
LOG: checkpoint record is at 0/42C424
LOG: redo record is at 0/42C424; undo record is at 0/0; shutdown TRUE
LOG: next transaction ID: 0/593; next OID: 10820
LOG: next MultiXactId: 1; next MultiXactOffset: 0
LOG: database system is ready
Para poder parar este último comando, utilize o atalho CTRL+C.
Deslogue do usuário postgres e retorne ao usuário root apenas com o comando exit.
Copie o script de inicialização do PostgreSQL (está no diretório em que você descompactou o tar.gz).
Este comando irá facilitar as ações 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 conexões TCP/IP no próprio script de inicialização: 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 gráfico)
6. # 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
Atencão: observe que apenas foi acrescentado o parâmetro -i antes do -D.
Para verificar se o PostgreSQL está rodando na portão padrão, utilize o comando netstat:
# netstat -avnp |grep 5432
O resultado esperado deverá ser próximo de:
netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.
Como o postgresql está sendo compilado, ele não é 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 permissões necessárias para o arquivo ser executado.
Após ter feito isso, utilize o seguinte comando:
# update-rc.d postgresql defaults
Isso atualizará os diretórios rc.d, adicionando seu script na inicialização do sistema.
Start o postgresql:
# /etc/init.d/postgresql start
Comandos básicos do PostgreSQL
Iniciar
# /etc/init.d/postgresql start
Parar
# /etc/init.d/postgresql stop
7. 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
o ext/pgsql
o pecl/pdflib
Biblioteca PDFLib
Servidor web Apache
PostgreSQL 8.2.19
Download do software
Faça o download dos arquivos do sistema antes de prosseguir. A versão atual da família 1.1.0, está
disponível em pacotes ZIP e Gzip. Ao descompactar, você terá dois diretórios: intranet/ com os arquivos
da aplicação e misc/, onde se encontra o script SQL para a criação do banco de dados.
Crie uma pasta ieducar em /var/www e dê as devidas permissões.
# chmod 777 –R /var/www
# mkdir /var/www/ieducar
# chmod 777 –R /var/www/ieducar
Faça o login no Portal do Software Público Brasileiro (www.softwarepublico.gov.br) e baixe o ieducar
na pasta /var/www/ieducar. Descompacte o arquivo baixado e depois mova todo o conteúdo 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/
Também pode ser feito via terminal. Após 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
8. # 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 através da
interface web. Os seguintes comandos irão criar:
Um usuário ieducaruser no servidor PostgreSQL;
Um banco de dados ieducardb com a senha de acesso ieducar.
Observação: você pode usar o nome de usuário, banco de dados e senha que desejar. No i-Educar existe
um arquivo onde estes parâmetros de conexão são configurados. Caso decida dar outro nome ao banco
de dados, comente a linha 21 do arquivo ieducar.sql com dois hífens.
Faça login no servidor de banco de dados PostgreSQL com o cliente psql:
$ su – postgres
# psql
postgres=#
Crie o usuário 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
Faça o restore para criar as tabelas do sistema:
$ sudo –u postgres psql -d ieducardb -f /var/www/ieducar/misc/database/ieducar.sql
Atenção: em algumas plataformas, o restore do banco tem que ser feito no mesmo diretório em que o
arquivo sql reside senão o cliente psql mostra um erro FATAL não relacionado com a operação com a
tarefa.
Ajustando o search_path
Algumas instalações do i-Educar tiveram o problema de não conseguir fazer o login no sistema após a
criação 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: relação "funcionario" não 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'
9. Isso pode ter acontecido pelo fato do search_path não ter sido recuperado corretamente durante a
importação do arquivo SQL. Primeiro, faça um login no PostgreSQL pelo psql com o usuário 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 não esteja, será necessário 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 configuração padrão do PHP 5. Apenas alguns ajustes são necessários para
evitar um mau comportamento da aplicação. Edite o arquivo php.ini ajustando as seguintes diretivas:
# nano /etc/php5/apache2/php.ini
memory_limit: altere para no mínimo 32M (devido ao gerador de relatórios, em plataformas 64 bit,
pode ser necessário aumentar para uma quantidade maior);
memory_limit = 32M
error_reporting: altere para E_ALL & ~E_NOTICE para evitar que avisos do nível E_NOTICE
(comuns na versão atual), apareçam nas telas quebrando o layout do sistema;
error_reporting = E_ALL & ~E_NOTICE
display_errors: altere para Off em produção e deixe On para no seu ambiente de desenvolvimento.
display_errors = Off
short_open_tag: altere para On.
short_open_tag = On
Após qualquer alteração no arquivo php.ini, reinicie seu servidor web (no nosso caso, o apache2):
# /etc/init.d/apache2 restart
Existem dois diretórios em que o i-Educar pode gravar arquivos e que precisam de permissão de
escrita (usuários Windows não precisam se preocupar com este passo):
10. intranet/pdf
intranet/tmp
Ao invés de dar uma permissão 777, mude o grupo do diretório e dê permissão de escrita para o
grupo também:
# 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 parâmetros de acesso ao banco
Caso o nome do seu banco de dados, do usuário de acesso ou a senha diferirem do que foi sugerido
anteriormente, você precisa ajustar uma configuração a mais antes de tentar acessar a aplicação. Acesse
e edite o arquivo clsBanco.inc.php.
# nano /var/www/ieducar/intranet/include/clsBanco.inc.php
Altere o valor das seguintes variáveis:
/*protected*/var $strHost = localhost; // IP do servidor do banco de dados (localhost para
banco de dados na mesma máquina)
/*protected*/var $strBanco = ieducardb; // Nome do banco de dados
/*protected*/var $strUsuario = ieducaruser; // Usuário do banco de dados
/*protected*/var $strSenha = ieducar; // Senha do usuário do banco de dados
/*protected*/var $strPort = 5432; // Senha do usuário do banco de dados
Altere também o arquivo ieducar.ini.
# nano /var/www/ieducar/configuration/ieducar.ini
Altere o valor das seguintes variáveis:
app.database.dbname = ieducardb
app.database.username = ieducaruser
app.database.hostname = localhost
app.database.password = ieducar
app.database.port = 5432
Acessando a aplicação
Após realizar os passos anteriores, basta acessar o endereço http://localhost/ieducar e começar a
navegar pela aplicação.
Usuário admin (senha admin): usuário com privilégios de criação de usuários;
Observação: se você recebeu um erro 403 Forbidden do Apache, é provável o diretório (sub-diretórios e
arquivos) da aplicação esteja sem permissão de leitura. Para corrigir este problema rapidamente, execute
os seguintes comandos:
11. // Procura por todos os sub-diretórios e aplica a permissão 755
$ find /var/www/ieducar -type d -exec chmod 755 {} ;
// Procura por todos os arquivos e aplica a permissão 644
$ find /var/www/ieducar -type f -exec chmod 644 {} ;
Criando um virtual host no Apache 2
Este passo não é necessário para o funcionamento do i-Educar mas facilita o acesso a aplicação no
ambiente de desenvolvimento, ao permitir o acesso ao i-Educar através de URLs como http://ieducar e
http://ieducar.local. Crie um arquivo chamado ieducar.local no diretório /etc/apache2/sites-available/ com
o seguinte conteúdo:
<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:WINDOWSsystem32driversetchosts) e
adicione a seguinte linha:
127.0.0.1 ieducar.local
Reinicie o Apache:
# /etc/init.d/apache2 restart
Acesse o endereço http://ieducar.local. Se tudo estiver correto, a tela inicial irá aparecer.
Em alguns casos, é provável acontecer algum erro ao cadastrar a foto do aluno.
Nesses casos, execute o procedimento abaixo:
Crie uma pasta chamada aluno dentro do diretório /var/www/ieducar/intranet/arquivos/educar.
Mova as pastas(big, original e small) que se encontram no diretório 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 código onde a imagem cadastrada será salva.
Também, e necessário modificar as permissões da pasta "aluno" sendo a pasta recem criada, a permissão
normalmente utilizada e a "775", assim pode-se ser resolvido o problema da foto do aluno.
# chmod 775 aluno