Servidor WEB Apache2 + PHP 8.2 + MariaDB +Let’s Encrypt Debian 12 Bookworm (LAMP)

Distribuição utilizada:
Debian 12 Bookworm / Instalação Limpa

Acesse seu bash e vire root com o comando su – para evitar comandos “que não existem”, e antes de mais nada tenha seu repositório atualizado.

# su -
# apt update
# apt upgrade

:: Instalação do Apache2 ::

# apt install apache2 apache2-utils -y

Após a instação, habilitamos o mod_rewrite do Apache que é muito utilizado. Este é um módulo que utiliza um mecanismo baseado em regras de reescrita. (phpipa, wordpress todos usam), e o mod_headers Este módulo fornece diretivas para controlar e modificar os cabeçalhos de solicitação e resposta HTTP. Comando para habilita-lo:

# a2enmod rewrite ; a2enmod headers

A página que vimos ao abri o ip do nosso servidor no navegador fica no diretório /var/www/html, isso está sendo informado no arquivo default do apache que fica em /etc/apache2/sites-enabled/000-default.conf, e para que nosso mod_rewrite e headers funcione corretamente será necessário adicionar alguma linhas.
O HTTP Strict Transport Security ou HSTS (RFC 6797) é um novo padrão de segurança SSL aprovado recentemente pelo IETF. Ele traz diversas melhorias para o SSL como forçar a utilização do HTTPS impedindo que sites sejam acessados usando o protocolo HTTP ou que partes do código de um site que está usando HTTPS seja executado em servidores usando o HTTP entre outras.

# vim /etc/apache2/sites-enabled/000-default.conf

Adicione abaixo de “DocumentRoot /var/www/html” o seguinte:

	Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

	<Directory /var/www/html/>
    		Options FollowSymLinks
    		AllowOverride All
	</Directory>

Para você aprender mais como o apache funciona recomendo: Como ter diversos sub/domínios no mesmo servidor

Por segurança remova a assinatura do apache e reinicie o apache2 para que tenha efeito as nossas alterações.

# sed -i 's/ServerTokens OS/ServerTokens Prod/' /etc/apache2/conf-available/security.conf
# sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-available/security.conf
# systemctl restart apache2

http://[SERVER_IP]

:: Instalação do PHP 8.2 ::

Para instalação do PHP vou incluir algumas extensões que são as mais utilizada, mas seu preferir você pode optar em não instalar, as necessárias são libapache2-mod-php php php-mysql php-cli.

# apt install libapache2-mod-php php php-mysql php-cli php-pear php-gmp php-gd php-bcmath php-mbstring php-curl php-xml php-zip -y

É necessário reiniciar o apache para que o php tenha efeito.

# systemctl restart apache2

Consultado informações de versão:

# php --version
PHP 8.2.7 (cli) (built: Jun  9 2023 19:37:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Você pode criar um arquivo php com a função phpinfo() para mostrar todas as informações.

# echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php

http://[SERVER_IP]/phpinfo.php

:: Instalação do MariaDB 10.11 + phpMyAdmin 5 ::

# apt install mariadb-server mariadb-client phpmyadmin

Por padrão o pacote MaraiDB no Debian usa unix_socket para autenticar o login do usuário, o que basicamente significa que você pode usar o nome de usuário e a senha do sistema operacional para efetuar login no console do MariaDB. Assim, você pode logar diretamente sem fornecer a senha root do MariaDB. Mais a frente vou ensinar como definir uma senha, não farei agora pois se você alterar nesse momento ao instalar o phpMyAdmin terá um erro.

Selecione Apache2

Responda Sim

Informe a senha para o banco de dados do phpmyadmin. http://senhasegura.remontti.com.br/

Repita a senha

Para acessar o phpmyadmin:http://[SERVER_IP]/phpmyadmin/

Por segurança eu sempre fecho o acesso ao phpmyadmin para os IPs da administração, assim evito que uma possível vulnerabilidade venha me afetar. Para isso edite:

# vim /etc/phpmyadmin/apache.conf

Se deseja deixar o atalho para o phpmyadmin restrito apenas aos seus IP de gerencia faça da seguinte forma. Lembre-se de alterar os IPs 200.200.200.0/26 2001:db8:cafe:d0ce::/64 para os seus.

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    # Restrito aos IPs
    AllowOverride All
    Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64

    # limit libapache2-mod-php to files and directories necessary by pma
    <IfModule mod_php7.c>
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
    </IfModule>

    # PHP 8+
    <IfModule mod_php.c>
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
    </IfModule>

</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>

Reinicie o Apache.

 systemctl restart apache2

:: Definindo senha para o root do mariaDB ::

Para aumentar a seguraçã vamos definir uma senha para o usuário root do MariDB, não esqueça de alterar ALTERE_3ST4_SENHA pela sua senha.

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

Apague seus rastros, em /root/.mysql_history temos um histórico com todos os comandos dado no terminal do MariaDB, então não é legal deixar lá em texto puro a senha que setamos!

# > /root/.mysql_history

:: Let’s Encrypt ::

Criando certificado grátis para seus sub/domínios.

# apt install certbot python3-certbot-apache

Para gerar o certificado use o comando:

# certbot

Não esqueça de colocar no seu cron para ele renovar o certificado, pois a cada 90 ele expira. Neste exemplo todo dia primeiro tento renovar.

# certbot -q renew

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

Gostou?

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

10 Resultados

  1. Agradeço pelo manual excelente.

  2. O meu está dando erro 500 fiz tudo como estava aqui no tutorial. me ajudem por favor ,obrigado.

  3. Emerson Riker disse:

    Bom dia. Agradeço o artigo publicado foi de grande valia.

  4. Tarciso disse:

    Estou no debian Bokwoorm 12, porém ele não reconhece o comando vim.

  5. Sérgio disse:

    Como acesso meu servidor atrás do Starlink sem Ip público?

  6. Alan disse:

    Não consigo habilitar o mod_rewrite, o comando não é valido.

  1. 15 de junho de 2023

    […] / Instalação Limpa 2.a – Servidor WEB NGINX + PHP 8.2 + MariaDB + phpMyAdmin 2.b – Servidor WEB Apache2 + PHP 8.2 + MariaDB + phpMyAdmin phpMyAdmin é […]

  2. 12 de fevereiro de 2024

    […] Ajuste fino, quiser saber mais clique aqui. […]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *