Intro linux

47

description

Palestra sobre Linux e afins

Transcript of Intro linux

Page 1: Intro linux
Page 2: Intro linux

““Introdução ao Linux”Introdução ao Linux”

Luís Felipe Bretas MarzagãoLuís Felipe Bretas Marzagã[email protected]@easylifeproject.org

Page 3: Intro linux

PautaPauta

● LinuxLinux● Distribuições GNU/LinuxDistribuições GNU/Linux● Formatos abertos de documentos eletrônicosFormatos abertos de documentos eletrônicos● Servidores LAMPServidores LAMP

Page 4: Intro linux

O que é Linux?O que é Linux?

● É o É o núcleonúcleo (kernel) de sistemas operacionais. (kernel) de sistemas operacionais.

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

● NÃO! É uma NÃO! É uma parteparte de um sistema operacional. de um sistema operacional.

Page 5: Intro linux

O que é Linux?O que é Linux?

Linux!!!Linux!!!

Sistema OperacionalSistema Operacional

Kernel: gerencia os recursos do computador e permite que outros programas usem Kernel: gerencia os recursos do computador e permite que outros programas usem esses recursos. esses recursos.

Page 6: Intro linux

O que é Linux?O que é Linux?

● Exemplos de SOs que usam o kernel Linux:Exemplos de SOs que usam o kernel Linux:● DebianDebian● UbuntuUbuntu● FedoraFedora● OpenSUSEOpenSUSE● CentOSCentOS● … … (e muitos, muitos outros)(e muitos, muitos outros)

● São chamados de também de “distribuições”São chamados de também de “distribuições”

Page 7: Intro linux

O começoO começo

● 19841984: : Projeto GNUProjeto GNU (Gnu's Not Unix) (Gnu's Not Unix)● Objetivo: criar S.O. livre similar ao Unix (GNU)Objetivo: criar S.O. livre similar ao Unix (GNU)● Definição de Software LivreDefinição de Software Livre

● Liberdade para executar, copiar, distribuir e Liberdade para executar, copiar, distribuir e modificar o softwaremodificar o software

● GNU General Public License (GPL)GNU General Public License (GPL)● Perpetuação da liberdade do softwarePerpetuação da liberdade do software

● Kernel GNU (“GNU Hurd”) – sem versão estávelKernel GNU (“GNU Hurd”) – sem versão estável

● 19911991: : Linus TorvaldsLinus Torvalds inicia o Kernel Linux inicia o Kernel Linux

Page 8: Intro linux

O começoO começo● 19921992: Linux é distribuído sob a GPL: Linux é distribuído sob a GPL

● Desenvolvimento colaborativo do códigoDesenvolvimento colaborativo do código● Contribuições do mundo inteiroContribuições do mundo inteiro

● Kernel Linux foi combinado com o sistema GNUKernel Linux foi combinado com o sistema GNU

● 19931993: Proliferação de distribuições GNU/Linux: Proliferação de distribuições GNU/Linux● Softlanding Linux SystemSoftlanding Linux System● Debian LinuxDebian Linux● Red Hat Linux ...Red Hat Linux ...

Page 9: Intro linux

Quem faz o Linux?Quem faz o Linux?

● Maior projeto mundial de desenvolvimento Maior projeto mundial de desenvolvimento colaborativo na história da computaçãocolaborativo na história da computação

● Desde 2005, 8.000 mil desenvolvedores de Desde 2005, 8.000 mil desenvolvedores de aproximadamente 800 empresas contribuíram aproximadamente 800 empresas contribuíram para o Linuxpara o Linux

● Red Hat, Intel, IBM, Novell, Nokia, Microsoft...Red Hat, Intel, IBM, Novell, Nokia, Microsoft...

● Contribuições que geraram mais de 15 milhões Contribuições que geraram mais de 15 milhões de linhas de códigode linhas de código

● Novo kernel Linux a cada 2 ou 3 mesesNovo kernel Linux a cada 2 ou 3 meses

Page 10: Intro linux

Quem faz o Linux?Quem faz o Linux?

● 75% das contribuições para o código são de 75% das contribuições para o código são de desenvolvedores pagos por empresas para desenvolvedores pagos por empresas para fazer esse trabalhofazer esse trabalho

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

fonte: Linux Kernel Developmentfonte: Linux Kernel Development

