Software Livre em Ambiente Escolar Software Livre em Ambiente Escolar Introdução à utilização de software livre em ambiente escolar como plataforma servidora, tomando como exemplo o casestudy da Escola Secundária Artística de Soares dos Reis Departamento de Engenharia Informática Instituto Superior de Engenharia do Porto Porto, 20 de Dezembro de 2005 Fernando J. Leal [email protected] Software Livre Software Livre em Ambiente Escolar ● ● Software que pode ser usado, copiado, estudado, modificado e redistribuído sem qualquer restrição. 4 liberdades fundamentais: – a liberdade de executar o programa para qualquer propósito; – a liberdade de estudar e modificar o programa; – a liberdade de copiar o programa e ajudar o vizinho; – a liberdade de melhorar o programa e distribuir a modificação, por forma a que toda a comunidade beneficie http://www.wikipedia.org/wiki/Free_software http://www.gnu.org, http://www.fsf.org Sistemas Operativos Livres Software Livre em Ambiente Escolar ● GNU/Linux – “Gnu's Not Unix” – Anunciado em 27Set1986 – Objectivos: ● ● ● ● compatibilidade com o Unix permitir aos utilizadores a liberdade de estudar, copiar, modificar e distribuir o sistema sem restrições FreeBSD – descende do AT&T Unix via Berkeley Software Distribution (BSD) – é desenvolvido como um todo, ao contrário do GNU/Linux – desenvolvimento começou em 1993 a partir do 386BSD Outros... http://www.gnu.org, http://www.freebsd.org Arquitectura ClienteServidor Software Livre em Ambiente Escolar ● ● ● ● Cada computador na Rede é ou um Cliente ou um Servidor Servidores são normalmente máquinas potentes dedicadas ao atendimento dos Clientes Eventos em sequência: – Cliente faz pedido – Servidor responde ido d Pe . 1 Servidor atende n clientes em “simultâneo” Servidor sta o sp e R 2. Cliente http://www.wikipedia.org/wiki/Clientserver Serviços na Web/LAN: DNS Software Livre em Ambiente Escolar ● ● ● ● Domain Name System (portos 53 TCP e UDP) Guarda informação relativa a nomes de domínios numa base de dados distribuída Torna possível fazer corresponder números IP (como 193.136.62.3) a nomes de domínios (como dei.isep.ipp.pt) RFC 1034, 1035 http://en.wikipedia.org/wiki/Domain_Name_System http://www.isc.org Serviços na Web/LAN: DHCP Software Livre em Ambiente Escolar ● ● ● ● Dynamic Host Configuration Protocol (portos 67 e 68 UDP) Distribui endereços IP numa rede (e informação adicional, como endereços de gateways, de servidores de DNS, de servidores de tempo, etc.) Métodos de distribuição: – manual (de acordo com uma tabela construída a priori que associa números IP a endereços MAC) – automática (os endereços são distribuídos e associados aos MAC a partir de um conjunto de endereços disponível à medida que os postos os pedem) – dinâmica (idêntica à anterior, mas com reutilização de endereços – uma vez vencido o lease time sem que o endereçamento seja renovado pelo cliente, o IP passa a estar livre e pode ser reutilizado) RFC 3315 http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol Software Livre em Ambiente Escolar Serviços na Web/LAN: SMTP ● Simple Mail Transfer Protocol (porto 25 TCP) ● Permite o envio de mensagens de correio electrónico ● Comandos: – HELO <domínio><CRLF> – MAIL FROM: <endereço remetente><CRLF> – RCPT TO: <endereço destinatário><CRLF> – DATA<CRLF><mensagem><CRLF>.<CRLF> ● RFC 2821 ● Exemplo de software : Sendmail (http://www.sendmail.org), Postfix (http://www.postfix.org) http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol Serviços na Web/LAN: POP3 Software Livre em Ambiente Escolar ● ● ● PostOffice Protocol versão 3 (porto 110 TCP) Permite a consulta a um servidor de correio electrónico e o download das mensagens armazenadas para um cliente local Estados: – Authorization (comandos USER, PASS e QUIT) – Transaction (comandos STAT, LIST, RETR, DELE, RSET e TOP) – Update (comando QUIT) ● Respostas: +OK (sucesso) e ERR (erro). ● RFC 1939 ● Exemplo de software: Dovecot (http://www.dovecot.org) http://en.wikipedia.org/wiki/Post_Office_Protocol Serviços na Web/LAN: LDAP Software Livre em Ambiente Escolar ● ● ● ● Lightweight Directory Access Protocol Simplificação do DAP – Directory Access Protocol – para lidar com directórios X.500 protocolo standard para a pesquisa e actualização de Serviços de Directório (um Directório é a base de dados que guarda informação sobre os objectos geridos pelo Serviço de Directório) É usado numa LAN para guardar centralmente informação sobre utilizadores, grupos, recursos (postos de trabalho, impressoras), etc. ● Sucede nos servidores do tipo Unix ao NIS – Network Information Service ● RFC 1778, 1778, 1823, 2251...2256, 2307 http://www.wikipedia.org/wiki/Ldap http://www.openldap.org Serviços na Web/LAN: HTTP Software Livre em Ambiente Escolar ● ● HyperText Transfer Protocol (porto 80 TCP) Possibilita o pedido e a recepção, pelos clientes, de informação normalmente guardada em ficheiros de servidores ● Utilizado primariamente para a transferência de páginas HTML na Internet ● Prevê uso de proxys ● Evoluções: – HTTP 0.9 – HTTP 1.0 – HTTP 1.1 (versão actual) http://www.w3.org/MarkUp/ http://en.wikipedia.org/wiki/HyperText_Transfer_Protocol HTTP 0.9 Software Livre em Ambiente Escolar ● ● ● Nunca chegou a ser muito usado, suporta apenas método GET Não suporta POST, pelo que a quantidade de informação que o Cliente pode passar ao Servidor é limitada Formato das mensagens: – Pedidos: ● – GET <URI><CRLF> Respostas: ● sequências de octetos, normalmente correspondentes a ficheiros no servidor HTTP 0.9 Software Livre em Ambiente Escolar ● Exemplo: – Ligação via telnet: ● – Pedido: ● – telnet www.dei.isep.ipp.pt 80 GET /teste.tmp Resposta: ● <!DOCTYPE HTML PUBLIC "//IETF//DTD HTML 2.0//EN"> <HTML> <HEAD><TITLE>Recurso Inexistente Resource Not Available</TITLE> <META HTTPEQUIV="refresh" CONTENT="60;url=/index.html"></HEAD> <BODY background="/bg.gif"> <H1>Recurso Inexistente Resource Not Available</H1> O acesso ao recurso especificado não foi possível. <BR>Access to the specified resource was not possible.<P> <HR> Para mais informações contacte (for further information please contact) <ADDRESS>DEI ([email protected])</ADDRESS> </BODY></HTML> HTTP 1.0 Software Livre em Ambiente Escolar ● ● ● Ainda em uso, especialmente por Proxy Servers Admite conexões persistentes (mais do que um pedidoresposta por conexão), mas apenas para ligações directas entre Cliente e Servidor, sem Proxy Exemplo: – ● Pedido: – ● telnet www.dei.isep.ipp.pt 80 GET /teste.tmp HTTP/1.0 RFC 1945 Resposta: ● HTTP/1.1 404 Not Found Date: Mon, 12 Dec 2005 11:55:39 GMT Server: Apache LastModified: Tue, 18 Jan 2005 10:57:02 GMT ETag: "2024722141eceb7e" AcceptRanges: bytes ContentLength: 545 Connection: close ContentType: text/html <!DOCTYPE HTML PUBLIC "//IETF//DTD HTML 2.0//EN"> (...) Software Livre em Ambiente Escolar HTTP 1.1 ● Versão actualmente mais usada ● Admite conexões persistentes mesmo quando é usado Proxy ● Admite o envio de vários pedidos concatenados antes de receber a primeira resposta – Pipelining ● Comandos: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT ● Exemplo: – ● Pedido: – ● telnet www.dei.isep.ipp.pt 80 GET /teste.tmp HTTP/1.1 Host: www.dei.isep.ipp.pt RFC 2616 Resposta: ● HTTP/1.1 404 Not Found Date: Mon, 12 Dec 2005 12:00:10 GMT Server: Apache LastModified: Tue, 18 Jan 2005 10:57:02 GMT ETag: "2024722141eceb7e" AcceptRanges: bytes ContentLength: 545 ContentType: text/html <!DOCTYPE HTML PUBLIC "//IETF//DTD HTML 2.0//EN"> (...) Servidor de HTTP Apache Software Livre em Ambiente Escolar ● ● ● ● Software livre desenvolvido em regime opensource pela Apache Software Foundation Disponível para plataformas *nix (Unix, Linux, BSD, ...), MSWindows, Novell Netware, e outras Usado por quase 70% dos servidores na Web (fonte: Netcraft Web Server Survey, Nov/2005) Distribuído em vários pacotes comerciais: Oracle Database, IBM Websphere, MacOSX, Novell Netware, ... ● Implementa todas as funcionalidades do HTTP/1.1 ● Versão 2 melhora versão 1: – suporte para threads em Unix – nova API – suporte para IPv6 http://www.apache.org SGBD PostgreSQL Software Livre em Ambiente Escolar ● ● ● ● Sistema de Gestão de Bases de Dados relacionais, com características OOP ao nível do esquema relacional (herança, polimorfismo) Escuta no porto 5432 TCP Suporta views, triggers (after, before e instead of), integridade referencial, transacções, procedimentos, funções, rules, tipos definidos pelo programador, etc... Desenvolvido cooperativamente por equipa multidisciplinar distribuída por todo o Globo (universidades, empresas, Sun Microsystems, IBM, Red Hat, e outros...) ● Suporta C, C++, Python, Perl, Java, SQL, Pl/pgSQL, Ruby, Tcl, R, ... ● Software cliente (livre e multiplataforma): pgAdmin3 (http://www.pgadmin.org) http://www.postgresql.org PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● ● ● Linguagem de programação usada primariamente para aplicações servidoras de conteúdos dinâmicos via Web Corre sobre Linux, Unix, MSWindows, MacOS, BSD, etc... Permite ligação nativa a grande leque de SGBD: PostgreSQL, MySQL, Oracle, IBM DB2, MSSql Server, SQLite, etc... (pode ainda usar ODBC) ● Trabalha com diversos servidores Web, nomeadamente Apache e IIS ● Versão 5 (a actual) suporta OOP (programação orientada a objectos) ● Acesso fácil à informação submetida pelo Cliente ($_GET, $_POST) e possibilidade de manter sessões no Servidor (session_start(), $_SESSION) ● Código no ficheiro HTML entre tags “<?php” e “?>” ● Documentação extensa disponível em www.php.net http://www.php.net PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● Pedido por um ficheiro HTML via HTTP 1. GET ... Apache 80/tcp Cliente ● 2. ficheiro HTML Servidor Pedido por um ficheiro PHP via HTTP (com consulta a BD) Apache 1. GET ... 80/tcp 5. HTML resultante Cliente 6. ficheiro HTML Servidor 2. invocação do interpretador PHP PHP 4. retorno de informação 3. consulta BD PostgreSQL PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● Exemplo de código: “Olá, Mundo!” – Ficheirofonte (no servidor): <!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Teste</title> <meta httpequiv="ContentType" content="text/html;charset=iso88591"> </head> <body> <h1>Teste</h1> <p><?php echo('Olá, Mundo!') ?></p> <p> <?php $arr=array('Isto', 'é', 'um', 'teste.'); foreach($arr as $x) echo($x.' '); ?> </p> </body> </html> PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● Exemplo de código: “Olá, Mundo!” – Ficheiro recebido pelo Cliente: <!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Teste</title> <meta httpequiv="ContentType" content="text/html;charset=iso88591"> </head> <body> <h1>Teste</h1> <p>Olá, Mundo!</p> <p>Isto é um teste. </p> </body> </html> PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● Exemplo de código: ligação a BD PostgreSQL – Ficheirofonte (no servidor): <!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta httpequiv="ContentType" content="text/html; charset=ISO88591"> <title>Lista de Alunos</title> </head> <body> <?php $conn=@pg_connect('host=localhost port=5432 dbname=bd user=xpto password=pwd'); if ($conn) { pg_set_client_encoding($conn, 'LATIN1'); $rs=pg_query('select id, nome from alunos order by nome'); while ($x=pg_fetch_array($rs)) { ?> <p><?=$x['id']?> <?=$x['nome']?></p> <?php } } else echo('<p>Erro ao ligar à BD!</p>'); ?> </body> </html> PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● Exemplo de código: ligação a BD PostgreSQL – Ficheiro recebido pelo Cliente: <!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta httpequiv="ContentType" content="text/html; charset=ISO88591"> <title>Lista de Alunos</title> </head> <body> <p>1 Ana</p> <p>2 José</p> <p>4 Luísa</p> <p>3 Mário</p> </body> </html> PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● Exemplo de código: OOP <?php class Car { public $miles; //variável pública, acessível fora da classe private $mpg; //variável privada, só pode ser acedida dentro da classe protected $mph;//variável protegida, só acessível dentro da classe e em classes derivadas desta function __construct($param) { //construtor da classe, chamado aquando de cada instanciação dosomething($param); } public function startcar() { //métodos podem ser públicos, privados ou protegidos startthecar(); } public function stopcar() { stopthecar(); } public function miles { return $this>miles; } } $car = new Car($param); echo $car>miles; //imprime o valor da propriedade "miles" da classe "Car" ?> PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● Exemplo: envio de email – Mensagem em formato texto: <?php $rcpt='[email protected]'; $subject='Teste'; $message='Isto é um teste – 1, 2, 3...'; if (@mail($rcpt, $subject, $message)) echo('<p>Ok email enviado.</p>'); else echo('<p>Erro!</p>'); ?> Mensagem em formato HTML: <?php $rcpt='[email protected]'; $subject='Teste em HTML'; $headers='MIMEVersion: 1.0\r\nContenttype: text/html; charset=iso88591\r\n'; $message='<html><head><title>Teste</title></head>' .'<body><h1>Email de teste</h1>' .'<p>Data: '.htmlentities(date('d.M.Y H:i:s (l)')).'.</p>' .'<p>Email: '.$rcpt.'</p>' .'<p>Isto é um teste<br>1, 2, 3...</p>' .'</body></html>'; if (@mail($rcpt, $subject, $message, $headers)) echo('<p>Ok email enviado.</p>'); else echo('<p>Erro!</p>'); ?> PHP: Hypertext Preprocessor Software Livre em Ambiente Escolar ● Extensões ao PHP: – PEAR, PHP Extension and Application Repository (http://pear.php.net) – PHPGTK, conjunto de classes que fazem a interface com as bibliotecas gráficas GTK+ (GIMP Toolkit, http://www.gtk.org), permitindo a escrita de aplicações gráficas, do lado do Cliente, em PHP (http://gtk.php.net) – Gnope, software multiplataforma de interface gráfica (para Windows, Linux, MacOSX, e outros...) usa PHP, GTK+ e PEAR (http://www.gnope.org) – SMARTY Template/Presentation Framework, permite separar o código PHP do desenho da interface. É útil em projectos em que o design de interfaces está atribuído a uma equipa de webdesigners, e o desenvolvimento do código a uma equipa de programadores (http://smarty.php.net) – entre outros... Escola Secundária Artística de Soares dos Reis (Porto) essr.net Software Livre em Ambiente Escolar ● ● ● Tempo de desenvolvimento do sistema informático: 5 anos (20002005) 2 servidores dedicados e cerca de 90 postos de trabalho (entre PCs – ix86, x86_64 – e Macs, a correr GNU/Linux, MSWindows e MacOSX) Ligação à Internet por ADSL a 1Mbit/s, com IP fixo, via Rede Ciência, Tecnologia e Sociedade (RCTS) – recurso disponível para todas as secundárias Distribuição dos O.S. na LAN essr.net ● Recursos na Net: – site da Escola – portal Web (livro de ponto informático, lançamento de classificações, etc.) – fóruns – Moodle (plataforma de gestão de conteúdos pedagógicos) – email, página pessoal e acesso remoto via SSH para toda a comunidade GNU/Linux MSWindows MacOSX Sistema de Informação Escolar (SIE) Software Livre em Ambiente Escolar ● ● Sistema desenvolvido de raiz na Soares dos Reis Base de dados relacional implementada em SGBD PostgreSQL (pode ser usado outro) sobre GNU/Linux ● Interfaces gráficas executáveis de gestão da informação em Java ● Site institucional, portal, fóruns, Moodle e webmail desenvolvidos em PHP Interfaces em browser Site Portal Fóruns Moodle Webmail Mailman Apache PHP http://www.essr.net http://torga.essr.net:8080 PostgreSQL Interfaces Java JDBC Swing Fim Software Livre em Ambiente Escolar ● Outras referências interessantes a software livre e opensource: – Catalog of Free and Open Source Software for Education, OSV http://www.osv.org.au/index.cgi?tid=155 – Software Livre na Administração Pública (apresentação) http://gul.dei.isep.ipp.pt/apresentacoes/ap/web/ – Software Livre @ Administração Pública (site) http://www.softwarelivre.citiap.gov.pt/ – GULDEI ISEP, Grupo de Utilizadores de Linux do DEIISEP http://gul.dei.isep.ipp.pt – Free Software Foundation http://www.fsf.org Apresentação desenvolvida em OpenOffice.org v2.0 (http://www.openoffice.org), sobre o sistema operativo GNU/Linux, distribuição Ubuntu 5.10 “Breezy Badger” (http://www.ubuntulinux.org). (c) 2005 Fernando J. Leal É permitida a cópia e a livre distribuição.