{"id":17797419,"url":"https://github.com/edsonmsouza/tutorial-lamp-virtualbox","last_synced_at":"2026-03-06T15:02:05.434Z","repository":{"id":109943066,"uuid":"393777573","full_name":"EdsonMSouza/tutorial-lamp-virtualbox","owner":"EdsonMSouza","description":"Tutorial para instalação da VirtualBox, Linux, Apache, MySQL e PHP.","archived":false,"fork":false,"pushed_at":"2023-11-18T05:01:41.000Z","size":27,"stargazers_count":33,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T12:11:32.200Z","etag":null,"topics":["apache","lamp","mysql","php"],"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}},"created_at":"2021-08-07T19:45:38.000Z","updated_at":"2023-11-18T05:01:15.000Z","dependencies_parsed_at":"2023-11-18T06:22:28.755Z","dependency_job_id":"d530a7e7-9ff8-4ed9-9798-1c62342afe7e","html_url":"https://github.com/EdsonMSouza/tutorial-lamp-virtualbox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EdsonMSouza/tutorial-lamp-virtualbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2Ftutorial-lamp-virtualbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2Ftutorial-lamp-virtualbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2Ftutorial-lamp-virtualbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2Ftutorial-lamp-virtualbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EdsonMSouza","download_url":"https://codeload.github.com/EdsonMSouza/tutorial-lamp-virtualbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonMSouza%2Ftutorial-lamp-virtualbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30182686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T14:42:24.748Z","status":"ssl_error","status_checked_at":"2026-03-06T14:42:14.925Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","lamp","mysql","php"],"created_at":"2024-10-27T11:55:47.594Z","updated_at":"2026-03-06T15:02:05.408Z","avatar_url":"https://github.com/EdsonMSouza.png","language":null,"readme":"# TUTORIAL LINUX + APACHE + PHP + MySQL\r\n\u003ccode\u003e\u003cimg height=\"20\" src=\"https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/terminal/terminal.png\"\u003e\u003c/code\u003e\r\n\u003ccode\u003e\u003cimg height=\"20\" src=\"https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/linux/linux.png\"\u003e\u003c/code\u003e\r\n\u003ccode\u003e\u003cimg height=\"20\" src=\"https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/php/php.png\"\u003e\u003c/code\u003e\r\n\u003ccode\u003e\u003cimg height=\"20\" src=\"https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/mysql/mysql.png\"\u003e\u003c/code\u003e\r\n\r\n## __$\\color{red}{ATENÇÃO}$__\r\nEste tutorial está baseado na versão do Linux Ubuntu 20.4 LTS.\r\n\r\n**Uma versão atualizada para o Linux Ubuntu 22.04.3 LTS** está disponível em: [https://github.com/EdsonMSouza/Apache-PHP-MariaDB](https://github.com/EdsonMSouza/Apache-PHP-MariaDB)\r\n\r\n## Introdução\r\n\r\nOs recursos para a instalação da máquina virtual foram configurados para atender a grande maioria de usuários. Entretanto, podem ocorrer casos em que haverá a necessidade de ajustes. Para isso, procure tutoriais no YouTube ou Google para resolução de problemas.\r\n\r\nAqui o objetivo é mostrar **apenas a instalação e configuração** do ambiente e dos programas.\r\n\r\nOs comandos Linux não serão explicados, ficando como sugestão para estudos e aprendizagem do sistema operacional Linux.\r\n\r\n## Instalação do VirtualBox (Oracle)\r\nA instalação está baseada em sistemas Windows. Se você já utiliza o Linux, não há a necessidade de instalar a máquina virtual e você já pode pular para \"**Instalação do Apache, PHP e MySQL**\".\r\n\r\nFaça o *download* do programa VirtualBox no endereço: [https://www.virtualbox.org/](https://www.virtualbox.org/) e siga os seguintes passos:\r\n\r\n* Execute a instalação seguindo as orientações apresentadas.\r\n* Faça o *download* da imagem de instalação do Linux Ubuntu 20.4 LTS e salve em um local de sua preferência. O arquivo terá aproximadamente 3GB. Link para *download*: [https://ubuntu.com/download/desktop/thank-you?version=20.04.2.0\u0026architecture=amd64](https://ubuntu.com/download/desktop/thank-you?version=20.04.2.0\u0026architecture=amd64)\r\n* Abra o VirtualBox.\r\n* Crie uma máquina virtual e dê o nome de Linux Ubunut 20.4 LTS.\r\n* Em \"Type\" (Tipo), selecione Linux.\r\n* Em \"Version\" (Versão), selecione Ubuntu (64-bit) ou (32bit) - depende a versão que foi baixada.\r\n* Selecione a quantidade RAM. É recomendado no mínimo 1024MB (1GB).\r\n* Selecione a segunda opção para o tipo de \"Hard Disk\" (Disco Rígido) - \"Virtual\".\r\n* Ma próxima tela, selecione a primeira opção ```VDI```.\r\n* Na próxima tela, selecione a primeira opção ou \"Dinamicamente Alocado\".\r\n* Informe o tamanho para o disco a ser criado. É recomendado no mínimo 10GB.\r\n* Clique em criar (Create) e aguarde.\r\n* Dê um duplo clique sobre o nome da máquina criada para inicializá-la.\r\n* Se não for identificada a imagem do Linux, clique no menu Dispositivos (Devices) e adicione um Disco Ótico Virtual, apontando para o local onde a imagem do Linux foi salva.\r\n* Aguarde a inicialização, e prossiga com a instalação do Linux, selecionando \"**Install Ubutuntu**\" (Instalar o Ubuntu).\r\n\r\nCaso necessário, faça ajustes de acordo com a disponibilidade dos seus recursos de *hardware* (Memória e Vídeo).\r\n\r\nSe ocorrer algum erro durante a instalação, procure a solução no [StackOverflow](https://stackoverflow.com/) ou no [YouTube](https://www.youtube.com).\r\n\r\nVocê pode visualizar as telas de instalação (em inglês) em [https://itsfoss.com/install-linux-in-virtualbox/](https://itsfoss.com/install-linux-in-virtualbox/).\r\n## Instalação do Apache, PHP e MySQL\r\nSiga corretamente todas as etapas a seguir para a isntalação dos programas necessários, assim como suas configurações.\r\n\r\nPara executar comandos no terminal do Linux é necessário pressionar a tecla ```ENTER``` ao final de cada instrução.\r\n\r\nAcesse o **Terminal do Linux** pressionando as teclas ```CTRL+ALT+T```. Uma outra forma é pressionar a tecla ```Windows``` e digitar **cmd**\r\n\r\nPrimeiro, precisaremos **atualizar o índice** do repositório do sistema para instalar a versão mais recente do Apache2 (Servidor Web)\r\n\r\n```sudo apt-get update```\r\n\r\nA seguir **atualize os pacotes**. (Pressione ```Y``` quando solicitado).\r\n\r\n```sudo apt-get upgrade```\r\n\r\nAbrindo as portas 22 (SSH), 80 (HTTP) and 443 (HTTPS) e habilitando o Firewall (ufw). **Execute um comando de cada vez**.\r\n+ ```sudo ufw allow ssh```\r\n+ ```sudo ufw allow 80```\r\n+ ```sudo ufw allow 443```\r\n+ ```sudo ufw enable```\r\n\r\n## Instalando o servidor Apache\r\n```sudo apt install apache2```\r\n\r\n## Testando a instalação do Apache\r\n\r\n```sudo systemctl status apache2```\r\n\r\n1. Pressione CTRL+C para sair.\r\n2. Em seguida, abra o navegador da web (Firefox) e acesse a página de boas-vindas do apache, digitando: [http://localhost](http://localhost).\r\n\r\n## Instalando o PHP7.4 (Linguagem de Programação)\r\n```sudo apt install php7.4 php7.4-mysql php-common php7.4-cli php7.4-json php7.4-common php7.4-opcache libapache2-mod-php7.4```\r\n\r\n## Verificando a instalação do PHP 7.4\r\nRetorne para o Terminal do Linux e digite:\r\n\r\n```php --version```\r\n\r\nO resultado será semelhante ao apresentado a seguir.\r\n\r\n```html\r\nPHP 7.3.26 (cli) (built: Jan 5 2021 15:10:35) ( ZTS MSVC15 (Visual C++ 2017) x64\r\n) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.26, Copyright (c)\r\n1998-2018 Zend Technologies\r\n```\r\n## Reinicializando o servidor Apache para integrar o PHP\r\n```sudo systemctl restart apache2```\r\n\r\n## Testando o funcionamento do servidor com o PHP\r\nDigite no Terminal do Linux o comando a seguir para criar um arquivo que mostrará as configurações atuais do PHP no navegador.\r\n\r\n```echo '\u003c?php phpinfo(); ?\u003e' | sudo tee -a /var/www/html/phpinfo.php \u003e /dev/null```\r\n\r\nTeste no navegador o funcionamento com a url: [http://localhost/phpinfo.php](http://localhost/phpinfo.php)\r\n\r\nSe tudo estiver \"OK\", será mostrada uma página com as informações do PHP.\r\n\r\nExclua o arquivo criado com o seguinte comando:\r\n\r\n```sudo rm /var/www/html/phpinfo.php```\r\n\r\n## Instalando o servidor de banco de dados MariaDB (MySQL)\r\n```sudo apt install mariadb-server mariadb-client```\r\n\r\n## Verificando o *status* da instalação do MariaDB\r\n```sudo systemctl status mariadb```\r\n+ Se o comando não finalizar, pressione ```CTRL+C``` para sair.\r\n\r\n## Protegendo o MariaDB\r\n```sudo mysql_secure_installation```\r\n\r\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):```\r\n\r\nNa próxima pergunta, pressione **Y** para definir uma senha de **root** (***mantenha-a segura e protegida!***) e siga as orientações.\r\n\r\nPara as próximas perguntas, você pode pressionar ```Enter``` para cada um dos itens.\r\n\r\n## Acessando o MySQL via CLI (*Command Line*)\r\nDigite o seguinte comando:\r\n\r\n```sudo mysql```\r\n\r\nVocê terá na tela algo semelhante a:\r\n\r\n```MariaDB [(none)]\u003e```\r\n\r\n## Criação de usuário no MariaDB\r\nCriando um usuário **admin** padrão no banco de dados diferente de **root**.\r\n\r\nPara isso, digite as linhas abaixo (**uma linha por vez**) e pressione ```ENTER``` para executá-la.\r\n\r\n**Não esqueça** de colocar o ponto-e-vírgula \"**```;```**\" no final de cada linha.\r\n\r\n1. ```CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin';```\r\n2. ```GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';```\r\n3. ```FLUSH PRIVILEGES;```\r\n4. ```quit;```\r\n\r\n## Acessando o MariaDB\r\nPara acessar o MariaDB com o novo usuário criado, digite o comando a seguir e informe a senha definida anteriormente (**admin**) quando solicitado:\r\n\r\n```sudo mysql -u admin -p```\r\n\r\n## Criando um banco de dados no MariaDB\r\n```CREATE DATABASE bd_teste;```\r\n\r\n## Selecionando o banco ```bd_teste```\r\n```USE bd_teste;```\r\n\r\n## Criando uma tabela de dados\r\n```CREATE TABLE tb_teste (id int primary key not null auto_increment, nome varchar(50));```\r\n\r\n## Inserindo registros na tabela (tb_teste)\r\n1. ```INSERT INTO tb_teste (nome) VALUES (\"Primeiro Nome\");```\r\n2. ```INSERT INTO tb_teste (nome) VALUES (\"Segundo Nome\");```\r\n\r\n## Verificando as inclusões realizadas\r\n```SELECT * FROM tb_teste;```\r\n\r\nO resultado deverá ser igual ao mostrado abaixo.\r\n\r\n```sql\r\n+----+---------------+\r\n| id | nome          |\r\n+----+---------------+\r\n|  1 | Primeiro Nome |\r\n|  2 | Segundo Nome  |\r\n+----+---------------+\r\n2 rows in set (0.000 sec)\r\n\r\n```\r\n## Sair do MariaDB\r\n```quit;```\r\n\r\n## Testando a conexão do PHP com o banco de dados MariaDB\r\nCriando um diretório para colocar um arquivo de teste de conexão do PHP com o banco de dados criado anteriormente **bd_teste**:\r\n\r\n```sudo mkdir /var/www/html/teste```\r\n\r\n## Acessando o diretório criado\r\n```cd /var/www/html/teste```\r\n\r\nExecute o comando ```ls -la``` para realizar a listagem do diretório e verificar se ele está vazio. O resultado deste comando pode ser visualizado abaixo.\r\n\r\n```bash\r\ndrwxr-xr-x 2 root root 4096 ago  8 21:22 .\r\ndrwxr-xr-x 3 root root 4096 ago  8 21:22 ..\r\n```\r\n\r\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```):\r\n\r\n```sudo nano index.php```\r\n\r\nDigite as instruções a seguir no arquivo aberto:\r\n\r\n```php\r\n\u003c?php\r\ntry {\r\n    $conn = new PDO('mysql:host=localhost;dbname=bd_teste', 'admin', 'admin');\r\n    \r\n    $conn-\u003esetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\r\n\r\n    $data = $conn-\u003equery('SELECT * FROM tb_teste');\r\n\r\n    foreach($data as $key =\u003e $value) {\r\n        print(\"Id: \" . $value[0] . \"\u003c/br\u003e\");\r\n        print(\"Nome: \" . $value[1] . \"\u003c/br\u003e\");\r\n        print(\"\u003c/br\u003e\u003c/br\u003e\");\r\n    }\r\n} catch(PDOException $e) {\r\n    echo 'ERROR: ' . $e-\u003egetMessage();\r\n}\r\n```\r\n\r\nPara salvar o arquivo, pressione as teclas ```CTRL+X``` simultaneamente, depois digite ```Y``` e, por fim, pressione ```ENTER``` para fechar o editor de textos.\r\n\r\nExecute novament o comando ```ls -la``` para realizar a listagem do diretório e verificar se o arquivo foi criado corretamente. O resultado deste comando pode ser visualizado abaixo, mostrando o arquivo ```index.php```.\r\n\r\n```bash\r\ndrwxr-xr-x 2 root root 4096 ago  8 21:27 .\r\ndrwxr-xr-x 3 root root 4096 ago  8 21:22 ..\r\n-rw-r--r-- 1 root root  469 ago  8 21:27 index.php\r\n```\r\n\r\n# Testando o funcionamento do programa\r\nAcesse novamente o navegador e digite: [http://localhost/teste](http://localhost/teste)\r\n\r\nSe tudo ocorreu como o esperado, deverá ser mostrado no navegador os dados cadastrados anteriormente no banco de dados.\r\n\r\nAgora é só estudar e desenvolver suas aplicações.\r\n\r\n# Como citar este conteúdo\r\n```\r\nSouza, Edson Melo de. (2021, August 7). Tutorial Linux-PHP-MySQL no VirtualBox.\r\nAvailable in: https://github.com/EdsonMSouza/tutorial_lamp_virtualbox\r\n```\r\n\r\nOu BibTeX para LaTeX:\r\n\r\n```latex\r\n@misc{Souzaem2021LAMP,\r\n  author = {Souza, Edson Melo de},\r\n  title = {Tutorial Linux-PHP-MySQL no VirtualBox},\r\n  url = {https://github.com/EdsonMSouza/tutorial_lamp_virtualbox},\r\n  year = {2021},\r\n  month = {August}\r\n}\r\n```\r\n \r\n# License\r\n\r\n[![CC BY-SA 4.0][cc-by-sa-shield]][cc-by-sa]\r\n\r\nThis work is licensed under a\r\n[Creative Commons Attribution-ShareAlike 4.0 International License][cc-by-sa].\r\n\r\n[![CC BY-SA 4.0][cc-by-sa-image]][cc-by-sa]\r\n\r\n[cc-by-sa]: http://creativecommons.org/licenses/by-sa/4.0/\r\n[cc-by-sa-image]: https://licensebuttons.net/l/by-sa/4.0/88x31.png\r\n[cc-by-sa-shield]: https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonmsouza%2Ftutorial-lamp-virtualbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedsonmsouza%2Ftutorial-lamp-virtualbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonmsouza%2Ftutorial-lamp-virtualbox/lists"}