I-educar Manual de Instalação

13
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 Após instalar o Apache, verifique se a instalação foi bem sucedida ao acessar via navegador o endereço: http://localhost.

description

Manual de instalação passo a passo. Para iniviantes em Linux. Feito todo na distribuição do UBUNTU 10.10.

Transcript of I-educar Manual de Instalação

Page 1: I-educar Manual de Instalação

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 PDFLib4. 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

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.

Page 2: I-educar Manual de Instalação

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++

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:

Page 3: I-educar Manual de Instalação

For your convenience, here's a summary of configure's results:

Support for shared libraries: yesC++ language binding for PDFlib: yesJava language binding for PDFlib: noPerl language binding for PDFlib: noPython language binding for PDFlib: noRuby language binding for PDFlib: noTcl language binding for PDFlib: noPDF import library (PDI): noLarge 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.lalrwxrwxrwx 1 root staff 15 Set 8 14:52 libpdf.so -> libpdf.so.6.0.4lrwxrwxrwx 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, é 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 successfullyInstalling '/usr/lib/php5/20060613+lfs/pdf.so'

Page 4: I-educar Manual de Instalação

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$ 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

Page 5: I-educar Manual de Instalação

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 BRTLOG: checkpoint record is at 0/42C424LOG: redo record is at 0/42C424; undo record is at 0/0; shutdown TRUELOG: next transaction ID: 0/593; next OID: 10820LOG: next MultiXactId: 1; next MultiXactOffset: 0LOG: 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)

# 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:

Page 6: I-educar Manual de Instalação

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

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

Page 7: I-educar Manual de Instalação

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# 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# psqlpostgres=#

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:

Page 8: I-educar Manual de Instalação

postgres=# CREATE DATABASE ieducardb WITH TEMPLATE = template0 OWNER = ieducaruser ENCODING = 'LATIN1';postgres=#\qpostgres@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'

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 ieducardbieducardb=# 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);

Page 9: I-educar Manual de Instalação

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):

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

Page 10: I-educar Manual de Instalação

Altere o valor das seguintes variáveis:

app.database.dbname = ieducardbapp.database.username = ieducaruserapp.database.hostname = localhostapp.database.password = ieducarapp.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:

// 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:\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 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:

Page 11: I-educar Manual de Instalação

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

18/08/2011

Elaboração: Marcus Paulo de Q. AmorimContribuição: Franklim Ribeiro de Jesus

Portal do Software Público Brasileiro