(http://go.linuxfoundation.org/who-writes-linux-2012)(http://go.linuxfoundation.org/who-writes-linux-2012)

Page 11: Intro linux

Onde o Linux está presente?Onde o Linux está presente?

● 850 mil telefones com Android ativados por dia850 mil telefones com Android ativados por dia● 700 mil televisões vendidas por dia com Linux700 mil televisões vendidas por dia com Linux● A cada 10 centros de finanças, 8 rodam LinuxA cada 10 centros de finanças, 8 rodam Linux● A cada 10 supercomputadores, 9 rodam LinuxA cada 10 supercomputadores, 9 rodam Linux● Google, Twitter, Facebook, Amazon usam LinuxGoogle, Twitter, Facebook, Amazon usam Linux

Fonte: The Linux FoundationFonte: The Linux Foundation

www.linuxfoundation.orgwww.linuxfoundation.org

Page 12: Intro linux

E os desktops?E os desktops?

Também rodam Linux!Também rodam Linux!

Page 13: Intro linux

E os desktops?E os desktops?

Page 14: Intro linux

Características gerais GNU/LinuxCaracterísticas gerais GNU/Linux

● Sistema Operacional de propósito geralSistema Operacional de propósito geral● De servidores a desktops a telefones...De servidores a desktops a telefones...

● Prevalência de software livre e abertoPrevalência de software livre e aberto● Upgrades não traumáticos em termos de Upgrades não traumáticos em termos de

configuraçõesconfigurações● Novas versões em curtos períodos de tempoNovas versões em curtos períodos de tempo● Suporte a todas as línguas possíveisSuporte a todas as línguas possíveis

Page 15: Intro linux

O melhor de tudoO melhor de tudo

● Sempre será livre para qualquer um, em Sempre será livre para qualquer um, em qualquer lugar:qualquer lugar:● USARUSAR● MODIFICARMODIFICAR● DISTRIBUIRDISTRIBUIR

* Decorrência do uso da Licença GNU GPL e similares* Decorrência do uso da Licença GNU GPL e similares

Page 16: Intro linux

Filosofia da liberdadeFilosofia da liberdade

● Irradia efeitos para outros segmentosIrradia efeitos para outros segmentos● OpenDocument FormatOpenDocument Format

● Padrão internacional ISO e IECPadrão internacional ISO e IEC● Armanezamento de documentos indendepentemente do Armanezamento de documentos indendepentemente do

software utilizado - portabilidadesoftware utilizado - portabilidade● Qualquer desenvolvedor pode implementar o formato sem Qualquer desenvolvedor pode implementar o formato sem

pagar royaltiespagar royalties● Perpetua a liberdade da informação armazenadaPerpetua a liberdade da informação armazenada● Norma ABNT NBR ISO/IEC 26300:2008Norma ABNT NBR ISO/IEC 26300:2008

● Ogg ContainerOgg Container (formatos multimídia) (formatos multimídia)● Vorbis, Theora, Speex, FLACVorbis, Theora, Speex, FLAC

Page 17: Intro linux

Filosofia da liberdadeFilosofia da liberdade

● Adoção de formatos abertos por GovernosAdoção de formatos abertos por Governos● BrasilBrasil

● Protocolo para adoção de Formatos Abertos - D.O.U. de Protocolo para adoção de Formatos Abertos - D.O.U. de 19/11/08, pág. 8819/11/08, pág. 88

● Arquitetura de interoperabilidade (e-PING)Arquitetura de interoperabilidade (e-PING)● Padrões Web (e-PWG)Padrões Web (e-PWG)● Software Livre no Governo Software Livre no Governo http://www.softwarelivre.gov.br/http://www.softwarelivre.gov.br/● Projeto de Lei 3.070/2008 (Câmara dos Deputados)Projeto de Lei 3.070/2008 (Câmara dos Deputados)

● Outros paísesOutros países● Alemanha, Bélgica, Dinamarca, França, Japão, Holanda, Alemanha, Bélgica, Dinamarca, França, Japão, Holanda,

Reino Unido, Suécia, Venezuela ...Reino Unido, Suécia, Venezuela ...

Page 18: Intro linux

GNU/Linux: Um mundo de opçõesGNU/Linux: Um mundo de opções

● Partições (ext3, ext4, LVM, RAID ...)Partições (ext3, ext4, LVM, RAID ...)● Desktops (Gnome, KDE, XFCE ...)Desktops (Gnome, KDE, XFCE ...)● Releases (LiveCD, DVD, Network install ...)Releases (LiveCD, DVD, Network install ...)● Repositórios de Aplicativos (free, non-free ...)Repositórios de Aplicativos (free, non-free ...)● Aplicativos (Abiword, LibreOffice.org, Gimp ...)Aplicativos (Abiword, LibreOffice.org, Gimp ...)● Gerenciadores de janelas (metacity, fluxbox …)Gerenciadores de janelas (metacity, fluxbox …)● Arquiteturas (i386, x86_64, ppc ...)Arquiteturas (i386, x86_64, ppc ...)

Page 19: Intro linux

GNU/Linux: QualidadesGNU/Linux: Qualidades

● Segurança (rapidez na correção de falhas, Segurança (rapidez na correção de falhas, repositórios próprios de software)repositórios próprios de software)

● Praticamente imune a vírusPraticamente imune a vírus● Estabilidade do S.O. (está entre as prioridades)Estabilidade do S.O. (está entre as prioridades)

● ““Drivers” (pronto para uso - maioria dos casos)Drivers” (pronto para uso - maioria dos casos)

● Rapidez (demanda poucos recursos de hardware)Rapidez (demanda poucos recursos de hardware)

● Sistemas de arquivos (Baixíssima fragmentação)Sistemas de arquivos (Baixíssima fragmentação)

● Registro e arquivos de configuraçãoRegistro e arquivos de configuração (texto puro)(texto puro)

● Gera aprendizadoGera aprendizado

Page 20: Intro linux

Problemas contornáveisProblemas contornáveis● Necessidade de software específico sem Necessidade de software específico sem

versão para GNU/Linuxversão para GNU/Linux● ““Hardcore” gamerHardcore” gamer● Hardware não suportadoHardware não suportado● Sites mal feitos ou feitos exclusivamente para Sites mal feitos ou feitos exclusivamente para

o Internet Explorero Internet Explorer

Solução: Máquina Virtual ou “Boot Duplo”Solução: Máquina Virtual ou “Boot Duplo”

EVITE RADICALISMOS!EVITE RADICALISMOS!

Page 21: Intro linux

Boot duplo, triplo, quádruplo ...Boot duplo, triplo, quádruplo ...

Page 22: Intro linux

Máquina VirtualMáquina Virtual

Page 23: Intro linux

Maior obstáculo!Maior obstáculo!

Page 24: Intro linux

Porque ...Porque ...

Page 25: Intro linux

Por onde começar?Por onde começar?

● ““Prontos” para funcionarProntos” para funcionar● Linux Mint (http://linuxmint.com)Linux Mint (http://linuxmint.com)● Ubuntu (http://www.ubuntu.com)Ubuntu (http://www.ubuntu.com)

maior funcionalidade “out of the box”maior funcionalidade “out of the box”

● Podem demandar maior aprendizadoPodem demandar maior aprendizado● Fedora (Fedora (http://fedoraproject.orghttp://fedoraproject.org))

● Política rígida quanto ao uso exclusivo de Política rígida quanto ao uso exclusivo de software livresoftware livre

● Debian (Debian (http://www.debian.orghttp://www.debian.org))● Etc...Etc...

Page 26: Intro linux

Noções mínimasNoções mínimas

● Usuário 'root'Usuário 'root'● Árvore de pastas do sistema:Árvore de pastas do sistema:

● //

● bin/bin/● boot/boot/● dev/dev/● etc/etc/● home/home/● lib/lib/● mnt/mnt/● tmp/tmp/● var/var/

Page 27: Intro linux

Instalar e Remover ProgramasInstalar e Remover Programas

● O que é um repositório?O que é um repositório?

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

● Sempre use algum gerenciador de pacotes!Sempre use algum gerenciador de pacotes!● yum, apt-get ou as interfaces gráficas respectivasyum, apt-get ou as interfaces gráficas respectivas

Page 28: Intro linux

Instalar e Remover ProgramasInstalar e Remover Programas

Page 29: Intro linux

Aprofundar o aprendizado!Aprofundar o aprendizado!

● Comandos no terminal (ls, cp, mv, tail, grep …)Comandos no terminal (ls, cp, mv, tail, grep …)● Essencial para adm. remota de servidoresEssencial para adm. remota de servidores

● Gerenciamento de pacotes (aplicativos)Gerenciamento de pacotes (aplicativos)● yum install nome-do-pacote (Fedora)yum install nome-do-pacote (Fedora)● apt-get install nome-do-pacote (Ubuntu)apt-get install nome-do-pacote (Ubuntu)● ......

● Shell script, linguagens de programaçãoShell script, linguagens de programação● Inglês, inglês, inglês e inglês!Inglês, inglês, inglês e inglês!

Page 30: Intro linux

easyeasyLifeLife

● Configura o “sudo” para o usuário regularConfigura o “sudo” para o usuário regular● Ajusta opções do desktop (+ agradável)Ajusta opções do desktop (+ agradável)● Instala o plugin Flash PlayerInstala o plugin Flash Player● Instala codecsInstala codecs● Instala fontesInstala fontes● Instala plugin Java Instala plugin Java ● Instala drivers da nvidiaInstala drivers da nvidia● Outros ajustes ...Outros ajustes ...

http://easylifeproject.orghttp://easylifeproject.org

Page 31: Intro linux

easyeasyLifeLifehttp://easylifeproject.orghttp://easylifeproject.org

Page 32: Intro linux

Servidores LAMPServidores LAMP

● LLinuxinux● AApachepache● MMySQLySQL● PPHP / Perl / PythonHP / Perl / Python

Page 33: Intro linux

Servidores LAMPServidores LAMP

● Compõem 2/3 dos servidores na internetCompõem 2/3 dos servidores na internet● Por quê?Por quê?

● Livre disposição (Software Livre)Livre disposição (Software Livre)● Fácil configuraçãoFácil configuração● EstabilidadeEstabilidade● Constante desenvolvimento e evoluçãoConstante desenvolvimento e evolução● Poupa o desenvolvedor de tarefas Poupa o desenvolvedor de tarefas

administrativasadministrativas

Page 34: Intro linux

ApacheApache

● Servidor de protocolo HTTPServidor de protocolo HTTP● Hypertext Transfer ProtocolHypertext Transfer Protocol

● Sistema de Requisição/RespostaSistema de Requisição/Resposta● Métodos: GET, POST, HEAD, …Métodos: GET, POST, HEAD, …● Servidor responde com recursos tais como Servidor responde com recursos tais como

arquivos HTMLarquivos HTML

● Altamente configurável (texto puro)Altamente configurável (texto puro)● Altamente modularAltamente modular● Virtual Hosts (diversos websites em um mesmo Virtual Hosts (diversos websites em um mesmo

servidor)servidor)

Page 35: Intro linux

ApacheApache

● Alternativas para o ApacheAlternativas para o Apache● LighttpdLighttpd● NginxNginx● HiawathaHiawatha● CherokeeCherokee

Page 36: Intro linux

Exemplo Request/Response HTTPExemplo Request/Response HTTPNavegador → http://www.somehost.com/path/file.html

Resposta:

HTTP/1.0 200 OKDate: Fri, 31 Dec 1999 23:59:59 GMTContent-Type: text/htmlContent-Length: 1354

<html><body><h1>Happy New Year!</h1>(more file contents) . . .</body></html>

Requisição:

GET /path/file.html HTTP/1.0From: [email protected]: HTTPTool/1.0[blank line here]

Page 37: Intro linux

MySQLMySQL● Sistema de gerenciamento de banco de dados Sistema de gerenciamento de banco de dados

relacional (RDBMS)relacional (RDBMS)● Tabelas → colunas/linhasTabelas → colunas/linhas● Operações relacionais entre tabelas, por meio Operações relacionais entre tabelas, por meio

de campos comunsde campos comuns

● Utiliza SQL para manipulação dos dadosUtiliza SQL para manipulação dos dados● Structured Query LanguageStructured Query Language

● Mistura de inglês + matemáticaMistura de inglês + matemática

● Fácil de usarFácil de usar● Questões sobre performance e confiabilidadeQuestões sobre performance e confiabilidade

Page 38: Intro linux

MySQLMySQL

Exemplo de consulta SQLExemplo de consulta SQL

Tabela 'usuarios' → Tabela 'usuarios' →

id nome cidade

1 Silvio Salto

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)

Page 39: Intro linux

MySQLMySQL● Alternativas para MySQLAlternativas para MySQL

● PostgreSQLPostgreSQL● SQLiteSQLite● Firebird/InterbaseFirebird/Interbase● Mongo (NoSQL)Mongo (NoSQL)

Page 40: Intro linux

PHPPHP● PHP: Hypertext Pre-processor PHP: Hypertext Pre-processor

● Antes: “Personal Home Page”Antes: “Personal Home Page”

● Linguagem de script mais popular na internetLinguagem de script mais popular na internet● Suporte comunitário abundanteSuporte comunitário abundante● Fácil sintaxe (mas não a mais elegante)Fácil sintaxe (mas não a mais elegante)● Especialmente feita para desenvolvimento webEspecialmente feita para desenvolvimento web● Fácil interação com bancos de dadosFácil interação com bancos de dados

● MySQL, PostgreSQL, SQLite, Mongo, ...MySQL, PostgreSQL, SQLite, Mongo, ...

Page 41: Intro linux

PHPPHP

Como funciona?Como funciona?

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

Page 42: Intro linux
Page 43: Intro linux

PHPPHP<?php

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

}?>

<?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/>”;

?>

É igual a...

Page 44: Intro linux

PHPPHP

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

(saída em HTML)

Que é igual a...

No navegador:

O número é 1O número é 2O número é 3O número é 4

Page 45: Intro linux

Dúvidas?Dúvidas?

Page 46: Intro linux

ContatoContato

[email protected]@easylifeproject.org

twitter.com/dulinuxtwitter.com/dulinux

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

Page 47: Intro linux