Partilhar via


Tutorial: Implantar um aplicativo PHP, MySQL e Redis no Serviço de Aplicativo do Azure

Este tutorial mostra como criar um aplicativo PHP seguro no Serviço de Aplicativo do Azure conectado a um banco de dados MySQL (usando o Banco de Dados do Azure para servidor flexível MySQL). Você também implantará um Cache Redis do Azure para habilitar o código de cache em seu aplicativo. O Serviço de Aplicativo do Azure é um serviço de hospedagem na Web altamente escalável, auto-corrigido que pode implantar facilmente aplicativos no Windows ou Linux. Quando terminar, você terá um aplicativo Laravel em execução no Serviço de Aplicativo do Azure no Linux.

Captura de ecrã do exemplo de aplicação do Azure intitulada Lista de Tarefas a mostrar as novas tarefas adicionadas.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Aplicação de exemplo

Para acompanhar este tutorial, clone ou baixe o aplicativo Laravel de exemplo do repositório:

git clone https://github.com/Azure-Samples/laravel-tasks.git

Se você quiser executar o aplicativo localmente, faça o seguinte:

  • Em .env, configure as configurações do banco de dados (como DB_DATABASE, DB_USERNAMEe DB_PASSWORD) usando as configurações em seu banco de dados MySQL local. Você precisa de um servidor MySQL local para executar este exemplo.

  • A partir da raiz do repositório, inicie o Laravel com os seguintes comandos:

    composer install
    php artisan migrate
    php artisan key:generate
    php artisan serve
    

1 - Criar serviço de aplicativo e recursos MySQL

Nesta etapa, você cria os recursos do Azure. As etapas usadas neste tutorial criam um Serviço de Aplicativo e um Banco de Dados do Azure para configuração do MySQL que é seguro por padrão. Para o processo de criação, você especificará:

  • O Nome do aplicativo Web. É o nome usado como parte do nome DNS do seu webapp na forma de https://<app-name>.azurewebsites.net.
  • O tempo de execução do aplicativo. É onde você seleciona a versão do PHP para usar em seu aplicativo.
  • O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos do Azure necessários para o aplicativo.

Entre no portal do Azure e siga estas etapas para criar seus recursos do Serviço de Aplicativo do Azure.

Etapa 1: No portal do Azure:

  1. Insira "banco de dados de aplicativo Web" na barra de pesquisa na parte superior do portal do Azure.
  2. Selecione o item rotulado Web App + Database sob o título Marketplace . Você também pode navegar diretamente para o assistente de criação.

Uma captura de tela mostrando como usar a caixa de pesquisa na barra de ferramentas superior para localizar o assistente de criação de aplicativo Web + banco de dados.

Etapa 2: Na página Criar Aplicativo Web + Banco de Dados , preencha o formulário da seguinte maneira.

  1. Grupo de Recursos → Selecione Criar novo e use um nome de msdocs-laravel-mysql-tutorial.
  2. Região → qualquer região do Azure perto de si.
  3. Nomemsdocs-laravel-mysql-XYZ onde XYZ é qualquer três caracteres aleatórios. Este nome tem de ser exclusivo em todo o Azure.
  4. Pilha de tempo de execução → PHP 8.2.
  5. Adicionar Cache do Azure para Redis? → Sim.
  6. Plano de hospedagemBasic. Quando estiver pronto, você poderá escalar para um nível de preço de produção mais tarde.
  7. MySQL - Flexible Server é selecionado para você por padrão como o mecanismo de banco de dados. O Banco de Dados do Azure para MySQL é um banco de dados MySQL como um serviço totalmente gerenciado no Azure, compatível com as edições mais recentes da comunidade.
  8. Selecione Rever + criar.
  9. Após a conclusão da validação, selecione Criar.

Uma captura de tela mostrando como configurar um novo aplicativo e banco de dados no assistente Aplicativo Web + Banco de Dados.

