Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: .NET 8 e superior
Este artigo apresenta como criar e configurar aplicativos ASP.NET Core no Linux.
Pré-requisitos
Para seguir os exercícios nesta parte, você deve ter um SDK do .NET instalado. Para instalar o SDK, consulte as instruções de instalação na Parte 1, conforme necessário.
Objetivo desta parte
Saiba como criar um aplicativo Web do ASP.NET Core usando a CLI (interface de linha de comando) do .NET no Linux e como publicar o aplicativo no diretório /var. Ao aprender esses conceitos, você praticará algumas tarefas básicas, como trabalhar com arquivos e pastas e executar comandos como um usuário privilegiado. Você também aprenderá a editar arquivos usando o editor de texto vi no Linux.
CLI do .NET
De acordo com esta documentação da CLI do .NET, a CLI do .NET é uma cadeia de ferramentas multiplataforma para desenvolver, criar, executar e publicar aplicativos .NET. A CLI do .NET é instalada junto com o SDK do .NET.
Esses treinamentos usam o dotnet
comando com frequência. Este comando é poderoso e tem duas funções principais:
- Ele fornece comandos para trabalhar em projetos .NET. Por exemplo,
dotnet build
compila um projeto. Cada comando define suas próprias opções e argumentos. Todos os comandos suportam a--help
opção de imprimir breves explicações sobre como usar o comando. - Ele executa aplicativos .NET.
Você usará o dotnet new
comando para criar seu primeiro projeto principal do ASP.NET no Linux. Este comando obtém o tipo do projeto como um argumento. Os tipos de projeto são explicados neste documento. Você também pode exibir uma lista de tipos executando dotnet new
sem um parâmetro. Os tipos de projeto relacionados à Web são destacados em amarelo na captura de tela a seguir.
Criar um aplicativo Web ASP.NET Core usando o SDK
Você usará a CLI do .NET para criar seu primeiro aplicativo Web usando o seguinte comando:
dotnet new <template_type> -n <project_name> -o <output_directory>
Essas regras se aplicam quando você usa dotnet new
:
- O comando cria os arquivos de projeto no diretório de saída. Se você omitir o
-o <output_directory>
segmento, o projeto será criado no diretório atual. Você sempre pode usar o-o
interruptor. - Se a pasta não existir, o comando a criará.
- Se você omitir o
-n <project_name>
segmento, o nome do projeto será igual ao nome do diretório.
Você pode encontrar nomes criativos para o diretório e o próprio projeto. No entanto, lembre-se de que o Linux diferencia maiúsculas de minúsculas. Para este exercício, use o mais conservador AspNetCoreDemo
como o nome do projeto e crie-o no firstwebapp
diretório.
Para criar o projeto, execute o seguinte comando:
dotnet new webapp -n AspNetCoreDemo -o firstwebapp
Examine a saída para ver os nomes dos diretórios e projetos. A captura de tela a seguir também lista o conteúdo do diretório de saída. Você deve estar familiarizado com a estrutura de diretórios se já tiver criado um aplicativo Web ASP.NET Core no Windows antes.
Você criou seu primeiro aplicativo. A próxima tarefa será executá-lo. Altere o diretório para a pasta do projeto e execute dotnet run
o .
Observação
Os seguintes itens nesta captura de tela:
- Seu aplicativo Web escuta na porta 5001 para solicitações HTTPS e escuta na porta 5000 para solicitações HTTP.
- A raiz de conteúdo está no diretório inicial.
Recomendamos que você não execute o aplicativo em seu diretório inicial. Você o publicará em outro diretório posteriormente, mas deverá testá-lo antes de publicá-lo. Você pode pressionar Ctrl+C para interromper o aplicativo. Mas, por enquanto, mantenha-o em execução e abra uma nova sessão de terminal usando seu método preferido para se conectar à sua máquina virtual Linux. Para este exemplo, você usará o PowerShell novamente.
Testar o site de outro terminal
Em sua nova sessão de terminal, verifique se seu aplicativo está escutando nas portas 5000 e 5001. O Linux tem o mesmo netstat
comando que o Windows. Execute netstat
junto com o -tlp
switch. Você pode se familiarizar com as netstat
opções neste artigo ou pode examinar o arquivo de ajuda executando man netstat
ou info netstat
.
Aqui está a saída do netstat -tlp
comando da segunda sessão de terminal. Ele mostra que o processo AspNetCoreDemo está em execução usando o PID 781 e está escutando nas portas 5000 e 5001 para IPv4 e IPv6.
Você pode usar curl e wget para testar seu site. Ambos os comandos fazem uma chamada HTTP para o lado de destino, mas se comportam de maneira diferente:
-
Curl
é simplesmente uma ferramenta de navegador de linha de comando. Ele faz uma solicitação HTTP para o destino fornecido e mostra apenas a saída simples da resposta HTTP. Por exemplo, ele mostra a marcação de origem HTML para um aplicativo Web. -
Wget
é um downloader HTTP. Ele faz uma solicitação HTTP e baixa o recurso fornecido. Por exemplo, wgethttp://server/file.zip
baixa file.zip ehttp://server
salva no diretório atual.
O wget
comando também nos mostra mais alguns detalhes, como redirecionamento e quaisquer mensagens de erro que você possa receber. Portanto, você pode usá-lo como uma versão primitiva de uma ferramenta de rastreamento HTTP sempre que precisar.
Para obter mais informações sobre a diferença entre curl
e wget
, acesse a página da Web do StackExchange.
Nesta série de treinamento, você costumava wget
baixar o arquivo do gerenciador de pacotes .deb dos servidores da Microsoft antes de instalar o .NET.
Se você executar curl http://localhost
, nada ocorre. Isso provavelmente significa que não há resposta HTTP. Em seguida, você pode executar wget http://localhost
para verificar se mais informações são exibidas ao tentar acessar o site.
Isto é o que ocorre agora:
- Você faz uma solicitação HTTP para
http://localhost:5000
o e se conecta com êxito. Isso significa que o aplicativo está aceitando as conexões na porta 5000. - Você recebe uma resposta HTTP 307 Temporary Redirect do aplicativo que aponta para um local HTTPS seguro:
https://localhost:5001
. - Wget é inteligente o suficiente para seguir este redirecionamento e fazer uma nova solicitação para
https://localhost:5001
. - Você se conecta com sucesso novamente. No entanto,
wget
não confia no certificado SSL. Portanto, a conexão falha.
O wget
comando recomenda que você contorne esse problema usando a --no-check-certificate
opção para se conectar de forma insegura. No entanto, essa abordagem envolve configurações de certificado SSL que estão fora do escopo deste treinamento. Em vez disso, você pode configurar seu aplicativo ASP.NET Core para que ele não redirecione as solicitações HTTP para HTTPS. Se você estiver familiarizado com o desenvolvimento do aplicativo ASP.NET Core (ou apenas com a configuração), edite o arquivo Startup.cs para remover a configuração de redirecionamento.
Edite arquivos usando vi
Você pode usar o editor de texto vi para distribuições Linux para editar todos os tipos de arquivos de texto simples. Você o usará neste treinamento para reconfigurar seu aplicativo.
Você deve fechar seu aplicativo antes de editá-lo. Primeiro feche a sessão de terminal aberto. Em seguida, pressione Ctrl+C para desligar o aplicativo.
Para editar Startup.cs arquivo, execute o seguinte comando:
vi ~/firstwebapp/Startup.cs
Observação
Este comando inicia o editor vi e, em seguida, carrega o arquivo. O atalho ~ (til) refere-se ao diretório inicial em que você criou o projeto. Ou seja, o comando aponta para /home/<YourName>/firstwebapp/Startup.cs.
Pressione a tecla I (Inserir) para ativar o modo de edição. Agora você deve ver -- INSERT -- na parte inferior da linha de comando. Use as teclas de seta para navegar dentro do arquivo. Comente as app.UseHsTs()
linhas ; e app.UseHttpsRedirection()
; adicionando //
no início delas, conforme mostrado na captura de tela a seguir.
Pressione esc para sair do modo de edição, digite :wq! e, em seguida, pressione Enter. Observe que o caractere de dois pontos (:
) significa que você está inserindo um comando, w
significa escrever, q
significa sair e !
força a gravação.
Depois de pressionar Enter, as alterações devem ser salvas. Você pode verificar as alterações executando cat ~/firstwebapp/Startup.cs
. Este comando exibe o conteúdo do arquivo Startup.cs .
Reinicie o aplicativo. Para fazer isso, altere o diretório atual para o ~/firstwebapp
diretório e execute dotnet run
novamente. Em seguida, abra outra sessão de terminal no servidor e execute o curl http://localhost:5000
comando novamente. Desta vez, o comando deve retornar o conteúdo HTML da página inicial.
Agora você executou com êxito seu primeiro ASP.NET Core Web App no Linux.
Implantar o aplicativo no diretório /var
O objetivo principal deste exercício é hospedar seu aplicativo Web atrás de um proxy reverso para que os clientes conectados possam acessar o aplicativo de outro computador usando apenas o nome do host sem o número da porta. Isso é o que você esperaria que ocorresse em cenários do mundo real. Você trabalhará com o Nginx mais tarde para concluir esta tarefa. Mas antes de fazer isso, publique seu aplicativo no diretório /var . Isso ocorre porque recomendamos que você não execute o aplicativo no diretório base de um usuário.
Lembre-se de que o diretório /var é usado para armazenar conteúdo e arquivos de log por vários aplicativos, como Apache e Nginx. Você seguirá essa prática aqui publicando o aplicativo Web recém-criado em /var.
Altere para a pasta do projeto e execute dotnet publish
para criar uma pasta de publicação. Copie essa pasta para o diretório /var .
A captura de tela mostra que o dotnet publish
comando criou arquivos de publicação na pasta ~/firstwebapp/bin/Debug/net5.0/publish/ . Em seguida, o seguinte comando foi usado para copiar todos os arquivos para a pasta /var/firstwebapp/ :
sudo cp -a ~/firstwebapp/bin/Debug/net5.0/publish/ /var/firstwebapp/
Observação
Observe o uso de sudo
antes do comando copy. Você usa isso porque os usuários padrão não têm permissão de gravação no diretório /var . Portanto, você deve executar o comando como um superusuário.
Para executar seu aplicativo de uma pasta publicada, execute o seguinte comando:
dotnet /var/firstwebapp/AspNetCoreDemo.dll
Se desejar, você pode executar esses testes usando os mesmos curl
comandos and wget
. Isso ocorre porque o aplicativo ainda escutará na porta 5000 solicitações HTTP.
Vida útil do processo e próximas etapas
Se o aplicativo exigir tempo de atividade constante, a execução de aplicativos .NET em uma sessão de usuário interativa não será uma boa prática pelos seguintes motivos:
- Se os usuários encerrassem suas sessões, por exemplo, fechando o PuTTY ou o cliente SSH do PowerShell, ou saíssem da sessão, o aplicativo seria desligado.
- Se o processo for encerrado por algum motivo (por exemplo, o processo falha devido a uma exceção sem tratamento), ele não será iniciado automaticamente e deverá ser reiniciado manualmente.
- Se o servidor for reiniciado, o aplicativo não será iniciado automaticamente.
Próximas etapas
Parte 2.2 - Instale o Nginx e configure-o como um servidor proxy reverso
Certifique-se de que o aplicativo Web seja iniciado automaticamente. Instale e configure o Nginx como um proxy reverso para rotear solicitações HTTP feitas para a porta 80 para o aplicativo dotnet (para que os clientes possam se conectar sem precisar fornecer o número da porta).
Aviso de isenção de responsabilidade para informações de terceiros
Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.