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?
Respostas