Etapa 3: A implantação leva alguns minutos para ser concluída. Quando a implantação for concluída, selecione o botão Ir para o recurso . Você é levado diretamente para o aplicativo do Serviço de Aplicativo, mas os seguintes recursos são criados:

  • Grupo de recursos → O contêiner para todos os recursos criados.
  • Plano do Serviço de Aplicativo → Define os recursos de computação para o Serviço de Aplicativo. Um plano Linux na camada Basic é criado.
  • Serviço de Aplicativo → Representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
  • A rede virtual → integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
  • Pontos de extremidade privados → Pontos de extremidade de acesso para o servidor de banco de dados e o cache Redis na rede virtual.
  • Interfaces de rede → Representa endereços IP privados, um para cada um dos pontos de extremidade privados.
  • O servidor flexível do Banco de Dados do Azure para MySQL → acessível apenas por trás de seu ponto de extremidade privado. Um banco de dados e um usuário são criados para você no servidor.
  • O Cache do Azure para Redis → Acessível somente por trás de seu ponto de extremidade privado.
  • Zonas DNS privadas → Habilite a resolução DNS do servidor de banco de dados e do cache Redis na rede virtual.

Uma captura de tela mostrando o processo de implantação concluído.

2 - Configurar a conectividade do banco de dados

Etapa 1: na página Serviço de Aplicativo, no menu à esquerda, selecione Configuração.

Uma captura de tela mostrando como abrir a página de configuração no Serviço de Aplicativo.

Passo 2:

  1. Encontre as configurações do aplicativo que começam com AZURE_MYSQL_. Eles foram gerados a partir do novo banco de dados MySQL pelo assistente de criação.
  2. Além disso, encontre as configurações do aplicativo que começam com AZURE_REDIS_. Eles foram gerados a partir do novo cache Redis pelo assistente de criação. Para configurar seu aplicativo, esse nome é tudo o que você precisa.
  3. Se desejar, você pode selecionar o botão Editar à direita de cada configuração e ver ou copiar seu valor. Mais tarde, você alterará o código do aplicativo para usar essas configurações.

Uma captura de tela mostrando como criar uma configuração de aplicativo.

Etapa 3: Na guia Configurações do aplicativo da página Configuração , crie uma CACHE_DRIVER configuração:

  1. Selecione Nova definição da aplicação.
  2. No campo Nome, digite CACHE_DRIVER.
  3. No campo Valor, insira redis.
  4. Selecione OK. CACHE_DRIVER já é usado no código do aplicativo Laravel. Essa configuração informa ao Laravel para usar o Redis como cache.

Uma captura de tela mostrando como ver a cadeia de conexão gerada automaticamente.

Etapa 4: usando as mesmas etapas na etapa 3, crie as seguintes configurações do aplicativo:

  • MYSQL_ATTR_SSL_CA: Use /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem como o valor. Esta configuração do aplicativo aponta para o caminho do certificado TLS / SSL que você precisa para acessar o servidor MySQL. Ele está incluído no repositório de exemplo por conveniência.
  • LOG_CHANNEL: Use stderr como o valor. Essa configuração informa ao Laravel para canalizar logs para stderr, o que o torna disponível para os logs do Serviço de Aplicativo.
  • APP_DEBUG: Use true como o valor. É uma variável de depuração Laravel que permite páginas de modo de depuração.
  • APP_KEY: Use base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= como o valor. É uma variável de criptografia Laravel.
  1. Na barra de menus na parte superior, selecione Salvar.
  2. Quando solicitado, selecione Continuar.

Uma captura de tela mostrando como salvar as configurações na página de configuração.

Importante

O APP_KEY valor é usado aqui por conveniência. Para cenários de produção, ele deve ser gerado especificamente para sua implantação usando php artisan key:generate --show a linha de comando.

3 - Implantar código de exemplo

