Развертывание .NET 6 MVC на Linux

Создайте папку на вашем 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-код, значит приложение работает корректно.

Опубликовано в рубрике .NET

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *