Servidor web com LNMP NGINX, PHP 8.2, MariaDB, phpMyAdmin, Let’s Encrypt no Debian 12 Bookworm

Bem-vindo ao guia definitivo para configurar um servidor poderoso e seguro com a stack LNMP (Linux, NGINX, MySQL/MariaDB, PHP) no Debian Bookworm. Servidor web com LNMP no Debian 12.

Neste tutorial abrangente, exploraremos passo a passo como instalar e configurar cada componente essencial para criar um ambiente de hospedagem web robusto. Desde a instalação do sistema operacional até a implementação do Let’s Encrypt para segurança HTTPS e a gestão eficiente do banco de dados com phpMyAdmin, você encontrará tudo o que precisa para construir e gerenciar com sucesso seu próprio servidor web. Vamos mergulhar no processo e capacitar sua jornada rumo a um serviço web confiável e de alto desempenho.

Nesse guia ulltilizamos uma instalação limpa do Debian 12.

NGINX Servidor Web

Pronunciado como “engine x”, uma alternativa de peso ao Apache. O NGINX é reconhecido por sua velocidade, eficiência e flexibilidade de configuração, garantindo um desempenho superior. Embora o Apache seja amplamente conhecido como o servidor web por excelência, o NGINX está rapidamente ganhando popularidade e se tornando a escolha preferencial para muitos novos projetos.

apt update && apt upgrade -y
apt install -y nginx
sed -i 's/# server_tokens/server_tokens/' /etc/nginx/nginx.conf
systemctl restart nginx

Se durante o processo de upgrade do Debian atualizar o Kernel, recomendo que seja dado reeboot no servidor.

Acesse o navegador e digite http://ip-do-servidor/

Se apareceu uma tela de “Welcome to Ngnix!”, a instalação ocorreu com sucesso.

MARIADB Servidor de Banco de Dados

Criado por Michael “Monty” Widenius, fundador do MySQL, é um fork deste último, surgido após sua aquisição pela Oracle. Essa separação não apenas preserva a natureza de código aberto do MySQL, mas também promove um ambiente de inovação contínua, garantindo uma alternativa robusta e livre para o armazenamento de dados em projetos e servidores.

apt install -y mariadb-server mariadb-client

Ao final do tutorial, abordaremos a configuração da senha para o usuário root do MariaDB. No entanto, optamos por adiar esse passo para evitar possíveis conflitos durante a instalação do phpMyAdmin.

PHP 8.2 Interpretador de Linguagem WEB

O PHP, uma abreviação de “Hypertext Preprocessor”, é uma linguagem de programação amplamente utilizada para o desenvolvimento web. Criada originalmente por Rasmus Lerdorf em 1994, o PHP permite a criação de páginas web dinâmicas, interativas e personalizadas. Funcionando no lado do servidor, o PHP é capaz de processar formulários, acessar bancos de dados, gerar conteúdo dinâmico e muito mais. Sua sintaxe familiar e sua natureza de código aberto o tornam acessível para uma ampla gama de desenvolvedores, contribuindo para sua popularidade e uso generalizado na construção de websites e aplicativos online.

apt install --no-install-recommends -y \
php php-{bcmath,cli,curl,fpm,gd,gmp,imagick,intl,json,mbstring,mysql,mysqlnd,pear,soap,xml,zip}

Alguns ajustes necessários para melhorar a perfomance do php e permitir upload de arquivos maiores e uso de memória mais robusto para seus scripts

# Define nos valores em php.ini
sed -i 's/^max_execution_time = .*/max_execution_time = 300/g' /etc/php/8.2/fpm/php.ini
sed -i 's/^memory_limit = .*/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/^post_max_size = .*/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini

Faremos uns ajustes para integrar o PHP ao NGNIX…

# Backup do arquivo defaul original do ngnix
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
# Criação de um novo arquivo
echo 'server {
    listen 80;
    listen [::]:80;
 
    root /var/www/html;
    index index.php index.html index.htm;
 
    server_name _;
 
    location / {
        try_files $uri $uri/ =404;
    }

# Adicionais para PHP

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}' | tee /etc/nginx/sites-available/default

Teste o arquivo para ver se está tudo certo com ele

nginx -t

Saída esperada do comando:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Estado tudo certo, precisaremos reiniciar os serviços

systemctl restart nginx php8.2-fpm

Vamos criar um arquivo em PHP para testar se o nosso servidor NGINX está interpretando corretamente o PHP. Esse teste simples nos permitirá verificar se a configuração do servidor está correta e se o PHP está funcionando conforme esperado. Ao criar e acessar este arquivo no navegador, veremos se o código PHP é processado e exibido corretamente, garantindo assim que nossa instalação esteja pronta para desenvolver e executar aplicativos web.

echo '<?php phpinfo();' | tee /var/www/html/teste.php

Acesse no navegador http://ip-do-servidor/teste.php

phpMyAdmin Gerenciador de Bando de Dados