Nesta etapa, você configurará a implantação do GitHub usando as Ações do GitHub. É apenas uma das muitas maneiras de implantar no Serviço de Aplicativo, mas também uma ótima maneira de ter integração contínua em seu processo de implantação. Por padrão, cada git push um no repositório do GitHub inicia a ação de compilação e implantação. Você fará algumas alterações em sua base de código com o Visual Studio Code diretamente no navegador e, em seguida, permitirá que as Ações do GitHub sejam implantadas automaticamente para você.

Passo 1: Em uma nova janela do navegador:

  1. Iniciar sessão na sua conta do GitHub.
  2. Navegar para https://github.com/Azure-Samples/laravel-tasks.
  3. Selecionar Bifurcação.
  4. Selecione Criar bifurcação.

Uma captura de tela mostrando como criar uma bifurcação do repositório GitHub de exemplo.

Etapa 2: Na página do GitHub, abra o Visual Studio Code no navegador pressionando a . tecla .

Uma captura de tela mostrando como abrir a experiência do navegador Visual Studio Code no GitHub.

Etapa 3: No Visual Studio Code no navegador, abra config/database.php no explorer. Encontre a mysql seção e faça as seguintes alterações:

  1. Substituir DB_HOST por AZURE_MYSQL_HOST.
  2. Substituir DB_DATABASE por AZURE_MYSQL_DBNAME.
  3. Substituir DB_USERNAME por AZURE_MYSQL_USERNAME.
  4. Substituir DB_PASSWORD por AZURE_MYSQL_PASSWORD.
  5. Substituir DB_PORT por AZURE_MYSQL_PORT. Lembre-se de que essas AZURE_MYSQL_ configurações foram criadas para você pelo assistente de criação.

Uma captura de tela mostrando o Visual Studio Code no navegador e um arquivo aberto com variáveis MySQL modificadas.

Passo 4: Em config/database.php role até a seção Redis cache e faça as seguintes alterações:

  1. Substituir REDIS_HOST por AZURE_REDIS_HOST.
  2. Substituir REDIS_PASSWORD por AZURE_REDIS_PASSWORD.
  3. Substituir REDIS_PORT por AZURE_REDIS_PORT.
  4. Substituir REDIS_CACHE_DB por AZURE_REDIS_DATABASE.
  5. Na mesma seção, adicione uma linha com 'scheme' => 'tls',. Essa configuração diz ao Laravel para usar criptografia para se conectar ao Redis. Lembre-se de que essas AZURE_REDIS_ configurações foram criadas para você pelo assistente de criação.

Uma captura de tela mostrando o Visual Studio Code no navegador e um arquivo aberto com variáveis Redis modificadas.

Passo 5:

  1. Selecione a extensão Controle do código-fonte.
  2. Na caixa de texto, digite uma mensagem de confirmação como Configure DB & Redis variables.
  3. Selecione Confirmar e Enviar.

Uma captura de tela mostrando as alterações que estão sendo confirmadas e enviadas por push para o GitHub.

Etapa 6: De volta à página Serviço de Aplicativo, no menu à esquerda, selecione Centro de Implantação.

Uma captura de tela mostrando como abrir o centro de implantação no Serviço de Aplicativo.

Etapa 7: Na página Centro de Implantação:

  1. Em Source, selecione GitHub. Por padrão, as Ações do GitHub são selecionadas como o provedor de compilação.
  2. Entre na sua conta do GitHub e siga o prompt para autorizar o Azure.
  3. Em Organização, selecione sua conta.
  4. Em Repositório, selecione laravel-task.
  5. Em Ramo, selecione principal.
  6. No menu superior, selecione Salvar. O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub escolhido, no .github/workflows diretório.

Uma captura de tela mostrando como configurar o CI/CD usando as Ações do GitHub.

Etapa 8: Na página Centro de Implantação:

  1. Selecione Registos. Uma execução de implantação já foi iniciada.
  2. No item de log para a execução da implantação, selecione Criar/Implantar Logs.

Uma captura de tela mostrando como abrir logs de implantação no centro de implantação.

Etapa 9: Você é levado ao repositório do GitHub e vê que a ação do GitHub está em execução. O arquivo de fluxo de trabalho define dois estágios separados, build e deploy. Aguarde até que a execução do GitHub mostre um status de Concluído. Demora cerca de 15 minutos.

