Как делать развертыванием приложения ASP.NET Core в GNU/Linux с Апачи?

добрый день, мне хотелось бы обладать Вашей помощью, чтобы решать это сомнение, которое у меня есть на реализации развертывания ASPnet 5 (Core1, CoreCLR) на субдомене. я обладаю следующим:

  1. Я прикрываю: GNU/Linux Апачи MySQL PHP.
  2. Установленный DNV (.net core и обезьяна)
  3. Генератор Yeoman.

Дав ему "dnx Веб", оно я функционирует в http://localhost:5000 Этом app у меня есть она под папкой в субдомене: http://subdominio.dominio.com/aspnet5/fx

Как я делаю ему для того, чтобы app функционировал в этой среде производства? Они рекомендовали мне делать docker контейнер с nginx (+reverse proxy) и эти выходные я увижу эту тему.

4
задан 30.01.2016, 23:06
2 ответа

То, в чем ты нуждаешься, состоит в том, чтобы конфигурировать Апачи, как Повторно повернул Proxy так что просьбы, реализованные в каталог aspnet5/fx были пересланы в твое приложение ASP.NET Core

http://subdominio.dominio.com/aspnet5/fx --> http://localhost:5000/aspnet5/fx

Шаги, чтобы реализовывать эту конфигурацию, - следующие:

  1. Устанавливать и давать возможность модулям Апачи для Реверсе Прокси

    sudo apt-get install libapache2-mod-proxy-html libxml2-dev
    sudo a2enmod proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
    sudo service apache2 restart 
    
  2. Изменять конфигурацию твоего веб сайта Апачи, чтобы добавлять перенаправление (обычно будь файлом 000-default.conf помещенный в /etc/apache2/sites-enabled)

    <VirtualHost *:*>
       ...
    
       ProxyPreserveHost On
       ProxyPass /aspnet5/fx/ http://localhost:5000/aspnet5/fx/
       ProxyPassReverse /aspnet5/fx/ http://localhost:5000/aspnet5/fx/
       ServerName localhost
    </VirtualHost>
    
  3. Конфигурировать url http://localhost:5000/aspnet5/fx/ в приложении ASP.NET Core. Это делается добавляя в файле hosting.json помещенный в корне проекта

    {
        "server.urls": "http://localhost:5000/aspnet5/fx/"
    }
    

Вышеупомянутый шаг необходим для того, чтобы решили маршруты, что ссылаются на корень приложения, а именно, те, которые начинаются из-за ~/ но в версии RC1 не функционируй

То, что я рекомендую тебе, состоит в том, что ты веришь себе в другой субдомен aspnet5-fx.subdominio.dominio.com что был тем, который предоставляет прямой доступ к твоему приложению ASP.NET Core.

В этом случае то, что ты был бы должен делать:

  1. Создавать файл конфигурации Апачи для твоего нового домена (ты мог бы делать это выполняя команду sudo nano /etc/apache2/sites-available/001-aspnet.conf)
  2. Контент этого файла был бы следующей

    <VirtualHost *:*>
       ProxyPreserveHost On
       ProxyPass / http://localhost:5000/
       ProxyPassReverse / http://localhost:5000/
       ServerName aspnet5-fx.subdominio.dominio.com
    </VirtualHost>
    
  3. В конце концов ты должен давать возможность новому веб сайту и перезагружать конфигурацию индейца-апачиа

    sudo a2ensite 001-aspnet
    sudo service apache2 reload
    

Что-то, что также важно, состоит в том, что файлы твоих приложений ASP.NET Core не были бы должны быть помещенными внутри каталога контента Апачи, а именно в /var/www/aspnet5/fx, потому что, сделав reverse proxy он не необходим, и если что-то не удается в конфигурации, им могло бы удаваться согласиться на файлы кода. Рекомендуемое состояло бы в том, чтобы состоять в том, чтобы находить нас, например, в /opt/aspnet5/fx

0
ответ дан 24.11.2019, 14:58
  • 1
    Совершенный! спасибо! Из-за любопытства, которое ты имеешь в виду с конечной частью? " Конечно, он не необходим ни рекомендуем, что файлы твоего aplicaci и # 243; n ASP.NET Core est и # 233; n под каталогом контента apache" –  fredyfx 11.02.2016, 02:44
  • 2
    @fredyfx я изменил и #250; ltimo p и # 225; rrafo для того, чтобы поняли лучше. Я надеюсь, что он осветляет твои сомнения –  rsciriano 12.02.2016, 00:49
  • 3
    превосходный! сейчас, если я остаюсь ясным, спасибо снова @rsciriano! –  fredyfx 12.02.2016, 03:05

Сначала я хочу довести до сведения, что, чтобы "упаковывать" приложение, предварительно развертыванию, нужно использовать команду dnu publish, чтобы видеть список выборов ты можешь использовать: dnu publish --help.

После упаковывая, в папке, где клался результат набивки (ты можешь использовать выбор -o чтобы это определять) будет папка approot с утилитой web, это будет та, которая назовется с сервера.

Нужно доводить до сведения что да возможно выставлять приложение без необходимости одного, повторно поверните proxy. Kestrel инициализируется под портом 500x и менять в порт 80 вынудило бы, чтобы использовать root. Ты можешь, если ты это желаешь, использовать iptables, чтобы пересылать просьбы в процесс kestrel в порту 500x, но это загрузилось бы, я думаю, сервер, который уже делает бизнес на этом порту.

Кроме упомянутого, Kestrel не сервер для производства и, как ты отмечаешь в формулировке вопроса, рекомендуемое состоит в том, чтобы использовать что-то как Апачи или nginx. Ты говоришь, что в момент ты обладаешь Апачи, он думал бы, что возможно использовать это для такого конца, но я это не увидел, я в настоящее время использую nginx (без Docker, еще я не нуждался в этом) для этого.

5
ответ дан 24.11.2019, 14:58