Este tutorial está baseado na versão do Linux Ubuntu 22.04.3 LTS.
Bem-vindo ao repositório dedicado à instalação e configuração do ambiente Apache, PHP e MariaDB no sistema operacional LINUX. Este guia abrangente e detalhado foi criado para simplificar o processo de configuração dessas poderosas ferramentas, permitindo que você crie um ambiente de desenvolvimento robusto e eficiente em pouco tempo.
O objetivo principal deste repositório é fornecer um conjunto claro de instruções para você instalar e configurar o Apache como servidor web, o PHP como linguagem de script do lado do servidor e o MariaDB como sistema de gerenciamento de banco de dados.
O MariaDB é um sistema de gerenciamento de banco de dados relacional (SGBDR) de código aberto, que se originou como um "fork" do MySQL. Um fork é um ramo independente de desenvolvimento de um software existente, muitas vezes criado quando há divergências ou preocupações em relação à direção futura do projeto original. O MariaDB foi criado pelo criador original do MySQL, Michael "Monty" Widenius, em resposta a preocupações sobre a aquisição do MySQL pela Oracle Corporation em 2009.
No Linux, o MariaDB é frequentemente acessado através do cliente de linha de comando chamado mysql. Isso acontece porque o mysql é um cliente genérico para sistemas de gerenciamento de banco de dados MySQL e MariaDB. Ambos, MySQL e MariaDB, compartilham muita semelhança em termos de protocolo de comunicação e comandos SQL, devido às origens comuns do MariaDB como um fork do MySQL.
A decisão de manter a compatibilidade com o mysql foi tomada para garantir que os usuários pudessem migrar facilmente de um sistema para o outro, sem ter que fazer muitas alterações em seus scripts ou comandos existentes. Dessa forma, os usuários que estão acostumados a trabalhar com o MySQL podem continuar a utilizar o mesmo cliente (mysql) ao migrar para o MariaDB.
É importante notar que, embora o mysql seja frequentemente utilizado para interagir com o MariaDB, existem também clientes específicos do MariaDB, como o mariadb-client, que oferecem funcionalidades adicionais e podem ser mais apropriados em certos contextos. No entanto, devido à compatibilidade, muitas vezes você verá instruções e documentação que referenciam o uso do cliente mysql ao interagir com bancos de dados MariaDB no Linux.
Neste tutorial é utilizado mysql
como instrução de comando para manipulação dos bancos de dados.
Se você está começando agora, siga as instruções passo a passo para configurar seu ambiente de desenvolvimento local.
Sua contribuição é bem-vinda! Se você encontrar melhorias possíveis, problemas ou tiver sugestões, sinta-se à vontade para abrir uma issue ou enviar um pull request. Juntos, podemos tornar este guia uma referência valiosa para a comunidade de desenvolvedores aprendizes.
Para facilitar a instalação e configuração em servidores remotos, este guia inclui um tópico adicional sobre como realizar todas as etapas utilizando SSH. Isso é especialmente útil para ambientes de produção ou servidores de hospedagem em nuvem.
O SSH, que significa "Secure Shell" (Shell Seguro), é um protocolo de rede criptografado usado para comunicação segura em uma rede não segura. Ele fornece uma maneira segura de acessar serviços de linha de comando em sistemas remotos, permitindo a autenticação e a comunicação criptografada entre dois computadores conectados pela rede.
O SSH é uma ferramenta fundamental para a administração segura de sistemas remotos, e é amplamente utilizado em ambientes Linux, Unix e também está disponível para sistemas operacionais Windows.
Certifique-se de ter acesso SSH ao servidor onde deseja configurar o ambiente.
Use o seguinte comando para se conectar ao seu servidor a partir da sua máquina local.
ssh seu_usuario@seu_servidor
Se tudo ocorrer como esperado, você receberá uma mensagem de sucesso na conexão com o servidor e receberá um prompt
para executar os próximos comandos.
O comando abaixo irá atualizar os índices do sistema.
sudo apt update
O comando abaixo irá atualizar os pacotes atualizáveis.
sudo apt upgrade
Vamos instalar um conjunto de utilitários de linha de comando no sistema operacional Linux, usado para diagnosticar e solucionar problemas relacionados à rede. Ele inclui várias ferramentas que permitem visualizar e configurar parâmetros de rede.
sudo apt install net-tools
O Apache HTTP Server, comumente conhecido como Apache, é um servidor web de código aberto amplamente utilizado. Ele desempenha um papel fundamental no fornecimento de conteúdo da web na Internet.
sudo apt-get install apache2 php libapache2-mod-php
sudo systemctl status apache2
Verifique se Active está como
php --version
O resultado será semelhante ao apresentado a seguir.
PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)
Copyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies
A seguir vamos habilitar os módulos opcache (aceleração), gd (imagens), sqlite3 (banco de dados), pgsql (PostgreSQL) e mysql (MySQL).
sudo apt-get install php-soap php-xml php-curl php-opcache php-gd php-sqlite3 php-mbstring php-pgsql php-mysql
Habilitando os módulos do Apache, com destaque para o prefork:
a2dismod mpm_event
a2dismod mpm_worker
a2enmod mpm_prefork
a2enmod rewrite
a2enmod php8.1
sudo ufw allow 80
sudo ufw enable
Caso necessite abrir mais portas, utilize o mesmo comando, substituindo a porta 80 pela desejada.
sudo systemctl restart apache2
Verifique se está tudo OK e se não há nenhuma informação sobre erros. Teste no navegador o funcionamento com a url: http://localhost. Se estiver em um servidor em nuvem ou com abertura para a internet, troque o localhost
pelo IP da máquina.
Se tudo estiver "OK", será mostrada uma página com as informações da Apache.
Digite no Terminal do Linux o comando a seguir para criar um arquivo que mostrará as configurações atuais do PHP no navegador.
echo '<?php phpinfo(); ?>' | sudo tee -a /var/www/html/phpinfo.php > /dev/null
Teste no navegador o funcionamento com a url: http://localhost/phpinfo.php
Se tudo estiver "OK", será mostrada uma página com as informações do PHP.
Exclua o arquivo criado com o seguinte comando:
sudo rm /var/www/html/phpinfo.php
sudo apt install mariadb-server mariadb-client
sudo systemctl status mariadb
- Verifique se Active está como
$\color{lime}{active (running)}$ na cor verde. - Se o comando não finalizar, pressione
CTRL+C
para sair.
sudo mysql_secure_installation
Como não existe uma senha de root definida para o banco de dados, você deve simplesmente pressionar Enter
quando receber a seguinte mensagem: Enter current password for root (enter for none):
Na próxima pergunta, digite Y para definir uma senha de root (mantenha-a segura e protegida!), digite novamente Y e siga as orientações, informando a senha.
Para as próximas perguntas, você pode pressionar Enter
para cada um dos itens.
Digite o seguinte comando:
sudo mysql
Você terá na tela algo semelhante a:
MariaDB [(none)]>
Criando um usuário admin padrão no banco de dados diferente de root.
Para isso, digite as linhas abaixo (uma linha por vez) e pressione ENTER
para executá-la. Não esqueça de colocar o ponto-e-vírgula ";
" no final de cada linha.
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';
FLUSH PRIVILEGES;
quit;
Para acessar o MariaDB com o novo usuário criado, digite o comando a seguir e informe a senha definida anteriormente (admin) quando solicitado:
sudo mysql -u admin -p
CREATE DATABASE bd_teste;
USE bd_teste;
CREATE TABLE tb_teste (
id int primary key not null auto_increment,
nome varchar(50)
);
INSERT INTO tb_teste (nome) VALUES ("Primeiro Nome");
INSERT INTO tb_teste (nome) VALUES ("Segundo Nome");
SELECT * FROM tb_teste;
O resultado deverá ser igual ao mostrado abaixo.
+----+---------------+
| id | nome |
+----+---------------+
| 1 | Primeiro Nome |
| 2 | Segundo Nome |
+----+---------------+
2 rows in set (0.000 sec)
quit;
Criando um diretório para colocar um arquivo de teste de conexão do PHP com o banco de dados criado anteriormente bd_teste.
sudo mkdir /var/www/html/teste
cd /var/www/html/teste
Execute o comando ls -la
para realizar a listagem do diretório e verificar se ele está vazio. O resultado deste comando é similar ao mostrado abaixo.
drwxr-xr-x 2 root root 4096 ago 8 21:22 .
drwxr-xr-x 3 root root 4096 ago 8 21:22 ..
Para criar o script PHP
(programa) e fazer a conexão com o banco de dados bd_teste, vamos utilizar a biblioteca PDO de acesso a dados. Para isso, digite o seguinte comando para abrir o editor de textos (Nano
):
sudo nano index.php
Digite as instruções a seguir no arquivo aberto:
<?php
try {
$conn = new PDO('mysql:host=localhost;dbname=bd_teste', 'admin', 'admin');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $conn->query('SELECT * FROM tb_teste');
foreach($data as $key => $value) {
print("Id: " . $value[0] . "</br>");
print("Nome: " . $value[1] . "</br>");
print("</br></br>");
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
Para salvar o arquivo, pressione as teclas CTRL+X
simultaneamente, depois digite Y
e, por fim, pressione ENTER
para fechar o editor de textos.
Execute novamente o comando ls -la
para realizar a listagem do diretório e verificar se o arquivo foi criado corretamente. O resultado é parecido com o que pode ser visualizado abaixo, mostrando o arquivo index.php
.
drwxr-xr-x 2 root root 4096 ago 8 21:27 .
drwxr-xr-x 3 root root 4096 ago 8 21:22 ..
-rw-r--r-- 1 root root 469 ago 8 21:27 index.php
Acesse novamente o navegador e digite: http://localhost/teste, ou o IP da máquina remota. Se tudo ocorreu como o esperado, deverá ser mostrado no navegador os dados cadastrados anteriormente no banco de dados.
Agora é só estudar e desenvolver suas aplicações!
Souza, Edson Melo de. (2023, November 18). Guia de Instalação: Apache + PHP + MariaDB.
Available in: https://github.com/EdsonMSouza/Apache-PHP-MariaDB
Ou BibTeX para LaTeX:
@misc{Souzaem2023LAMP,
author = {Souza, Edson Melo de},
title = {Guia de Instalação: Apache + PHP + MariaDB},
url = {https://github.com/EdsonMSouza/Apache-PHP-MariaDB},
year = {2023},
month = {November}
}
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.