Como instalar um servidor web no Raspberry Pi (Apache + PHP + MySQL)

Por que um Raspberry Pi como um servidor web?

Mas por que usar uma raspberry como um servidor web , em vez de usar provedores de serviços especializados em hospedagem na web?

Primeiro, do ponto de vista econômico, você deve saber que os serviços de hospedagem não são gratuitos e que você tem que pagar todos os meses / ano. Ao contrário do framboesa que só precisa de uma conexão . 
Além disso, escolhendo Raspberry, você tem a possibilidade de modificar seus serviços como você deseja (exemplos: o tamanho do disco, a hospedagem do banco de dados, etc.), que geralmente não é o caso de hosts especializados , que geralmente vendem compartilhada hospedagem com baixa capacidade de configuração . 
No entanto, para suportar mais usuários, você deve usar um Raspberry Pi 3 (o Pi 3 pode ser encontrado aqui ), o Raspberry Pi com 1 GB de RAM, em vez do Raspberry tipo B + (512 MB de RAM)

A questão que surge agora é, como fazer um servidor web no Raspeberry Pi ? Instalação do servidor Apache com Raspbian

O que é o Apache?

Primeiro, vamos instalar o Apache, que é o servidor web como tal . 
Quando falamos de um servidor web, geralmente pensamos na máquina, mas esse termo também se refere ao software que permite que a máquina analise solicitações de usuários (em formato http) e retorne o arquivo correspondente à solicitação (Ou um erro se o arquivo não for encontrado ou a consulta for formulada incorretamente). 
Como parte do Apache, é um software sobre o qual falamos .

No momento, o Apache é o servidor web mais utilizado , com cerca de 60% de participação de mercado. O Apache tem sua própria licença, usada por muitos outros projetos. Além disso, o uso maciço do Apache (que se tornou o padrão para servidores da Web), juntamente com sua alta popularidade, levou a uma tremenda abundância de documentação, cursos e outros livros relacionados ao seu uso, e sua segurança, como esta. livro .

Seja para o Raspberry Pi e o Raspbian, ou para uma máquina mais genérica, o Apache é, portanto, uma opção segura , e as habilidades que você poderá adquirir no assunto sempre serão úteis.

Instalação do Apache

Antes de instalar o servidor, verifique se temos uma máquina atualizada. Para fazer isso , devemos ter direitos de administrador , seja por causa do comando sudo.

sudo apt update

sudo apt upgrade

sudo apt update

Quando o Raspberry Pi estiver atualizado, instalaremos o servidor Apache.

sudo apt instalar apache2


A propósito, aproveitamos para dar direitos ao arquivo do apache
para que você possa gerenciar facilmente seus sites. 
Para fazer isso, execute os seguintes comandos:

sudo chown -R pi: www-data / var / www / html / 
chmod sudo-R 770 / var / www / html /

Verifique se o Apache está funcionando

Quando a instalação estiver concluída, podemos testar se o Apache está funcionando corretamente , indo para o endereço do Raspberry. 
Para fazer isso, é necessário tentar acessar o Raspberry a partir da porta 80 (essa porta não será aberta de fora, ela terá que fazer desde o próprio Raspberry). Não se preocupe, é muito fácil. Simplesmente abra o navegador da Web Raspberry e vá para “http://127.0.0.1”. Você deve então receber uma página com uma mensagem como “Funciona! “E muitos outros textos. 
Se você ainda não tem uma GUI no seu Raspbian ou usa o SSH para se conectar ao seu Raspberry, você pode usar o seguinte comando:

wget -O check_apache.html http://127.0.0.1

Este comando salvará o código HTML da página no arquivo “check_apache.html”no diretório atual. 
Então você só tem que ler o arquivo com o comando

cat ./check_apache.html

Se você vir marcado em um local no código “Funciona! É que o Apache está funcionando.