Uma captura de tela mostrando uma execução do GitHub em andamento.

4 - Gerar esquema de banco de dados

O assistente de criação coloca o servidor de banco de dados MySQL atrás de um ponto de extremidade privado, para que seja acessível apenas a partir da rede virtual. Como o aplicativo do Serviço de Aplicativo já está integrado à rede virtual, a maneira mais fácil de executar migrações de banco de dados com seu banco de dados é diretamente de dentro do contêiner do Serviço de Aplicativo.

Passo 1: De volta à página Serviço de Aplicativo, no menu à esquerda, selecione SSH.

Uma captura de tela mostrando como abrir o shell SSH para seu aplicativo no portal do Azure.

Passo 2: No terminal SSH:

  1. Execute o cd /home/site/wwwroot. Aqui estão todos os seus arquivos implantados.
  2. Execute o php artisan migrate --force. Se for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao banco de dados MySQL. Somente as alterações nos /home arquivos podem persistir além das reinicializações do aplicativo. As mudanças fora do /home não são persistentes.

Uma captura de tela mostrando os comandos a serem executados no shell SSH e sua saída.

5 - Alterar raiz do site

Em vez disso, o ciclo de vida do aplicativo Laravel começa no diretório /public . O contêiner PHP padrão para o Serviço de Aplicativo usa Nginx, que começa no diretório raiz do aplicativo. Para alterar a raiz do site, você precisa alterar o arquivo de configuração do Nginx no contêiner PHP (/etc/nginx/sites-available/default). Para sua conveniência, o repositório de exemplo contém um arquivo de configuração personalizado chamado padrão. Como observado anteriormente, você não deseja substituir esse arquivo usando o shell SSH, porque a alteração está fora e será perdida após uma reinicialização do /home aplicativo.

Passo 1:

  1. No menu à esquerda, selecione Configuração.
  2. Selecione a guia Configurações gerais .

Uma captura de tela mostrando como abrir a guia de configurações gerais na página de configuração do Serviço de Aplicativo.

Passo 2: No separador Definições gerais:

  1. Na caixa Comando de inicialização , digite o seguinte comando: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.
  2. Selecione Guardar. O comando substitui o arquivo de configuração do Nginx no contêiner PHP e reinicia o Nginx. Essa configuração garante que a mesma alteração seja feita no contêiner sempre que ele for iniciado.

Uma captura de tela mostrando como configurar um comando de inicialização no Serviço de Aplicativo.

6 - Navegue até o aplicativo

Etapa 1: Na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Visão geral.
  2. Selecione o URL do seu aplicativo. Você também pode navegar diretamente para https://<app-name>.azurewebsites.net.

Uma captura de tela mostrando como iniciar um Serviço de Aplicativo a partir do portal do Azure.

Passo 2: Adicione algumas tarefas à lista. Parabéns, você está executando um aplicativo PHP seguro orientado por dados no Serviço de Aplicativo do Azure.

Uma captura de tela do aplicativo Laravel em execução no Serviço de Aplicativo.

Gorjeta

O aplicativo de exemplo implementa o padrão cache-side . Quando você recarrega a página depois de fazer alterações de dados, o tempo de resposta na página da Web mostra um tempo muito mais rápido porque está carregando os dados do cache em vez do banco de dados.

7 - Logs de diagnóstico de fluxo

O Serviço de Aplicativo do Azure captura todas as mensagens registradas no console para ajudá-lo a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo gera mensagens de log do console em cada um de seus pontos de extremidade para demonstrar esse recurso. Por padrão, a funcionalidade de registro em log do Laravel (por exemplo, Log::info()) produz saídas para um arquivo local. Sua LOG_CHANNEL configuração de aplicativo anterior torna as entradas de log acessíveis a partir do fluxo de log do Serviço de Aplicativo.

