LAMP \u00e9 um acr\u00f4nimo representando Linux, Apache, MySQL e PHP<\/p>\n
Um ambiente LAMP nos d\u00e1 os elementos b\u00e1sicos para poder programar.<\/p>\n
Como o alvo \u00e9 programar sobre um servidor e n\u00e3o sobre ambiente Desktop, a instala\u00e7\u00e3o ser\u00e1 sem GUI mas fique livre para faze-lo. Eu mesmo n\u00e3o tenho recursos t\u00e3o abundantes assim para p\u00f4r interface gr\u00e1fica em um servidor que vou controlar via ssh.<\/p>\n
Escolhemos Ubuntu por ser o Linux mais simples de instalar e usar no dia a dia do desenvolvedor. Para produ\u00e7\u00e3o costumamos colocar CentOS que \u00e9 mais leve por\u00e9m \u00e0s vezes mais nojentinho de configurar.<\/p>\n
Se voc\u00ea j\u00e1 tem uma VM com Ubuntu, pode pular para “Instalando LAMP<\/strong>” l\u00e1 no final<\/p>\n No momento de escrever este artigo, estava na 18.04.4 LTS (Sempre escolha as vers\u00f5es 04 que tem maior durabilidade garantida pela Cannonical)<\/p>\n https:\/\/ubuntu.com\/download\/server<\/a><\/li>\n No meu caso, eu deixo todas as m\u00e1quinas virtuais em uma pasta chamada ‘VirtualBoxes’ alocada na raiz do usu\u00e1rio; isto \u00e9: \/home\/esteban\/VirtualBoxes. Ent\u00e3o, e n\u00e3o tem uma pasta assim e quer cria-la fa\u00e7a como segue:<\/p>\n O VBoxManage vai responder alguma coisa assim:<\/p>\n No caso 512MB de RAM, IOAPIC ligado e uma interface de rede em modo bridge (ponte). Repare que no meu caso, a placa de rede que vai ser usada como ponte \u00e9 a chamada en1. Por isso que usei ela. No seu caso isso \u00e9 diferente.<\/p>\n Para obter uma lista das placas conectadas na sua m\u00e1quina, pode usar o seguinte comando:<\/span><\/p>\n Uma vez determinado o nome, pode proceder como segue:<\/span><\/p>\n Estes comandos, se bem executados, n\u00e3o devolvem coisa alguma na tela.<\/p>\n Ele ser\u00e1 de tamanho t\u00edpico (70GB) para este tipo de servi\u00e7o mas pode ser menor ou maior. Depende de sua capacidade. N\u00e3o recomendo abaixo de 40GB. Repare que meu download ficou em ~\/Downloads\/OS\/Linux\/ubuntu-18.04.3-live-server-amd64.iso ent\u00e3o modifique conforme necess\u00e1rio.<\/p>\n O configuramos via vrde para podermos lidar com a tela dela no inicio e se alguma coisa acontece com ela durante o uso posterior. O porto (no caso 10004) \u00e9 da sua escolha apenas use um que n\u00e3o exista.<\/p>\n Lembre que posteriormente, podemos usar este comando para iniciar ela “sem-cabe\u00e7a”. Ou seja, sem interface. Com isso vc poupar\u00e1 alguns recursos de CPU, GPU, RAM, etc. Usamos isso em produ\u00e7\u00e3o.<\/p>\n Em produ\u00e7\u00e3o \u00e9 o contr\u00e1rio. Ou seja, particionamos o disco diferente e usamos LVM que nos permite adicionar mais discos e n\u00e3o apenas mudar o tamanho.<\/p>\n Este \u00e9 um usu\u00e1rio comum mas com direitos administrativos. N\u00e3o esque\u00e7a a senha mas tamb\u00e9m n\u00e3o a anote no post-it. Chegado o caso anote ela na manga da camisa. A mulher vai se encarregar de fixar ela na sua mem\u00f3ria.<\/p>\n \u00c9 importante ter seu SSH instalado pois \u00e9 por meio dele que voc\u00ea vai acessar sua m\u00e1quina. Sim, voc\u00ea n\u00e3o est\u00e1 sendo treinado para ser um gnutellinha da vida. Um acesso SSH te libera da exig\u00eancia brutal de ter uma banda muito larga j\u00e1 que os comandos e seus retornos s\u00e3o textuais.<\/p>\n Se precisar de proxy, indique no momento adequado.<\/p>\n Ele vai demorar baixando as atualiza\u00e7\u00f5es de seguran\u00e7a. Deixe rolar. Melhor agora do que depois.<\/p>\n Quando chegue ao final da instala\u00e7\u00e3o, o sistema instalado vai reiniciar. Observe que ele solicita para remover o disco de instala\u00e7\u00e3o. Como colocamos o disco de instala\u00e7\u00e3o como “CD-ROM”, o instalador j\u00e1 se encarregou de “ejetar” o mesmo. \u00c9 s\u00f3 reiniciar (dando ENTER na VM) e boa.<\/p>\n Assim que a m\u00e1quina reinicie, ingresse nela usando seu usu\u00e1rio e senha cadastrado no primeiro passo.<\/p>\n Na primeira vez, ele vai estar ainda configurando algumas coisas, ent\u00e3o tenha paci\u00eancia.<\/p>\n A \u00fanica coisa que interessa dessa entrada, \u00e9 pegar o IP dela para poder acessa-la via SSH.<\/p>\n Obtemos esse IP usando o comando ifconfig da seguinte maneira:<\/p>\n Ele nos devolver\u00e1 alguma coisa assim:<\/p>\n Mas desse trambolho todo s\u00f3 nos interessa o IP da primeira placa. A ‘lo’ \u00e9 uma placa virtual que existe em todo linux para que a pilha TCP\/IP funcione. (Lembre que X11 \u00e9 um servidor que roda no seu pr\u00f3prio micro e sobre TCP\/IP. Assim como ele h\u00e1 um monte de programas que esperam que vc tenha uma pilha TCP\/IP ativa. Por isso ela est\u00e1 embutida).<\/p>\n Ent\u00e3o, simplificamos para o seguinte comando para obtermos o IP da m\u00e1quina:<\/p>\n Com este comando mais simples, direto, eficiente, bonito, f\u00e1cil de lembrar, obtemos apenas o IP da m\u00e1quina. No meu caso a sa\u00edda se resume a isto aqui:<\/p>\n Agora, devemos reconhecer que \u00e9 um saco ter que abrir a m\u00e1quina virtual para saber qual IP que ele pegou. Por outro lado, precisamos de essa informa\u00e7\u00e3o para trabalhar. Comigo acontece de que geralmente n\u00e3o posso deixar ela com IP fixo j\u00e1 que uso ela em diferentes redes.<\/p>\n Uma forma de solucionar isso, \u00e9 que a pr\u00f3pria m\u00e1quina mostre o IP que pegou na tela antes do login. Desta forma, apenas abrir a tela da VM (Lebre que vamos usar sem tela) j\u00e1 nos mostra esse IP. (Eu n\u00e3o sei voc\u00eas, mas eu esque\u00e7o dos IPs fixos tb, ent\u00e3o eu coloco em tudo quanto \u00e9 m\u00e1quina)<\/p>\n Para conseguir isso, vamos modificar o arquivo \/etc\/issue que \u00e9 o arquivo que \u00e9 mostrado no fim do processo de inicializa\u00e7\u00e3o e logo antes do login.<\/p>\n Como minha placa chama-se Ao reiniciar a m\u00e1quina virtual, l\u00e1 estar\u00e1 a informa\u00e7\u00e3o que preciso para poder trabalhar.<\/li>\n Usar uma m\u00e1quina virtual via tela \u00e9 pedir para sofrer. Ela \u00e9 mais lenta, n\u00e3o tem jeito.<\/p>\n Mesmo se instalou a GUI (como \u00e9 o caso de Windows Desktop por exemplo que n\u00e3o tem como instalar sem interface gr\u00e1fica) o melhor \u00e9 o acesso remoto. Claro, h\u00e1 exe\u00e7\u00f5es, mas a regra \u00e9 essa.<\/p>\n Bem, antes de se apaixonar pelo ssh, voc\u00ea tem que ser triducidado por ele.<\/p>\n Se seu ambiente \u00e9 Windows, um cliente ssh pot\u00e1vel \u00e9 o PuTTY (https:\/\/putty.org<\/a>) mas o que eu mais gosto \u00e9 Cygwin (https:\/\/www.cygwin.com<\/a>). Agora, com isso de que o Windows10 j\u00e1 vem com bash (e Ubuntu) embarcado, imagino que o melhor seja usar a op\u00e7\u00e3o que vem embarcada.<\/p>\n Eu vou supor que est\u00e1 usando Linux, Cygwin ou bash embarcado.<\/p>\n Por ser a primeira vez, o meu bash responde assim:<\/p>\n Ao que eu respondo que sim em ingl\u00eas fluente. Ou seja “yes” e n\u00e3o apenas “y”<\/p>\n Com isso o servidor fica registrado na lista de alvos conhecidos pelo ssh<\/p>\n Logo ap\u00f3si digito a senha que registrei na hora da instala\u00e7\u00e3o e pronto, estou nele.<\/p>\n Mas vamos sair, porque -n\u00e3o sei voc\u00eas- mas eu detesto ter que lembrar de senhas e tal.<\/p>\n Para sair, digitamos S\u00d3 CONTINUE SE VOLTOU NA SUA M\u00c1QUINA M\u00c3E<\/strong><\/p>\n Pode acontecer que voc\u00ea n\u00e3o tenha um par de chaves criadas. Para verificar se tem, use o seguinte comando:<\/p>\n Se ele mostra dois arquivos Se ele mostrar alguma coisa parecida com a imagem abaixo \u00e9 porque voc\u00ea n\u00e3o tem o par de chaves:<\/p>\n Caso, ent\u00e3o, tenha que criar esse par de chaves, o fazemos usando o seguinte comando:<\/p>\n Deixe que o dem\u00f4nio do usu\u00e1rio Windows entre em voc\u00ea e d\u00e9 ENTER at\u00e9 o final. Dessa forma criar\u00e1 um par de chaves que n\u00e3o precisam senha para serem usadas. (Em produ\u00e7\u00e3o voc\u00ea coloca senha nelas)<\/p>\n A sa\u00edda fica mais ou menos assim:<\/p>\n Para poder facilitar o acesso via SSH, voc\u00ea agora vai copiar sua chave p\u00fablica para a m\u00e1quina que criou. No meu caso fica assim:<\/p>\n E ele produzir\u00e1 uma sa\u00edda semelhante a esta<\/p>\n Eu digitei a senha da VM quando me pediu. Se voc\u00ea criou seu par de chaves com senha, vai pedir essa senha tb. Ai vc vai lembrar o porque que eu disse para colocar sem senha.<\/p>\n Bem, a partir deste momento entrar na sua m\u00e1quina virtual via ssh ser\u00e1 t\u00e3o simples como fazer<\/p>\n E ele deve ir sem pedir senha (a n\u00e3o ser que o par de chaves…bla bla bla)<\/li>\n Entraremos na virtual. Use o comando similar ao seguinte<\/p>\n O que \u00e9 o b\u00e1sico no LAMP?<\/p>\n Bom, sendo que est\u00e1 no Linux, s\u00f3 falta AMP (Apache, MySQL e PHP)<\/p>\n Existem pacotes prontos que faremos bem em evitar pois buscamos aprender o que \u00e9 – de fato – importante.<\/p>\n Primeiro atualizaremos a base instalada (isso pode levar um tempinho a primeira vez)<\/p>\n Ele vai pedir a senha de usu\u00e1rio para poder fazer Em lugar do MySQL vamos instalar o MariaDB. (MariaDB \u00e9 um fork de MySQL que o criador de MySQL fez quando abandonou a Oracle. O criador do MySQL tinha ido para a Oracle contando com que a Oracle ia manter seus tent\u00e1culos longe e manter o MySQL aberto. Como isso n\u00e3o aconteceu, ele foi embora. Perdeu o nome MySQL mas o software \u00e9 o mesmo… e manteve a dignidade que – nos tempos que correm – digamos que \u00e9 importante)<\/p>\n Dessa forma, quando voc\u00ea reiniciar sua m\u00e1quina, o apache estar\u00e1 funcionando mas para continuar agora, ele tamb\u00e9m estar\u00e1 funcionando.<\/span><\/p>\n Uma vez instalado, \u00e9 bom configurar o banco de dados. Basicamente precisamos que ele seja seguro o suficiente como para trabalhar, mas tb que n\u00e3o encha o saco com muitas exig\u00eancias.<\/p>\n Assim que ele \u00e9 instalado, o root est\u00e1 sem senha. Ent\u00e3o quando perguntado, crie uma senha para root.<\/p>\n Pronto, seu MariaDB est\u00e1 configurado. Agora reinicie ele:<\/p>\n E teste o seu acesso local:<\/p>\n Se tudo deu certo, voc\u00ea vai ter uma tela parecida com esta:<\/p>\n Mas, pode ser que sua combina\u00e7\u00e3o de Ubuntu\/MariaDB esteja meio louca. Geralmente o problema est\u00e1 com o protocolo de autentica\u00e7\u00e3o. Nesse caso ele vai mostrar uma sa\u00edda como a seguinte:<\/p>\n Se tiver esse problema<\/strong> voc\u00ea pode proceder da seguinte forma primeiro para confirmar o erro e depois para corregi-lo:<\/p>\n Ele vai mostrar para voc\u00ea uma saida com esta que serve para identificar se esse \u00e9 seu problema:<\/p>\n Corrigimos isso assim:<\/p>\n Agora, desde seu usu\u00e1rio comum, voc\u00ea deve ser capaz de entrar no mysql localmente<\/p>\n Feito isso, volte na sua m\u00e1quina m\u00e3e e tente o acesso ao servidor de banco de dados<\/p>\n No meu caso, esse \u00e9 o erro que d\u00e1. Isso est\u00e1 dizendo que o servidor n\u00e3o est\u00e1 ouvindo no IP indicado.<\/p>\n Assim que voltamos \u00e0 VM e corrigimos a configura\u00e7\u00e3o do MariaDB<\/p>\n Procure pela linha que diz<\/p>\n e substitua pelo seguinte<\/p>\n Agora reinicie o servidor<\/p>\n Volte \u00e0 sua maquina m\u00e3e (gosto de chama-la assim… parece com ‘nave m\u00e3e’ ao final das contas somos como que alienigenas invadindo as VM da vida)<\/p>\n Repare que o erro mudou. Agora nos est\u00e1 dizendo que o nosso host (no caso 192.168.0.142 que \u00e9 o IP da minha m\u00e1quina m\u00e3e) est\u00e1 impedido de acessar.<\/p>\n Voltamos \u00e0 VM e – usando nosso direito de acesso ao banco l\u00e1 dentro – corrigimos isso assim:<\/p>\n E uma vez dentro do mysql fazemos assim:<\/p>\n Com isso criamos um novo usu\u00e1rio tamb\u00e9m chamado Voltamos \u00e0 m\u00e1quina m\u00e3e e testamos o acesso.<\/p>\n \u00c9 necess\u00e1rio que o usu\u00e1rio comum possa escrever na pasta \/var\/www\/html<\/p>\n A forma mais f\u00e1cil disso \u00e9 fazer um O certo mesmo \u00e9 fazer com que o usu\u00e1rio comum (que tb \u00e9 administrativo) consiga escrever na pasta \/var\/www\/html<\/p>\n A primeira coisa a fazer \u00e9 verificar em que grupo o apache2 trabalha. O seguinte comando faz isso:<\/p>\n No meu caso ele me devolve Voc\u00ea pode verificar os direitos que seu usu\u00e1rio comum tem da seguinte forma:<\/p>\n Como voc\u00ea pode observar, o meu usu\u00e1rio comum n\u00e3o pertence ao grupo www-data. Adicionamos ele ao grupo com o seguinte comando:<\/p>\n E podemos verificar com o comando S\u00f3 que se voc\u00ea for ver, ainda n\u00e3o pode criar arquivos na pasta A forma mais limpa de resolver isto \u00e9 se apropriando da pasta Uma vez feito isso, voc\u00ea pode criar o arquivo Proceda a testar a sua configura\u00e7\u00e3o solicitando ao apache que processe esse arquivo e mostre a saida na tela. Ou seja, navegue.<\/p>\n Se tudo ocorreu bem, tem que aparecer uma lista com as configura\u00e7\u00f5es atuais do apache, o php e o mysql.<\/li>\n Bom, se tudo deu certo, \u00e9 hora de criarmos o primeiro programa.<\/p>\n Mas para que o teste seja completo, vamos criar primeiro um banco de dados<\/p>\n Uma vez criado o banco Digitando o seguinte l\u00e1 dentro:<\/p>\n Confirmamos que tudo esteja bem com ele usando o seguinte comando:<\/p>\n\n
Baixe a \u00faltima vers\u00e3o est\u00e1vel do Ubuntu<\/h3>\n
Crie uma m\u00e1quina virtual<\/h3>\n
a. Verifique se o local de armazenamento existe<\/h5>\n
$ mkdir ~\/VirtualBoxes<\/code><\/pre>\nb. Crie sua m\u00e1quina virtual usando o seguinte comando:<\/h5>\n
$ VBoxManage createvm --name MeuLAMP --ostype Debian_64 --register --basefolder ~\/VirtualBoxes\/ <\/code><\/pre>\nVirtual machine 'MeuLAMP' is created and registered.\nUUID: 3156aee4-8a2e-46dd-ae69-54533c78ff5f\nSettings file: '\/Users\/estebandortta\/VirtualBoxes\/MeuLAMP\/MeuLAMP.vbox'<\/code><\/pre>\nc. Modifique ela para seus par\u00e2metros m\u00ednimos.<\/h5>\n
$ ifconfig<\/span> | grep<\/span> \"^[a-z0-9]*\\:\"<\/span> | awk<\/span> '{ print $1 }'<\/span><\/span><\/pre>\n$ VBoxManage modifyvm MeuLAMP --ioapic on\n$ VBoxManage modifyvm MeuLAMP --memory 512 --vram 128\n$ VBoxManage modifyvm MeuLAMP --nic1 Bridged --bridgeadapter1 en1<\/code><\/pre>\nd. Agora vamos adicionar um disco<\/h5>\n
$ VBoxManage createhd --filename ~\/VirtualBoxes\/MeuLAMP\/MeuLAMP_DISK.vdi --size 70000 --format VDI\n$ VBoxManage storagectl MeuLAMP --name \"SATA Controller\" --add sata --controller IntelAhci\n$ VBoxManage internalcommands sethduuid ~\/VirtualBoxes\/MeuLAMP\/MeuLAMP_DISK.vdi\n$ VBoxManage storageattach MeuLAMP --storagectl \"SATA Controller\" --port 0 --device 0 --type hdd --medium ~\/VirtualBoxes\/MeuLAMP\/MeuLAMP_DISK.vdi\n$ VBoxManage storagectl MeuLAMP --name \"IDE Controller\" --add ide --controller PIIX4\n$ VBoxManage storageattach MeuLAMP --storagectl \"IDE Controller\" --port 1 --device 0 --type dvddrive --medium ~\/Downloads\/OS\/Linux\/ubuntu-18.04.3-live-server-amd64.iso\n$ VBoxManage modifyvm MeuLAMP --boot1 dvd --boot2 disk --boot3 none --boot4 none<\/code><\/pre>\ne. Configuramos acesso remoto<\/h5>\n
$ VBoxManage modifyvm MeuLAMP --vrde on\n$ VBoxManage modifyvm MeuLAMP --vrdemulticon on --vrdeport 10004<\/code><\/pre>\nf. Finalmente, inicie sua m\u00e1quina para poder configura-la<\/h5>\n
$ VBoxManage startvm MeuLAMP<\/code><\/pre>\n$ VBoxHeadless --startvm MeuLAMP<\/code><\/pre>\n<\/li>\nCoisas a serem feitas durante<\/u> a instala\u00e7\u00e3o<\/h3>\n
a. Escolha a parti\u00e7\u00e3o que ocupa o disco inteiro e sem LVM.<\/h5>\n
b. Configure seu usu\u00e1rio.<\/h5>\n
b. N\u00e3o esque\u00e7a de instalar o SSH (Ele vai oferecer OpenSSH logo ap\u00f3s particionar o disco)<\/h5>\n
c. Deixe o restante como est\u00e1.<\/h5>\n
d. Aguarde at\u00e9 o fim.<\/h5>\n
c. Caso a atualiza\u00e7\u00e3o der problemas<\/strong> escolha “Cancel Update and Reboot”<\/h5>\n<\/li>\n
Coisas a serem feitas ap\u00f3s a instala\u00e7\u00e3o<\/h3>\n
esteban@meulamp:~$ ifconfig<\/code><\/pre>\nenp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500\n inet 192.168.0.152 netmask 255.255.255.0 broadcast 192.168.0.255\n inet6 fe80::a00:27ff:fe07:8f8b prefixlen 64 scopeid 0x20<link>\n ether 08:00:27:07:8f:8b txqueuelen 1000 (Ethernet)\n RX packets 855 bytes 642531 (642.5 KB)\n RX errors 0 dropped 2 overruns 0 frame 0\n TX packets 243 bytes 30082 (30.0 KB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nlo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10<host>\n loop txqueuelen 1000 (Local Loopback)\n RX packets 104 bytes 8136 (8.1 KB)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 104 bytes 8136 (8.1 KB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0<\/code><\/pre>\nesteban@meulamp:~$ ifconfig | grep -w inet | grep -vw 127 | awk '{ print $2 }'<\/code><\/pre>\n192.168.0.152<\/code><\/pre>\nenp0s3<\/code> (Detesto esses nomes novos, gostava de quando eram eth0 por exemplo) o meu arquivo \/etc\/issue fica assim:<\/p>\nUbuntu 18.04.4 LTS n l\nenp0s3: 4{enp0s3}\n------------------------------------------<\/code><\/pre>\nConfigurando seu acesso via SSH<\/h3>\n
a. Acesse sua m\u00e1quina virtual desde a linha de comandos da sua m\u00e1quina. No meu caso fica assim:<\/h5>\n
$ ssh esteban@192.168.0.152<\/code><\/pre>\nThe authenticity of host '192.168.0.152 (192.168.0.152)' can't be established.\nECDSA key fingerprint is SHA256:poNetFdUSSEYn8tH2Mu7Vy7NLdq25lFaCJ449rt2bjw.\nAre you sure you want to continue connecting (yes\/no)?<\/code><\/pre>\nexit<\/code> ou usamos ctrl-d<\/code> que d\u00e1 na mesma.<\/p>\nb. Tem ou n\u00e3o um par de chaves na sua m\u00e1quina m\u00e3e?<\/h5>\n
$ ls ~\/.ssh\/*<\/code><\/pre>\nid_rsa<\/code> e id_rsa.pub<\/code>, voc\u00ea j\u00e1 tem as chaves criadas e n\u00e3o h\u00e1 de que se preocupar (a n\u00e3o ser, claro que tenha criado as chaves com senha e as tenha esquecido)<\/p>\nls: cannot access '\/home\/esteban\/.ssh\/': No such file or directory<\/code><\/pre>\n$ ssh-keygen<\/code><\/pre>\nGenerating public\/private rsa key pair.\nEnter file in which to save the key (\/home\/esteban\/.ssh\/id_rsa): \nCreated directory '\/home\/esteban\/.ssh'.\nEnter passphrase (empty for no passphrase): \nEnter same passphrase again: \nYour identification has been saved in \/home\/esteban\/.ssh\/id_rsa.\nYour public key has been saved in \/home\/esteban\/.ssh\/id_rsa.pub.\nThe key fingerprint is:\nSHA256:1h2\/DAEBwxLLwiKYFSyY3FSiFtWRAvO1t8snCgGxCAY esteban@meulamp\nThe key's randomart image is:\n+---[RSA 2048]----+\n|EOB=o++oo.o. |\n|O+O+o+o... . |\n|=*..+.oo o |\n|.... .. .. . + |\n| . .S . o . |\n| . ... o . |\n| . + . o |\n| . . o |\n| . |\n+----[SHA256]-----+<\/code><\/pre>\nc. Copie sua chave p\u00fablica para a VM<\/h5>\n
$ ssh-copy-id esteban@192.168.0.152<\/code><\/pre>\n\/usr\/bin\/ssh-copy-id: INFO: Source of key(s) to be installed: \"\/Users\/estebandortta\/.ssh\/id_rsa.pub\"\n\/usr\/bin\/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\n\/usr\/bin\/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\nesteban@192.168.0.152's password: \n\nNumber of key(s) added: 1\n\nNow try logging into the machine, with: \"ssh 'esteban@192.168.0.152'\"\nand check to make sure that only the key(s) you wanted were added.<\/code><\/pre>\n$ ssh esteban@192.168.0.152<\/code><\/pre>\nInstalando o LAMP<\/h3>\n
$ ssh esteban@192.168.0.152<\/code><\/pre>\na. Instale o b\u00e1sico<\/h5>\n
esteban@meulamp:~$ sudo apt-get update -y<\/code><\/pre>\nsudo<\/code><\/p>\nesteban@meulamp:~$ sudo apt-get install apache2 php mariadb-server mariadb-client php-mysql -y\n<\/code><\/pre>\nDependendo de sua distribui\u00e7\u00e3o, pode ser que o apache n\u00e3o esteja configurado para iniciar junto com o sistema. Habilite o apache e inicie ele com estes dois comandos:\n\n<\/span>esteban@meulamp:~$ sudo<\/span> systemctl enable apache2<\/span>\nesteban@meulamp:~$ sudo<\/span> systemctl start<\/span> apache2\n<\/span><\/pre>\n\nb.Configure o acesso ao banco de dados<\/h5>\n
esteban@meulamp:~$ sudo mysql_secure_installation<\/code><\/pre>\n\n
esteban@meulamp:~$ sudo systemctl restart mariadb<\/code><\/pre>\nesteban@meulamp:~$ mysql -u root -p<\/code><\/pre>\nWelcome to the MariaDB monitor. Commands end with ; or g.\nYour MariaDB connection id is 35\nServer version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04\n\nCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\n\nType 'help;' or 'h' for help. Type 'c' to clear the current input statement.\n\nMariaDB [(none)]> Bye<\/code><\/pre>\nesteban@meulamp:~$ mysql -u root -p\nEnter password: \nERROR 1698 (28000): Access denied for user 'root'@'localhost'<\/code><\/pre>\nesteban@meulamp:~$ sudo mysql\nMariaDB [(none)]> use mysql;\nMariaDB [mysql]> select user, plugin from user;<\/code><\/pre>\n+------+-------------+\n| user | plugin |\n+------+-------------+\n| root | unix_socket |\n+------+-------------+\n1 row in set (0.00 sec)<\/code><\/pre>\nMariaDB [mysql]> update user set plugin='mysql_native_password' where user='root';\nMariaDB [mysql]> flush privileges;\nMariaDB [mysql]> exit<\/code><\/pre>\nesteban@meulamp:~$ mysql -u root -p<\/code><\/pre>\nesteban@meulamp:~$ exit\nlogout\nConnection to 192.168.0.152 closed.\n$ mysql -u root -p -h 192.168.0.152\nEnter password: \nERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.152' (61)<\/code><\/pre>\n$ ssh esteban@192.168.0.152\nesteban@meulamp:~$ sudo nano \/etc\/mysql\/mariadb.conf.d\/50-server.cnf<\/code><\/pre>\nbind-address = 127.0.0.1<\/code><\/pre>\nbind-address = *<\/code><\/pre>\nesteban@meulamp:~$ sudo systemctl restart mariadb<\/code><\/pre>\nesteban@meulamp:~$ logout\nConnection to 192.168.0.152 closed.\n[estebandortta@Estebans-MacBook-Pro ~] mysql -u root -p -h 192.168.0.152\nEnter password: \nERROR 1130 (HY000): Host '192.168.0.142' is not allowed to connect to this MariaDB server<\/code><\/pre>\n$ ssh esteban@192.168.0.152\nesteban@meulamp:~$ mysql -u root -p<\/code><\/pre>\nMariaDB [(none)]> CREATE USER 'root'@'192.168.%' IDENTIFIED BY 'tr3co';\nQuery OK, 0 rows affected (0.00 sec)\n\nMariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.%';\nQuery OK, 0 rows affected (0.00 sec)\n\nMariaDB [(none)]> FLUSH PRIVILEGES;\nQuery OK, 0 rows affected (0.00 sec)\n\nMariaDB [(none)]> exit<\/code><\/pre>\nroot<\/code> mas com a senha tr3co<\/code> que pode acessar este servidor desde qualquer micro da rede 192.168.x.x<\/code> (Repare o uso do coringa ‘%’)<\/p>\nesteban@meulamp:~$ exit\nlogout\nConnection to 192.168.0.152 closed.\n\n$ mysql -u root -ps3nha -h 192.168.0.152\nWelcome to the MariaDB monitor. Commands end with ; or g.\nYour MariaDB connection id is 7\nServer version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04\n\nCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\n\nType 'help;' or 'h' for help. Type 'c' to clear the current input statement.\n\nMariaDB [(none)]><\/code><\/pre>\nc. Alterando as configura\u00e7\u00f5es do usu\u00e1rio<\/h5>\n
sudo chmod -fR 0777 \/var\/www\/html<\/code> que \u00e9 o an\u00e1logo a colocar a saida do vaso direto no ralo do chuveiro. Funciona.<\/p>\nesteban@meulamp:~$ ps aux | grep apache | awk '{ print $1 }' | grep -v \"root|esteban\" | uniq<\/code><\/pre>\nwww-data<\/code>. Para eu, usu\u00e1rio comum, poder escrever nas pastas desse grupo, devo pertencer ao mesmo.<\/p>\nesteban@meulamp:~$ id esteban\nuid=1000(esteban) gid=1000(esteban) groups=1000(esteban),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd)<\/code><\/pre>\nesteban@meulamp:~$ sudo usermod -a -G www-data esteban<\/code><\/pre>\nid<\/code> que de fato ele foi adicionado:<\/p>\nesteban@meulamp:~$ id esteban\nuid=1000(esteban) gid=1000(esteban) groups=1000(esteban),4(adm),24(cdrom),27(sudo),30(dip),33(www-data),46(plugdev),108(lxd)<\/code><\/pre>\n\/var\/www\/html<\/code>:<\/p>\nesteban@meulamp:~$ touch \/var\/www\/html\/info.php \ntouch: cannot touch '\/var\/www\/html\/info.php': Permission denied<\/code><\/pre>\n\/var\/www\/html<\/code>:<\/p>\nesteban@meulamp:~$ sudo chown esteban \/var\/www\/html\nesteban@meulamp:~$ sudo chgrp www-data \/var\/www\/html<\/code><\/pre>\n\/var\/www\/html\/info.php<\/code> com o seguinte conte\u00fado para comprovar o correto funcionamento e instala\u00e7\u00e3o de tudo:<\/p>\n<?php\n phpinfo();\n?><\/code><\/pre>\nhttp:\/\/192.168.0.152\/info.php<\/code><\/pre>\nCriando o primeiro programa<\/h3>\n
esteban@meulamp:~$ mysql -u root -p<\/code><\/pre>\nWelcome to the MariaDB monitor. Commands end with ; or g.\nYour MariaDB connection id is 7\nServer version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04\n\nCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\n\nType 'help;' or 'h' for help. Type 'c' to clear the current input statement.\n\nMariaDB [(none)]> create database meuTeste;\nQuery OK, 1 row affected (0.00 sec)\n\nMariaDB [(none)]> show databases;\n+--------------------+\n| Database |\n+--------------------+\n| information_schema |\n| meuTeste |\n| mysql |\n| performance_schema |\n+--------------------+\n4 rows in set (0.00 sec)<\/code><\/pre>\nmeuTeste<\/code> (que por enquanto n\u00e3o tem tabelas) vamos escrever nosso primeiro programa.<\/p>\nesteban@meulamp:~$ nano \/var\/www\/html\/testar-conexao.php<\/code><\/pre>\n<?php\n $con = mysqli_connect(\"localhost:3306\", \"root\", \"czyhnp\");\n if ($con) {\n $db = mysqli_select_db(\"meuTeste\")\n echo \"Ok\";\n } else {\n echo \"Imposs\u00edvel conectar\";\n }<\/code><\/pre>\nesteban@meulamp:~$ php -l \/var\/www\/html\/testar-conexao.php <\/code><\/pre>\n