O Apache usa o diretório “/ var / www / html” como a raiz do seu site. Isso significa que quando você chama seu Raspberry na porta 80 (http), o Apache procura o arquivo em “/ var / www / html”. 
Por exemplo, se você chamar o endereço “http://127.0.0.1/example”, o Apache procurará o arquivo “exemplo” no diretório “/ var / www / html”. 
Para adicionar novos arquivos, sites, etc., você precisará adicioná-los a este diretório.

Agora você pode usar seu Raspberry para criar um site em HTML, CSS e JavaScriptinternamente. 
No entanto, você pode querer permitir rapidamente interações entre o site e o usuário . Por exemplo, para permitir que o usuário se registre, etc. Para isso, você precisará do PHP.

Instalação do PHP no seu Raspberry Pi

O que é PHP?

Primeiro de tudo, você deve saber que o PHP é uma linguagem interpretada . E como no caso dos servidores, a sigla PHP pode ter vários significados . De fato, quando falamos sobre PHP, podemos falar sobre o idioma ou o interpretador . 
Aqui, quando falamos sobre a instalação do PHP, isso significa que vamos instalar o interpretador , a fim de usar a linguagem.

O PHP (o idioma desta vez) é usado principalmente para tornar um site dinâmico, isto é, o usuário envia informações para o servidor que retorna os resultados modificados de acordo com essas informações . Por outro lado, um site estático não se adapta às informações fornecidas por um usuário . É salvo como um arquivo de uma vez por todas e sempre entregará o mesmo conteúdo.

O PHP é gratuito e mantido pela PHP Foundation, assim como pelo Zend Enterprise, e várias outras empresas (deve-se notar que Zend também é o autor do famoso framework Zend PHP, amplamente utilizado e reconhecido no mundo dos negócios). .

É uma das linguagens de programação mais utilizadas e é até a mais utilizada para programação web, com cerca de 79% de market share.

Mais uma vez, todas as habilidades que você pode adquirir, no idioma, ou na instalação e configuração do interpretador, sempre serão úteis. Então, só podemos aconselhá-lo a aprender o PHP, que é realmente uma linguagem maravilhosa e muitas vezes subestimada.

Como instalar o PHP

Voltaremos a usar o administrador para instalar o PHP com a linha de comando.

sudo apt instalar php php-mbstring

Saber se o PHP está funcionando

Para saber se o PHP está funcionando corretamente, não é muito complicado, e o método é bastante semelhante ao usado para o Apache .

Você primeiro excluirá o arquivo “index.html” no diretório “/ var / www / html”.

sudo rm /var/www/html/index.html

Em seguida, crie um arquivo “index.php” neste diretório, com esta linha de comando

echo "<? php phpinfo ();?>"> /var/www/html/index.php

A partir daí, a operação é a mesma da verificação do Apache . Você tenta acessar sua página, e você deve ter um resultado próximo a esta imagem (se você não tiver uma interface, use o mesmo método de antes, e procure as palavras “Versão do PHP”).

Capturando um phpinfo de um servidor em Raspbian.

Tabela gerada pelo comando phpinfo em uma framboesa.

Um banco de dados MySQL para o seu servidor

Um DBMS, o  que é isso? Por que o MySQL?

Agora que configuramos o PHP, você provavelmente desejará armazenar informações para uso em seus sites. Para este propósito, os bancos de dados são usados ​​com mais freqüência. 
Vamos, portanto, configurar um DBMS (Database Management System), ou seja, o MySQL.

O MySQL é um DBMS gratuito , poderoso e usado maciçamente (cerca de 56% de participação no mercado de DBMSs gratuitos). Aqui, novamente, o MySQL é tão essencial para o desenvolvimento, seja qual for a linguagem, que você deve aprender e dominar completamente, com este livro, por exemplo .

Como instalar o MySQL

Para fazer isso, vamos instalar o mysql-server e o php-mysql (que servirão como um link entre o php e o mysql)

