Tutorial: Criar um PHP (Laravel) e o aplicativo do Banco de Dados do Azure para MySQL – 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 escalonável e com aplicação automática de patches usando o sistema operacional Linux. Este tutorial mostra como criar um aplicativo PHP seguro em Serviço de Aplicativo do Azure conectado a um banco de dados MySQL (usando o servidor flexível do Banco de Dados do Azure para MySQL). Quando terminar, você terá um aplicativo Laravel em execução no Serviço de Aplicativo do Azure no Linux.

Captura de tela do exemplo de aplicativo do Azure intitulado Lista de Tarefas mostrando novas tarefas adicionadas.

Neste tutorial, você aprenderá como:

  • Criar um aplicativo PHP e MySQL seguro por padrão
  • Configurar segredos de conexão para MySQL usando configurações de aplicativo
  • Implantar o código do aplicativo usando o GitHub Actions
  • Atualizar o aplicativo e reimplantar
  • Execute as migrações de banco de dados com segurança
  • Transmitir logs de diagnóstico do Azure
  • Gerenciar o aplicativo no portal do Azure

Pré-requisitos

Aplicativo 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_USERNAME e DB_PASSWORD) usando as configurações no banco de dados do servidor flexível do Banco de Dados do Azure para MySQL local. Você precisa de uma instância do servidor flexível do Banco de Dados do Azure para MySQL local para executar este exemplo.

  • Na 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 recursos de servidor flexível do Serviço de Aplicativo e do Banco de Dados do Azure para MySQL

Nesta etapa, você criará os recursos do Azure. As etapas usadas neste tutorial criam uma configuração do Serviço de Aplicativo e Banco de Dados do Azure para MySQL – servidor flexível, que é segura por padrão. Para o processo de criação, você especificará:

  • O Nome do aplicativo Web. Esse nome é usado como parte do nome DNS para seu aplicativo Web na forma de https://<app-name>.azurewebsites.net.
  • O Runtime para o aplicativo. É aqui que você seleciona a versão do PHP a ser usada para seu aplicativo.
  • O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos necessários do Azure 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 tela
No portal do Azure:
  1. Insira “banco de dados do aplicativo Web” na caixa de pesquisa na parte superior do portal do Azure.
  2. Selecione o item Web App + Banco de Dados no 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.
Na página Criar aplicativo Web + Banco de dados, preencha o formulário conforme a seguir.
  1. Grupo de recursos → Selecione Criar novo e use o nome msdocs-laravel-mysql-tutorial.

  2. Região → qualquer região do Azure próxima a você.

  3. Nomemsdocs-laravel-mysql-XYZ, em que XYZ são três caracteres aleatórios quaisquer. Esse nome deve ser exclusivo no Azure.

  4. Pilha de runtimePHP 8.0.

    MySQL – Servidor Flexível é 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 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ê (<aplicativo-nome-bancodedados>). Você precisará dela mais tarde.

  6. Clique em Revisar + Criar.

Após a conclusão da validação, clique em Criar.
Uma captura de tela que mostra como configurar um novo aplicativo e banco de dados no assistente Aplicativo Web + Banco de Dados.
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. É criado um plano do Linux na camada P1v2.
  • Serviço de Aplicativo → Representa seu aplicativo e é executado no plano de Serviço de Aplicativo.
  • Rede virtual → Integrada ao aplicativo do Serviço de Aplicativo e isola o tráfego de rede de back-end.
  • Banco de Dados do Azure para MySQL – servidor flexível → Acessível somente da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
  • Zona de DNS privado → habilita a resolução DNS do servidor de banco de dados MySQL na rede virtual.
Após a conclusão da implantação, clique no botão Ir para o recurso. Você será levado diretamente para o aplicativo do Serviço de Aplicativo.
Uma captura de tela mostrando o formulário a ser preenchido para criar um aplicativo Web no Azure.

2 – Configurar a conectividade do banco de dados

O assistente de criação gerou configurações do aplicativo para serem usadas na conexão com o banco de dados, mas não em um formato que seja utilizável para seu código. Nesta etapa, você editará e atualizará as configurações do aplicativo no formato de que seu aplicativo precisa.

Instruções Captura de tela
Na página Serviço de Aplicativo, no menu à esquerda, selecione Configuração. Uma captura de tela que mostra como abrir a página de configuração no Serviço de Aplicativo.
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
Uma captura de tela que mostra como ver a cadeia de conexão gerada automaticamente.
Criar uma nova configuração de banco de dados MYSQL_ATTR_SSL_CA:
  1. Clique em Nova configuração de aplicativo.

  2. No campo Nome, insira MYSQL_ATTR_SSL_CA.

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

    Essa configuração de 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 para maior conveniência.

  4. Clique em OK.

Uma captura de tela que mostra como criar uma configuração de aplicativo.
Crie as seguintes configurações extras de aplicativo seguindo as mesmas etapas e clique em Salvar.
  • APP_DEBUG: use true como o valor. Essa é uma variável de depuração do Laravel.

  • APP_KEY: Use base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= como o valor. Essa é uma variável de criptografia do Laravel.

    Importante

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

Uma captura de tela mostrando todas as configurações de aplicativo necessárias na página de configurações.

3 – Implantar código de exemplo

Nesta etapa, você configurará a implantação do GitHub usando o GitHub Actions. É 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 em seu repositório GitHub iniciará a ação de compilação e implantação. Você fará algumas alterações na base de código com o Visual Studio Code diretamente no navegador e, em seguida, permitirá que o GitHub Actions implante automaticamente para você.

Instruções Captura de tela
Em uma nova janela do navegador:
  1. Entre em sua conta do GitHub.

  2. Navegue até https://github.com/Azure-Samples/laravel-tasks.

  3. Clique em Criar Fork.

  4. Clique em Criar bifurcação.

Uma captura de tela que mostra como criar um fork do repositório do GitHub de exemplo.
Na página do GitHub, abra o Visual Studio Code no navegador pressionando a tecla .. Uma captura de tela que mostra como abrir a experiência de navegador do Visual Studio Code no GitHub.
No Visual Studio Code, no navegador, abra config/database.php no explorer. Na conexão mysql, veja se as configurações de aplicativo que você criou anteriormente para a conexão MySQL já estão sendo usadas (DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD, MYSQL_ATTR_SSL_CA). Uma captura de tela que mostra o Visual Studio Code no navegador e um arquivo aberto.
De volta à página Serviço de Aplicativo, no menu à esquerda, selecione Centro de Implantação. Uma captura de tela que mostra como abrir o Centro de Implantação no Serviço de Aplicativo.
Na página Centro de Implantação:
  1. Em Origem, selecione GitHub. Por padrão, o GitHub Actions é selecionado como o provedor de build.

  2. Entre em 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 Branch, selecione main.

  6. No menu superior, clique em Salvar.

O Serviço de Aplicativo faz commit de um arquivo do fluxo de trabalho no repositório do GitHub selecionado no diretório .github/workflows.
Uma captura de tela que mostra como configurar o CI/CD usando o GitHub Actions.
Na página Centro de Implantação:
  1. Selecione Logs. Uma execução de implantação já foi iniciada.

  2. No item de log para a execução da implantação, selecione Compilar/Implantar Logs.

    Você será levado para o repositório do GitHub e verá que a ação do GitHub está em execução. O arquivo do fluxo de trabalho define dois estágios separados, compilar e implantar.

Uma captura de tela que mostra como abrir logs de implantação no Centro de Implantação.
Para fazer alterações no código, vá para o 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 suas alterações.

  3. Na caixa de texto, digite uma mensagem para o commit, por exemplo add certificate.

  4. Selecione na marca de seleção para fazer commit e enviar por push para o GitHub.

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

Dica

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

Uma captura de tela que mostra como fazer commit de suas alterações na experiência de navegador do Visual Studio Code.

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, portanto, ela só é acessível 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 tela
Na página Serviço de Aplicativo:
  1. No menu à esquerda, selecione SSH.

  2. Selecione Ir.

Uma sessão SSH com seu contêiner do Serviço de Aplicativo será aberta no navegador. Em vez disso, você pode navegar diretamente para https://<app-name>.scm.azurewebsites.net/webssh/host se quiser.
Uma captura de tela que mostra como abrir o shell SSH para seu aplicativo no portal do Azure.
No terminal SSH:
  1. CD na raiz do código do aplicativo:

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

    php artisan migrate --force
    

    Observação

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

Uma captura de tela mostrando os comandos para executar o shell SSH e sua saída.

5 – Alterar a raiz do site

O ciclo de vida do aplicativo Laravel começa no diretório /public. O contêiner padrão do PHP 8.0 para o Serviço de Aplicativo usa o 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 do 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 mencionado anteriormente, você não deseja substituir esse arquivo usando o shell SSH, pois suas alterações serão perdidas após a reinicialização de um aplicativo.

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

  2. Selecione a guia Configurações Gerais.

Uma captura de tela que mostra como abrir a guia Configurações Gerais na página de configurações do Serviço de Aplicativo.
Na guia Configurações Gerais:
  1. Na caixa Comando de Inicialização, insira 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 do 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 Salvar.

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

6 – Navegar até o aplicativo

Instruções Captura de tela
Na página Serviço de Aplicativo:
  1. No menu esquerdo, selecione Visão geral.

  2. Selecione a URL do aplicativo.

    Você também pode navegar diretamente até https://<app-name>.azurewebsites.net.

Captura de tela que mostra como inicializar um Serviço de Aplicativo no portal do Azure.
Adicione algumas tarefas à lista. Parabéns! Você está executando um aplicativo PHP controlado por dados no Serviço de Aplicativo do Azure. Uma captura de tela do aplicativo Laravel executando no Serviço de aplicativo.

7 – Logs de diagnóstico de fluxo

Instruções Captura de tela
Na página Serviço de Aplicativo:
  1. No menu à esquerda, selecione Logs do Serviço de Aplicativo.

  2. Em Log do aplicativo, selecione Sistema de arquivos.

Uma captura de tela mostrando como habilitar logs nativos no Serviço de Aplicativo no portal do Azure.
No menu à esquerda, clique em Fluxo de Logs. Você verá os logs do seu aplicativo, incluindo os logs de plataforma e os logs de dentro do contêiner. Captura de tela mostrando como exibir o fluxo de logs no portal do Azure.

Limpar recursos

Quando tiver terminado, você poderá excluir todos os recursos de sua assinatura do Azure ao excluir o grupo de recursos.

Instruções Captura de tela
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.
Na página de grupo de recursos, clique em Excluir grupo de recursos. Uma captura de tela mostrando o local do botão Excluir Grupo de Recursos no portal do Azure.
  1. Insira o nome do grupo de recursos para confirmar a exclusão.

  2. Clique em Excluir.

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

Perguntas frequentes

Quanto custa essa configuração?

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

Como fazer para me conectar a um banco de dados de servidor flexível do Banco de Dados do Azure para MySQL protegido por uma rede virtual?

Para se conectar a um banco de dados do 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 comando mysql do terminal SSH do aplicativo para acesso básico.
  • Ferramentas de área de trabalho (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 túnel do tráfego para MySQL.
    • Usando VPN site a site ou VM do Azure:
      • Seu computador deve fazer parte da rede virtual.
      • Considere usar:
        • Uma VM do Azure vinculada a uma das sub-redes.
        • Um computador 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 o desenvolvimento de aplicativos local funciona com o GitHub Actions?

Use o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo como exemplo, cada git push inicia uma nova execução de build e implantação. Em um clone local do repositório do GitHub, você faz as atualizações desejadas efetuarem push 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, compilar e implantar. Como cada trabalho é executado em seu próprio ambiente limpo, o arquivo de fluxo de trabalho garante que o trabalho deploy tenha acesso aos arquivos do trabalho build:

A maior parte do tempo gasto pelo processo de dois trabalhos é 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 carregar e baixar.

Resumo

Neste tutorial, você aprendeu a:

  • Criar um aplicativo de servidor flexível do PHP e do Banco de Dados do Azure para MySQL seguro por padrão no Azure
  • Configurar segredos de conexão para o servidor flexível do Banco de Dados do Azure para MySQL usando configurações de aplicativo
  • Implantar o código do aplicativo usando o GitHub Actions
  • Atualizar o aplicativo e reimplantar
  • Execute as migrações de banco de dados com segurança
  • Transmitir logs de diagnóstico do Azure
  • Gerenciar o aplicativo no portal do Azure

Próximas etapas