Partilhar via


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

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.

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

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.
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 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. Selecione Rever + criar.

Após a conclusão da validação, selecione Criar.
Captura de tela mostrando 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. 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, selecione o botão Ir para o recurso . Você é levado diretamente para o aplicativo do Serviço de Aplicativo.
Captura de ecrã a mostrar o formulário a preencher para criar uma aplicação Web no 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. Captura de tela mostrando 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, selecione Editar, atualize o campo Nome com novos valores e selecione 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
Captura de tela mostrando como ver a cadeia de conexão gerada automaticamente.
Crie uma nova MYSQL_ATTR_SSL_CA configuração de banco de dados:
  1. Selecione Nova definição da aplicação.

  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. Selecione OK.

Captura de ecrã a mostrar como criar uma definição de aplicação.
Crie as seguintes configurações extras do aplicativo seguindo as mesmas etapas e selecione 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.

Captura de tela mostrando todas as configurações necessárias do aplicativo na página de configuração.

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. Selecionar Bifurcação.

  4. Selecione Criar bifurcação.

Captura de tela mostrando como criar uma bifurcação do repositório GitHub de exemplo.
Na página GitHub, abra o Visual Studio Code no navegador pressionando a . tecla . Captura de tela mostrando como abrir a experiência do navegador Visual Studio Code no 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). Captura de tela mostrando o código do Visual Studio no navegador e um arquivo aberto.
De volta à página Serviço de Aplicativo, no menu à esquerda, selecione Central de Implantação. Captura de tela mostrando como abrir o centro de implantação no Serviço de Aplicativo.
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, selecione Salvar.

O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub selecionado, no .github/workflows diretório.
Captura de tela mostrando como configurar o CI/CD usando as Ações do GitHub.
Na página Centro de Implementaçã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.

    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.

Captura de tela mostrando como abrir logs de implantação no centro de implantação.
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.

Captura de tela mostrando como confirmar suas alterações na experiência do navegador 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, 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.
Captura de ecrã a mostrar como abrir a shell SSH para a sua aplicação a partir do portal do Azure.
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.

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

Captura de tela mostrando como abrir a guia de configurações gerais na página de configuração do Serviço de Aplicativo.
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.

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

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.

Captura de ecrã a mostrar como iniciar um Serviço de Aplicação a partir do portal do Azure.
Adicione algumas tarefas à lista. Parabéns, você está executando um aplicativo PHP orientado por dados no Serviço de Aplicativo do Azure. Captura de ecrã da aplicação Laravel em execução no Serviço de Aplicações.

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.

Captura de tela mostrando como habilitar logs nativos no Serviço de Aplicativo no portal do Azure.
No menu à esquerda, selecione Fluxo de log. Você vê os logs do seu aplicativo, incluindo logs da plataforma e logs de dentro do contêiner. Captura de ecrã a mostrar como ver o fluxo de registo 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.

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.

Captura de ecrã a mostrar como procurar e navegar para um grupo de recursos no portal do Azure.
Na página do grupo de recursos, selecione Excluir grupo de recursos. Captura de ecrã a mostrar a localização do botão Eliminar Grupo de Recursos no portal do Azure.
  1. Introduza o nome do grupo de recursos para confirmar a sua eliminação.

  2. Selecione Eliminar.

Captura de ecrã da caixa de diálogo de confirmação para eliminar 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 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