-
Notifications
You must be signed in to change notification settings - Fork 0
Linux Server
Documentação de referência sobre Linux, servidores e redes — com explicações detalhadas de cada comando e conceito.
- Referência Rápida de Comandos
- Nomes e Siglas
- Instalação do Debian 13 Server
- Instalação do SSH
- Instalação do Debian — Servidor Web
- Configurando IP Fixo no Debian
- Instalação do LinuxLogo
- Instalação do WordPress
- Projeto Tomcat — Servidor de Aplicações Java
- Tomcat — MySQL, Workbench e Backup
- NAT, Firewall e Bloqueio de Sites
| Comando | O que faz | Quando usar |
|---|---|---|
shutdown -h now |
Desliga o sistema imediatamente | Encerrar o servidor com segurança |
reboot |
Reinicia o sistema | Após instalar pacotes ou alterar configurações |
exit |
Encerra a sessão atual do terminal | Fazer logoff sem desligar o servidor |
hostnamectl |
Exibe informações do sistema (hostname, SO, kernel) | Verificar o nome do servidor e versão do sistema |
history |
Lista os últimos 1000 comandos digitados | Rever ou reutilizar comandos anteriores |
clear |
Limpa a tela do terminal | Organizar a visualização |
💡
historyé muito útil para auditar o que foi feito no servidor. Combine comhistory | grep aptpara filtrar apenas comandos de instalação, por exemplo.
| Comando | O que faz | Exemplo prático |
|---|---|---|
pwd |
Mostra o diretório atual (Print Working Directory) | Confirmar onde você está antes de editar arquivos |
cd |
Vai para o diretório home do usuário (~) |
Voltar ao ponto de partida rapidamente |
cd / |
Vai para a raiz do sistema | Navegar pela estrutura de pastas do Linux |
cd .. |
Sobe um nível na hierarquia de diretórios | Sair de /etc/network para /etc
|
cd /etc/network |
Vai diretamente para um caminho absoluto | Ir para qualquer pasta sem navegar passo a passo |
ls |
Lista arquivos e diretórios | Ver o conteúdo de uma pasta |
ls -l |
Lista com detalhes: permissões, dono, tamanho, data | Verificar quem tem acesso a um arquivo |
ls -la |
Igual ao -l, mas inclui arquivos ocultos (iniciados com .) |
Ver arquivos de configuração ocultos |
cp <origem> <destino> |
Copia um arquivo ou diretório | Fazer backup antes de editar um arquivo |
mv <origem> <destino> |
Move ou renomeia um arquivo | Renomear dnsmasq.conf para dnsmasq.conf.bkp
|
rm <arquivo> |
Exclui um arquivo permanentemente | Remover o index.html padrão do Apache |
cat <arquivo> |
Exibe o conteúdo de um arquivo no terminal | Ver rapidamente o conteúdo de um arquivo de configuração |
nano <arquivo> |
Abre o editor de texto no terminal | Editar arquivos de configuração |
⚠️ O comandormnão tem lixeira — o arquivo é excluído imediatamente e sem confirmação. Use com cuidado.
💡 Antes de editar qualquer arquivo de configuração importante, sempre faça um backup com
cp arquivo arquivo.bkp. Se algo der errado, é só copiar o backup de volta.
| Atalho | Ação |
|---|---|
Ctrl + O |
Salvar o arquivo |
Enter |
Confirmar o nome ao salvar |
Ctrl + X |
Sair do nano |
Ctrl + W |
Buscar texto no arquivo |
Ctrl + K |
Recortar uma linha |
| Comando | O que faz |
|---|---|
ip a |
Exibe todas as interfaces de rede, IPs e endereços MAC |
ping <endereço> |
Testa a conectividade com outro host (ping google.com) |
lspci |
Lista os dispositivos PCI, incluindo placas de rede |
💡 O campo
link/etherna saída doip amostra o endereço MAC da interface — identificador físico e único de cada placa de rede.
| Comando | O que faz |
|---|---|
systemctl status <serviço> |
Verifica se o serviço está ativo, inativo ou com erro |
systemctl start <serviço> |
Inicia o serviço |
systemctl stop <serviço> |
Para o serviço |
systemctl restart <serviço> |
Para e reinicia o serviço — aplica novas configurações |
systemctl enable <serviço> |
Faz o serviço iniciar automaticamente com o sistema |
systemctl disable <serviço> |
Remove o serviço da inicialização automática |
💡 Após editar qualquer arquivo de configuração de um serviço, use
systemctl restartpara aplicar as mudanças.
💡 Use sempre
systemctl enableem serviços essenciais (SSH, Apache, Tomcat) para que eles voltem automaticamente após um reboot.
| Comando | O que faz |
|---|---|
apt update |
Atualiza a lista de pacotes disponíveis nos repositórios |
apt upgrade |
Instala as atualizações disponíveis |
apt install <pacote> |
Instala um pacote |
apt remove <pacote> |
Remove um pacote |
⚠️ Sempre executeapt updateantes de instalar qualquer pacote. Sem isso, o sistema pode tentar instalar versões antigas ou não encontrar o pacote.
PuTTY — permite acessar o servidor Linux remotamente pelo Windows via terminal.
| Símbolo / Termo | Significado | Contexto |
|---|---|---|
ssh |
Secure Shell — acesso remoto seguro ao servidor | Protocolo criptografado para gerenciar servidores remotamente |
/etc |
Diretório de configuração do sistema | Quase todo arquivo de configuração do Linux fica aqui |
~ |
Diretório home do usuário (/home/usuario) |
Atalho para o diretório pessoal |
# |
Prompt do usuário root (administrador) | Indica que você tem poderes totais sobre o sistema — cuidado! |
$ |
Prompt do usuário comum | Indica sessão com permissões limitadas |
/home |
Diretório dos usuários do sistema | Cada usuário tem sua pasta em /home/nome
|
/var |
Dados variáveis: logs, filas, bancos de dados | Onde o Apache guarda os logs, por exemplo |
/tmp |
Arquivos temporários | Apagado automaticamente em alguns reboots |
/lost+found |
Recuperação de arquivos após erros de disco | Usado automaticamente pelo sistema em caso de falha |
Selecione Graphical Install para usar o instalador com interface gráfica (mais fácil de navegar que o modo texto).
Configure:
- Idioma
- Região
- Layout de teclado
- Rede (o nome de domínio pode ficar em branco — configura depois)
⚠️ Essa senha dá acesso total ao sistema. Use uma senha forte e não a esqueça.
Selecione:
Assistido — usar disco inteiro e configurar LVM
O que é LVM? O Logical Volume Manager permite redimensionar partições sem precisar reinstalar o sistema — muito útil em servidores que crescem com o tempo.
Selecione:
Partições /home, /var e /tmp separadas
| Partição | Função | Por que separar? |
|---|---|---|
/home |
Arquivos dos usuários | Evita que dados de usuário ocupem espaço do sistema |
/var |
Logs e dados variáveis | Logs crescem muito — separar evita encher o disco raiz |
/tmp |
Arquivos temporários | Pode ser limitada em tamanho por segurança |
-
Ler mídia adicional:
NÃO -
Espelho (mirror): escolha o primeiro da lista (repositório de onde o Debian baixa atualizações)
-
Proxy HTTP: deixe em branco se não usar proxy Seleção de software — marque apenas:
-
✅ Servidor SSH
-
✅ Utilitários de sistema padrão
💡 Instalar menos coisas = servidor mais leve, seguro e fácil de manter. Adicione serviços conforme necessário.
O SSH (Secure Shell) permite acessar o servidor remotamente via terminal — essencial para administrar servidores sem monitor ou teclado físico.
apt install openssh-server # instala o servidor SSH
systemctl start ssh # inicia o serviço
systemctl enable ssh # faz iniciar automaticamente com o sistema
systemctl status ssh # confirma que está rodandoPara conectar ao servidor pelo PuTTY:
- Host: IP do servidor
- Port: 22 (porta padrão do SSH)
Quando solicitado, digite o domínio da organização:
domain.com.br
Ler mídia adicional: NÃO
Proxy: deixe em branco
Demais perguntas (Sim/Não): pode confirmar com Sim
- ✅ Servidor Web (instala o Apache automaticamente)
- ✅ Servidor SSH
- ✅ Utilitários de sistema padrão
Por padrão, o Debian usa DHCP — o roteador atribui um IP diferente a cada reinicialização. Servidores precisam de IP fixo para serem sempre acessados no mesmo endereço.
Antes de começar: anote o IP atual, a máscara de rede e o gateway da sua rede.
Useip apara ver o IP atual eip routepara ver o gateway.
cd /etc/network # diretório onde fica o arquivo de configuração de redecp interfaces interfaces.bkp # SEMPRE faça backup antes de editar
nano interfacesAltere iface enp0s3 inet dhcp para static e adicione as linhas abaixo:
iface enp0s3 inet static
address 10.26.44.X/24 # substitua X pelo número do seu IP
netmask 255.255.255.0 # máscara da rede /24
gateway 10.26.44.1 # endereço do roteador
💡 O nome da interface (
enp0s3) pode variar. Useip apara confirmar o nome correto na sua máquina.
Salvar: Ctrl+O → Enter → Ctrl+X
O DNS traduz nomes de domínio (como google.com) em endereços IP. Sem ele, o servidor não consegue acessar a internet pelo nome.
apt install systemd-resolved # instala o serviço de DNS
cd /etc/systemd
cp resolved.conf resolved.conf.bkp # backup
nano resolved.confAdicione abaixo da linha [Resolve]:
DNS=8.8.8.8 8.8.4.4
💡
8.8.8.8e8.8.4.4são os servidores DNS públicos do Google — rápidos e confiáveis.
systemctl restart systemd-resolvedsystemctl restart networking
# ou
reboot💡 Se algo der errado e o servidor perder a rede, restaure o backup:
cp interfaces.bkp interfacese reinicie.
O LinuxLogo exibe uma arte ASCII com informações do sistema toda vez que alguém acessa o servidor via SSH — útil para identificar o servidor rapidamente.
apt install linuxlogo
cd /etc
cat issue.linuxlogo > issue # substitui a mensagem padrão de login pelo logoO Apache é o servidor web que vai servir as páginas do WordPress.
systemctl status apache2
systemctl start apache2 # inicia se não estiver rodando
systemctl enable apache2 # garante que inicia com o sistemaO MariaDB é o banco de dados onde o WordPress armazena posts, usuários e configurações.
apt install mariadb-server
systemctl status mariadb
mariadb-secure-installation # script de segurança — remova usuários anônimos e acesso remoto rootmariadb # abre o terminal do banco de dadosCREATE DATABASE wordpress; -- cria o banco
CREATE USER 'admin'@'localhost' IDENTIFIED BY '123@senac'; -- cria o usuário
GRANT ALL PRIVILEGES ON wordpress.* TO 'admin'@'localhost'; -- dá acesso total ao banco
FLUSH PRIVILEGES; -- aplica as permissões imediatamente
SELECT User, Db, Host FROM mysql.db; -- confirma a configuração
QUIT;💡
'admin'@'localhost'significa que esse usuário só pode se conectar de dentro do próprio servidor — mais seguro do que permitir acesso externo.
O PHP é a linguagem de programação do WordPress — sem ele, o servidor não consegue processar as páginas.
apt install php phpmyadmin
systemctl restart apache2 # obrigatório após instalar o PHP
php -v # confirma a versão instaladaAcesse o phpMyAdmin pelo navegador: http://IP_DO_SERVIDOR/phpmyadmin
Usuário: admin | Senha: 123@senac
cd /etc/php/8.x/apache2 # substitua x pela sua versão (use: php -v para ver)
cp php.ini php.ini.bkp
nano php.ini # busque com Ctrl+W por: memory_limit| Uso | Valor recomendado | Por quê |
|---|---|---|
| Padrão | 128M |
Suficiente para sites simples |
| Uso comum | 256M |
WordPress com plugins |
| E-commerce | 512M |
Lojas com muitas imagens e operações |
cd /var/www/html # diretório padrão de hospedagem do Apache
rm index.html # remove a página padrão "It works!" do Apache
cd ..
wget http://wordpress.org/latest.tar.gz # baixa a versão mais recente
tar -xzvf latest.tar.gz # descompacta o arquivo
rsync -avP wordpress/ /var/www/html # copia os arquivos mantendo permissões
chown -R www-data:www-data /var/www/html # dá ao Apache propriedade dos arquivos💡
chown -R www-data:www-dataé essencial — sem isso o Apache não consegue ler, escrever ou executar os arquivos do WordPress.
O Apache Tomcat executa aplicações Java na web. Diferente do Apache HTTP Server (que serve páginas estáticas e PHP), o Tomcat processa código Java compilado em arquivos
.war.
- 1 placa de rede (modo bridge — coloca o servidor na mesma rede que o PC real)
- Instalar apenas sistema básico e SSH
⚠️ Não instalar Servidor Web — o Tomcat substituirá essa função- Configurar LinuxLogo e IP fixo
- Testar conectividade:
ping google.comParticionamento: Assistido com LVM →/home,/vare/tmpseparados
Seleção de software: Servidor SSH + Utilitários padrão
O Tomcat precisa do Java para funcionar — é ele quem executa o código das aplicações.
apt install default-jdk # instala o Java Development Kit (compilador + runtime)
java -version # verifica a versão do Java Runtime
javac -version # verifica a versão do compilador Java💡
default-jdkinstala a versão de Java padrão recomendada para o Debian — geralmente a mais recente e estável disponível no repositório.
apt install tomcat11 tomcat11-admin tomcat11-examples tomcat11-docs
systemctl status tomcat11
systemctl enable tomcat11 # garante que inicia com o sistema| Pacote | Função |
|---|---|
tomcat11 |
O servidor em si |
tomcat11-admin |
Interface web de administração |
tomcat11-examples |
Aplicações de exemplo para teste |
tomcat11-docs |
Documentação acessível pelo navegador |
cd /etc/tomcat11
cp tomcat-users.xml tomcat-users.xml.bkp
nano tomcat-users.xmlLocalize o bloco comentado e edite para:
<user username="admin" password="sua_senha" roles="manager-gui,admin-gui"/>💡
manager-guidá acesso à área de deploy de aplicações.admin-guidá acesso ao painel de administração do servidor.
systemctl restart tomcat11Acesse pelo navegador: http://IP_DO_SERVIDOR:8080
apt install gnupg # necessário para verificar a chave do repositório MySQL
wget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb # baixa o configurador do repositório
dpkg -i mysql-apt-config*.deb # instala o repositório
apt update # atualiza a lista de pacotes
apt install mysql-server # instala o MySQL
mysql -V # confirma a versão instalada💡 A Oracle disponibiliza o MySQL pelo próprio site porque o repositório padrão do Debian contém o MariaDB (fork do MySQL). Para usar a versão oficial da Oracle é necessário adicionar o repositório dela.
mysql_secure_installation # melhora a segurança: remove usuários anônimos, desabilita acesso remoto rootmysql -u root -p # acessa o MySQL como root (-p solicita a senha)SHOW DATABASES; -- lista os bancos existentes
CREATE DATABASE agenda; -- cria o banco da aplicação
USE agenda; -- seleciona o banco para uso
CREATE TABLE contatos (
idcon INT PRIMARY KEY AUTO_INCREMENT, -- ID único, gerado automaticamente
nome VARCHAR(30) NOT NULL, -- nome obrigatório, até 30 caracteres
fone VARCHAR(15) NOT NULL, -- telefone obrigatório
email VARCHAR(30) -- e-mail opcional
);
DESCRIBE contatos; -- mostra a estrutura da tabela criada
-- Ctrl+D para sair- Acesse:
http://IP_DO_SERVIDOR:8080 - Clique em Manager App e faça login com o usuário
admin - Na seção WAR file to deploy, selecione o arquivo
.ware clique em Deploy - A aplicação ficará disponível em:
http://IP_DO_SERVIDOR:8080/agenda
💡 Um arquivo
.war(Web Application Archive) é o formato de empacotamento de aplicações Java para web — equivale a um.zipcom toda a aplicação dentro.
mysql -u root -pCREATE USER 'dba'@'%' IDENTIFIED BY '123@senac';
-- '%' permite conexão de qualquer IP (útil para acessar com o Workbench)
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'%';
-- '*.* ' significa: todos os bancos e todas as tabelas
FLUSH PRIVILEGES; -- aplica as permissões sem reiniciar o serviço
⚠️ Em produção, evite'%'— prefira limitar por IP:'dba'@'192.168.0.%'. Isso impede que qualquer máquina na internet tente se conectar.
Ferramenta gráfica para gerenciar bancos de dados MySQL — útil para visualizar tabelas, executar queries e fazer backups.
Criar conexão:
- Clique em
+(Nova conexão) - Preencha: nome da conexão, host (IP do servidor), usuário (
dba) - Clique em OK e depois na conexão para conectar Comandos úteis no Workbench:
SHOW DATABASES; -- lista todos os bancos
USE agenda; -- seleciona o banco agenda
SELECT * FROM contatos; -- exibe todos os registros da tabela
⚠️ No Workbench, useCtrl+Enterpara executar — diferente do terminal, onde se usaEnter.
Administration → Data Export
→ Selecione o banco (ex: agenda)
→ Dump Structure and Data
→ Start Export
💡 Dump Structure and Data exporta tanto a estrutura das tabelas quanto os dados — ideal para backup completo. Se quiser só a estrutura (sem dados), use Dump Structure Only.
⚠️ O banco precisa existir antes de importar — o backup não recria o banco automaticamente.
CREATE DATABASE agenda; -- cria o banco antes de importarAdministration → Data Import/Restore
→ Selecione o arquivo de backup
→ Escolha o banco (agenda)
→ Start Import
DROP DATABASE agenda; -- remove o banco e todos os dados permanentementeNesta configuração, o servidor Linux age como roteador e firewall entre a rede interna (alunos/computadores) e a internet.
[Internet] ←→ [enp0s3 - NAT] ←→ SERVIDOR LINUX ←→ [enp0s8 - LAN] ←→ [Clientes]
No VirtualBox, habilite 2 placas de rede:
| Adaptador | Modo | Função |
|---|---|---|
Adaptador 1 (enp0s3) |
NAT | Conecta o servidor à internet pelo PC host |
Adaptador 2 (enp0s8) |
Rede interna | Conecta o servidor aos clientes da LAN |
Instalar apenas sistema básico e SSH.
cd /etc/network
cp interfaces interfaces.bkp # backup obrigatório
lspci # lista placas de rede disponíveis
ip a # confirma os nomes das interfaces
nano interfacesAdicione a segunda interface com IP fixo (ela será o gateway dos clientes):
# LAN
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.17.1/24 # este IP será o gateway dos clientes
reboot # ou: systemctl restart networkingO dnsmasq faz duas funções aqui: servidor DNS (resolve nomes de domínio para os clientes) e servidor DHCP (distribui IPs automaticamente na rede interna).
apt install dnsmasq
systemctl status dnsmasq
cd /etc
mv dnsmasq.conf dnsmasq.conf.bkp # move o original como backup
nano dnsmasq.confConteúdo do novo arquivo:
# LAN — define em qual interface o dnsmasq vai escutar
interface=enp0s8
bind-interfaces # garante que só escuta na interface definida
# DNS — configura os servidores DNS que serão usados para resolver nomes externos
listen-address=192.168.17.1 # IP do próprio servidor na LAN
server=8.8.8.8 # DNS primário (Google)
server=8.8.4.4 # DNS secundário (Google)
cache-size=1000 # guarda 1000 consultas em cache — acelera a navegação
systemctl restart dnsmasq
systemctl status dnsmasqPor padrão, o Linux não repassa pacotes entre interfaces de rede. Essa configuração habilita esse comportamento — essencial para o servidor funcionar como roteador.
cd /etc/sysctl.d
nano sysctl.confAdicione:
# NAT — habilita o encaminhamento de pacotes entre interfaces
net.ipv4.ip_forward=1
sysctl --system # aplica as configurações sem reiniciarO nftables é o firewall moderno do Linux — substitui o antigo iptables. Aqui ele faz o mascaramento NAT: transforma o IP interno dos clientes para o IP externo do servidor ao sair para a internet.
systemctl start nftables
systemctl enable nftables
systemctl status nftables
nft list ruleset # lista as regras atuais do firewallcd /etc
cp nftables.conf nftables.conf.bkp
nano nftables.confAdicione ao final do arquivo:
table ip nat {
chain postrouting {
type nat hook postrouting priority 100;
policy accept;
oif "enp0s3" masquerade; # masquerade = troca o IP do cliente pelo IP do servidor ao sair
}
}
systemctl restart nftables
nft list ruleset # confirma que a regra foi aplicadaO bloqueio funciona redirecionando domínios indesejados para o IP 0.0.0.0 (inexistente) — quando um cliente tenta acessar o site, o DNS responde com um IP inválido e a conexão falha.
cd /etc/dnsmasq.d
nano blacklist.conf# Lista negra — redireciona esses domínios para 0.0.0.0 (bloqueado)
address=/netflix.com/0.0.0.0
address=/facebook.com/0.0.0.0
Vincular ao dnsmasq:
nano /etc/dnsmasq.confAdicione:
# Blacklist
domain-needed # não encaminha consultas sem domínio
conf-file=/etc/dnsmasq.d/blacklist.conf # carrega o arquivo de bloqueio
systemctl restart dnsmasq
systemctl status dnsmasq💡 Para adicionar mais sites bloqueados, basta editar o
blacklist.confe adicionar novas linhas no formatoaddress=/dominio.com/0.0.0.0, depois reiniciar o dnsmasq.
Documentação produzida durante o Curso Técnico de Informática — Senac Tatuapé
| Programa | Tipo | Porta padrão | Para que serve |
|---|---|---|---|
| Apache | Servidor web | 80 / 443 | Servir sites e o WordPress |
| MariaDB | Banco de dados | 3306 | Banco do WordPress |
| MySQL | Banco de dados | 3306 | Banco do projeto Java |
| MySQL Workbench | Interface gráfica | — | Gerenciar MySQL visualmente, backup e restore |
| PHP | Linguagem | — | Executar o WordPress |
| phpMyAdmin | Interface web | 80 | Gerenciar bancos pelo navegador |
| WordPress | CMS | 80 | Gerenciar sites |
| OpenSSH | Acesso remoto | 22 | Administrar o servidor remotamente |
| Tomcat | Servidor Java | 8080 | Hospedar aplicações Java |
| systemd-resolved | DNS | 53 | Resolução de nomes (IP fixo) |
| dnsmasq | DNS/DHCP | 53 | DNS da LAN + bloqueio de sites |
| NFTables | Firewall | — | Firewall e NAT/masquerade |
| linuxlogo | Utilitário | — | Banner de login no terminal |