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.
