i-educar manual de instalação
DESCRIPTION
Manual de instalação passo a passo. Para iniviantes em Linux. Feito todo na distribuição do UBUNTU 10.10.TRANSCRIPT
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.
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:
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'
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
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:
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
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:
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);
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
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:
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