Сначала создайте папку в директории Linux, например myweb. При создании каталога не забудьте назначить права доступа, по умолчанию достаточно значения 0755. Права 0755 соответствуют режиму rwxr-xr-x:
Другие пользователи: чтение, выполнение (r-x)
Владелец (вы): чтение, запись, выполнение (rwx)
Группа: чтение, выполнение (r-x)
Затем опубликуйте приложение в Visual Studio: сначала соберите проект в режиме Release, после чего щелкните правой кнопкой по проекту и выберите «Опубликовать». После успешной публикации скопируйте все файлы из каталога публикации в созданную ранее папку myweb через FTP-клиент.
cd /usr/myweb
После этого выполните следующую команду для запуска программы в фоновом режиме — это означает, что приложение не закроется, даже если вы закроете окно удаленного подключения к Linux.
sudo nohup dotnet yourprogramname.dll &Code language: CSS (css)
Ключевой элемент здесь — символ & в конце команды. Без него программа запустится в переднем плане и остановится при закрытии терминала или нажатии сочетания клавиш Ctrl + C.
Пример выполнения команды: sudo nohup dotnet WebSite.dll &
Важное примечание
Перед публикацией настроите порт. Откройте файл appsettings.json вашего .NET MVC приложения.
Добавьте следующую конфигурацию как образец:
{
"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)
Данная конфигурация разрешает доступ с любого IP-адреса по порту 8080. После этого вы можете настроить обратный прокси Nginx, что позволит обслуживать несколько доменов на одном сервере Linux.
Далее откройте порт в брандмауэре, иначе доступ будет невозможен. Если вы используете Nginx как обратный прокси, внешний доступ к порту не требуется — используйте такую конфигурацию:
{
"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)
В этом случае приложение будет доступно только по локальному IP-адресу, внешние подключения к порту не требуются.
Конечная цель — открывать приложение по адресу abc.com/hello.
Запустите приложение командой sudo nohup dotnet WebSite.dll &
Проверить, запустилось ли приложение, можно командой: ps -aux | grep WebSite.dll
Если в выводе отобразится список процессов с указанием порта — запуск выполнен успешно.
Настройка обратного прокси Nginx (шаг можно пропустить, если он не нужен)
Если Nginx установлен, основной конфигурационный файл обычно находится по пути /etc/nginx/nginx.conf
Отредактируйте файл /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 _;
# Основной сайт
location / {
try_files $uri $uri/ =404;
}
# ✅ Важно: перенаправление пути /hello на .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)
Перезапустите Nginx
sudo nginx -t
sudo systemctl restart nginx
Перезапустите .NET MVC приложение
Сначала найдите запущенный процесс командой ps -aux | grep WebSite.dll, запомните его PID (первое число в строке с sudo xxxxx &)
Выполните команду kill [PID] для остановки процесса .NET MVC.
Запустите приложение заново командой: sudo nohup dotnet ИмяПроекта.dll —urls http://127.0.0.1:8080 > /dev/null 2>&1 &
Проверьте работоспособность
Перезапуск Nginx
Выполните команду в консоли bash:
Запуск:
sudo systemctl restart nginx
.NET прослушивает порт 8080
Проверьте, работает ли приложение .NET, командой в bash:
Запуск:
curl http://127.0.0.1:8080
Code language: JavaScript (javascript)
Если в консоль выведется код HTML — приложение работает корректно.