Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”
Distribuição utilizada: Debian 10 Stretch / Instalação Limpa
Vale lembrar que desde o Debian 9 o PHP foi atualizado para a versão 7 e agora para 7.3, e o MySQL foi substituído pelo seu fork MariaBD
Antes de mais nada tenha seu repositório atualizado
1 2 3 |
# su - # apt update # apt upgrade |
:: Instalação do Apache 2.4 ::
1 |
# apt install apache2 apache2-utils |
Vamos habilitar o mod_rewrite do Apache que é muito utilizado.
Este é um módulo do Apache que utiliza um mecanismo baseado em regras de reescrita.
Vamos ao comando para habilita-lo:
1 |
# a2enmod rewrite |
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 funcione corretamente será necessário adicionar alguma linhas.
1 |
# vim /etc/apache2/sites-enabled/000-default.conf |
Adicione abaixo de “DocumentRoot /var/www/html” o seguinte:
1 2 3 4 5 6 |
<Directory /var/www/html/> Options Indexes FollowSymLinks AllowOverride All </Directory> |
Agora precisamos restartar o apache2 para que tenha efeito as alterações.
1 |
# systemctl restart apache2 |
:: Instalação do MariaDB 10.3 ::
1 |
# apt install mariadb-server mariadb-client |
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. Mas isso é estranho, pois minha senha do root do MariaDB é diferente do meu usuário unix.
Bom se você é meio paranoico com segurança, para alterar a senha do usuário root do MariaDB de forma bruta faça o seguinte:
1 |
# mariadb -u root |
1 2 3 4 5 |
USE mysql; UPDATE user SET password=PASSWORD('SENHA.db.ROOT') WHERE User='root'; UPDATE user SET plugin="mysql_native_password"; FLUSH PRIVILEGES; quit; |
:: Instalação do PHP 7.3 ::
Vou incluir algumas extensões do PHP que são normalmente utilizada
1 |
# 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 |
É necessário reiniciar o apache para que o php tenha efeito.
1 |
# systemctl restart apache2 |
Consultado informações de versão:
1 |
# php --version |
1 2 3 4 |
PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies |
Você pode criar um arquivo php com a função phpinfo() para mostrar todas as informações.
1 |
# echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php |
http://[SERVER_IP]/phpinfo.php
:: phpMyAdmin ::
Cade ele do repositório?
O PHPMyAdmin não está mais disponível como pacote .deb no Debian 10. Fazendo um pesquisa o motivo é que o “pessoal” que faz empacotamento não tem uma versão estável. https://security-tracker.debian.org/tracker/CVE-2018-19968
Desta forma debian “obriga” com que o usuário instale-o a partir da fonte. https://www.phpmyadmin.net/downloads/
1 |
# apt install wget |
phpMyAdmin 4.9.2 (25/11/2019)
1 2 3 4 5 6 7 8 |
# cd /tmp/ # wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.tar.gz # tar -vxzf phpMyAdmin-4.9.2-all-languages.tar.gz -C /usr/share/ # mv /usr/share/phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin # mkdir /etc/phpmyadmin # touch /etc/phpmyadmin/htpasswd.setup # mkdir -p /var/lib/phpmyadmin/tmp # chown -R www-data:www-data /var/lib/phpmyadmin |
Criaremos o arquivo de configuração do Apache.
1 |
# vim /etc/apache2/conf-available/phpmyadmin.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# phpMyAdmin default Apache configuration Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php <IfModule mod_php7.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_value include_path . </IfModule> </Directory> # Authorize for setup <Directory /usr/share/phpmyadmin/setup> <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/phpmyadmin/htpasswd.setup </IfModule> Require valid-user </Directory> # Disallow web access to directories that don't need it <Directory /usr/share/phpmyadmin/libraries> Order Deny,Allow Deny from All </Directory> <Directory /usr/share/phpmyadmin/setup/lib> Order Deny,Allow Deny from All </Directory> |
Ative a configuração e reinicie o Apache.
1 2 3 |
# a2enconf phpmyadmin # systemctl restart apache2 # systemctl status apache2 |
Na próxima etapa, vamos configurar o armazenamento de configuração do phpMyadmin (banco de dados).
Faça o login no MariaDB como usuário root:
1 |
# mariadb -p |
Criamos um novo banco de dados para o chamado phpmyadmin e um usuario pma (altere para sua senha). Em seguida, concedemos as permissões do banco de dados.
Você pode gerar uma senha acessando https://senhasegura.remontti.com.br/
1 2 3 4 5 |
CREATE DATABASE phpmyadmin; CREATE USER 'pma'@'localhost' IDENTIFIED BY 'SUA_SENHA'; GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'SUA_SENHA' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT; |
Carregue as tabelas do banco de dados: (Informe a senha do root do MariaDB)
1 |
# mariadb -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql |
Agora é necessário ajustar o arquivo de configuração do phpmyadmin.
Definir:
* senha segura (blowfish secret) que deve ter 32 caracteres. Não use o meu exemplo blowfish secreto, defina o seu próprio! Use o gerador https://senhasegura.remontti.com.br
* diretório que o PHPMyAdmin deve usar para armazenar arquivos temporários.
* Descomentar as linhas $cfg[‘Servers’]
– controlhost : localhost
– controlpass : SUA_SENHA
1 2 |
# cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php # vim /usr/share/phpmyadmin/config.inc.php |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$cfg['blowfish_secret'] = 'dkJhGx83XR3JjuFrDn8kPp9NtXnkLptl'; /* Adicione esta linha */ $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp'; /* User used to manipulate with storage */ $cfg['Servers'][$i]['controlhost'] = 'localhost'; $cfg['Servers'][$i]['controlport'] = ''; $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'SUA_SENHA'; /* Storage database and tables */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; |
http://[SERVER_IP]/phpmyadmin/
Gostou?

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!
Não consigo abrir a página do phpmyadmin, mas tudo ocorreu sem erros hehe. Obrigado Remontti!
bom dia,
Seguindo seu tutorial tudo funciona … só tive problema com ulimit na máquina virtual mas já resolvi.
Porém estou tendo problema ao criar os virtual host … quando crio ele não interpreta o código php, fica mostrando o código do arquivo index.php
por exemplo: http://www.brlink.org aparece:
Algum pacote esta faltando, tenta reinstalar os pacotes e iniciar os serviços.
Parabéns pelo artigo. Mesmo sem ter experiência com Linux, segui o passo-a-passo e consegui finalizar a configuração. Apenas no momento de baixar o phpMyAdmin-4.9.1-all-languages.tar.gz não consegui estabelecer a conexão. mas baixei de outra forma e deu tudo certo.
Muito bom !!!
Meus parabéns Rudimar!
Seus post’s são muito bem explicados.
Prezado, muito obrigado por compartilhar seus conhecimentos. Tutorial muito bem explicado e detalhado. Resolveu meu problema, principalmente com o PhpMyadmin no Debian 10.
Mais uma vez, grato!
Remontti
Grato pelas explicações e dicas sobre instalação e configuração de serviços Linux.
Parabéns!
Eu estava seguindo o passo a passo, porém quando criado as configurações do apache2 o mesmo da falha no restart e não inicia, aponta erro na linha 160 porém verifiquei o mesmo e esta tudo correto conforme esta descrito aqui, poderia me dar uma luz em relação a este problema? a programação antes do erro deu tudo certo…
Pode ser algum carácter errado, as vezes uma “virgula” já faz toda a diferença, se observar os logs é provável que diga o arquivo que esta com erro e até a linha.
ola o mode # a2enmod rewrite retorna como não encontrado já desinstalei a maquina 3 vezes e o erro persiste.teria alguma solução
Vc não deve está virando root certo.
Se você virar root com apenas su (sem o menos) algumas coisas mudaram na versão do Debian 10
Meus parabéns, seu blog esta ótimo, sempre acompanho você! lhe desejo tudo de bom!!!