MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO DO IEDUCAR 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 !oi utilizado como base desse manual, as informaç"es de instalação que constam no #ortal do $oft%are #ublico &rasileiro, com contribuição de !ran'lin (ibeiro de )esus e *arcus #aulo de + morim, atravs de instalação e testes em v.rios sistemas diferentes Pré-requisitos
Índice / #0# e pa pacche 1 Exte Extens ns"e "ess #0 #0## 2 &ibl &iblio iote teca ca #3!4 #3!4ib ib 5 &anco &anco de dados dados #ostg #ostgre$ re$+4 +4 6 i-Educar uma aplicação %eb e depende de pende de alguns outros soft%ares para o seu funcionamento •
•
•
•
#0# 7versão 81 e superiores9 com as extens"es habilitadas: o
ext;pgsql<
o
ext;gd<
o
pecl;pdflib
&iblioteca #3!4ib< $ervidor %eb pache ou outro servidor %eb que suporte #0# documentação assume o uso do pache< &anco de dados #ostgre$+4 versão =1/>
s notas sobre cada uma das depend?ncias, depend? ncias, inclusive com dicas de instalação são explicadas em seguida
PHP e Apache s distribuiç"es 4inux mais atuais possuem o #0# na versão 81 em seus reposit@rios de pacotes forma mais f.cil de instalar o #0# em um 4inux usar o gerenciador de pacotes da distribuição 7apt-get no 3ebian;Abuntu, Bum no (ed 0at;!edora, entre outros9, no Abuntu /C/C D apt-get install php8 php8-pgsql php8-dev php-pear #ara instalar o pache, com suporte ao #0#, o comando : D apt-get install libapache1-mod-php8 apache1-dev
p@s instalar o pache, verifique se a instalação foi bem sucedida ao acessar via navegador o endereço: http:;;localhost otas: •
6s pacotes php8-dev e php-pear são necess.rios para a compilação da extensão pecl;pdflib<
•
6 pacote apache1-dev necess.rio pois o utilit.rio phpize usado pelo pear;pecl depende dele
Extensões PHP o 4inux, a instalação das extens"es geralmente facilitada pelos gerenciadores de pacote da sua distribuição favorita #ara instalar as extens"es pgsql e gd no Abuntu, seria necess.rio usar o seguinte comando: D apt-get install php8-pgsql php8-gd p@s a instalação das extens"es, reinicie o pache D ;etc;initd;apache1 restart
exceção a extensão pdflib que não faz parte das extens"es padr"es do #0# Esta extensão tem como pr-requisito a biblioteca #3!4ib 6 procedimento completo de instalação da extensão e da biblioteca #3!4ib podem ser visto a seguir Compilando a biblioteca PDFLib no !"# biblioteca #3!4ib um dos requisitos para a instalação do I-Educar F atravs desta biblioteca que todos os arquivos em formato #3! são gerados pela aplicação Esta biblioteca est. disponível em duas vers"es distintas: a commercial 7denominada apenas #3!4ib9 e a free software 7denominada #3!4ib 4ite9 #3!4ib 4ite possui um subconjunto das funcionalidades da #3!4ib e seu c@digo fonte distribuído para uso nos sistemas operacionais 4inux;Anix, Gindo%s e *ac 6$ H #ara as necessidades do i-Educar, as funcionalidades da #3!4ib 4ite são suficientes Para uso comercial, deve-se observar as restrições impostas pela licença da biblioteca.
Esse guia baseado no Abuntu 6s mesmos passos deverão funcionar em outros sistemas baseados na distro 3ebian odos os passos devem ser realizados com o usu.rio root ou com o uso do comando sudo
Compila$%o Jomo apenas o c@digo fonte da biblioteca #3!4ib 4ite distribuído, necess.rio que este seja compilado 6s utilit.rios necess.rios para isso são o ma'e e o KA JLL Jompiler 7gLL9 #ara instal.-los, use o apt-get: D apt-get install ma'e gLL
!eito isso, faça o do%nload do c@digo fonte da biblioteca #3!4ib 4ite para 4inux $eguindo as convenç"es, iremos fazer o do%nload no diret@rio ;usr;src: D cd ;usr;src D %get http:;;%%%pdflibcom;binaries;#3!lib;MC5;#3!lib-4ite-MC5p5targz D tar -xzvf #3!lib-4ite-MC5p5targz D cd #3!lib-4ite-MC5p5 6 processo de compilação não passa do uso dos utilit.rios configure e ma'e: D ;configure --%ithout-java --%ithout-perl --%ithout-pB --%ithout-rubB --%ithout-tcl --%ithout#46# --%ithout-#J6$ --%ithout-E --%ithout-J4 6 sum.rio do comando dever. apresentar o seguinte ao final: !or Bour convenience, hereNs a summarB of configureNs results: $upport for shared libraries: Bes JLL language binding for #3!lib: Bes )ava language binding for #3!lib: no #erl language binding for #3!lib: no #Bthon language binding for #3!lib: no (ubB language binding for #3!lib: no cl language binding for #3!lib: no #3! import librarB 7#3I9: no 4arge file support: Bes ote: if Bou purchase the additional #3! import librarB 7#3I9 Bou can also manipulate existing #3! documents %ith #3!lib he additional bloc' feature can be used to personalize #3! $ee http:;;%%%pdflibcom for details #lease observe the licensing terms for commercial #3!lib usage #3!lib license agreement and purchase order can be found in the doc directorB Esse comando configure, est. desabilitando o suporte para os bindings )ava, #erl, #Bthon e (ubB assim como os produtos #46#, #J6$ e E da #3!4ib Kmbh s opç"es completas do configure podem ser obtidas com ;configure --help #ara testar o configure antes da compilação, use o ma'e test, ap@s isso, execute o ma'e install: D ma'e D ma'e test D ma'e install #or padrão, a biblioteca ser. compilada para uso compartilhado em ;usr;local;lib;: D ls -lh ;usr;local;lib; total //* -r%-r--r-- / root staff O,8* $et = /5:81 libpdfa -r%-r--r-- / root staff M=> $et = /5:81 libpdfla lr%xr%xr%x / root staff /8 $et = /5:81 libpdfso -P libpdfsoOC5 lr%xr%xr%x / root staff /8 $et = /5:81 libpdfsoO -P libpdfsoOC5 -r%-r--r-- / root staff 5,/* $et = /5:81 libpdfsoOC5
&nte'rando a biblioteca no PHP
#ara integrar a biblioteca #3!4ib 4ite no #0#, necess.rio instalar a extensão #EJ4 7#0# Extension JommunitB 4ibrarB9 pdflib instalação de extens"es #EJ4 bastante simples, pois usa-se o mesmo sistema de empacotamento do #E( 7#0# Extension and pplication (epositorB9 Para ter o utilitário pecl instalado, é necessário instalar o pacote php5-dev.
D cd D pecl install pdflib 6 #EJ4 ir. fazer o do%nload do pacote e perguntar. qual o local em que a biblioteca foi instalada Informe ;usr;local: D path to pdflib installationQ : ;usr;local o final da compilação da extensão #EJ4, a seguinte mensagem aparecer.: &uild process completed successfullB Installing N;usr;lib;php8;1CCOCO/2Llfs;pdfsoN install o': channel:;;peclphpnet;pdflib-1/= #rontoR biblioteca #3!4ib foi instalada e j. est. adicionada no seu arquivo phpini #hroubleshootin' *uito provavelmente, voc? dever. acrescentar em seu arquivo phpini a seguinte linha: extensionSpdfso D nano ;etc;php8;apache1;phpini Jaso a linha não esteja no arquivo, adicione-a no final do arquivo e reinicie o pache !anco de dados Post're()L Compilando o Post're()L *+, no Debian Lenn versão /H do i-Educar est. homologada para funcionar com o banco de dados #ostgre$+4 em sua versão =1 #orm, as distribuiç"es 4inux mais atuais 7como o 3ebian e o Abuntu9 não possuem mais suporte a esta versão #ara instal.-lo, necess.rio compil.-lo ou instalar os pacotes pr-compilados de sua distribuição 7não recomend.vel pois pode quebrar depend?ncias de sistema9 Este guia segue a primeira opção, então prepare-se para a compilação Depend.ncias #ara compilar o #ostgre$+4, necess.rio resolver algumas depend?ncias: T apt-get install gcc gLL zlibc T apt-get install libreadline8-dev zlib/g-dev -B Compilando o Post're()L !aça o do%nload do c@digo fonte do banco 7arquivo postgresql-=1/>targz9 no site do projeto #ostgre$+4 e compile o c@digo fonte 7observe que os dois Ultimos comandos devem ser dados como root9 Este guia foi baseado na versão =1/> T %get http:;;ftpesatnet;mirrors;ftppostgresqlorg;pub;source;v=1/>;postgresql-=1/>targz
T tar -zvxf postgresql-=1/>targz T cd postgresql-=1/> T ;configure --prefixS;usr;local;pgsql --%ithout-readline T ma'e D ma'e install D cp ;usr;local;pgsql;bin;V ;usr;bin
Criando o usu/rio post'res e criando o cluster Jrie o usu.rio postgres 7o super usu.rio do banco de dados9 D adduser postgres Jadastre uma senha e preencha as informaç"es do usu.rio 3epois confirme as informaç"es Jrie o diret@rio do cluster e d? posse para o usu.rio postgres recm criado: D m'dir ;usr;local;pgsql;data D cho%n postgres ;usr;local;pgsql;data -v Inicie o cluster: D su - postgres T cd ;usr;local;pgsql; T ;usr;local;pgsql;bin;initdb -3 ;usr;local;pgsql;data este se o #ostgre$+4 est. realmente funcionando: T ;usr;local;pgsql;bin;postmaster -3 ;usr;local;pgsql;data $e o #ostgresql estiver realmente funcionando, algo parecido com o trecho abaixo ser. exibido 46K: database sBstem %as shut do%n at 1CC>-C=-C5 C>:C1:/O &( 46K: chec'point record is at C;51J515 46K: redo record is at C;51J515< undo record is at C;C< shutdo%n (AE 46K: next transaction I3: C;8>2< next 6I3: /C=1C 46K: next *ultiHactId: /< next *ultiHact6ffset: C 46K: database sBstem is readB #ara poder parar este Ultimo comando, utilize o atalho J(4LJ 3eslogue do usu.rio postgres e retorne ao usu.rio root apenas com o comando exit Jopie o script de inicialização do #ostgre$+4 7est. no diret@rio em que voc? descompactou o targz9 Este comando ir. facilitar as aç"es de iniciar, parar e reiniciar o banco: D cd postgresql-=1/> D cp contrib;start-scripts;linux ;etc;initd;postgresql D chmod Lx ;etc;initd;postgresql tive a capacidade a conex"es J#;I# no pr@prio script de inicialização: Escolha uma das duas formas de editores apresentadas abaixo #ara usar o editor nano 7editor via terminal9 D nano ;etc;initd;postgresql se quiser usar o gedit 7editor gr.fico9
D gedit ;etc;initd;postgresql ltere as seguintes linhas: echo -n W$tarting #ostgre$+4: W su - T#KA$E( -c WT3E*6 -3 NT#K3N XW PPT#K46K 1PX/ #ara: echo -n W$tarting #ostgre$+4: W su - T#KA$E( -c WT3E*6 -i -3 NT#K3N XW PPT#K46K 1PX/ Atenc%o0 observe que apenas foi acrescentado o parYmetro -i antes do -D #ara verificar se o #ostgre$+4 est. rodando na portão padrão, utilize o comando netstat: D netstat -avnp Zgrep 8521 6 resultado esperado dever. ser pr@ximo de: netstat: no support for [! I#HN on this sBstem netstat: no support for [! H18N on this sBstem netstat: no support for [! H18N on this sBstem netstat: no support for [! E(6*N on this sBstem Jomo o postgresql est. sendo compilado, ele não iniciado automaticamente ao se iniciar o sistema Atilizaremos os comandos abaixo para resolver esse problema D cd ;etc;initd D chmod MM8 postegresql Isso dar. as permiss"es necess.rias para o arquivo ser executado p@s ter feito isso, utilize o seguinte comando: D update-rcd postgresql defaults Isso atualizar. os diret@rios rcd, adicionando seu script na inicialização do sistema $tart o postgresql: D ;etc;initd;postgresql start
Comandos b/sicos do Post're()L &niciar D ;etc;initd;postgresql start Parar D ;etc;initd;postgresql stop
1einiciar D ;etc;initd;postgresql restart 2eri3icar status D ;etc;initd;postgresql status
&nstalando o i-Educar Instalar o i-Educar em si um processo bastante simples *as antes de instalar, importante que os requisitos do sistema estejam satisfeitos: •
#0# 81 o
ext;gd
o
ext;pgsql
o
pecl;pdflib
•
&iblioteca #3!4ib
•
$ervidor %eb pache
•
#ostgre$+4 =1/>
Do4nload do so3t4are !aça o do%nload dos arquivos do sistema antes de prosseguir versão atual da família //C, est. disponível em pacotes \I# e Kzip o descompactar, voc? ter. dois diret@rios: intranet; com os arquivos da aplicação e misc;, onde se encontra o script $+4 para a criação do banco de dados Jrie uma pasta ieducar em ;var;%%% e d? as devidas permiss"es D chmod MMM ]( ;var;%%% D m'dir ;var;%%%;ieducar D chmod MMM ]( ;var;%%%;ieducar !aça o login no #ortal do $oft%are #Ublico &rasileiro 7%%%soft%arepublicogovbr9 e baixe o ieducar na pasta ;var;%%%;ieducar 3escompacte o arquivo baixado e depois mova todo o conteUdo da pasta ieducar-//C que foi criada depois de descompactar para pasta ;var;%%%;ieducar; D cd ;var;%%%;ieducar D tar ]xzvf ieducar-//Ctargz D cd ieducar-//C D mv V ;var;%%%;ieducar; ambm pode ser feito via terminal p@s fazer o login no site, digite no terminal: D cd ;var;%%%;ieducar D %get http:;;soft%arepublicogovbr;file;1/>=2C/C;ieducar-//Ctargz
D tar ]xzvf ieducar-//Ctargz D cd ieducar-//C D mv V ;var;%%%;ieducar; Criando o banco de dados Jrie o banco de dados ao qual o i-Educar usur. para armazenar todos os dados digitados atravs da interface %eb 6s seguintes comandos irão criar: •
Am usu.rio ieducaruser no servidor #ostgre$+4<
•
Am banco de dados ieducardb com a senha de acesso ieducar
5bser6a$%o0 voc? pode usar o nome de usu.rio, banco de dados e senha que desejar o i-Educar existe um arquivo onde estes parYmetros de conexão são configurados Jaso decida dar outro nome ao banco de dados, comente a linha 1/ do arquivo ieducarsql com dois hífens !aça login no servidor de banco de dados #ostgre$+4 com o cliente psql: T su ] postgres D psql postgresSD Jrie o usu.rio de banco de dados que ser. utilizado pelo i-Educar: postgresSD J(EE (64E ieducaruser< postgresSD 4E( (64E ieducaruser GI0 $A#E(A$E( I0E(I 6J(EE(64E J(EE3& 46KI #$$G6(3 NieducarN< Jrie o banco de dados: postgresSD J(EE 3&$E ieducardb GI0 E*#4E S templateC 6GE( S ieducaruser EJ63IK S N4I/N< postgresSD^q postgres_usuario:`T exit !aça o restore para criar as tabelas do sistema: T sudo ]u postgres psql -d ieducardb -f ;var;%%%;ieducar;misc;database;ieducarsql Aten$%o0 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 !4 não relacionado com a operação com a tarefa
A7ustando o search8path lgumas 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 mensagem de erro dever. ser semelhante a essa durante o login: Garning: pgquerB79 functionpg-querB: +uerB failed: E((6: relação WfuncionarioW não existe in ;var;%%%;ieducar;intranet;include;cls&anco#g$qlincphp on line />/ $+4 invalido: $E4EJ refcodpessoafj !(6* funcionario G0E(E matricula S NadmN
Isso pode ter acontecido pelo fato do searchpath não ter sido recuperado corretamente durante a importação do arquivo $+4 #rimeiro, faça um login no #ostgre$+4 pelo psql com o usu.rio ieducaruser e verifique se o seu searchpath est. como o seguinte: T sudo -u postgres psql -A ieducaruser ieducardb ieducardbSD $06G searchpath< searchpath ---------------WTuserW, public, portal, cadastro, acesso, alimentos, consistenciacao, historico, pmiacoes, pmicontrolesis, pmidrh, pmieducar, pmiotopic, urbano 7/ ro%9 Jaso não esteja, ser. necess.rio configur.-lo corretamente inda no psql, d? o seguinte comando para ajustar o searchpath: ieducardbSD 4E( 3&$E ieducardb $E searchpath 6 WTuserW, public, portal, cadastro, acesso, alimentos, consistenciacao, historico, pmiacoes, pmicontrolesis, pmidrh, pmieducar, pmiotopic, urbano< ieducardbSD^q
Con3i'urando o PHP 6 i-Educar funciona com a configuração padrão do #0# 8 penas alguns ajustes são necess.rios para evitar um mau comportamento da aplicação Edite o arquivo phpini ajustando as seguintes diretivas: D nano ;etc;php8;apache1;phpini •
memorBlimit: altere para no mínimo 21* 7devido ao gerador de relat@rios, em plataformas O5 bit, pode ser necess.rio aumentar para uma quantidade maior9< •
•
errorreporting: altere para E44 X `E6IJE para evitar que avisos do nível E6IJE 7comuns na versão atual9, apareçam nas telas quebrando o laBout do sistema< •
•
errorreporting S E44 X `E6IJE
displaBerrors: altere para 6ff em produção e deixe 6n para no seu ambiente de desenvolvimento •
•
memorBlimit S 21*
displaBerrors S 6ff
shortopentag: altere para 6n •
shortopentag S 6n
p@s qualquer alteração no arquivo phpini, reinicie seu servidor %eb 7no nosso caso, o apache19: D ;etc;initd;apache1 restart Existem dois diret@rios em que o i-Educar pode gravar arquivos e que precisam de permissão de escrita 7usu.rios Gindo%s não precisam se preocupar com este passo9:
•
intranet;pdf
•
intranet;tmp
o invs de dar uma permissão MMM, mude o grupo do diret@rio e d? permissão de escrita para o grupo tambm: D chgrp %%%-data ;var;%%%;ieducar;intranet;pdf D chgrp %%%-data ;var;%%%;ieducar;intranet;tmp D chmod MM8 ;var;%%%;ieducar;intranet;pdf D chmod MM8 ;var;%%%;ieducar;intranet;tmp
Con3i'urando os par9metros de acesso ao banco Jaso 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 cesse e edite o arquivo cls&ancoincphp D nano ;var;%%%;ieducar;intranet;include;cls&ancoincphp
ltere o valor das seguintes vari.veis: ;VprotectedV;var Tstr0ost S localhost< ;; I# do servidor do banco de dados 7localhost para banco de dados na mesma m.quina9 ;VprotectedV;var Tstr&anco S ieducardb< ;; ome do banco de dados ;VprotectedV;var TstrAsuario S ieducaruser< ;; Asu.rio do banco de dados ;VprotectedV;var Tstr$enha S ieducar< ;; $enha do usu.rio do banco de dados ;VprotectedV;var Tstr#ort S 8521< ;; $enha do usu.rio do banco de dados ltere tambm o arquivo ieducarini D nano ;var;%%%;ieducar;configuration;ieducarini ltere o valor das seguintes vari.veis: appdatabasedbname S ieducardb appdatabaseusername S ieducaruser appdatabasehostname S localhost appdatabasepass%ord S ieducar appdatabaseport S 8521 Acessando a aplica$%o p@s realizar os passos anteriores, basta acessar o endereço http:;;localhost;ieducar e começar a navegar pela aplicação •
Asu.rio admin 7senha admin9: usu.rio com privilgios de criação de usu.rios<
5bser6a$%o0 se voc? recebeu um erro 5C2 !orbidden do pache, prov.vel o diret@rio 7sub-diret@rios e arquivos9 da aplicação esteja sem permissão de leitura #ara corrigir este problema rapidamente, execute os seguintes comandos:
;; #rocura por todos os sub-diret@rios e aplica a permissão M88 T find ;var;%%%;ieducar -tBpe d -exec chmod M88 ^< ;; #rocura por todos os arquivos e aplica a permissão O55 T find ;var;%%%;ieducar -tBpe f -exec chmod O55 ^<
Criando um 6irtual host no Apache , 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 atravs de A(4s como http:;;ieducar e http:;;ieducarlocal Jrie um arquivo chamado ieducarlocal no diret@rio ;etc;apache1;sites-available; com o seguinte conteUdo: irtual0ost V:=CP $erverame ieducarlocal 3ocument(oot ;var;%%%;ieducar 3irectorB ;var;%%%;ieducarP 6rder denB,allo% llo%6verride all ;3irectorBP ;irtual0ostP
Edite o arquivo ;etc;hosts 7no Gindo%s esse arquivo fica em J:^GI36G$^sBstem21^drivers^etc^hosts9 e adicione a seguinte linha: /1MCC/
ieducarlocal
(einicie o pache: D ;etc;initd;apache1 restart cesse o endereço http:;;ieducarlocal $e tudo estiver correto, a tela inicial ir. aparecer Em al'uns casos: é pro6/6el acontecer al'um erro ao cadastrar a 3oto do aluno+ esses casos, execute o procedimento abaixo: Jrie uma pasta chamada aluno dentro do diret@rio ;var;%%%;ieducar;intranet;arquivos;educar *ova as pastas7big, original e small9 que se encontram no diret@rio educar para a nova pasta criada7aluno9 D cd ;var;%%%;ieducar;intranet;arquivos;educar D m'dir aluno D mv small original big aluno Esse o caminho correto definido no c@digo onde a imagem cadastrada ser. salva ambm, e necess.rio modificar as permiss"es da pasta WalunoW sendo a pasta recem criada, a permissão normalmente utilizada e a WMM8W, assim pode-se ser resolvido o problema da foto do aluno D chmod MM8 aluno
/=;C=;1C// Elaboração: Marcus Paulo de Q. Amorim Contribuição: Franklim Ribeiro de Jesus Portal do Softare P!blico "rasileiro