Implantar .NET 6 MVC no Linux

Primeiro, crie uma pasta no seu servidor Linux, por exemplo com o nome myweb. Certifique-se de configurar corretamente as permissões da pasta; o valor padrão é 0755. O código 0755 corresponde às permissões rwxr-xr-x:

Outros usuários: Apenas leitura e execução (r-x)

Proprietário (sua conta de usuário): Permissões completas de leitura, gravação e execução (rwx)

Membros do grupo: Apenas leitura e execução (r-x)

Em seguida, publique o projeto no Visual Studio. Altere a configuração de compilação para Release e compile o projeto, depois clique com o botão direito no projeto e selecione Publicar. Após a conclusão da publicação, copie todos os arquivos gerados da pasta de publicação para o diretório myweb criado, usando um cliente FTP.

cd /usr/myweb

Depois de mover os arquivos, execute o comando abaixo para iniciar o aplicativo como processo em segundo plano. Rodar em segundo plano permite que o programa continue funcionando mesmo que você feche a janela de conexão SSH remota do Linux.

sudo nohup dotnet yourprogramname.dll &Code language: CSS (css)

O caractere & no final do comando é essencial para execução em segundo plano. Sem ele, o aplicativo rodará em primeiro plano e será encerrado imediatamente ao fechar o terminal ou pressionar Ctrl + C.

Veja meu exemplo prático: sudo nohup dotnet WebSite.dll &

Observação importante adicional

Configure a porta antes de publicar. Abra o arquivo appsettings.json dentro do seu projeto .NET MVC.

Adicione a configuração abaixo como modelo:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://0.0.0.0:8080"
      }
    }
  }
}Code language: JSON / JSON with Comments (json)

Essa configuração aceita conexões de qualquer endereço IP pela porta 8080. Você pode usar o Nginx como proxy reverso e hospedar vários domínios diferentes em um único servidor Linux.

Se você usar o Nginx apenas como proxy reverso, não é necessário abrir essa porta no firewall. Nesse caso, vincule o serviço apenas ao endereço local da seguinte forma:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://127.0.0.1:8080"
      }
    }
  }
}Code language: JSON / JSON with Comments (json)

Com essa configuração, o aplicativo aceita apenas requisições locais e bloqueia todas as conexões diretas externas.

Meu objetivo final é acessar este aplicativo através do endereço abc.com/hello.

Depois, execute o comando sudo nohup dotnet WebSite.dll & para iniciar o aplicativo.

Verifique se o aplicativo está funcionando corretamente com este comando: ps -aux | grep WebSite.dll

A aparição de uma entrada de processo correspondente confirma que o serviço foi iniciado com sucesso.

Configurar Proxy Reverso do Nginx (pule esta seção se não precisar de proxy)

Se o Nginx já estiver instalado, o arquivo de configuração principal está em /etc/nginx/nginx.conf

Edite o arquivo de configuração do site em /etc/nginx/sites-available/default

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/web/xxxx;
	index index.html index.htm index.nginx-debian.html;
	server_name _;

	# Site principal
	location / {
		try_files $uri $uri/ =404;
	}

	# ✅ Importante: Redirecionar /hello para o .NET
	location /hello {
		proxy_pass http://127.0.0.1:8080;
		proxy_http_version 1.1;
		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;
	}
}Code language: PHP (php)

Reinicie o Nginx após salvar as alterações

sudo nginx -t
sudo systemctl restart nginx

Agora reinicie o aplicativo .NET MVC

Primeiro, localize o processo em execução com ps -aux | grep WebSite.dll e anote o número PID no início da linha correspondente

Use esse PID para encerrar a instância do .NET MVC em execução.

Inicie o serviço novamente com este comando: sudo nohup dotnet 你的项目.dll –urls http://127.0.0.1:8080 > /dev/null 2>&1 &

Agora realize o teste completo

Reiniciar Nginx

Execute o seguinte comando:

bash

Executar:

sudo systemctl restart nginx

.NET escutando na porta 8080

Use o comando abaixo para verificar o status do serviço .NET:

bash

Executar:

curl http://127.0.0.1:8080

Se o terminal exibir o código HTML bruto, o aplicativo está funcionando normalmente.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *