Quantcast
Channel: Compartilhando conhecimento » admin | Compartilhando conhecimento
Viewing all articles
Browse latest Browse all 10

Guia – servidor para desenvolvedores – Parte 1

$
0
0

Lembro do meu primeiro acesso via SSH a um servidor Linux, eu já tinha adotado o Ubuntu como SO pessoal e já havia sido divertido/sofrido instalar e configurar tudo que precisava, mas a  sensação de estar administrando um servidor em produção é incrível, executar um simples ls -la foi lindo e instalar o ambiente Apache, Mysql e PHP então… Emocionante! Essa foi uma experiência muito divertida e de muito aprendizado, surgiram varias questões que me ajudaram muito a entender como as coisas realmente funcionam.

Comece com seu site pessoal, sugiro que pegue um servidor cloud na Digital Ocean, lá tem planos a partir de 5 dólares, e configure tudo que for necessário para que ele funcione. Com certeza, mesmo com uma configuração simples, você vai aprender muito.

Essa é uma oportunidade bastante interessante de aprender, por isso abaixo listo as principais funcionalidades que precisamos quando estamos começando nessa aventura.

SSH

Uma vantagem no uso do Linux, apontada por muitos administradores de rede, é a facilidade de administrar o sistema remotamente, principalmente via linha de comando (usando o SSH). Essa é uma necessidade básica para qualquer um que vá administrar um servidor Linux .

Conectando a um servidor remoto:

ssh usuario@dominioouip

Informando uma porta para a conexão:

Ssh -o port=2222 alex@apssouza.com.br

Informando uma chave ssh na conexão:

Ssh  alex@apssouza.com.br  -i minhachave.pem

Criar e editar arquivos

Existem várias formas de visualizar e editar arquivos texto no terminal, e como cada um tem uma forma diferente de trabalhar é importante que dê uma olhada em cada um para entender suas particularidades.
Os mais comuns são: Vi e Nano, sendo que o Nano é mais simples de usar.

Usuários

Uma das regras de segurança mais importantes é: evitar usar o root, fazendo−o somente quando necessário. Por isso é recomendado criar um usuário comum, caso mais alguém for acessar o servidor.

Para adicionar um usuário:

adduser usuarionome

Para remover um usuário e seu diretório home:

userdel −r usuarionome

Ativando a conta root:

sudo passwd root

Trocando de usuário:

su usuarionome

Permissões

As permissões são um dos aspectos mais importantes do Linux. Elas são usadas para vários fins, mas servem principalmente para proteger o sistema e os arquivos dos usuários.

ls –la:

drwx—— … 2 wester …………. 512 Jan … 29 23:30 .. Arquivos/
-rw-rw-r– … 1 wester ……. 280232 Dec .. 16 22:41… notas.txt

O primeiro caractere da string indica o tipo de arquivo: se for “d” representa um diretório, se for “-” equivale a um arquivo. Entretanto, outros caracteres podem aparecer para indicar outros tipos de arquivos.

Você já sabe o que significa o primeiro caracter. Os demais são divididos em três grupos de três.

Tomando como exemplo a segunda linha:

rw- => a primeira parte significa permissões do proprietário
rw- => a segunda parte significa permissões do grupo ao qual o usuário pertence
r– => a terceira parte significa permissões para os demais usuários

Vamos entender agora o que significa esses caracteres (rwx-):
r  – leitura(read)
w – escrita(write)
x – execução (execution)
- - desabilitado

Configurando permissões (chmod)

Chegou a hora de aprender a configurar permissões e isso é feito usando o comando chmod (de change mode).  Você pode configurar permissões de duas maneiras: simbolicamente e numericamente.

Simbolico: (+ = adicionar; - = retirar; = = atribuir )

Adicionando permissão de escrita para o usuário:

chmod u+w teste.old
chmod g+rw teste.old

Adicionando permissão de leitura e escrita  para o grupo:

chmod g=rwx teste.old

Retirando permissão de execução dos outros:

chmod O-x teste.old

Numérico

Permissão Binário Decimal
000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7

Se determinada permissão é habilitada, atribui-se valor 1, caso contrário, atribui-se o valor 0. Essa combinação de 1 e 0 é um número binário. Mas temos ainda que acrescentar a forma decimal.

Repare que, com o método numérico, usamos somente um dígito para representar uma permissão, em vez de três. Assim sendo, a string de permissões r–r–r– pode ser representa por 444, o comando então ficaria:

chmod 444 notas.txt
chmod -R 444 diretorio/

Alterando a propriedade de um arquivo/diretório(chown)

Como você já deve saber, todo arquivo ou diretório no Linux tem um dono e um grupo. E se você precisar, por algum motivo, transferir a “posse” desse arquivo/diretório para outro usuário? Fazer isso é muito fácil! Basta executar o comando:

chown novodono nomearquivooudiretorio

Alterando o grupo de um arquivo/diretório

Também é possível alterar o grupo de um arquivo ou diretório. Para isso, pode ser necessário identificar o grupo no qual o arquivo pertence. Tal procedimento pode ser feito com o comando “ls -lg nome do arquivo/diretório“, depois de identificado o  nome do grupo, basta executar o comando.

chgrp nomegrupo nomearquivooudiretorio

Árvore de diretórios do Linux

Entendendo um pouco sobre o significado de cada diretório no ambiente Linux

/bin - armazena os executáveis de alguns comandos básicos do sistema (tar, cat, rm, pwd,..)

/sbin – armazena os executáveis de alguns comandos básicos de administração (ifconfig, fdisk…).

/usr -  é aqui que ficam os executáveis e bibliotecas de todos os principais programas.

/etc  – ficam arquivos de configuração.

/lib - ficam localizadas as bibliotecas usadas pelos comandos presentes em /bin e /sbin.

/opt - Aplicativos adicionais, que não são essenciais para o sistema.

/home  – ficam os arquivos pessoais

/root – diretório pessoal do administrador

/boot - Arquivos relacionados à inicialização do sistema

/media -  pontos de montagem para as mídias removíveis, como CD’s e disquetes;

/mnt – aqui ficam os pontos de montagem temporários(Ex: unidade da rede);

/srv – dados dos serviços fornecidos pelo sistema;

/dev - arquivos que servirão como interfaces para acessar ou gerenciar  drives (usb, mouse etc)

/var – (variáveis)Todo arquivo que aumenta de tamanho ao longo do tempo. Ex: logs

/proc - informações sobre os recursos e processos em execução no sistema.

Conhecendo um pouco o diretório /etc

O diretório /etc contém todas as configurações do servidor, por isso deve−se conhecer todo o seu conteúdo e também ter uma preocupação especial com as permissões de arquivos nele contidos.

Alguns arquivos importantes:

passwd – É neste arquivo que ficam os usuários cadastrados no sistema. Cada linha corresponde a um usuário e o caracter “:” separa os campos

Ex apssouza:x:1001:0:Alex,,,:/home/apssouza: bin/bash

Login : Senha : Id : Gid : Nome e Dados : Diretório : Shell

shadow – Este é o arquivo mais visado pelos “intrusos”, pois é nele que ficam gravadas todas as senhas(criptografadas) de acesso ao sistema.

profile – Toda vez que um usuário logar, este arquivo é executado, por isso ele é usado para setar as variáveis de ambiente, dentre outras coisas.

hosts.deny - Hosts que não tem permissão para acessar a máquina.

hosts.allow – Hosts que tem permissão para acessar a máquina.

Tanto nos arquivos hosts.deny quanto hosts.allow pode−se usar variáveis coringa:
ALL = Todos os IPs
LOCAL = Todos os IPs locais
REMOTE = Todos os IPs remotos

Fazendo Backups

Realizar backups do sistema hoje em dia é uma tarefa essencial de todo administrador. No Linux pode−se usar o comando tar para compactar os arquivos.

Sintaxe: tar [opções] [−f arquivo]
Opções:
x : descompactar.
t : lista o conteúdo de um arquivo.
v : mostra na tela o que está sendo feito.
z : descompacta arquivos que também estejam “gzipados”.
f : especifica o nome do arquivo.
c : cria um novo arquivo.

Compactando a pasta do usuário:

tar cvzf backup.tar /home/usuario

Compactação geral do sistema e excluido alguns arquivos

tar -cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /

Descompactando um backup:

tar xvzf /root/backup.tar.gz

Agendando Processos (crontab)

Para agendar processos muito demorados como o download de um arquivo muito grande, ou qualquer outro processo que necessite de uma execução automática, deve−se usar basicamente dois comandos: o at ou o crontab.

O comando at agenda a execução de um comando e logo depois que esse processo ocorre este comando não será mais executado.

Para agendar processos que devem rodar periodicamente usa−se o comando crontab. Há necessidade de se editar um arquivo que possui o seguinte formato:

Minuto Hora Dia Mês Dia da Semana Comando
Onde Minuto é um intervalo de 0 a 59
Hora é um intervalo de 0 a 23
Dia de 1 a 31,
Mês de 1 a 12 e os Dias da Semana podem variar de 0 a 6 correspondendo a variação de domingo a sábado.

Para editar:

crontab −u <user> −e

Para listar:

crontab −u <user> −l

Para executar um comando de 2 em 2 minutos

0−59/2 * * * * /backup.sh

Para executar um comando de 4 em 4 horas e às 18 horas:

* 0−23/4, 18 * * * php /manipulaimagem.php

Syslogd − A Caixa Preta do Linux

Para analisar o que vem ocorrendo ou já ocorreu no sistema, o linux possui o syslogd, que funciona como uma caixa preta, guardando em arquivos, informações como: data e hora do boot , login de usuário e outros dados importantes para analisar o servidor.

Os arquivos responsáveis pelas configurações do syslogd estão no /etc/rsyslog.d

Na pasta /var/log podemos encontrar todos os tipos de logs, por exemplo /var/log/messages

Técnicas Básicas para Trabalhar com Redes

O Linux é um sistema operacional totalmente compatível com redes, dos tipos mais heterogêneos.

Para listar as interfaces de rede usa−se o comando:

