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

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

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 /home2/maur8470/mauriciodelima.com.br/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?

Deixe um comentário