Palestra Linux Survival Kit para PHPeiros

Post on 11-Apr-2017

429 views 0 download

Transcript of Palestra Linux Survival Kit para PHPeiros

Linux Survival Kit paraPHPeiros

By / Leonardo Tumadjian @tumadjian

Sobre mim:Formado em Análise e Desenvolvimento de Sistemas

Programador PHP desde 2009Instrutor desde 2012

Nas horas vagas: Gamer, Biker, Shooter, GuitarristaEvangelista da comunidade PHPSP

Víciado em séries estranhas!

Antes de começarmos:Contribua com sua comunidade mais próxima, se tiver um tempo ;)

Como contribuir?

Aviso!Não sou um sysadmin em Linux, sou um simples sobrevivente que

decidiu colocar aqui alguns dos comandos que salvaram minha vidaquando estive em perigo na selva digital!

Todos Prontos?

Como testar?

O que é Bash?O bash é um interpretador de comandos, uma espécie de tradutorentre o sistema operacional e o usuário, normalmente conhecido

como shell. Permite a execução de sequências de comandos diretono prompt do sistema ou escritas em arquivos de texto, conhecidos

como shell scripts. Foi liberado em 1989 e é mantido pelo projetoGNU.

Wikipedia: https://pt.wikipedia.org/wiki/Bash

AtalhosLimpar o terminal rapidamentectrl + l(L)

Abortar um processo ativo no terminalctrl + c

Logout de um SSH ou programa logado no terminalctrl + d

Comandos básicosExecutar como super user / root$ sudo [ação]

para se logar como super user / root$ sudo su

Como consultar um comando?$ man [comando]

Syntax man [­acdfFhkKtwW] [­­path] [­m system] [­p string] [­C config_file] [­M pathlist] [­P pager] [­B browser] [­H htmlpager] [­S section_list] [section] name ...

Key:

­C config_file The configuration file to use; the default is /etc/man.config. (See man.config(5).)

­M path The list of directories to search for man pages. Separate the directories with colons. An empty list is the same as not specifying ­M at all. See SEARCH PATH FOR MANUAL PAGES.

Comandos básicosExecutar como super user / root$ cd [diretorio]

Exemplo / acessa os diretórios iniciais do linux$ cd /home/leonardo

Voltar um diretório$ cd ../

ou mais$cd ../../

Voltar ao ultimo do ultimo diretório que veio$ cd ­

Acesso o diretorio do usuário logado(ou root): /home/seunome$ cd ~

Comandos básicosListagem de diretórios e arquivos$ ls [diretório / atual se não informado]

listar organizado(com detalhes)$ ls ­l

listar inclusive arquivos ocultos $ ls ­la

listar arquivo e seu tamanho simples de ler$ ls ­lh

Consulta diretorio atual$ pwd

Comandos básicosExclui arquivos que seu usuário tem permissão$ rm [caminho/arq] ...

exclui diretorio recursivamente sem perguntar (cuidado!)$ rm ­rf [diretório]

Exemplo: $ rm ­rf /var/wrong­project

remover um tipo específico de arquivo, mostrando­os ex:$ rm ­rfv *.phpremoved 'teste1.php'removed 'teste2.php'removed 'teste3.php'removed 'teste4.php'

Comandos básicosMove o arquivo para um local especificadoe renomeia se informado$ mv [arquivo] [para]

Exemplo:$ mv /caminho/para/arquivo.php /novo/diretorio/arquivo.php

Renomeando: 'arquivo.php' para 'novonome.php'$ mv arquivo.php novonome.php

Movendo com verboso(informa a mudança)$ mv ­v arquivo diretorio/'arquivo' ­> 'diretorio/arquivo'

Comandos básicosCopia um arquivo para um local informado$ cp ­v [arquivo] [destino]

Exemplo:$ cp /caminho/para/arquivo.php ./diretorio/

Copiando diretório, se não existir o destino ele cria$ cp ­rf [dir] [destino]

Exemplo copia pasta 'carros' para 'dismanche/carros'$ cp ­rf carros/ dismanche/carros

Comandos básicosCriando diretório$ mkdir [caminho]/[nomedodir]

Criando dir local$ mkdir [nomedir]

Criando arvores$ mkdir ­pv projeto/css/,public/,src/app/,entities/

mkdir: created directory 'projeto'mkdir: created directory 'projeto/css/'mkdir: created directory 'projeto/public/'mkdir: created directory 'projeto/src'mkdir: created directory 'projeto/src/app/'mkdir: created directory 'projeto/src/entities/'

Comandos básicosMuda data de última alteração do arquivo para horario atual$ touch [arquivo] ...

Se não existir cria o arquivo vazio$ touch index.php

Cria mais de um arquivo$ touch index.php test.php form.php

Comandos básicosDetalha todas informações da rede e seu IP$ ifconfig

Detalha a rede primária(eth0)$ ifconfig eth0Resultado:

eth0 Link encap:Ethernet HWaddr 02:8c:0a:1s:65:4e inet addr:122.21.21.223 Bcast:122.11.11.255 Mask:255.255.240.0 inet6 addr: fe80::8a:dff:fe1e:654a/64 Scope:Link

Comandos básicosAltera a permissão de um arquivo ou diretório$ chmod [parametros] [modo] [arquivo/dir]

Exemplo altera todos arquivos e diretóriosrwxr­xr­x$ chmod ­R 755 myproject/

ou

Permissão de ler, escrever e executar só para grupo(g)$ chmod ­R g+rwx myproject/

Comandos básicosEntendendo permissões

