Net core - это прекрасная технология вызывающая общий интерес во всем мире, да и сам Microsoft делает много для продвижения. Наверное каждый, кто пробовал зайти немного дальше, чем отладка в любимом дебагере, сталкивается с одной очень интересной проблемой. Как запустить веб приложение, чтобы оно работало как сервис и еще желательно стартовало вместе с системой. Всё это естественно сделать не на IIS (можно с ним, но это, если у вас безлимитное железо).
В net core по умолчанию есть свой, родненький web сервер, назвали его - kestrel(зачем?). Тоесть, это означает, если вы стартуете приложение, оно уже готово обрабатывать HTTP(S) запросы. И может показаться, что этого вполне достаточно, однако, это не так. Встроенный kestrel разработан не для того чтобы сражаться с интернет запросами в одиночку. Kestrel очень хорошо подходит для создания микросервиса, но если обрабатывать статические файлы или управлять server lifetime вы очень расстроитесь(и сервер тоже).
- Отсутствует возможность запустить несколько веб приложений на одном порту (когда у вас много сайтов работает на 80 или 443 порту).
- Lifetime Management - отсутствует. Отсутствует возможность контроля приложения (это вам не php, там всё компилируется), в случае, совершенно врядле, если так случится, что ваше приложение упадёт с ошибкой. Ему никто не поможет. Оно упадёт и не сможет подняться.
- Статические файлы - нет кэширования, нет сжатия данных.
- И еще немного - безопасность, возможности администрирования, управление SSL сертификатами, логирование запросов и другое(возможно...)
Вот собственно, так его запустить нельзя, не рабочий это вариант. Значит надо что-то поставить как прокси, а точнее, reverse-proxy и не что-то, а nginx. Про nginx говорить нечего, лучший web server. Установка nginx не входит в данный гайд, подразумеваем, что nginx уже установлен и запущен. Трудится и обслуживает http(s) запросики.
Конфиг, надо разместить его директории /etc/nginx/sites-available/ (может меняться в зависимости от дистрибутива). Позволит принимать запросы из интернета, и перенаправлять их в сторону малышки kestrel на 5000 порт используется по умолчанию для релизной версии приложения.
server { listen 80; server_name example.com *.example.com; 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; } }
Настройка запуска приложения
sudo nano /etc/systemd/system/kestrel-helloapp.service
Скопируйте содержимое в файл.
[Unit] Description=Example .NET Web API App running on Ubuntu [Service] WorkingDirectory=/var/www/helloapp ExecStart=/usr/bin/dotnet /var/www/helloapp/helloapp.dll Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-example User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
Сохраните файл и включите службу.
sudo systemctl enable kestrel-helloapp.service
Запустите службу и убедитесь, что она работает.
sudo systemctl start kestrel-helloapp.service sudo systemctl status kestrel-helloapp.service ● kestrel-helloapp.service - Example .NET Web API App running on Ubuntu Loaded: loaded (/etc/systemd/system/kestrel-helloapp.service; enabled) Active: active (running) since Thu 2016-10-18 04:09:35 NZDT; 35s ago Main PID: 9021 (dotnet) CGroup: /system.slice/kestrel-helloapp.service └─9021 /usr/local/bin/dotnet /var/www/helloapp/helloapp.dll
Просмотр журналов
sudo journalctl -fu kestrel-helloapp.service
или
sudo journalctl -fu kestrel-helloapp.service --since "2016-10-18" --until "2016-10-18 04:00"
Если вы решили создать интернет-магазин и хотите наполнить его страницы качественным контентом, но у вас нет способностей или времени писать интересные тексты, можете обратиться за помощью к профессионалам. Компания GoodwillGroup занимается разработкой и продвижением сайтов на платформе 1С:Битрикс, а также написанием красивых и уникальных статей. Опытные копирайтеры знают всё о создании интернет-магазинов, благодаря чему помогут вам заинтересовать посетителей интересными описаниями товаров и повысить посещаемость сайта.