Skip to content

Linux Server Best Practices

Cyber edited this page Jul 27, 2015 · 12 revisions

Geral

  • assim que criar um servidor, crie uma conta de usuário não-root (CentOS6 o comando é useradd [options] LOGIN)
  • nunca acesse como root
  • não tenha uma senha de root de fácil memorização
  • utilize o sudo somente quando estritamente necessário

Definindo o fuso-horário:
sudo ln -sf /usr/share/zoneinfo/Brazil/East /etc/localtime

  • Edite o arquivo
    /etc/sysconfig/clock
    trocando:
    ZONE="UTC"
  • por:
    ZONE="Brazil/East"

Ubuntu
sudo dpkg-reconfigure tzdata

Swap
Se o servidor não possuir swap, essa é uma receita de bolo para criar um arquivo de swap de 1Gb na pasta raíz:
sudo fallocate -l 2G /swapfile1
sudo mkswap /swapfile1
sudo chown root:root /swapfile1
sudo chmod 0600 /swapfile1
sudo swapon /swapfile1
echo "/swapfile1 none swap sw 0 0" | sudo tee -a /etc/fstab

SSH

LOCAL (acessando seu servidor sem senha)

  1. crie um par de chaves para seu computador:
    • ssh-keygen
  2. copie sua chave pública:
    • scp ~/.ssh/id_rsa.pub alias:/tmp
    • ssh alias "mkdir .ssh; cat /tmp/id_rsa.pub >> .ssh/authorized_keys"

REMOTO (acessando seu servidor sem senha)

  1. ajuste as permissões:
    • chmod 600 ~/.ssh/authorized_keys
    • chmod 711 ~/.ssh
  • para a conexão SSH parar de ‘travar’:
    1. edite o arquivo /etc/ssh/sshd_config
      • descomente estas linhas, altere o valor de ClientAliveInterval e reinicie o serviço:
        TCPKeepAlive yes
        ClientAliveInterval 30
        service sshd restart
  • para criar aliases para suas máquinas:
    1. adicione uma entrada para cada máquina no arquivo ~/.ssh/config no seguinte formato:
      	Host <<nome_curto_para_seu_servidor 1>>
      	  HostName <<ip_do_seu_servidor 1>>
      	  User <<login_do_seu_servidor 1>>
      	Host <<nome_curto_para_seu_servidor 2>>
      	  HostName <<ip_do_seu_servidor 2>>
      	  User <<login_do_seu_servidor 2>>
      
    2. para acessar seu servidor utilize o alias criado acima:
      • acessando o terminal remoto:
        ssh alias
      • copiando um arquivo local para o remoto:
        scp /tmp/arquivo.txt alias:/var/www
      • copiando um arquivo remoto para o local:
        scp alias:/home/user/.bashrc /tmp
      • bônus: no Mac, alguns programas entendem estes aliases, não sendo necessário digitar login/senha! (ex.: Coda, Transmit, …)
      • bônus 2: caso esteja usando cloudflare, não utilize o nome do seu domínio diretamente, utilize “direct.seudominio.com.br”

APACHE

  • virtual domains (sub-domínios e domínios diferentes)
  • rails (mod-passenger)
  • fazendo deploy com git

VARNISH

  • não deixe seu apache escutando na porta 80, essa é uma tarefa para o varnish!

NGINX
(todo) – wordpress.conf, passenger, etc

GIT
(todo) – working locally, setting up a gitosis server

TMUX
(todo) – get rid of screen

SCREEN

  • instale no CentOS:
    sudo yum install screen
  • CTRL = ^
    • ^A ?
      mostra o help
    • ^A A
      troca o nome da sessão
    • ^A c
      cria uma nova sessão
    • ^A "
      lista todas as sessões
    • ^A espaço
      vai pra sessão seguinte
    • ^A d
      sai do screen, mantendo as sessões ativas. Troque de computador e dê: screen -r e voilá, sua sessão está é restaurada!
    • ^A [
      scroll pelo histórico da janela. Enter marca o início, Enter marca o fim e copia.
    • ^A ]
      cola o que foi copiado acima

PHP

  • utilize o pacote ‘php-eaccelerator’ do repositório REMI:
    php-eaccelerator-0.9.6.1-10.el6.remi.×86_64
  • para entender como funciona o eaccelerator, leia este link

Rackspace – específico

  • tire proveito dos seus 12 meses de uso ‘gratuito’ e espalhe-se para entender o comportamento do seu serviço: “o BD tá sobrecarregado? o web server tá usando muita memória?”. Utilize um serviço por servidor, depois migre os serviços para máquinas compartilhadas antes de começar a doer no bolso ;)
  • depois que entender e otimizar, aí você junta os serviços de forma coerente
  • recomendo instalar a versão 6 do CentOS
  • siga as recomendações gerais acima!
    1. instale o pacote de ‘extras’ (Link para o KB da Rackspace):
      sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    2. instale o repositório ‘remi’, para versões mais novas de php, varnish, etc:
      sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    3. habilite o repositório ‘remi’, editando o arquivo ‘/etc/yum.repos.d/remi.repo’ e trocando “enabled=0” por “enabled=1” na sessão [remi]
    4. atualize seu servidor:
      sudo yum -y update
  • abra portas (por ex, 80) no firewall. Adicione esta linha no arquivo /etc/sysconfig/iptables abaixo da linha que abre a porta 22 (ssh) a ordem é importante!, e em seguida reinicie o serviço iptables. Para quem usa SSL, é necessário abrir a porta 443 também.
    • -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    • -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
    • service iptables restart
  • sempre utilize o IP interno entre as máquinas, por exemplo para acessar seu BD ou um message queue. Lembre-se: o tráfego entre IP’s internos é gratuito.

Monitoração

(Indispensável) Airbrake
(Indispensável) New Relic

Clone this wiki locally