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_servidorSe 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 updateO comando abaixo irá atualizar os pacotes atualizáveis.
sudo apt upgradeVamos 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-toolsO 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-phpsudo systemctl status apache2Verifique se Active está como
php --versionO 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 TechnologiesA 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-mysqlHabilitando os módulos do Apache, com destaque para o prefork:
a2dismod mpm_event
a2dismod mpm_worker
a2enmod mpm_prefork
a2enmod rewrite
a2enmod php8.1sudo ufw allow 80
sudo ufw enableCaso necessite abrir mais portas, utilize o mesmo comando, substituindo a porta 80 pela desejada.
sudo systemctl restart apache2Verifique 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/nullTeste 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.phpsudo apt install mariadb-server mariadb-clientsudo systemctl status mariadb- Verifique se Active está como
$\color{lime}{active (running)}$ na cor verde. - Se o comando não finalizar, pressione
CTRL+Cpara sair.
sudo mysql_secure_installationComo 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 mysqlVocê 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 -pCREATE 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/testecd /var/www/html/testeExecute 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.phpDigite 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.phpAcesse 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-MariaDBOu 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.
