Usando a Digital Ocean, criamos uma VM CentOS 8, limpa, sem nenhum complemento.
Para acesso ao servidor criado, utilizaremos o PuTTY, um terminal com suporte a SSH que pode ser baixado em https://www.putty.org/.
Acessar PuTTY e em Host informar “root@IP_DO_SERVIDOR”. O IP do servidor será o fornecido pelo provedor de serviços (no nosso caso, Digital Ocean).
Ao informar a senha, estaremos logados e executaremos o primeiro comando, que será para atualização do sistema operacional (obtendo todos os updates disponíveis):
# yum update
Confirme com a letra Y sempre que solicitado.
Reinicie a VM com o seguinte comando:
# reboot
Alguns segundos depois, assim que a VM reiniciar, efetue novamente o processo de autenticação.
O próximo comando será para instalar o .Net Core 3.1 (o mais recente no momento desse post). Apenas a instalação do runtime (# dnf install aspnetcore-runtime-3.1 ) do framework é o suficiente para a execução das aplicações. Porém, optei por instalar o SDK (que já engloba o runtim), me dando a opção de criar aplicações para testes caso necessário:
# dnf install dotnet-sdk-3.1
Após a instalação, podemos executar o seguinte comando para verificar o funcionamento do dotnet e os pacotes instalados:
# dotnet –info
Após a instalação, executaremos a instalação do apache:
# yum -y install httpd mod_ssl
O comando whereis httpd pode ser útil para se identificar os diretórios onde o apache foi instalado e onde estão localizadas suas configurações.
Por padrão, os arquivos de configuração das aplicações rodadas pelo apache ficam no diretório /etc/httpd/conf.d/ e é onde iremos colocar o arquivo de configuração da nossa aplicação.
Como sugestão, utilize o editor nano, que pode ser instalado com o seguinte comando:
# sudo yum install -y nano
Para facilitar utilize o seguinte comando para entrar no diretório de configuração:
# cd /etc/httpd/conf.d/
O nome do arquivo de configurações será netcore-aplicacao.conf e será iniciado através do seguinte comando:
# nano netcore-aplicacao.conf
O arquivo de configuração que iremos criar terá a seguinte estrutura:
<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
ServerName www.aplicacao.com
ServerAlias *.aplicacao.com
ErrorLog /var/log/httpd/aplicacao-error.log
CustomLog /var/log/httpd/aplicacao-access.log common
</VirtualHost>
Uma vez editado, o arquivo é salvo precionando CTRL + O, e em seguida dando ENTER. Para sair da edição, basta pressionar CTRL + X.
Com o arquivo criado, vamos executar o seguinte comando para verificar se as informações das configurações foram configuradas corretamente:
# sudo service httpd configtest
Alguns erros que podem ocorrer:
AH00526: relacionado a certificado. Para resolver basta remover o arquivo /etc/httpd/conf.d/ssl.conf.
AH00558: não é exatamente um problema, mas para resolver basta utilizar o editor nano e adicionar a linha ServerName localhost no arquivo /etc/httpd/conf/httpd.conf.
Concluídas as alterações nos arquivos do apache, hora de reiniciá-lo:
# sudo systemctl restart httpd
# sudo systemctl enable httpd
Nesse momento ao acessar o servidor por http seja IP ou domínio já apontando para esse server, já deve ser possível receber a mensagem de Service Unavailable.
O apache já redireciona todas as requisições da porta 80 para o endereço local com porta 5000.
Vamos então criar as configurações necessárias para que a aplicação seja executada na porta 5000 (estamos usando a porta padrão dos projetos Asp.Net Core).
Vamos iniciar a criação do arquivo com o seguinte comando:
# nano /etc/systemd/system/kestrel-aplicacao.service
O arquivo deverá ter uma estrutura similar a isso:
[Unit]
Description=Descrição da aplicação
[Service]
WorkingDirectory=/var/www/aplicacao
ExecStart=/usr/bin/dotnet /var/www/aplicacao/aplicacao.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=aplicacao-log
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
Em seguida, vamos habilitar o serviço, iniciá-lo e verificar o status do serviço, respectivamente com os seguintes comandos:
# systemctl enable kestrel-aplicacao.service
# systemctl start kestrel-aplicacao.service
# systemctl status kestrel-aplicacao.service
Ao executar o comando do status notará um erro (code=exited, status=200/CHDIR) devido a inexistência dos arquivos.
Faça a transferência dos arquivos para o diretório /var/www/aplicacao. Uma forma fácil é utilizando o FileZilla, selecionando o tipo de conexão SFTP, informando o IP, usuário e senha de acesso ao servidor.
Após o envio dos arquivos, basta reiniciar o serviço:
# systemctl restart kestrel-aplicacao.service
PAREI A EDIÇÃO DO POST E CONFIGURAÇÃO DA VM AQUI.
Fonte:
https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-3.1