Etapa 1: Na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Logs do Serviço de Aplicativo.
  2. Em Registo de aplicações, selecione Sistema de ficheiros.

Uma captura de tela mostrando como habilitar logs nativos no Serviço de Aplicativo no portal do Azure.

Passo 2: No menu à esquerda, selecione Log stream. Você vê os logs do seu aplicativo, incluindo logs da plataforma e logs de dentro do contêiner.

Uma captura de tela mostrando como exibir o fluxo de log no portal do Azure.

Clean up resources (Limpar recursos)

Quando terminar, pode eliminar todos os recursos da sua subscrição do Azure eliminando o grupo de recursos.

Etapa 1: Na barra de pesquisa na parte superior do portal do Azure:

  1. Insira o nome do grupo de recursos.
  2. Selecione o grupo de recursos.

Uma captura de tela mostrando como pesquisar e navegar para um grupo de recursos no portal do Azure.

Etapa 2: na página do grupo de recursos, selecione Excluir grupo de recursos.

Uma captura de tela mostrando o local do botão Excluir Grupo de Recursos no portal do Azure.

Passo 3:

  1. Introduza o nome do grupo de recursos para confirmar a sua eliminação.
  2. Selecione Eliminar.

Uma captura de tela da caixa de diálogo de confirmação para excluir um grupo de recursos no portal do Azure. :

Perguntas mais frequentes

Quanto custa esta configuração?

O preço dos recursos de criação é o seguinte:

  • O plano do Serviço de Aplicativo é criado na camada Básica e pode ser dimensionado para cima ou para baixo. Consulte Preços do Serviço de Aplicativo.
  • O servidor flexível MySQL é criado na camada B1ms e pode ser dimensionado para cima ou para baixo. Com uma conta gratuita do Azure, o nível B1ms é gratuito por 12 meses, até os limites mensais. Consulte Banco de Dados do Azure para obter preços do MySQL.
  • O Cache Redis do Azure é criado na camada Básica com o tamanho mínimo do cache. Há um pequeno custo associado a este nível. Você pode dimensioná-lo para níveis de desempenho mais altos para maior disponibilidade, clustering e outros recursos. Consulte Preços do Cache do Azure para Redis.
  • A rede virtual não incorre em cobrança, a menos que você configure uma funcionalidade extra, como emparelhamento. Consulte Preços da Rede Virtual do Azure.
  • A zona DNS privada incorre em uma pequena cobrança. Consulte Preços do DNS do Azure.

Como faço para me conectar ao banco de dados MySQL que está protegido atrás da rede virtual com outras ferramentas?

  • Para acesso básico a partir de uma ferramenta de linha de comando, você pode executar mysql a partir do terminal SSH do aplicativo.
  • Para se conectar a partir de uma ferramenta de desktop como o MySQL Workbench, sua máquina deve estar dentro da rede virtual. Por exemplo, pode ser uma VM do Azure conectada a uma das sub-redes ou uma máquina em uma rede local que tenha uma conexão VPN site a site com a rede virtual do Azure.
  • Você também pode integrar o Azure Cloud Shell à rede virtual.

Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?

Tome o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo como exemplo, cada git push um inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório GitHub, você faz com que as atualizações desejadas o enviem para o GitHub. Por exemplo:

git add .
git commit -m "<some-message>"
git push origin main

Por que a implantação do GitHub Actions é tão lenta?

O arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo define a execução de dois trabalhos de compilação e implantação. Como cada trabalho é executado em seu próprio ambiente limpo, o arquivo de fluxo de trabalho garante que o deploy trabalho tenha acesso aos arquivos do build trabalho:

A maior parte do tempo gasto pelo processo de dois trabalhos é gasto carregando e baixando artefatos. Se desejar, você pode simplificar o arquivo de fluxo de trabalho combinando os dois trabalhos em um, o que elimina a necessidade das etapas de upload e download.

Próximos passos

Avance para o próximo tutorial para saber como proteger seu aplicativo com um domínio e certificado personalizados.

Ou confira outros recursos: