Создайте папку на вашем Linux-сервере, например с именем myweb. Не забудьте настроить права доступа к папке; стандартное значение по умолчанию — 0755. Значение 0755 соответствует правам rwxr-xr-x:
Другие пользователи: Только чтение и выполнение (r-x)
Владелец (ваша учётная запись): Полный доступ на чтение, запись и выполнение (rwx)
Члены группы: Только чтение и выполнение (r-x)
Далее опубликуйте проект в Visual Studio. Сначала переключитесь на конфигурацию сборки Release и скомпилируйте проект, затем щёлкните правой кнопкой мыши по проекту и выберите «Опубликовать». После завершения публикации скопируйте все созданные файлы из папки публикации в созданный каталог myweb с помощью FTP-клиента.
cd /usr/myweb
После перемещения файлов выполните команду ниже, чтобы запустить приложение как фоновый процесс. При работе в фоновом режиме программа продолжает работать даже после закрытия окна удаленного SSH-подключения к 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)
При использовании этой конфигурации приложение принимает только локальные запросы и блокирует все прямые внешние подключения.
Моя конечная цель — получить доступ к этому приложению по адресу 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
Используйте этот 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
Если в терминале отобразится исходный HTML-код, значит приложение работает корректно.