ifconfig –a

Para atribuir um endereço IP para uma interface usa−se:

ifconfig eth0 <endereço> broadcast <broadcast> netmask <mascara>

Também existem as rotas para o pacote IP conseguir sair da rede local, caso haja um roteador.

Para exibir a tabela de rotas usa−se o comando: route −n ou

netstat –nr

Para adicionar uma rota:

route add default gw <Gateway> netmask 0.0.0.0 metric 1

E caso haja a necessidade de excluir uma rota usa−se:

route del <destino>

Buscando arquivos(find)

Quando estamos acessando nossa máquina via terminal e precisamos buscar um arquivo a forma mais fácil é usar o comando find.

find <local da busca> [codições] {ações}

find /localdabusca -iname nomearquivodiretorio // arquivos/diretório  independente de maiúscula ou minúscula
find /localdabusca -type f  perm 644 //só arquivo com permissão 644
find /localbusca -size +1 G //arquivos  com mais de 1 g
find /home -mtime +60 //arquivos modificados a mais de 60 dias
find / -name “*.mp3” -exec rm -rf {}\ //buscando os arquivos mp3 e removendo-os

Buscando arquivos que contenha um determinado conteúdo (grep)

Procurando por trecho em um determinado arquivo e mostrando a linha

grep "trecho " arquivo -n

Exibe as linhas que não contenham o texto:

grep -v "trecho " arquivo.txt

Listando só os arquivos que tenha php no nome:

ls | grep “php”

Gerenciando  processos

Top – O comando top é a maneira mais comum de verificar o uso de processos do sistema e constatar quais deles estão consumindo mais memória ou processamento.

Ps – O comando ps lista os processos em execução no sistema, sem informações de consumo.

pstree – Exibe os processos em forma de árvore, tornando visível a relação entre eles.

Kill – matando um processo Ex: kill PIDdoprocesso

Links simbólicos

Links simbólicos são arquivos que funcionam como atalhos ou referência a outro arquivo ou diretório.

O uso de links simbólicos no Linux é muito comum: softwares diversos costumam empregar links para bibliotecas em vez de replicar o arquivo em outro diretório. Essa é uma boa maneira, inclusive, de economizar espaço em disco e recursos do sistema.

Criando um link simbólico:

ln -s caminho/arquivooriginal caminho/arquivolinksimbólico

Quando um link simbólico é criado, ele passa a referenciar o arquivo original. Isso significa que ao ler ou editar o link simbólico, você estará lendo e editando o arquivo original.

Informações sobre a máquina

Quando queremos saber sobre as informações da máquina, podemos usar:

cat /proc/cpuinfo //exibe dados de cpu
cat /proc/meminfo //exibe dados de memoria, tbm tem “free -m”

Transferindo arquivos para o servidor (SCP)

Para  transferir arquivos entre a máquina local e um servidor remoto utilizamos o commando SCP , seguindo a sintaxe abaixo:

Copiando um arquivo remoto para a máquina local:

scp user@domain:/pasta-remota/arquivo-remoto.txt /pasta-local/arquivo-local.txt

Enviando um arquivo local para um servidor remoto:

scp /pasta-local/arquivo-local.txt user@domain:/pasta-remota/arquivo-remoto.txt

Copiando pastas e subpastas do servidor remoto para máquina local:

scp -r user@domain:/pasta-remota/ /pasta-local/

Enviando pastas e subpastas da máquina local para o servidor remoto:

scp -r /pasta-local/ user@domain:/pasta-remota/

Baixando arquivos (wget)

Wget é um pacote de software livre para baixar arquivos sobre os protocolos HTTP, HTTPS e FTP. E, por padrão, é bem simples de ser executado. A sintaxe básica é:

wget [opção] [URL]

Download  continuado exatamente no ponto onde foi interrompido:

wget -c http://enderecohttp/wget/arquivozip

Cria a hierarquia de diretórios quando é recebida recursivamente:

wget -r  http://enderecohttp.com.br/wget

Analisando logs em tempo real(Tail)

O comando tail pode ser utilizado para examinar as últimas linhas de um arquivo.  Com esse comando é possível visualizar dinamicamente o conteúdo do arquivo a medida que o arquivo é atualizado. Muito útil para acompanhar logs em tempo real.

EX:

Tail –f php.log

Essa foi uma lista das funcionalidades mais comuns quando estamos administrando um servidor Linux. Essa primeira parte foi uma versão mais básica e genérica. Nas próximas pretendo abordar mais coisas relacionados ao ambiente PHP e algumas funcionalidades mais avançadas. Até lá!

Referências

http://corporate.canaltech.com.br/tutorial/linux/Entendendo-a-estrutura-de-diretorios-do-Linux/
http://www.hardware.com.br/dicas/linux-entendendo-arvore-diretorios.html
http://www.vivaolinux.com.br/artigo/Explorando-o-wget?pagina=3
http://www.vivaolinux.com.br/dica/O-comando-tail
http://www.vivaolinux.com.br/dica/Backup-com-TAR


Viewing all articles
Browse latest Browse all 10

Latest Images





Latest Images