rwxr­x­­x

rwx = o dono do arquivo (read, right, execute)r­x = o grupo do arquivo pode (ler e executar)­­x = outros podem (executar)

pode ser representado por números octais: 751onde: 7 = rwx, 5 = r­x, 1 = ­­x

mais comum$ chmod ­R 755 projeto/

Comandos básicosMudando dono de arquivosls ­ld­­x­­x­­x 2 ubuntu www­data 4096 Dec 2 07:11 carros

O comando chown$ chown [pars] [user]:[group] [diretório]

mudando o dono e seu grupo$ chown ­R root:root carros

Comandos básicosComo editar arquivos? mais comum é o vim/vi

"vi" editor de terminal mais antigovi [arquivo].[ext]

"vim" vi improved um editor melhoradovim [arquivo].[ext]

Dicas simples:Iniciar edição: digite "i"Sair de edição: digite "Esc"buscar: fora do modo edição digite "/[exp/busca]" + n (next)excluir linhas: digite "dd" ou "3dd" apaga 3 linhassalvar: em modo "Esc" digite ":wq" grava sai ou ":w" só salva

Comandos básicoscomo deszipar isso? *.tar.gz$ tar ­xzvf file1.tar.gz file1.tar.gz [...]

E isso? *.zip$ unzip meuprojeto.zip meuprojeto2.zip [...]

Haa!! glu glu!

Agora que estamos aquecidos=)

Acesso SSH

Se não tiver na sua distro rode:$ sudo apt­get install ssh

Uso ssh$ ssh [usuario]@[ip/dns]:[dir]

Acesso SSH

chmod na sua chave uma vez só$ chmod 400 /path/to/minhachave.pem

$ssh ­i /path/to/minhachave.pem ubuntu@meuserver:/home/ubuntu

Acesso SSH

Automatizaracesse no diretorio do seu user ex:cd /home/leonardo/.ssh/

crie o arquivo "config" e adicione esses detalhes:

Host [um apelido para seu host]Hostname [o host destino]User [usuario do sistema]IdentityFile [caminho do seu arquivo *.pem]

Exemplo:

Host meu­serverHostname www.meu­server.comUser ubuntuIdentityFile /home/leonardo/keys/mesherkey.pem

Acesso SSH

$ ssh meu­server

Instalar pacotes comuns$ apt­get install [nome do pacote]

ou se tiver$ aptitude install [nome do pacote]

Download de arquivo externobaixar aquivo via terminalwget https://uma­url.com/debian­7.2.0.box

12% [=================>

Link simbólicoPara criar link simbólico$ ln ­s [caminho/arquivo] [arquivo/link]

Informações do ServidorQual minha distro? debian based$ cat /etc/lsb­releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=14.04DISTRIB_CODENAME=trustyDISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"

Detalhes mais técnicos, proc, kernal etc..$ uname ­a

Informações do Servidor$ free ­h total usado livre compart. buffers em cacheMem: 3,7G 2,6G 1,1G 177M 72M 944M

$ df ­hSist. Arq. Tam. Usado Disp. Uso% Montado em/dev/sda1 26G 15G 9,2G 63% /none 4,0K 0 4,0K 0% /sys/fs/cgroupudev 1,9G 4,0K 1,9G 1% /devtmpfs 382M 1,2M 381M 1% /run

Informações do ServidorMonitorar processos em execução$ top 3015 leonardo 20 0 1330288 433024 51896 S 7,6 11,1 12:34.69 firefox 2366 leonardo 20 0 716856 22516 14296 S 4,0 0,6 0:14.43 gnome­terminal 1102 root 20 0 310220 43440 29064 S 3,6 1,1 2:34.41 Xorg

Informações do ServidorProcurar processos rodando$ ps ­aux | grep php

Informações do ServidorComando find$ find [dir] [param] [arquivo]

$ find /var/meuprojeto ­name index.php

ou então:$ find /var/meuprojeto ­name "*.php"

Informações do ServidorComando file saber o Mime­type do arquivo$ file ­i granadegranade: image/gif; charset=binary

$ file ­­mime­type granadegranade: image/gif

Envio de requisiçoesEnvio de requisição http para um servidorcurl [param] [values] [endereço/end­point]

Envia GET para googlecurl www.google.com.br

Definindo o Methodcurl ­­request POST http://my.api.teste.com

Post com valorescurl ­­data "var1=teste1&var2=teste2" http://meu.site

O que esta instalado?Versão do PHP em cliphp ­v

Versão do Mysqlmysql ­v

As versões de todo set web instalado DEBIAN BASED!dpkg ­l | grep '\(php\|mysql\|apache\|nginx\)'

Bom, chega neh!?

Arquivos de configuração do servidorOnde está o php.ini?find / ­name php.ini

por padrão nginx: /etc/php5/fpm/php.inipor padrão apache: /etc/php5/apache2/php.iniconfig nginx: /etc/nginx/nginx.confconfig apache: /etc/apache/httpd.conf

Seguir arquivos em tempo realRetorna as ultimas linhas de um arquivotail ­f [caminho/arquivo]

Arquivo de log apache:/var/log/apache2/access.log/var/log/apache2/error.log

Arquivo de log nginx:/var/log/nginx/access.log/var/log/nginx/error.log

Atenção: pode mudar depende de distro e versão instalada

LIVE CODE SE TIVER REDE :P

Duvidas??!

Meus contatosAbout me: https://about.me/leonardotumadjian

Email me: tumadjian@gmail.com

Twitter: @tumadjian

Slides no Github: leoqbc