Tutorial: Criar um PHP (Laravel) e um Banco de Dados do Azure para MySQL - Aplicativo de Servidor Flexível no Serviço de Aplicativo do Azure

APLICA-SE A: Banco de Dados do Azure para MySQL - Servidor Flexível

O Serviço de Aplicativo do Azure fornece um serviço de hospedagem na Web altamente escalável e auto-corrigido usando o sistema operacional Linux. 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). Quando terminar, você terá um aplicativo Laravel em execução no Serviço de Aplicativo do Azure no Linux.

Screenshot of the Azure app example titled Task List showing new tasks added.

Neste tutorial, irá aprender a:

  • Criar um aplicativo PHP e MySQL seguro por padrão no Azure
  • Configurar segredos de conexão para o MySQL usando as configurações do aplicativo
  • Implantar código de aplicativo usando ações do GitHub
  • Atualizar e reimplementar a aplicação
  • Executar migrações de banco de dados com segurança
  • Transmitir os registos de diagnóstico em fluxo a partir do Azure
  • Gerir a aplicação no portal do Azure

Pré-requisitos

Aplicação de exemplo

Para acompanhar este tutorial, clone ou baixe o aplicativo 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, defina as configurações do banco de dados (como DB_DATABASE, DB_USERNAMEe DB_PASSWORD) usando as configurações em seu Banco de Dados do Azure local para o banco de dados do servidor flexível MySQL. Você precisa de uma instância de servidor flexível do Banco de Dados do Azure para 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 Banco de Dados do Azure para recursos de servidor flexíveis do 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 de servidor flexível 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.

Instruções Captura de ecrã
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.
A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.
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.0.

    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.

  5. Observe o nome do banco de dados gerado para você (<app-name-database>). Precisará dele mais tarde.

  6. Clique em Rever + criar.

Após a conclusão da validação, clique em Criar.
A screenshot showing how to configure a new app and database in the Web App + Database wizard.
A implantação leva alguns minutos para ser concluída e cria os seguintes recursos:
  • 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 P1v2 é 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.
  • Banco de Dados do Azure para MySQL - Servidor Flexível → Acessível somente a partir da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
  • Zona DNS privada → Permite a resolução DNS do servidor de banco de dados MySQL na rede virtual.
Quando a implantação for concluída, clique no botão Ir para o recurso . Você é levado diretamente para o aplicativo do Serviço de Aplicativo.
A screenshot showing the form to fill out to create a web app in Azure.

2 - Configurar a conectividade do banco de dados

O assistente de criação gerou configurações de aplicativo para você usar para se conectar ao banco de dados, mas não em um formato que ainda seja utilizável para seu código. Nesta etapa, você edita e atualiza as configurações do aplicativo para o formato que seu aplicativo precisa.

Instruções Captura de ecrã
Na página Serviço de Aplicativo, no menu à esquerda, selecione Configuração. A screenshot showing how to open the configuration page in App Service.
Na guia Configurações do aplicativo da página Configuração, para cada uma das configurações a seguir, clique em Editar, atualize o campo Nome com novos valores e clique em OK.
Nome Atual Novo nome
AZURE_MYSQL_DBNAME DB_DATABASE
AZURE_MYSQL_HOST DB_HOST
AZURE_MYSQL_USERNAME DB_USERNAME
AZURE_MYSQL_PASSWORD DB_PASSWORD
A screenshot showing how to see the autogenerated connection string.
Crie uma nova MYSQL_ATTR_SSL_CA configuração de banco de dados:
  1. Clique em Nova configuração do aplicativo.

  2. No campo Nome, digite MYSQL_ATTR_SSL_CA.

  3. No campo Valor, digite /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem.

    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.

  4. Clique em OK.

A screenshot showing how to create an app setting.
Crie as seguintes configurações extras do aplicativo seguindo as mesmas etapas e clique em Salvar.
  • APP_DEBUG: Use true como o valor. Esta é uma variável de depuração Laravel.

  • APP_KEY: Use base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= como o valor. Esta é uma variável de encriptação Laravel.

    Importante

    Este 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.

A screenshot showing all the required app settings in the configuration page.

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 iniciará 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ê.

Instruções Captura de ecrã
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. Clique em Bifurcação.

  4. Clique em Criar bifurcação.

A screenshot showing how to create a fork of the sample GitHub repository.
Na página GitHub, abra o Visual Studio Code no navegador pressionando a . tecla . A screenshot showing how to open the Visual Studio Code browser experience in GitHub.
No Visual Studio Code no navegador, abra config/database.php no explorador. mysql Na conexão, veja que as configurações do aplicativo que você criou anteriormente para a conexão MySQL já são usadas (DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD, MYSQL_ATTR_SSL_CA). A screenshot showing Visual Studio Code in the browser and an opened file.
De volta à página Serviço de Aplicativo, no menu à esquerda, selecione Central de Implantação. A screenshot showing how to open the deployment center in App Service.
Na página Centro de Implementaçã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-tasks.

  5. Em Ramo, selecione principal.

  6. No menu superior, clique em Salvar.

O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub selecionado, no .github/workflows diretório.
A screenshot showing how to configure CI/CD using GitHub Actions.
Na página Centro de Implementação:
  1. Selecionar 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.

    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.

