Servidor Linux
Servidor Linux
- Origem
- A origem do sistema operacional Linux é o Unix, o qual era um sistema operacional para servidores e computadores de médio porte das décadas de 1980 e 1990. O Unix foi escrito em Linguagem C, para computadores PDP-11 (DEC - Digital Equipament Corporation), demonstrando a relativa facilidade de migração para outros computadores. A DEC foi uma empresa pioneira de computadores nos EUA e tinha entre seus produtos os mini-computadores PDP e VAX, muito populares nas comunidades científica e de engenharia nos anos 70 e 80. A DEC foi comprada pela Compaq, que por sua vez se fundiu com a Hewlett-Packard [1].
Vários sistemas comerciais foram desenvolvidos a partir do Unix, como o Unix BSD (Universidade de Berkeley), o Unix System V (AT&T) e, com o desenvolvimento dos computadores pessoais, o Linux [2].
- Utilização do Linux como servidores
- O Linux hoje é utilizado em desktops, laptops, smartphones e outros dispositivos. Contudo, o papel de servidor se mantem, sendo um dos sistemas operacionais mais utilizados na montagem de servidores de rede local e servidores Internet [2]:
- Um servidores de rede local provê serviços de rede aos usuários em uma rede local, incluindo o papel de roteador provendo acesso a Internet, servidor proxy (Squid), servidor DHCP, roteador NAT, firewall (iptables) e servidor de arquivos e impressão (Samba).
- Um servidor Internet é um servidor dedicado a prover serviços na Internet. Um exemplo é um servidor Web montado com Apache, um interpretador PHP e um banco de dados MySQL, conhecido como servidor LAMP. Outros serviços de rede também podem fazer parte do servidor, como servidor FTP para disponibilizar arquivos de forma pública, sistema de quotas para administrar espaço de armazenamento, servidor DNS, servidor de Email e outros.
- Servidor dedicado e administração remota
- Um servidor Linux pode ser uma máquina física dedicada para prover serviços de rede ou uma máquina virtual hospedada em um datacenter. Em ambos os casos, normalmente o servidor é montado com uma estrutura enxuta, com o modo gráfico desativado, liberando os recursos do hardware para o papel de servidor. Neste caso, a administração do servidor acaba sendo feita remotamente, principalmente utilizando SSH.
- Servidor Linux Ubuntu
- O sistema operacional Ubuntu lança uma nova versão para desktops e servidores a cada seis meses. Cada versão tem atualizações de segurança gratuitas por pelo menos 18 meses. A versão de Longo Tempo de Suporte (LTS) o suporte é três anos para desktops, e cinco anos para servidores.
- Na disciplina de Administração de Servidores vamos utilizar a distribuição Ubuntu para servidores.
Comandos Básicos Linux
http://wiki.ubuntu-br.org/ComandosBasicos
Comandos úteis para o administrador
Um bom administrador de rede deve dominar um conjunto de comandos de linha, pois muitas das ações no servidor deverão ser realizadas via terminal de comandos.
- Principais comandos a disposição do administrador para o dia a dia no sistema
cd - muda diretório pwd - mostra diretório atual ls - lista conteúdo do diretório atual ls -l - para ver permissões de acesso ls -a - para ver arquivos ocultos cp - cópia de arquivos cp -r -cópia recursiva para diretórios mv - mover arquivos e diretórios rm - remover arquivos e diretórios mkdir - criar diretórios rmdir - remover diretórios man - ajuda sobre comandos
- Comandos para localizar arquivos
- Um comando útil para localizar arquivos no sistema é o comanco locate. Este comando faz uso de um banco de dados dos arquivos criado pelo comando updatedb. Entretando, o comando updatedb deve ser executado pelo menos uma vez antes do locate, e periodicamente para atualizar o banco de dados.
- Exemplo
locate Modelo-PlanoEnsino.odt /home/evandro/Dropbox/AulasIFPR/Modelo-PlanoEnsino.odt
O comando find também permite localizar arquivos, mas procura varrendo toda a árvore de diretórios. Por exemplo:
find /etc -name passwd
- Procura pelas ocorrências do arquivo passwd no diretório /etc.
- Criação de links ou atalhos
- O comando ln permite criar links que se comportam como atalhos para arquivos. Existem dois tipos de links: soft links (ou links simbólicos) e hard links:
- links simbólicos: É um atalho estático, se mover ou deletar o arquivo o link fica quebrado;
- hard links: Se o arquivo é movido o link é automaticamente atualizado.
ln arquivo link
O Linux usa muitos links na estrutura de diretórios, que é um recurso muito usado quando os arquivos de sistemas mudam de lugar em uma nova versão.
Instalação e configuração
A instalação do Ubuntu server pode ser obtida diretamente do site do Ubuntu:
http://www.ubuntu.com/download/server
O processo de instalação do Ubuntu server é similar a versão desktop, contudo, tudo é realizado via terminal de comandos.
Passos para instalação (https://help.ubuntu.com/lts/serverguide/installing-from-cd.html):
- Baixar a vesão Ubuntu server e gerar um CD-ROM com a imagem ISO;
- Fazer o boot do sistema a partir do CD-ROM;
- Selecionar a linguagem de instalação;
- Escolher basic server install;
- Escolher a linguagem para o sistema, leiaute do teclado, configuração de rede, nome do host e fuso horário;
- Definir o particionamento do disco rígido;
- A base do Ubuntu é então instalada.
- Atualizações do sistema
- Existe três opções (vamos utilizar a primeira):
- Sem atualizações automáticas, o que exige que o administrador se logue no sistema e atualize o sistema manualmente;
- Atualizações automáticas;
- Controle de atualizações via landscape (pesquisar detalhes).
- Tarefas de pacotes
- Durante a instalação do Ubuntu server é possível instalar pacotes adicionais, incluindo entre outros (https://help.ubuntu.com/lts/serverguide/installing-from-cd.html#install-tasks):
- Servidor DNS: servidor BIND DNS;
- Servidor LAMP: servidor Linux/Apache/MySQL/PHP;
- Mail server;
- Servidor OpenSSH;
- Servidor de Impressão;
- Servidor de Arquivos Samba.
Uma vez que o processo de instalação tenha terminado você pode ver uma lista de tarefas disponíveis entrando no seguinte no terminal:
tasksel --list-tasks
Instalação de pacotes
apt-get
Sistema de gerenciamento de pacotes que trabalha baixando pacotes de repositórios oficiais do Ubuntu.
A seguir estão descritas as principais utilizações do apt-get [2]:
sudo apt-get update
Atualiza a lista de pacotes disponíveis em cada servidor. Deve ser executado regularmente, particularmente antes de fazer cada nova instalação de pacotes.
sudo apt-get install apache2
Exemplo de comando para instalação de pacote, no caso o servidor Web apache. O apt-get instala automaticamente todas as dependências do pacote, pedindo confirmação.
- Atualização de pacote
- Para atualizar um pacote rode em sequência os comandos:
sudo apt-get update sudo apt-get install apache2
Para atualizar todos os pacotes do sistema de uma vez, execute:
sudo apt-get update sudo apt-get upgrade
- Remoção de pacote
sudo apt-get remove apache2
- Este comando remove o pacote e preserva os arquivos de configuração, que podem ser aproveitados caso se queira reinstalar o pacote.
sudo apt-get remove --purge apache2
- Remove o pacote e os arquivos de contiguração.
- Reinstalação de um pacote
sudo apt-get install --reinstall apache2
- Arquivos de configuração do apt-get
- O principal arquivo de configuração do apt-get é o arquivo:
/etc/apt/sources.list
- Este arquivo apresenta a lista dos mirrors onde ficam hospedados os repositórios de pacotes do Ubuntu.
dpkg
O dpkg complementa o apt-get, permitindo instalar pacotes .deb baixados manualmente [2].
- Instalação de pacote .deb
sudo dpkg -i pacote.deb
- ou, para instalar vários pacotes dentro de um diretório:
sudo dpkg -i *.deb
O dpkg instala apenas o pacote indicado, não instala dependências. Para resolver isto, pode usar o comando:
sudo apt-get -f install
- este comando resolve as dependências e corrige problemas que possam ter havido na instalação.
Se não conseguir resolver os problemas, pode-se experimentar o comando:
sudo apt-get -f remove
- este comando remove os pacotes com problema.
Gerenciador de downloads
- Comando wget
- Permite gerenciar downloads via linha de comando, muito útil quando se precisa instalar um pacote no servidor via SSH.
Exemplo:
wget -c download.virtualbox.org/virtualbox/5.0.0/virtualbox-5.0_5.0.0-101573~Ubuntu~trusty_amd64.deb
- O parâmetro -c faz com que ele continue o download caso seja interrompido.
Gerenciamento de serviços e processos
Cada serviço rodando no Linux, como um Servidor Apache, são chamados deamons ou serviços do sistema [2].
A tarefa de iniciar ou parar os serviços do sistema é automatizada por um conjunto de scripts, localizados na pasta /etc/init.d:
- Para iniciar um serviço usa-se o comando:
/etc/init.d/apache2 start
- Para parar um serviço usa-se o comando:
/etc/init.d/apache2 stop
Cada processo no Linux é um aplicativo ou serviço ativo no sistema.
Para listar todos os processos ativos, usa-se o comando:
ps aux
Para saber a função de um processo, pode-se usar o comando:
whatis
- Por exemplo, para saber qual o processo cron:
whatis cron cron (8) - daemon to execute scheduled commands (Vixie Cron)
Para saber se um processo está rodando, como por exemplo o firefox, pode-se usar o comando:
ps aux | grep firefox evandro 1886 10.6 3.5 980504 261976 ? Sl 18:52 3:09 /usr/lib/firefox/firefox
Para matar um processo deve-se especificar o PID (Identificador do Processo), por exemplo, para matar o firefox:
kill 1886
Caso processo esteja travado, deve utilizar o seguinte parâmetro:
kill -9 1886
Sistema de arquivos
O sistema de arquivos caracteriza o modo como os dados são armazenados em uma partição do dispositivo de armazenamento.
Cada sistema operacional pode trabalhar com um sistema de arquivos específico. Deste modo, caso se queira instalar vários sistemas operacionais em uma máquina, o disco rígido deve ser particionado.
- Particionamento
- O particionamento do disco rígido pode ser realizado durante a instalação do sistema. Geralmente o software de instalação oferece ferramentas para particionar o disco. Entretanto, há ferramentas específicas para isto, como o GParted, disponível nos repositórios do Ubuntu.
- Gerenciador da inicialização
- Caso o computador tenha mais de um sistema operacional instalado há necessidade de um gerenciador da inicialização para definir a ordem de iniciação do sistema. No Ubuntu o gerenciador da inicialização é o GRUB.
- A edição do arquivo de configuração do GRUB permite alterar a ordem de iniciação dos sistemas operacionais:
sudo gedit /etc/default/grub
- Caso a ordem de inicialização seja alterada o GRUB deve ser atualizado:
sudo update-grub
Sistemas de arquivos suportados pelo Linux
O Linux tem suporte a vários de sistemas de arquivos, sendo que os principais são:
- ext: extended filesystem, é o mais utilizado pelo Linux. Existem várias extensões (ext2, ext3, ext4) que melhoram a performance do sistema.
- vfat: é o sistema de arquivos do DOS e Microsoft Windows 95 e NT.
- ntfs: é o sistema de arquivos do Microsoft Windows XP e NT.
- nfs: é um sistema de arquivos para redes usado para acessar discos localizados em computadores remotos.
- smb: é um sistema de arquivos para redes que suporta o protocolo SMB, usado pelos Windows for Workgroups e NT. No Linux o Samba implementa o protocolo SMB fazendo com que pareça como sendo um servidor de arquivos Windows.
- iso9660: é o sistema de arquivos para CD-ROM.
O arquivo /proc/filesystems mostra os sistemas de arquivos são suportados pelo seu kernel atual.
Estrutura de arquivos e diretórios do Linux
O diretório raiz (/) do Linux apresenta a seguinte lista de diretórios:
$ ls / bin dev lib proc sbin tmp boot etc media root opt usr cdrom home mnt
Descrição e função dos diretórios:
- /bin: Arquivos binários executáveis de comandos essenciais, como o cp, mv e grep.
- /boot: Arquivos relacionados ao boot e ao kernel.
- /dev: Arquivos associados a ponteiros para dispositivos físicos, como os discos rígidos, placas de som e vídeo etc.
- /etc: Arquivos de configuração dos sistemas e aplicativos instalados na máquina.
- /lib: Bibliotecas do sistema.
- /mnt: Diretório de montagem dos dispositivos de armazenamento .
- /media: Diretório de montagem dos sistemas de arquivos temporários, como pendriver.
- /cdrom: Diretório de montagem do CD-ROM.
- /opt: Arquivos de programas de terceiros, que não acompanham a distribuição.
- /proc: Diretório de informações de processos e hardware do sistema.
- /root: Diretório home do superusuário.
- /sbin: Arquivos binários executáveis do superusuário.
- /tmp: Arquivos temporários.
- /usr: Onde ficam a maioria dos aplicativos instalados no sistema.
- /var: Arquivos de dados variáveis, como spool de impressão, os arquivos de cache e arquivos de log.
Referências
--Evandro.cantu (discussão) 18h21min de 5 de julho de 2015 (BRT)