“Introdução ao Linux”
Luís Felipe Bretas Marzagão
   duli@easylifeproject.org
Pauta
●   Linux
●   Distribuições GNU/Linux
●   Formatos abertos de documentos eletrônicos
●   Servidores LAMP
O que é Linux?
●   É o núcleo (kernel) de sistemas operacionais.



●   Então Linux não é um sistema operacional?



●   NÃO! É uma parte de um sistema operacional.
O que é Linux?
Sistema Operacional




                                                                       Linux!!!




  Kernel: gerencia os recursos do computador e permite que outros programas usem
          esses recursos.
O que é Linux?
●   Exemplos de SOs que usam o kernel Linux:
       ●   Debian
       ●   Ubuntu
       ●   Fedora
       ●   OpenSUSE
       ●   CentOS
       ●   … (e muitos, muitos outros)


●   São chamados de também de “distribuições”
O começo
●   1984: Projeto GNU (Gnu's Not Unix)
       ●   Objetivo: criar S.O. livre similar ao Unix (GNU)
       ●   Definição de Software Livre
               ●   Liberdade para executar, copiar, distribuir e
                     modificar o software
       ●   GNU General Public License (GPL)
               ●   Perpetuação da liberdade do software
       ●   Kernel GNU (“GNU Hurd”) – sem versão estável

●   1991: Linus Torvalds inicia o Kernel Linux
O começo
●   1992: Linux é distribuído sob a GPL
       ●   Desenvolvimento colaborativo do código
               ●   Contribuições do mundo inteiro
       ●   Kernel Linux foi combinado com o sistema GNU

●   1993: Proliferação de distribuições GNU/Linux
       ●   Softlanding Linux System
       ●   Debian Linux
       ●   Red Hat Linux ...
Quem faz o Linux?
●   Maior projeto mundial de desenvolvimento
    colaborativo na história da computação
●   Desde 2005, 8.000 mil desenvolvedores de
    aproximadamente 800 empresas contribuíram
    para o Linux
       ●   Red Hat, Intel, IBM, Novell, Nokia, Microsoft...
●   Contribuições que geraram mais de 15 milhões
    de linhas de código
●   Novo kernel Linux a cada 2 ou 3 meses
Quem faz o Linux?
●   75% das contribuições para o código são de
    desenvolvedores pagos por empresas para
    fazer esse trabalho

●   Apenas 18% das contribuições para o código
    não são financiadas por empresas



                                           fonte: Linux Kernel Development
                        (http://go.linuxfoundation.org/who-writes-linux-2012)
Onde o Linux está presente?
●   850 mil telefones com Android ativados por dia
●   700 mil televisões vendidas por dia com Linux
●   A cada 10 centros de finanças, 8 rodam Linux
●   A cada 10 supercomputadores, 9 rodam Linux
●   Google, Twitter, Facebook, Amazon usam Linux

                               Fonte: The Linux Foundation
                                   www.linuxfoundation.org
E os desktops?
Também rodam Linux!
E os desktops?
Características gerais GNU/Linux
●   Sistema Operacional de propósito geral
        ●   De servidores a desktops a telefones...
●   Prevalência de software livre e aberto
●   Upgrades não traumáticos em termos de
    configurações
●   Novas versões em curtos períodos de tempo
●   Suporte a todas as línguas possíveis
O melhor de tudo
●   Sempre será livre para qualquer um, em
    qualquer lugar:
    ●   USAR
    ●   MODIFICAR
    ●   DISTRIBUIR



    * Decorrência do uso da Licença GNU GPL e similares
Filosofia da liberdade
●   Irradia efeitos para outros segmentos
       ●   OpenDocument Format
               ●   Padrão internacional ISO e IEC
               ●   Armanezamento de documentos indendepentemente do
                     software utilizado - portabilidade
               ●   Qualquer desenvolvedor pode implementar o formato sem
                     pagar royalties
               ●   Perpetua a liberdade da informação armazenada
               ●   Norma ABNT NBR ISO/IEC 26300:2008


       ●   Ogg Container (formatos multimídia)
               ●   Vorbis, Theora, Speex, FLAC
Filosofia da liberdade
●   Adoção de formatos abertos por Governos
       ●   Brasil
               ●   Protocolo para adoção de Formatos Abertos - D.O.U. de
                     19/11/08, pág. 88
               ●   Arquitetura de interoperabilidade (e-PING)
               ●   Padrões Web (e-PWG)
               ●   Software Livre no Governo http://www.softwarelivre.gov.br/
               ●   Projeto de Lei 3.070/2008 (Câmara dos Deputados)
       ●   Outros países
               ●   Alemanha, Bélgica, Dinamarca, França, Japão, Holanda,
                     Reino Unido, Suécia, Venezuela ...
GNU/Linux: Um mundo de opções
●   Partições (ext3, ext4, LVM, RAID ...)
●   Desktops (Gnome, KDE, XFCE ...)
●   Releases (LiveCD, DVD, Network install ...)
●   Repositórios de Aplicativos (free, non-free ...)
●   Aplicativos (Abiword, LibreOffice.org, Gimp ...)
●   Gerenciadores de janelas (metacity, fluxbox …)
●   Arquiteturas (i386, x86_64, ppc ...)
GNU/Linux: Qualidades
●   Segurança (rapidez na correção de falhas,
    repositórios próprios de software)
        ● Praticamente imune a vírus
●   Estabilidade do S.O. (está entre as prioridades)
●   “Drivers” (pronto para uso - maioria dos casos)
●   Rapidez (demanda poucos recursos de hardware)
●   Sistemas de arquivos (Baixíssima fragmentação)
●   Registro e arquivos de configuração (texto puro)
●   Gera aprendizado
Problemas contornáveis
●   Necessidade de software específico sem
    versão para GNU/Linux
●   “Hardcore” gamer
●   Hardware não suportado
●   Sites mal feitos ou feitos exclusivamente para
    o Internet Explorer


    Solução: Máquina Virtual ou “Boot Duplo”
              EVITE RADICALISMOS!
Boot duplo, triplo, quádruplo ...
Máquina Virtual
Maior obstáculo!
Porque ...
Por onde começar?
●   “Prontos” para funcionar
       ●   Linux Mint (http://linuxmint.com)
       ●   Ubuntu (http://www.ubuntu.com)
                        maior funcionalidade “out of the box”
●   Podem demandar maior aprendizado
       ●   Fedora (http://fedoraproject.org)
               ●   Política rígida quanto ao uso exclusivo de
                    software livre
       ●   Debian (http://www.debian.org)
       ●   Etc...
Noções mínimas
●   Usuário 'root'
●   Árvore de pastas do sistema:
        ●   /
                ●   bin/
                ●   boot/
                ●   dev/
                ●   etc/
                ●   home/
                ●   lib/
                ●   mnt/
                ●   tmp/
                ●   var/
Instalar e Remover Programas
●   O que é um repositório?

●   Evite instalar programas que não estejam nos
    repositórios oficiais ou recomendados

●   Sempre use algum gerenciador de pacotes!
    ●   yum, apt-get ou as interfaces gráficas respectivas
Instalar e Remover Programas
Aprofundar o aprendizado!
●   Comandos no terminal (ls, cp, mv, tail, grep …)
        ●   Essencial para adm. remota de servidores
●   Gerenciamento de pacotes (aplicativos)
        ●   yum install nome-do-pacote (Fedora)
        ●   apt-get install nome-do-pacote (Ubuntu)
        ●   ...
●   Shell script, linguagens de programação
●   Inglês, inglês, inglês e inglês!
easyLife
                     http://easylifeproject.org

●   Configura o “sudo” para o usuário regular
●   Ajusta opções do desktop (+ agradável)
●   Instala o plugin Flash Player
●   Instala codecs
●   Instala fontes
●   Instala plugin Java
●   Instala drivers da nvidia
●   Outros ajustes ...
easyLife
http://easylifeproject.org
Servidores LAMP
● Linux
● Apache

● MySQL

● PHP / Perl / Python
Servidores LAMP
●   Compõem 2/3 dos servidores na internet
       ●   Por quê?
              ●   Livre disposição (Software Livre)
              ●   Fácil configuração
              ●   Estabilidade
              ●   Constante desenvolvimento e evolução
              ●   Poupa o desenvolvedor de tarefas
                    administrativas
Apache
●   Servidor de protocolo HTTP
       ●   Hypertext Transfer Protocol
               ●   Sistema de Requisição/Resposta
                       ●   Métodos: GET, POST, HEAD, …
                       ●   Servidor responde com recursos tais como
                            arquivos HTML
●   Altamente configurável (texto puro)
●   Altamente modular
●   Virtual Hosts (diversos websites em um mesmo
    servidor)
Apache
●   Alternativas para o Apache
       ●   Lighttpd
       ●   Nginx
       ●   Hiawatha
       ●   Cherokee
Exemplo Request/Response HTTP
       Navegador → http://www.somehost.com/path/file.html


                                      Resposta:

                                      HTTP/1.0 200 OK
                                      Date: Fri, 31 Dec 1999 23:59:59
Requisição:
                                      GMT
                                      Content-Type: text/html
GET /path/file.html HTTP/1.0
                                      Content-Length: 1354
From: someuser@jmarshall.com
User-Agent: HTTPTool/1.0
                                      <html>
[blank line here]
                                      <body>
                                      <h1>Happy New Year!</h1>
                                      (more file contents)
                                        .
                                        .
                                        .
                                      </body>
                                      </html>
MySQL
●   Sistema de gerenciamento de banco de dados
    relacional (RDBMS)
       ●   Tabelas → colunas/linhas
       ●   Operações relacionais entre tabelas, por meio
             de campos comuns
●   Utiliza SQL para manipulação dos dados
       ●   Structured Query Language
               ●   Mistura de inglês + matemática
●   Fácil de usar
●   Questões sobre performance e confiabilidade
MySQL
  Exemplo de consulta SQL
                        id   nome     cidade
                        1    Silvio   Salto
  Tabela 'usuarios' →
                        2    Alex     Curitiba
                        3    Marcos   Salto


mysql> SELECT * FROM usuarios WHERE cidade = 'Salto';

+­­­­+­­­­­­­­+­­­­­­­­+
| id | nome   | cidade |
+­­­­+­­­­­­­­+­­­­­­­­+
| 1  | Silvio | Salto  |
+­­­­+­­­­­­­­+­­­­­­­­+
| 3  | Marcos | Salto  |
+­­­­+­­­­­­­­+­­­­­­­­+
2 rows in set (0.00 sec)
MySQL
●   Alternativas para MySQL
       ●   PostgreSQL
       ●   SQLite
       ●   Firebird/Interbase
       ●   Mongo (NoSQL)
PHP
●   PHP: Hypertext Pre-processor
       ●   Antes: “Personal Home Page”
●   Linguagem de script mais popular na internet
●   Suporte comunitário abundante
●   Fácil sintaxe (mas não a mais elegante)
●   Especialmente feita para desenvolvimento web
●   Fácil interação com bancos de dados
       ●   MySQL, PostgreSQL, SQLite, Mongo, ...
PHP
Como funciona?



    O código php é interpretado por um servidor
     http (Apache) através de um módulo de
     processamento (mod_php5.so) que gera a
     página html resultante na hora (“on the fly”)
PHP
<?php

for ($i = 1; $i < 5) {
     echo “<p>O número é “ . $i . “<p/>”;
     $i = $i + 1;
}
?>

                                 É igual a...


                                                <?php

                                                echo   “<p>O   número   é   1   <p/>”;
                                                echo   “<p>O   número   é   2   <p/>”;
                                                echo   “<p>O   número   é   3   <p/>”;
                                                echo   “<p>O   número   é   4   <p/>”;

                                                ?>
PHP
Que é igual a...


     <p>O    número   é   1   <p/>
     <p>O    número   é   2   <p/>
     <p>O    número   é   3   <p/>
     <p>O    número   é   4   <p/>    No navegador:

     (saída em HTML)

                                      O   número   é   1
                                      O   número   é   2
                                      O   número   é   3
                                      O   número   é   4
Dúvidas?
Contato



   duli@easylifeproject.org

                  twitter.com/dulinux

Estes slides: http://easylifeproject.org/slides/intro-linux.pdf
Intro linux

Intro linux

  • 2.
    “Introdução ao Linux” LuísFelipe Bretas Marzagão duli@easylifeproject.org
  • 3.
    Pauta ● Linux ● Distribuições GNU/Linux ● Formatos abertos de documentos eletrônicos ● Servidores LAMP
  • 4.
    O que éLinux? ● É o núcleo (kernel) de sistemas operacionais. ● Então Linux não é um sistema operacional? ● NÃO! É uma parte de um sistema operacional.
  • 5.
    O que éLinux? Sistema Operacional Linux!!! Kernel: gerencia os recursos do computador e permite que outros programas usem esses recursos.
  • 6.
    O que éLinux? ● Exemplos de SOs que usam o kernel Linux: ● Debian ● Ubuntu ● Fedora ● OpenSUSE ● CentOS ● … (e muitos, muitos outros) ● São chamados de também de “distribuições”
  • 7.
    O começo ● 1984: Projeto GNU (Gnu's Not Unix) ● Objetivo: criar S.O. livre similar ao Unix (GNU) ● Definição de Software Livre ● Liberdade para executar, copiar, distribuir e modificar o software ● GNU General Public License (GPL) ● Perpetuação da liberdade do software ● Kernel GNU (“GNU Hurd”) – sem versão estável ● 1991: Linus Torvalds inicia o Kernel Linux
  • 8.
    O começo ● 1992: Linux é distribuído sob a GPL ● Desenvolvimento colaborativo do código ● Contribuições do mundo inteiro ● Kernel Linux foi combinado com o sistema GNU ● 1993: Proliferação de distribuições GNU/Linux ● Softlanding Linux System ● Debian Linux ● Red Hat Linux ...
  • 9.
    Quem faz oLinux? ● Maior projeto mundial de desenvolvimento colaborativo na história da computação ● Desde 2005, 8.000 mil desenvolvedores de aproximadamente 800 empresas contribuíram para o Linux ● Red Hat, Intel, IBM, Novell, Nokia, Microsoft... ● Contribuições que geraram mais de 15 milhões de linhas de código ● Novo kernel Linux a cada 2 ou 3 meses
  • 10.
    Quem faz oLinux? ● 75% das contribuições para o código são de desenvolvedores pagos por empresas para fazer esse trabalho ● Apenas 18% das contribuições para o código não são financiadas por empresas fonte: Linux Kernel Development (http://go.linuxfoundation.org/who-writes-linux-2012)
  • 11.
    Onde o Linuxestá presente? ● 850 mil telefones com Android ativados por dia ● 700 mil televisões vendidas por dia com Linux ● A cada 10 centros de finanças, 8 rodam Linux ● A cada 10 supercomputadores, 9 rodam Linux ● Google, Twitter, Facebook, Amazon usam Linux Fonte: The Linux Foundation www.linuxfoundation.org
  • 12.
  • 13.
  • 14.
    Características gerais GNU/Linux ● Sistema Operacional de propósito geral ● De servidores a desktops a telefones... ● Prevalência de software livre e aberto ● Upgrades não traumáticos em termos de configurações ● Novas versões em curtos períodos de tempo ● Suporte a todas as línguas possíveis
  • 15.
    O melhor detudo ● Sempre será livre para qualquer um, em qualquer lugar: ● USAR ● MODIFICAR ● DISTRIBUIR * Decorrência do uso da Licença GNU GPL e similares
  • 16.
    Filosofia da liberdade ● Irradia efeitos para outros segmentos ● OpenDocument Format ● Padrão internacional ISO e IEC ● Armanezamento de documentos indendepentemente do software utilizado - portabilidade ● Qualquer desenvolvedor pode implementar o formato sem pagar royalties ● Perpetua a liberdade da informação armazenada ● Norma ABNT NBR ISO/IEC 26300:2008 ● Ogg Container (formatos multimídia) ● Vorbis, Theora, Speex, FLAC
  • 17.
    Filosofia da liberdade ● Adoção de formatos abertos por Governos ● Brasil ● Protocolo para adoção de Formatos Abertos - D.O.U. de 19/11/08, pág. 88 ● Arquitetura de interoperabilidade (e-PING) ● Padrões Web (e-PWG) ● Software Livre no Governo http://www.softwarelivre.gov.br/ ● Projeto de Lei 3.070/2008 (Câmara dos Deputados) ● Outros países ● Alemanha, Bélgica, Dinamarca, França, Japão, Holanda, Reino Unido, Suécia, Venezuela ...
  • 18.
    GNU/Linux: Um mundode opções ● Partições (ext3, ext4, LVM, RAID ...) ● Desktops (Gnome, KDE, XFCE ...) ● Releases (LiveCD, DVD, Network install ...) ● Repositórios de Aplicativos (free, non-free ...) ● Aplicativos (Abiword, LibreOffice.org, Gimp ...) ● Gerenciadores de janelas (metacity, fluxbox …) ● Arquiteturas (i386, x86_64, ppc ...)
  • 19.
    GNU/Linux: Qualidades ● Segurança (rapidez na correção de falhas, repositórios próprios de software) ● Praticamente imune a vírus ● Estabilidade do S.O. (está entre as prioridades) ● “Drivers” (pronto para uso - maioria dos casos) ● Rapidez (demanda poucos recursos de hardware) ● Sistemas de arquivos (Baixíssima fragmentação) ● Registro e arquivos de configuração (texto puro) ● Gera aprendizado
  • 20.
    Problemas contornáveis ● Necessidade de software específico sem versão para GNU/Linux ● “Hardcore” gamer ● Hardware não suportado ● Sites mal feitos ou feitos exclusivamente para o Internet Explorer Solução: Máquina Virtual ou “Boot Duplo” EVITE RADICALISMOS!
  • 21.
    Boot duplo, triplo,quádruplo ...
  • 22.
  • 23.
  • 24.
  • 25.
    Por onde começar? ● “Prontos” para funcionar ● Linux Mint (http://linuxmint.com) ● Ubuntu (http://www.ubuntu.com) maior funcionalidade “out of the box” ● Podem demandar maior aprendizado ● Fedora (http://fedoraproject.org) ● Política rígida quanto ao uso exclusivo de software livre ● Debian (http://www.debian.org) ● Etc...
  • 26.
    Noções mínimas ● Usuário 'root' ● Árvore de pastas do sistema: ● / ● bin/ ● boot/ ● dev/ ● etc/ ● home/ ● lib/ ● mnt/ ● tmp/ ● var/
  • 27.
    Instalar e RemoverProgramas ● O que é um repositório? ● Evite instalar programas que não estejam nos repositórios oficiais ou recomendados ● Sempre use algum gerenciador de pacotes! ● yum, apt-get ou as interfaces gráficas respectivas
  • 28.
  • 29.
    Aprofundar o aprendizado! ● Comandos no terminal (ls, cp, mv, tail, grep …) ● Essencial para adm. remota de servidores ● Gerenciamento de pacotes (aplicativos) ● yum install nome-do-pacote (Fedora) ● apt-get install nome-do-pacote (Ubuntu) ● ... ● Shell script, linguagens de programação ● Inglês, inglês, inglês e inglês!
  • 30.
    easyLife http://easylifeproject.org ● Configura o “sudo” para o usuário regular ● Ajusta opções do desktop (+ agradável) ● Instala o plugin Flash Player ● Instala codecs ● Instala fontes ● Instala plugin Java ● Instala drivers da nvidia ● Outros ajustes ...
  • 31.
  • 32.
    Servidores LAMP ● Linux ●Apache ● MySQL ● PHP / Perl / Python
  • 33.
    Servidores LAMP ● Compõem 2/3 dos servidores na internet ● Por quê? ● Livre disposição (Software Livre) ● Fácil configuração ● Estabilidade ● Constante desenvolvimento e evolução ● Poupa o desenvolvedor de tarefas administrativas
  • 34.
    Apache ● Servidor de protocolo HTTP ● Hypertext Transfer Protocol ● Sistema de Requisição/Resposta ● Métodos: GET, POST, HEAD, … ● Servidor responde com recursos tais como arquivos HTML ● Altamente configurável (texto puro) ● Altamente modular ● Virtual Hosts (diversos websites em um mesmo servidor)
  • 35.
    Apache ● Alternativas para o Apache ● Lighttpd ● Nginx ● Hiawatha ● Cherokee
  • 36.
    Exemplo Request/Response HTTP Navegador → http://www.somehost.com/path/file.html Resposta: HTTP/1.0 200 OK Date: Fri, 31 Dec 1999 23:59:59 Requisição: GMT Content-Type: text/html GET /path/file.html HTTP/1.0 Content-Length: 1354 From: someuser@jmarshall.com User-Agent: HTTPTool/1.0 <html> [blank line here] <body> <h1>Happy New Year!</h1> (more file contents) . . . </body> </html>
  • 37.
    MySQL ● Sistema de gerenciamento de banco de dados relacional (RDBMS) ● Tabelas → colunas/linhas ● Operações relacionais entre tabelas, por meio de campos comuns ● Utiliza SQL para manipulação dos dados ● Structured Query Language ● Mistura de inglês + matemática ● Fácil de usar ● Questões sobre performance e confiabilidade
  • 38.
    MySQL Exemplode consulta SQL id nome cidade 1 Silvio Salto Tabela 'usuarios' → 2 Alex Curitiba 3 Marcos Salto mysql> SELECT * FROM usuarios WHERE cidade = 'Salto'; +­­­­+­­­­­­­­+­­­­­­­­+ | id | nome   | cidade | +­­­­+­­­­­­­­+­­­­­­­­+ | 1  | Silvio | Salto  | +­­­­+­­­­­­­­+­­­­­­­­+ | 3  | Marcos | Salto  | +­­­­+­­­­­­­­+­­­­­­­­+ 2 rows in set (0.00 sec)
  • 39.
    MySQL ● Alternativas para MySQL ● PostgreSQL ● SQLite ● Firebird/Interbase ● Mongo (NoSQL)
  • 40.
    PHP ● PHP: Hypertext Pre-processor ● Antes: “Personal Home Page” ● Linguagem de script mais popular na internet ● Suporte comunitário abundante ● Fácil sintaxe (mas não a mais elegante) ● Especialmente feita para desenvolvimento web ● Fácil interação com bancos de dados ● MySQL, PostgreSQL, SQLite, Mongo, ...
  • 41.
    PHP Como funciona? O código php é interpretado por um servidor http (Apache) através de um módulo de processamento (mod_php5.so) que gera a página html resultante na hora (“on the fly”)
  • 43.
    PHP <?php for ($i =1; $i < 5) { echo “<p>O número é “ . $i . “<p/>”; $i = $i + 1; } ?> É igual a... <?php echo “<p>O número é 1 <p/>”; echo “<p>O número é 2 <p/>”; echo “<p>O número é 3 <p/>”; echo “<p>O número é 4 <p/>”; ?>
  • 44.
    PHP Que é iguala... <p>O número é 1 <p/> <p>O número é 2 <p/> <p>O número é 3 <p/> <p>O número é 4 <p/> No navegador: (saída em HTML) O número é 1 O número é 2 O número é 3 O número é 4
  • 45.
  • 46.
    Contato duli@easylifeproject.org twitter.com/dulinux Estes slides: http://easylifeproject.org/slides/intro-linux.pdf