sudo apt instale o mysql-server php-mysql

Verifique se o MySQL está funcionando corretamente

Para verificar o funcionamento do MySQL, desta vez vamos usar apenas a linha de comando . Para fazer isso, simplesmente nos conectaremos pelo comando:

sudo mysql --user = root

Não excluiremos o usuário root padrão do mysql e criaremos um novo usuário root do mysql, porque o padrão só pode ser usado com a conta root do Linux, e portanto não disponível para os scripts do servidor web e php.

Para fazer isso, uma vez que você se conectar ao MySQL, simplesmente execute esses comandos (substitua passwordpela senha que você quer):

DROP USER 'root' @ 'localhost'; 
CREATE USER 'root' @ 'localhost' IDENTIFICADO POR 'senha'; 
GRANT ALL PRIVILEGES ON *. * TO 'root' @ 'localhost'

Então você agora tem um servidor web, conectado ao PHP e MySQL . Isso é tudo que é preciso.

(Nas suas conexões de nexts, você poderá se conectar ao mysql sem usar o sudo, com o comando mysql --user=root --password=yourmysqlpassword).

Adicionar PHPMyAdmin

A instalação do PHPMyAdmin é absolutamente desnecessária. Nesta instalação, não vamos nos preocupar com nenhuma configuração de segurança especial!

A instalação do PHPMyAdmin é muito rápida e fácil, nós simplesmente temos que usar o gerenciador de pacotes com este comando:

sudo apt instala phpmyadmin

O programa de instalação do PHPMyAdmin fará algumas perguntas. Sobre o dbconfig-commoncomponente, opte por não usá-lo (como já configuramos nosso banco de dados). Sobre o servidor para configurar o PHPMyAdmin para, escolha Apache. E a senha do root é aquela que você definiu para o MySQL.

Você também deve ativar a extensão mysqli usando o comando acima:

sudo phpenmod mysqli 
sudo /etc/init.d/apache2 reiniciar

Verifique se o PHPMyAdmin está funcionando corretamente

Para verificar se o PHPMyAdmin funciona, você simplesmente tentará acessá-lo, usando o endereço do seu Raspberry seguido de / phpmyadmin. Por exemplo, localmente será http://127.0.0.1/phpmyadmin

Se você ainda receber um erro, pode ser porque o PHPMyAdmin foi movido para outro diretório. Neste caso, tente o comando

sudo ln -s / usr / share / phpmyadmin / var / www / html / phpmyadmin

Agora, podemos acessar o PHPMyAdmin do navegador do Raspberry Pi, com o URL: http://127.0.0.1/phpmyadmin

Tornar um servidor acessível a partir da web

Seu servidor da web está pronto. No entanto, você provavelmente não pode acessá-lo da internet . De fato, seria necessário que o seu modem redirecionasse os pedidos para o seu Raspberry, as boas portas. 
Para colocar esses redirecionamentos no lugar, e até mesmo obter um URL, você deve olhar para DynDNS e encaminhamento de porta!

Fonte

https://howtoraspberrypi.com/how-to-install-web-server-raspberry-pi-lamp/

https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost

CONECTAR COM MYSQL – PYTHON

import mysql.connector

mydb = mysql.connector.conect(
host=”localhost”,
user=”SeuUsuario”,
passwd=”SuaSenha”,
database=’SeuBanco’
)
mycursor = mydb.cursor()

mycursor.execute(“SELECT * FROM customers”)
# or
# mycursor.execute(“SELECT name, address FROM customers”)
myresult = mycursor.fetchall()
for x in myresult:
print(x)

DELPHI ANDROID ACESSO DIRETO A BANCO DE DADOS HOSPEDADO COM UNIDAC

Sempre me perguntei como minhas aplicações Android desenvolvidas comDelphi XE7 poderiam acessar diretamente um banco de dados hospedado.

