O .NET Core é uma estrutura de desenvolvimento multiplataforma de código aberto redesenhada, mantida pela Microsoft e pela crescente comunidade .NET. Com a ajuda do .NET Core, os desenvolvedores podem criar facilmente aplicativos modernos de alto desempenho em todos os tipos de plataformas.

Neste artigo, mostrarei como instalar o .NET Core em uma instância do servidor CentOS 7 e, em seguida, implantar um aplicativo Web do .NET Core funcional.

Pré-requisitos

  • Uma nova instância do servidor Vultr CentOS 7 x64. Digamos que seu endereço IP seja 203.0.113.1.
  • Um usuário sudo .
  • A instância do servidor foi atualizada para o status estável mais recente usando o repositório EPEL YUM .

Adicione o feed do produto .NET ao sistema

Como uma estrutura de desenvolvimento de plataforma cruzada, o .NET Core fornece binários pré-compilados para vários sistemas operacionais. No CentOS 7, você pode configurar um repositório .NET YUM assinado oficialmente executando os seguintes comandos como usuário sudo:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

Instale o .NET SDK mais recente usando o YUM

Com o repositório do .NET YUM, instale o .NET SDK mais recente, incluindo o .NET Core e outras dependências, em sua máquina:

sudo yum update -y
sudo yum install libunwind libicu -y
sudo yum install dotnet-sdk-2.1.4 -y

Para confirmar o resultado, você pode criar e executar um aplicativo .NET Core de demonstração “Hello World”:

cd
dotnet new console -o helloworldApp
cd helloworldApp
dotnet run

O dotnet new console -o helloworldAppcomando criará um diretório nomeado helloworldAppem seu diretório pessoal e, em seguida, usará o consolemodelo para gerar arquivos de aplicativos no diretório recém-criado.

Ao executar o dotnet runcomando, você verá a Hello World!mensagem no console.

Criar um aplicativo Web .NET Core

Agora, criar e executar um aplicativo .NET Núcleo do tipo razor. Lembre-se de que “Razor Pages” é um novo modelo de aplicativo do .NET Core MVC projetado para cenários orientados a página:

cd
dotnet new razor -o myfirstwebapp
cd myfirstwebapp
dotnet run

Ao executar o dotnet runcomando acima, você vai iniciar um aplicativo web escuta .NET Núcleo em: http://localhost:5000.

Se você deseja confirmar que o aplicativo Web está em funcionamento, embora esteja em uma instância de servidor sem GUI, ainda é possível abrir um novo console de terminal e entrada curl http://localhost:5000para visualizar o código-fonte da página inicial do aplicativo Web.

Depois, você pode pressionar CTRL+ Cpara desligar o aplicativo Web .NET Core.

Para materializar seu aplicativo da web, você precisa editar arquivos no diretório do aplicativo. Você pode aprender mais detalhes na página oficial do documento .NET .

Concluindo todas as tarefas de desenvolvimento, é possível usar os seguintes comandos para publicar seu aplicativo da web:

cd ~/myfirstwebapp
dotnet publish

Você pode encontrar o aplicativo Web publicado no ~/myfirstwebapp/bin/Debug/netcoreapp2.0diretório

(Opcional): supervisor de instalação para manter seu aplicativo Web .NET Core on-line

As falhas do processo acontecem. Para manter seu aplicativo Web on-line, é uma boa idéia ter uma ferramenta de gerenciamento de processos, como Supervisor, para monitorar e reiniciar os processos travados de aplicativos Web.

No CentOS 7, você pode instalar o Supervisor usando YUM:

sudo yum install supervisor -y

Em seguida, você precisa configurar um arquivo de configuração dedicado do Supervisor para seu aplicativo Web:

cd /etc/supervisord.d
sudo vi myfirstwebapp.conf

Preencha o arquivo:

[program:myfirstwebapp]
command=dotnet myfirstwebapp.dll
directory=/home/sudouser/myfirstwebapp/bin/Debug/netcoreapp2.0/
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=1
stderr_logfile=/var/log/myfirstwebapp.err.log
stdout_logfile=/var/log/myfirstwebapp.out.log

Salve e saia:

:wq!

Em seguida, você precisa modificar o supervisordarquivo de configuração padrão para incluir o arquivo de configuração que criamos:

sudo cp /etc/supervisord.conf /etc/supervisord.conf.bak
sudo vi /etc/supervisord.conf

Encontre a última linha:

files = supervisord.d/*.ini

Substitua-o:

files = supervisord.d/*.conf

Salve e saia:

:wq!

Inicie o Supervisor e configure-o para iniciar automaticamente na inicialização do sistema:

sudo systemctl start supervisord.service
sudo systemctl enable supervisord.service

Carregue as novas configurações do Supervisor:

sudo supervisorctl reread
sudo supervisorctl update

Agora, você pode usar o seguinte comando para mostrar o status do aplicativo:

sudo supervisorctl status

A saída terá a seguinte aparência:

myfirstwebapp                    RUNNING   pid 3925, uptime 0:08:45

Em seguida, você pode tentar matar o processo do aplicativo, especificando o pid 3925:

sudo kill -s 9 3925

Aguarde um pouco e verifique o status novamente:

sudo supervisorctl status

Desta vez, a saída indicará que o aplicativo foi interrompido e iniciado automaticamente:

myfirstwebapp                    RUNNING   pid 3925, uptime 0:00:06

(Opcional): instale o Nginx como um proxy reverso

Para facilitar o acesso dos visitantes, você pode instalar o Nginx como um proxy reverso para passar o tráfego da Web para a porta 5000.

Instale o Nginx usando o YUM:

sudo yum install nginx -y

Edite o arquivo de configuração padrão do Nginx da seguinte maneira:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo vi /etc/nginx/nginx.conf

Encontre o seguinte segmento dentro do http {}segmento:

location / {
}

Insira seis linhas de configurações de proxy reverso entre as chaves, como mostrado abaixo:

location / {
proxy_pass http://127.0.0.1:5000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

Salve e saia:

:wq!

Inicie o serviço Nginx e defina-o para iniciar na inicialização do sistema:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Configurar regras de firewall

Para que os visitantes possam acessar o aplicativo Web .NET Core nas portas 80e 443, é necessário modificar as regras de firewall, conforme mostrado abaixo:

sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload

Isso completa a configuração do aplicativo. Agora você está pronto para navegar no seu aplicativo Web .NET Core em http://203.0.113.1.