A screenshot showing how to open deployment logs in the deployment center.
Para fazer alterações no seu código, vá para Visual Studio Code no navegador:
  1. Selecione a extensão Controle do código-fonte.

  2. Ao lado do arquivo alterado, por exemplo , database.php, selecione + para preparar as alterações.

  3. Na caixa de texto, digite uma mensagem de confirmação, por exemplo add certificate.

  4. Selecione a marca de seleção para confirmar e enviar por push para o GitHub.

Se você voltar para a página Centro de Implantação, verá uma nova entrada de log porque outra execução foi iniciada. Aguarde a conclusão da execução. Demora cerca de 15 minutos.

Gorjeta

A ação do GitHub é definida pelo arquivo no repositório do GitHub, em .github/workflow. Você pode torná-lo mais rápido personalizando o arquivo.

A screenshot showing how to commit your changes in the Visual Studio Code browser experience.

4 - Gerar esquema de banco de dados

O assistente de criação coloca a instância de servidor flexível do Banco de Dados do Azure para 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.

Instruções Captura de ecrã
Na página Serviço de Aplicativo:
  1. No menu à esquerda, selecione SSH.

  2. Selecione Ir.

Uma sessão SSH com o contêiner do Serviço de Aplicativo é aberta no navegador. Se desejar, você pode navegar diretamente para em https://<app-name>.scm.azurewebsites.net/webssh/host vez disso.
A screenshot showing how to open the SSH shell for your app from the Azure portal.
No terminal SSH:
  1. CD para a raiz do código do seu aplicativo:

    cd /home/site/wwwroot
    
  2. Execute migrações de banco de dados a partir da raiz do aplicativo.

    php artisan migrate --force
    

    Nota

    Somente as alterações nos /home arquivos podem persistir além das reinicializações do aplicativo. As alterações fora do /home não são persistentes.

A screenshot showing the commands to run in the SSH shell and their output.

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 8.0 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 8.0 (/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 suas alterações serão perdidas após a reinicialização de um aplicativo.

Instruções Captura de ecrã
Na página Serviço de Aplicativo:
  1. No menu à esquerda, selecione Configuração.

  2. Selecione a guia Configurações gerais .

A screenshot showing how to open the general settings tab in the configuration page of App Service.
Na guia Configuraçõ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.

    Ele substitui o arquivo de configuração do Nginx no contêiner PHP 8.0 e reinicia o Nginx. Essa configuração garante que essa alteração seja feita no contêiner sempre que ele for iniciado.

  2. Selecione Guardar.

A screenshot showing how to configure a startup command in App Service.

6 - Navegue até o aplicativo

Instruções Captura de ecrã
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.

A screenshot showing how to launch an App Service from the Azure portal.
Adicione algumas tarefas à lista. Parabéns, você está executando um aplicativo PHP orientado por dados no Serviço de Aplicativo do Azure. A screenshot of the Laravel app running in App Service.

7 - Logs de diagnóstico de fluxo

Instruções Captura de ecrã
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.

A screenshot showing how to enable native logs in App Service in the Azure portal.
No menu à esquerda, clique em Fluxo de log. Você vê os logs do seu aplicativo, incluindo logs da plataforma e logs de dentro do contêiner. A screenshot showing how to view the log stream in the Azure portal.

Clean up resources (Limpar recursos)

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

Instruções Captura de ecrã
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.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.
Na página do grupo de recursos, clique em Excluir grupo de recursos. A screenshot showing the location of the Delete Resource Group button in the Azure portal.
  1. Introduza o nome do grupo de recursos para confirmar a sua eliminação.

  2. Clique em Eliminar.

A screenshot of the confirmation dialog for deleting a resource group in the Azure portal.

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 Premium V2 e pode ser dimensionado para cima ou para baixo. Consulte Preços do Serviço de Aplicativo.
  • A instância de servidor flexível do Banco de Dados do Azure para MySQL é criada na camada B1ms e pode ser dimensionada 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 preços flexíveis do servidor MySQL.
  • 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 a um banco de dados de servidor flexível do Banco de Dados do Azure para MySQL protegido por trás de uma rede virtual?

Para se conectar a um banco de dados de servidor flexível do Banco de Dados do Azure para MySQL, você pode usar vários métodos com base nas ferramentas e ambientes à sua disposição:

  • Acesso à ferramenta de linha de comando:
    • Use o mysql comando do terminal SSH do aplicativo para acesso básico.
  • Ferramentas de desktop (por exemplo, MySQL Workbench):
    • Usando o túnel SSH com a CLI do Azure:
      • Crie uma sessão SSH para o aplicativo Web usando a CLI do Azure.
      • Use a sessão SSH para encapsular o tráfego para o MySQL.
    • Usando VPN site a site ou VM do Azure:
      • Sua máquina deve fazer parte da rede virtual.
      • Considere usar:
        • Uma VM do Azure vinculada a uma das sub-redes.
        • Uma máquina em uma rede local que tem uma conexão VPN site a site com a rede virtual do Azure.
  • Integração do Azure Cloud Shell:

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.

Resumo

Neste tutorial, ficou a saber como:

  • Criar um PHP seguro por padrão e um Banco de Dados do Azure para o aplicativo de servidor flexível MySQL no Azure
  • Configurar segredos de conexão ao Banco de Dados do Azure para servidor flexível MySQL usando as configurações do aplicativo
  • Implantar código de aplicativo usando ações do GitHub
  • Atualizar e reimplementar a aplicação
  • Executar migrações de banco de dados com segurança
  • Transmitir os registos de diagnóstico em fluxo a partir do Azure
  • Gerir a aplicação no portal do Azure

Próximos passos