Pois bem, esta semana recebi uma DM no Twitter da DevArt. Eles me convidavam para estudar e comentar a sua suite de componentes de acesso a dados, o UniDAC (Universal Data Access Components). Obviamente pelo que os componentes propõem,  aceitei de primeira, afinal pode ser a solução para a questão que citei acima.

O que é o UniDAC?

O UniDAC é uma solução multi-plataforma para o desenvolvimento de aplicações usando vários IDEs: do RAD Studio, Delphi, C ++ Builder, Lazarus (e FPC) no Windows, Mac OS X, iOS, Android além deLinux e FreeBSD.

IDEs e Plataformas suportadas pelo UniDAC

Trata-se de  uma suíte de componentes que prover banco de dados, suportando alguns dos principais SGBDs (Sistemas de Gerenciamento de Banco de Dados) conhecidos no mercado atual como: MySQL, MS SQL SERVER, Oracle, InterBase, Firebird, PostgreSQL, SQLite, DB2, Microsoft Access, além de outros banco que podem ser acessados através de ODBC.

Como o UniDAC lida com o acesso a dados?

Alguns banco de dados são acessados diretamente, sem a necessidade da biblioteca cliente. De maneira simplificada seria você não precisar distribuir a DLL do banco junto com sua aplicação para que a mesma consiga fazer acesso à base de dados.

Esquema de acesso a dados do UniDAC

Atualmente o UniDAC permite que sua aplicação Mobile ou Desktop possa trabalhar com Oracle, SQL Server, MySQL, PostgreSQL, SQLite, e NexusDB diretamente sem necessidade de biblioteca cliente do BD.

Um banco de dados MySQL  para teste

Para iniciarmos os testes, eu resolvi disponibilizar um banco de dados MySQL de exemplo hospedado em um provedor de internet e as credenciais de acesso serão passadas em nossa conexão mais adiante.

UniDac Acesso MySQL

Conhecendo a Suite UniDAC

Para conhecer um pouco mais sobre os componentes que compõem a suíte do UniDAC clique aqui.

Basicamente,  no nosso exemplo vamos fazer uma aplicação multi dispositivo que irá acessar nosso banco de dados MySQL hospedado num dado provedor de hospedagem. Por ser algo bem simples e apenas para fins de teste vamos abordar apenas 3 componentes:

Componente TUniConnection

TUniConnection  permite configurar e gerenciar a conexão com os diversos SGBDs suportados.

Componente TUniQueryTUniQuery permite a utilização de instruções SQL para recuperação, atualização e inserção dados nas tabelas.

Componente TUniProviderTUniProvider componente base para as ligações entre a aplicação e o SGBD. No nosso caso TMySQLUniProvider.

Hora de colocarmos a mão na massa

Bem vamos iniciar o Delphi XE7, e criar um nova aplicação Multi Device em branco. Nela vamos inserir os componentes da suíte UniDAC retratados acima,  e mais 1 Image, 1 ListView e 1Button, e configurá-los como segue:

  • Image1
    • Align -> Top
    • WrapMode -> Stretch
    • MultiResBitmap -> adicione um imagem a seu gosto.
  • Button1
    • Align -> Botton
    • Text -> ‘Conectar MySQL’
  • ListView1
    • Align -> Client

Ao final do deste processo sua tela terá uma aparência semelhante à imagem abaixo:

Design da Interface de Usuário -  Acesso direto a Banco de dados com UniDAC

E como configurar a suíte UniDAC

Até agora apenas colocamos na aplicação os componentes e como seria a configuração dos mesmos? Será complexo??? Bem já adianto que tudo é muito intuitivo, mas nada melhor do que conferir. Vamos lá!

No nosso componente UniConnection1 vamos alterar as propriedades como segue:

  • ProviderName -> MySQL
  • Porta -> 3306
  • LoginPrompt -> False
  • Server -> vivaitaocara.com.br
  • UserName -> vivai026_exemplo
  • Password -> exemplo

Com essas informações já estamos credenciados a acessar o servidor do MySQL hospedado no provedor, vamos então definir qual banco de dados acessar através da propriedade Database. Ao clicar no seletor a conexão será ativada e o banco de dados vivai026_bdexemplo estará disponível selecione-o.

Este processo também pode ser efetuado através do Connection Editor que pode ser acionado clicando com o botão direto no mouse sobre o componente UniConnection e selecionando esta opção. Veja  na imagem que um Wizard é aberto para alterações por telas mais amigáveis.

TUniConnection - ConnectionEditor

Nota: Desconecte a aplicação alterando a propriedade Connected do UniConnection1 para False. Pois ao selecionar o banco de dados a aplicação se conecta ao servidor e retorna as opções disponíveis, entretanto a conexão permanece ativa impossibilitando que o componente UniQuery1 possa ser testado.

Para nosso componente UniQuery1 vamos configurar as seguintes propriedades:

  • Connection -> UniConnection1
  • SQL –> ‘select * from medicamentos’

Porém ao clicar sobre o botão elipse (reticências) da propriedade SQL do UniQuery1, a janela abaixo será carregada.

UniQuery - SQL Editor

Não vamos entrar em todas as abas disponíveis na janela, vamos nos ater apenas ao comando SQL para efetuar a busca na base de dados para alimentar nossa aplicação. Finalize a janela clicando no botão OK.

Vamos agora configurar agora o clique do nosso Button1, que será responsável por conectar a aplicação e resgatar os dados do servidor preenchendo com eles o ListView1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.ConecClick(Sender: TObject);
var
  lvItem : TListViewItem;
  I: Integer;
begin
  UniConnection1.Close;
  UniQuery1.Open;
  ListView1.Items.Clear;
  ListView1.BeginUpdate;
  for I := 0 to UniQuery1.RecordCount -1 do
    begin
      lvItem := ListView1.Items.AddItem();
      lvItem.Text :=
          UniQuery1.Fields[1].AsString + ' ' +
          UniQuery1.Fields[2].AsString;
      UniQuery1.Next;
    end;
  ListView1.EndUpdate;
  UniConnection1.Close;
end;

Feito isso já podemos executar nossa aplicação. Veja que em Win32a mesma já funciona perfeitamente:

Sem alterar nenhuma linha vamos alterá-la para distribuição na plataforma Android e confira o resultado no vídeo Abaixo:

Video Player

Nota: Por ser uma versão Trial temos uma limitação de 6 campos por dataset (tabelas ou consultas)como exibido em mensagem no vídeo. Lembrando que a versão trial tem validade de 60 dias.
Mensagem de Limitação da versão Trial

TUniProvider sem configuração, mas não sem importância

Concluímos a codificação de nosso exemplo e com isso você pode ter percebido que embora tenhamos incluído em nossa aplicação o MySQLUniProvider1 (TMySQLUniProvider) ele não necessitou nenhuma configuração.

O componente cada provider usa a conectividade nativa específica do SGBD, sendo capazes de realizar as operações CRUD (Create, Read, Update, Delete) considerando automaticamente as particularidades do SGBD selecionado.

 Quer saber a importância do provider nesse caso??? Retire-o do projeto e execute-o novamente! Sem ele toda essa "mágica" não é possível, a menos que você tenha a biblioteca cliente instalada em sua máquina.

Conclusão

Com esse dia de testes cheguei a conclusão que vale muito a investir primeiro seu tempo em conhecer mais os componentes e em se adaptando perfeitamente no seu modelo de projeto por que não investir também financeiramente na aquisição da versão completa do UniDAC, afinal a mesma está sendo vendida no site da DevArtpor aproximadamente US$ 200,00.

Fico por aqui, abaixo links e até a próxima!

UniDAC Versão Trial

UniDAC para compra

Fonte:  http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/delphi-android-acesso-direto-a-banco-de-dados-hospedado-com-unidac