Palestra Linux Survival Kit para PHPeiros
-
Upload
leonardo-tumadjian -
Category
Technology
-
view
429 -
download
0
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/wrongproject
remover um tipo específico de arquivo, mostrandoos 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óriosrwxrxrx$ 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
rwxrxx
rwx = o dono do arquivo (read, right, execute)rx = o grupo do arquivo pode (ler e executar)x = outros podem (executar)
pode ser representado por números octais: 751onde: 7 = rwx, 5 = rx, 1 = x
mais comum$ chmod R 755 projeto/
Comandos básicosMudando dono de arquivosls ldxxx 2 ubuntu wwwdata 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 aptget 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 meuserverHostname www.meuserver.comUser ubuntuIdentityFile /home/leonardo/keys/mesherkey.pem
Acesso SSH
$ ssh meuserver
Instalar pacotes comuns$ aptget install [nome do pacote]
ou se tiver$ aptitude install [nome do pacote]
Download de arquivo externobaixar aquivo via terminalwget https://umaurl.com/debian7.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/lsbreleaseDISTRIB_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 gnometerminal 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 Mimetype do arquivo$ file i granadegranade: image/gif; charset=binary
$ file mimetype granadegranade: image/gif
Envio de requisiçoesEnvio de requisição http para um servidorcurl [param] [values] [endereço/endpoint]
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: [email protected]
Twitter: @tumadjian
Slides no Github: leoqbc