{"id":17797422,"url":"https://github.com/edsonmsouza/apache-php-mariadb","last_synced_at":"2025-04-02T03:21:09.556Z","repository":{"id":207877919,"uuid":"719823540","full_name":"EdsonMSouza/Apache-PHP-MariaDB","owner":"EdsonMSouza","description":"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.","archived":false,"fork":false,"pushed_at":"2023-11-18T21:03:58.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T18:14:47.513Z","etag":null,"topics":["apache","mariadb-database","php","php8","web"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EdsonMSouza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-17T01:11:23.000Z","updated_at":"2024-06-15T01:03:50.000Z","dependencies_parsed_at":"2023-11-18T07:23:28.206Z","dependency_job_id":"88c2f5c2-5e79-4c1e-b2c4-e6a4db0fe1d1","html_url":"https://github.com/EdsonMSouza/Apache-PHP-MariaDB","commit_stats":null,"previous_names":["edsonmsouza/apache-php-mariadb"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2FApache-PHP-MariaDB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2FApache-PHP-MariaDB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2FApache-PHP-MariaDB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2FApache-PHP-MariaDB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EdsonMSouza","download_url":"https://codeload.github.com/EdsonMSouza/Apache-PHP-MariaDB/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246747812,"owners_count":20827217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache","mariadb-database","php","php8","web"],"created_at":"2024-10-27T11:55:47.783Z","updated_at":"2025-04-02T03:21:09.536Z","avatar_url":"https://github.com/EdsonMSouza.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Guia de Instalação: Apache + PHP + MariaDB\n\n## Notas da versão\n\nEste tutorial está baseado na versão do Linux Ubuntu 22.04.3 LTS.\n\n## Introdução\n\nBem-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.\n\n## Objetivo do repositório\n\nO 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.\n\n## Sobre o MariaDB\n\nO 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.\n\nNo 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.\n\nA 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.\n\nÉ 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.\n\nNeste tutorial é utilizado `mysql` como instrução de comando para manipulação dos bancos de dados.\n\n## Como usar este guia\n\nSe você está começando agora, siga as instruções passo a passo para configurar seu ambiente de desenvolvimento local.\n\nSua 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.\n\n## Pré-requisitos\n\nPara 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.\n\n### Conexão SSH\n\nO 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.\n\nO 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.\n\nCertifique-se de ter acesso SSH ao servidor onde deseja configurar o ambiente.\n\nUse o seguinte comando para se conectar ao seu servidor a partir da sua máquina local.\n\n```bash\nssh seu_usuario@seu_servidor\n```\n\nSe 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.\n\n### Atualização do Linux\n\nO comando abaixo irá atualizar os __índices__ do sistema.\n\n```bash\nsudo apt update\n```\n\nO comando abaixo irá atualizar os __pacotes__ atualizáveis.\n\n```bash\nsudo apt upgrade\n```\n\n### Instalação de ferraments essenciais\n\nVamos 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.\n\n```bash\nsudo apt install net-tools\n```\n\n### Instalando o servidor Apache + PHP\n\nO 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.\n\n```bash\nsudo apt-get install apache2 php libapache2-mod-php\n```\n\n### Testando a Instalação do Apache\n\n```bash\nsudo systemctl status apache2\n```\nVerifique se __Active__ está como __$\\color{lime}{active (running)}$__ na cor verde.\n\n### Testando a Instalação do PHP\n\n```bash\nphp --version\n```\n\nO resultado será semelhante ao apresentado a seguir.\n\n```html\nPHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)\nCopyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies\nwith Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies\n```\n\n### Instalando Módulos Adicionais\n\nA seguir vamos habilitar os módulos opcache (aceleração), gd (imagens), sqlite3 (banco de dados), pgsql (PostgreSQL) e mysql (MySQL).\n\n```bash\nsudo apt-get install php-soap php-xml php-curl php-opcache php-gd php-sqlite3 php-mbstring php-pgsql php-mysql\n```\n\n### Habilitando Outros Módulos\n\nHabilitando os módulos do Apache, com destaque para o prefork:\n\n```bash\na2dismod mpm_event\na2dismod mpm_worker\na2enmod  mpm_prefork\na2enmod  rewrite\na2enmod  php8.1\n```\n\n### Liberando a porta 80 no firewall\n\n```bash\nsudo ufw allow 80\nsudo ufw enable\n```\n\nCaso necessite abrir mais portas, utilize o mesmo comando, substituindo a porta 80 pela desejada.\n\n### Reinicializando o servidor Apache para integrar o PHP\n\n```bash\nsudo systemctl restart apache2\n```\n\nVerifique se está tudo OK e se não há nenhuma informação sobre erros. Teste no navegador o funcionamento com a url: [http://localhost](http://localhost). Se estiver em um servidor em nuvem ou com abertura para a internet, troque o `localhost` pelo IP da máquina.\n\nSe tudo estiver \"OK\", será mostrada uma página com as informações da Apache.\n\n### Testando o Funcionamento do Servidor Apache com o PHP\n\nDigite no Terminal do Linux o comando a seguir para criar um arquivo que mostrará as configurações atuais do PHP no navegador.\n\n```bash\necho '\u003c?php phpinfo(); ?\u003e' | sudo tee -a /var/www/html/phpinfo.php \u003e /dev/null\n```\n\nTeste no navegador o funcionamento com a url: [http://localhost/phpinfo.php](http://localhost/phpinfo.php)\n\nSe tudo estiver \"OK\", será mostrada uma página com as informações do PHP.\n\nExclua o arquivo criado com o seguinte comando:\n\n```bash\nsudo rm /var/www/html/phpinfo.php\n```\n\n### Instalando o Servidor de Banco de Dados MariaDB (MySQL)\n\n```bash\nsudo apt install mariadb-server mariadb-client\n```\n\n### Verificando o *status* da instalação do MariaDB\n\n```bash\nsudo systemctl status mariadb\n```\n\n* Verifique se __Active__ está como __$\\color{lime}{active (running)}$__ na cor verde.\n* Se o comando não finalizar, pressione ```CTRL+C``` para sair.\n\n### Protegendo o MariaDB\n\n```bash\nsudo mysql_secure_installation\n```\n\nComo 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):```\n\nNa 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.\n\nPara as próximas perguntas, você pode pressionar ```Enter``` para cada um dos itens.\n\n### Acessando o MariaDB via CLI (*Command Line*)\n\nDigite o seguinte comando:\n\n```bash\nsudo mysql\n```\n\nVocê terá na tela algo semelhante a:\n\n```bash\nMariaDB [(none)]\u003e\n```\n\n### Criação de usuário no MariaDB\n\nCriando um usuário __admin__ padrão no banco de dados diferente de __root__.\n\nPara 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.\n\n```sql\nCREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin';\nGRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';\nFLUSH PRIVILEGES;\nquit;\n```\n\n### Acessando o MariaDB\n\nPara acessar o MariaDB com o novo usuário criado, digite o comando a seguir e informe a senha definida anteriormente (__admin__) quando solicitado:\n\n```bash\nsudo mysql -u admin -p\n```\n\n### Criando um banco de dados no MariaDB\n\n```sql\nCREATE DATABASE bd_teste;\n```\n\n### Selecionando o banco ```bd_teste```\n\n```sql\nUSE bd_teste;\n```\n\n### Criando uma tabela de dados\n\n```sql\nCREATE TABLE tb_teste (\n    id int primary key not null auto_increment, \n    nome varchar(50)\n);\n```\n\n### Inserindo registros na tabela (tb_teste)\n\n```sql\nINSERT INTO tb_teste (nome) VALUES (\"Primeiro Nome\");\nINSERT INTO tb_teste (nome) VALUES (\"Segundo Nome\");\n```\n\n### Verificando as inclusões realizadas\n\n```sql\nSELECT * FROM tb_teste;\n```\n\nO resultado deverá ser igual ao mostrado abaixo.\n\n```sql\n+----+---------------+\n| id | nome          |\n+----+---------------+\n|  1 | Primeiro Nome |\n|  2 | Segundo Nome  |\n+----+---------------+\n2 rows in set (0.000 sec)\n```\n\n### Sair do MariaDB\n\n```sql\nquit;\n```\n\n### Testando a conexão do PHP com o banco de dados MariaDB\n\nCriando um diretório para colocar um arquivo de teste de conexão do PHP com o banco de dados criado anteriormente __bd_teste__.\n\n```bash\nsudo mkdir /var/www/html/teste\n```\n\n### Acessando o diretório criado\n\n```bash\ncd /var/www/html/teste\n```\n\nExecute 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.\n\n```bash\ndrwxr-xr-x 2 root root 4096 ago  8 21:22 .\ndrwxr-xr-x 3 root root 4096 ago  8 21:22 ..\n```\n\n### Criando um arquivo PHP+MariaDB\n\nPara 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```):\n\n```bash\nsudo nano index.php\n```\n\nDigite as instruções a seguir no arquivo aberto:\n\n```php\n\u003c?php\ntry {\n    $conn = new PDO('mysql:host=localhost;dbname=bd_teste', 'admin', 'admin');\n    \n    $conn-\u003esetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n\n    $data = $conn-\u003equery('SELECT * FROM tb_teste');\n\n    foreach($data as $key =\u003e $value) {\n        print(\"Id: \" . $value[0] . \"\u003c/br\u003e\");\n        print(\"Nome: \" . $value[1] . \"\u003c/br\u003e\");\n        print(\"\u003c/br\u003e\u003c/br\u003e\");\n    }\n} catch(PDOException $e) {\n    echo 'ERROR: ' . $e-\u003egetMessage();\n}\n```\n\nPara salvar o arquivo, pressione as teclas ```CTRL+X``` simultaneamente, depois digite ```Y``` e, por fim, pressione ```ENTER``` para fechar o editor de textos.\n\nExecute 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```.\n\n```bash\ndrwxr-xr-x 2 root root 4096 ago  8 21:27 .\ndrwxr-xr-x 3 root root 4096 ago  8 21:22 ..\n-rw-r--r-- 1 root root  469 ago  8 21:27 index.php\n```\n\n### Testando o funcionamento do programa\n\nAcesse novamente o navegador e digite: [http://localhost/teste](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.\n\nAgora é só estudar e desenvolver suas aplicações!\n\n## Como citar este conteúdo\n\n```latex\nSouza, Edson Melo de. (2023, November 18). Guia de Instalação: Apache + PHP + MariaDB.\nAvailable in: https://github.com/EdsonMSouza/Apache-PHP-MariaDB\n```\n\nOu BibTeX para LaTeX:\n\n```latex\n@misc{Souzaem2023LAMP,\n  author = {Souza, Edson Melo de},\n  title = {Guia de Instalação: Apache + PHP + MariaDB},\n  url = {https://github.com/EdsonMSouza/Apache-PHP-MariaDB},\n  year = {2023},\n  month = {November}\n}\n```\n\n### License\n\n[![CC BY-SA 4.0][cc-by-sa-shield]][cc-by-sa]\n\nThis work is licensed under a\n[Creative Commons Attribution-ShareAlike 4.0 International License][cc-by-sa].\n\n[![CC BY-SA 4.0][cc-by-sa-image]][cc-by-sa]\n\n[cc-by-sa]: http://creativecommons.org/licenses/by-sa/4.0/\n[cc-by-sa-image]: https://licensebuttons.net/l/by-sa/4.0/88x31.png\n[cc-by-sa-shield]: https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonmsouza%2Fapache-php-mariadb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedsonmsouza%2Fapache-php-mariadb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonmsouza%2Fapache-php-mariadb/lists"}