phpMyAdmin é uma interface web popular para gerenciamento de bancos de dados MySQL e MariaDB. Com sua interface intuitiva e recursos abrangentes, o phpMyAdmin simplifica tarefas como criação de bancos de dados, tabelas e consultas SQL, tornando o gerenciamento de bancos de dados acessível até mesmo para usuários iniciantes. Além disso, oferece funcionalidades avançadas, como importação e exportação de dados, administração de privilégios de usuários e execução de consultas complexas, tornando-se uma ferramenta indispensável para administradores de banco de dados e desenvolvedores web.

apt install -y phpmyadmin

Não selecione nada e pressione OK, utilIzando a tecla tab.

Irá solicitar a senha para a base de dados phpmyadmin, informe sua senha e repita.

Vamos precisar editar o arquivo /etc/nginx/sites-available/default novamente e acrescentar no final a configuração para o phpmyadmin.

# Adicional com o phpMyAdmin
echo 'server {
    listen 80;
    listen [::]:80;
 
    root /var/www/html;
    index index.php index.html index.htm;
 
    server_name _;
    client_max_body_size 128M;
 
    location / {
       try_files $uri $uri/ =404;
    }
 
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
    # Adicionar configuração do phpMyAdmin
    location ^~ /phpmyadmin {
        root /usr/share;
        try_files $uri $uri/ =404;
        location ~ .php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        }
    }
 }' | tee /etc/nginx/sites-available/default

Verifique a sintaxe do arquivo e reinicie o serviço

nginx -t
systemctl restart nginx

Acesse agora http://ip-do-servidor/phpmyadmin

Fazendo alguns ajuste de segurança no MariaDB importantes,

mysql_secure_installation

Switch to unix_socket authentication [Y/n]: Y
Change the root password? [Y/n]: Y (vai pedir para digitar a senha de root)
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

Definindo senha para o root do mariaDB, caso necessite alterar a senha de root ou criar se por qualquer motivo não foi definida no passo anterior. Podemos pular esse passo se mudamos a senha no passo anterior.

mariadb -u root
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'SUA_SENHA';
FLUSH PRIVILEGES;
EXIT;

Renicie o MariaDB

systemctl restart mariadb

Excluiremos o histórico de comandos para não deixar rastros da senha de root que foi digitada.

> /root/.mysql_history

FFmpeg – Encoder para rodar vídeos no servidor

O FFmpeg é uma ferramenta poderosa e versátil de linha de comando para manipulação de áudio e vídeo. Funciona como um encoder, permitindo converter, editar e transmitir vídeos em uma ampla gama de formatos. É especialmente útil em ambientes de servidor, onde pode ser integrado para processar vídeos de forma eficiente e rápida, seja para transcodificação, compressão, filtragem ou outras operações. Com suporte para uma variedade de codecs e formatos, o FFmpeg é uma escolha popular para aplicativos que lidam com vídeo em larga escala, oferecendo flexibilidade e desempenho.

É usado em diversas aplicações que hospedam vídeos para reproduzir no navegador. Para instalar execute:

apt install -y ffmpeg

Let’s Encrypt Certificado Grátis para Conexão Segura

Let’s Encrypt é uma autoridade de certificação que oferece certificados SSL/TLS gratuitos para garantir uma conexão segura entre os usuários e os servidores web. Com sua missão de tornar a internet um lugar mais seguro para todos, o Let’s Encrypt simplifica o processo de obtenção e renovação de certificados SSL, permitindo que qualquer pessoa proteja seu site ou aplicativo web com criptografia robusta e autenticação confiável. Ao adotar o Let’s Encrypt, os administradores de servidores podem garantir a privacidade e a integridade dos dados transmitidos pela internet, promovendo uma experiência de navegação segura e confiável para seus usuários.

apt install -y certbot python3-certbot-nginx

Você precisará colocar o nome do servidor no NGNIX para ter êxito total na geração do seu certificado sem maiores problemas. Lembrando que vc deve mudar seudominio.com.br para o domínio ou subdominio que deseja usar nesse servidor.

sed -i 's/server_name _;/server_name seudominio.com.br;/g' /etc/nginx/sites-available/default

Use o comando abaixo para gerar o certitificado.

certbot

O certificado expira com 90 dias, para renová-lo precisamos executar o comando abaixo.

certbot -q renew

Para testar acesse o site https://www.cdn77.com/tls-test/

Este guia abrangente irá ajudá-lo a configurar um servidor robusto para suas necessidades de hospedagem web, garantindo segurança, desempenho e facilidade de gerenciamento. Servidor web com LNMP no Debian 12. Gostou?

Artigos Relacionados

Instalar Jitsi no Ubuntu 22.04

Você está procurando configurar seu próprio servidor de videoconferência? O Jitsi Meet é uma excelente escolha de código aberto que permite hospedar facilmente videoconferências seguras e de alta qualidade. Este guia irá guiá-lo pelo processo de instalação do Jitsi Meet no Ubuntu 22.04, garantindo que você tenha uma experiência tranquila e amigável ao usuário.

Respostas