Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
0 / 0 / 1
Регистрация: 19.12.2017
Сообщений: 4

Несколько приложений ASP.NET Core на одном сервере Linux

11.09.2018, 09:44. Показов 8197. Ответов 8

Студворк — интернет-сервис помощи студентам
Несколько приложений ASP.NET Core на одном сервере Linux
--------------------------------------------------------

Сервер: Ubuntu 18 + nginx + apache
Установлен dotnet для Ubuntu

Создал /etc/nginx/sites-available/domen1.conf:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
    listen        80;
    server_name   domen1 www.domen1;
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}
Создал и запустил сервис /etc/systemd/system/kestrel-ASP-NET-core-myApp1.service:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=myApp1 .NET Core Web API App running on Ubuntu
[Service]
WorkingDirectory=/home/www/ASP.NET.core/myApp1
ExecStart=/usr/bin/dotnet /home/www/ASP.NET.core/myApp1/myApp1.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=dotnet-ASP-NET-core-myApp1
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
---------------------------------------------------------------------
Все работает.
Но когда я хочу добавить еще один сайт на ASP.NET Core
Создал /etc/nginx/sites-available/domen2.conf:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
    listen        80;
    server_name   domen2 www.domen2;
    location / {
        proxy_pass         http://localhost:5010;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}
Создал и запустил сервис /etc/systemd/system/kestrel-ASP-NET-core-myApp2.service:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=myApp2 .NET Core Web API App running on Ubuntu
[Service]
WorkingDirectory=/home/www/ASP.NET.core/myApp2
ExecStart=/usr/bin/dotnet /home/www/ASP.NET.core/myApp2/myApp2.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=dotnet-ASP-NET-core-myApp2
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Второй сайт не работает. Я понимаю, что надо дать какую-то команду на прослушивание порта 5010 - как это сделать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.09.2018, 09:44
Ответы с готовыми решениями:

Deploy ASP.NET CORE MVC приложения на APACHE сервере в облаке Linux ubuntu
Кто сталкивался с развёртыванием CORE на Apache? Какие надстройки нужно сделать ?

Запуск ASP.NET Core совместно с классическим вариантом MVC4 на одном сервере Windows Server 2012R2
Здравствуйте, интересен такой вопрос возможно запустить на одном сервере windows server 2012 r2 standart сайта на ASP.NET Core и обычный...

Несколько asp net mvc приложений в одном
Надо сделать несколько ASP.NET MVC приложений, одно основное должно быть размещено: - example.com и несколько дополнительных доступ к...

8
11.09.2018, 09:53

Не по теме:

По этому не подскажу, но есть иной способ организации приложений с nginx и asp .net core на линуксе.

0
0 / 0 / 1
Регистрация: 19.12.2017
Сообщений: 4
11.09.2018, 10:41  [ТС]
ссылку, пожалуйста
0
Эксперт .NET
 Аватар для Rius
13027 / 7592 / 1662
Регистрация: 25.05.2015
Сообщений: 23,095
Записей в блоге: 14
11.09.2018, 11:07
Ссылок нет на статью, сам разбирался.
  • Есть docker и docker-compose, руководство по установке на линуксе:
  • Есть образ nginx proxy, настраиваемый на раз-два:
  • Приложение же asp .net core размещается в своём docker-контейнере и подхватывается проксей автоматически. Строится на основе образа microsoft/dotnet:2.1-aspnetcore-runtime (для 2.1)

Добавлено через 17 минут
Каталог проекта:
Code
1
2
3
4
5
6
.
├── docker-compose.yml
├── .env
└── image
    ├── Dockerfile
    └── publish.tar.gz
Dockerfile:
Code
1
2
3
4
5
6
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY *.tar.gz ./
RUN tar -xvzf *.tar.gz -C ./
RUN rm *.tar.gz
ENTRYPOINT ["dotnet", "LicHandler.dll"]
publish.tar.gz:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
.
├── appsettings.Development.json
├── appsettings.json
├── appsettings.PublishedDocker.json
├── dotnet-aspnet-codegenerator-design.dll
├── LicHandler.deps.json
├── LicHandler.dll
├── LicHandler.pdb
├── LicHandler.runtimeconfig.json
├── LicHandler.Views.dll
├── LicHandler.Views.pdb
├── Microsoft.CodeAnalysis.CSharp.Workspaces.dll
├── Microsoft.CodeAnalysis.Workspaces.dll
├── Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll
├── Microsoft.VisualStudio.Web.CodeGeneration.Core.dll
├── Microsoft.VisualStudio.Web.CodeGeneration.dll
├── Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll
├── Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll
├── Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll
├── Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll
├── NuGet.Frameworks.dll
├── Octokit.dll
├── System.Composition.AttributedModel.dll
├── System.Composition.Convention.dll
├── System.Composition.Hosting.dll
├── System.Composition.Runtime.dll
├── System.Composition.TypedParts.dll
└── web.config
docker-compose.yml:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3.4'
 
services:
  web:
    image: lichandler
    build:
      context: ./image
      dockerfile: Dockerfile
    environment:
      - ASPNETCORE_ENVIRONMENT=PublishedDocker
      - VIRTUAL_HOST=demo.site.com
      - VIRTUAL_PORT=80
      #- LETSENCRYPT_HOST=demo.site.com
      #- LETSENCRYPT_EMAIL=admin@site.com
    expose:
      - "80"
    restart: always
1
0 / 0 / 1
Регистрация: 19.12.2017
Сообщений: 4
11.09.2018, 13:35  [ТС]
Спасибо за информацию, но это слишком сложно - я программирую, а не администрирую сервера.
Если можно, подскажите конкретное решение для следующих исходных данных:
- есть домены domen1, domen2, domen3, domen4, domen5
- домены 1 и 2 - реализованы на ASP.NET Core (myAsp1 и myAsp2 соответственно), а 3-5 - PHP.
Домены 3-5 перенаправляются nginx на apache - все работает.

Как реализовать на сервере домены 1 и 2? Если не трудно, дайте конкретный пример реализации.
0
Эксперт .NET
 Аватар для Rius
13027 / 7592 / 1662
Регистрация: 25.05.2015
Сообщений: 23,095
Записей в блоге: 14
11.09.2018, 16:59
Вот:
  1. https://domen1.riuson.com - asp .net core
  2. http://domen2.riuson.com - asp .net core
  3. https://domen3.riuson.com - php
  4. http://domen4.riuson.com - php
  5. http://domen5.riuson.com - php

Завтра удалю.

Цитата Сообщение от gai561 Посмотреть сообщение
но это слишком сложно - я программирую, а не администрирую сервера.
Можно подумать, я - админ...
Я вообще микроконтроллеры программирую.
Вложения
Тип файла: 7z demo.7z (670 байт, 9 просмотров)
0
0 / 0 / 1
Регистрация: 19.12.2017
Сообщений: 4
13.09.2018, 20:12  [ТС]
Лучший ответ Сообщение было отмечено Rius как решение

Решение

Ответ дал Groxan на stackoverflow (публикую, потому что сам долго искал):

Привязать приложение к порту можно в Program.cs:

C#
1
2
3
4
5
6
7
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseKestrel(options =>
        {
            options.Listen(IPAddress.Loopback, 5010);
        });
0
Эксперт .NET
 Аватар для Rius
13027 / 7592 / 1662
Регистрация: 25.05.2015
Сообщений: 23,095
Записей в блоге: 14
13.09.2018, 20:16
Лучше уж через настройки передавать, чем хардкодить.
В докере, кстати, такого тюнинга не требуется. Все приложения висят на одинаковых, 80-х портах.
1
 Аватар для zhigarartem
9 / 9 / 0
Регистрация: 04.03.2014
Сообщений: 25
07.04.2021, 15:06
Недавно столкнулся с такой же проблемой и моя ошибка была в конфигурации nginx

Т.к. два .Net Core приложения должны быть запущены на одном сервере,
то должен быть только один файл: /etc/nginx/sites-available/domen.conf
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
server {
    listen        80;
    server_name   domen www.domen;
 
    location /prod {
        rewrite            /prod (.*) $1 break;
        proxy_pass         http://localhost:5000;
 
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
 
    location /dev {
        rewrite            /dev (.*) $1 break;
        proxy_pass         http://localhost:5001;
 
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}
Так мы перенаправляем:
http://localhost:5000/ => http://domain/prod/
http://localhost:5001/ => http://domain/dev/

Второй момент, что можно запустить одно приложение
в двух экземплярах на разных портах с разными переменными среды:

/etc/systemd/myApp1-prod.service:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Production of myApp1
 
[Service]
WorkingDirectory=/home/www/ASP.NET.core/myApp1
ExecStart=/usr/bin/dotnet /home/www/ASP.NET.core/myApp1/myApp1.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=myApp1-production
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
Environment=ASPNETCORE_URLS=http://localhost:5000
 
[Install]
WantedBy=multi-user.target
/etc/systemd/myApp1-dev.service:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Development of myApp1
 
[Service]
WorkingDirectory=/home/www/ASP.NET.core/myApp1
ExecStart=/usr/bin/dotnet /home/www/ASP.NET.core/myApp1/myApp1.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=myApp1-development
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Development
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
Environment=ASPNETCORE_URLS=http://localhost:5001
 
[Install]
WantedBy=multi-user.target
Так Production будет всегда запущен на localhost:5000
а Development будет всегда запущен на localhost:5001

И в зависимости от ASPNETCORE_ENVIRONMENT мы будем брать
соответствующие настройки из appsetting.Production.json или из appsettings.Development.json
В коде приложения будет примерно следующее:
C#
1
2
3
var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var builder = new ConfigurationBuilder().AddJsonFile($"appsettings.{environmentName}.json");
var configuration = builder.Build();
Копия ответа на https://stackoverflow.com/ques... 0#66984880
Знаю, что ответил поздно, но всё же лучше, чем никогда
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.04.2021, 15:06
Помогаю со студенческими работами здесь

ASP.NET Core. Старт - что нужно знать, чтобы стать ASP.NET Core разработчиком?
Попалось хор краткое обзорное видео 2016 года с таким названием - Что нужно знать, чтобы стать ASP.NET MVC разработчиком? Сейчас уже 2018...

Развернуть два Asp.Net Core проекта на одном домене
Добрый день, подскажите пожалуйста возможно ли разместить два Asp.Net Core проекта на одном домене? Есть проект основного сайта (site.ru) и...

Разница между ASP.NET Core 2, ASP.NET Core MVC, ASP.NET MVC 5 и ASP.NET WEBAPI 2
Здравствуйте. Я в бекенд разработке полный ноль. В чем разница между вышеперечисленными технологиями? Есть ли в них что-то общее - могу ли...

Развернуть ASP.NET Core 2.0 приложение на Linux хостинг
Собственно асп.нет стандартные приложения я выкладывал на бесплатном somee.com. Решил попробовать кор. Возник вопрос, а куда же это...

Какая разница между ASP .Net Core и ASP .Net Core MVC?
Какая разница между ASP .Net Core и ASP .Net Core MVC? Или я может что-то не так понял? И подскажите пожалуйста еще какие-то книги для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru