Azure создает самую простую службу приложений для обслуживания статических файлов с узлом или без него через портал.

Меня очень смущает внутренняя работа службы приложений. Я изучал его и хотел создать простую службу приложений через портал для обслуживания статических файлов, но нашел только учебник, в котором используется оболочка, а не портал Azure, для которого также требуются такие службы, как хранилище, которое мне не нужно.

Вот что я пробовал:

  1. Получил подписку и создал ресурс, прикрепленный к бесплатной пробной подписке
  2. Создайте базовую (бесплатную) службу приложений в Linux, используя новый план обслуживания Linux и код (не контейнер). Я не могу выбрать какой-либо стек или среду выполнения только со статическим веб-сервером, поэтому я выбираю узел (LTS). Я оставляю команду запуска пустой (позже я расскажу об этом подробнее). Http версии 1.1 или 2, похоже, не имеет значения. FTP включен.
  3. Ресурс создан правильно, я вижу типичный запуск веб-хостинга  страница приветствия
  4. Я подключаюсь к SFTP и вижу, что у меня есть путь site / wwwroot с одним файлом hostingstart.html, который выглядит точно так же, как страница приветствия на снимке экрана, который я вижу, когда получаю доступ к URL-адресу веб-сайта. Я думаю про себя: «Отлично! Я могу просто отредактировать этот html, и я должен увидеть результат». Неправильный. Это не похоже на обслуживаемый html. Не знаю, почему он там, но если я удалю его, я все равно увижу ту же целевую страницу в URL-адресе своего сайта.
  5. Я создаю сайт / wwwroot / index.html, но безуспешно. Его не обслуживают. Возможно, Node не настроен по умолчанию для этого.
  6. Я создаю простой server.js, который может статически обслуживать любой файл: https://github.com/TheJaredWilcurt/NPM-Free-Server Итак, я использую FTP для размещения сайта / wwwroot / server.js и оставляю index.html (на моем локальном хосте он работает :)).
  7. Я настраиваю в службе приложений начальную команду, например node server.js, чтобы она могла запускать и обслуживать страницу, и перезапускаю сервер. Ничего, никакого эффекта.
  8. В журналах я вижу, что мой server.js запущен. Я вижу след, который говорит, что он работает на localhost: 8000

На данном этапе было несколько часов безуспешного расследования. Это не может быть так сложно! Я считаю, что на следующий вопрос, на удивление, нет ответа: https://github.com/MicrosoftDocs/azure-docs/issues/32572#issuecomment-551053105

Может ли кто-нибудь пролить свет на это? Я открыт для предложений. Моя цель: иметь (только) службу приложений, обслуживающую статический index.html с приветственным миром, созданным через портал.

Ta!

ОБНОВЛЕНИЕ 1: благодаря https://stackoverflow.com/users/188096/gaurav-mantri за его предложение. Но я хотел бы сделать акцент на необходимости службы приложений, поскольку она используется в учебных целях, и я хотел бы перейти от очень простого к более сложному динамическому приложению с той же службой и непрерывным развертыванием.


person diegosasw    schedule 07.11.2019    source источник


Ответы (3)


Если вас интересует только размещение статического контента, а не серверный код, обратите внимание на размещение статических веб-сайтов в службе хранилища Azure: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website. На самом деле вам не нужно создавать службу приложений для этого.

person Gaurav Mantri    schedule 07.11.2019
comment
Спасибо, но мне нужна служба приложений :) Планируется начать с чисто статического контента, добавить javascript и css, затем выполнить некоторое выполнение javascript на стороне сервера и т. Д. Я не знал о статическом сервере, спасибо! но если вы не возражаете, я обновлю вопрос и поясню, что служба приложений является частью цели. - person diegosasw; 07.11.2019

@iberodev Я развернул стройное приложение для службы приложений. Я использовал Центр развертывания. Как и вы, я пометил приложение как приложение Node 10.

Конвейер развертывания Azure действительно запускал команды npm run build и npm run start после создания контейнера докеров (по крайней мере, я так думаю, просмотрев файлы журнала в нескольких местах.)

"start": "sirv public --single -H 0.0.0.0" отлично работает

"start": "sirv public", это команда запуска из исходного шаблона svelte, из-за этого контейнер докера не запускается.

Это мои эксперименты.

Я думаю, но не уверен; Azure выполнит команду start в package.json, так работает мое демонстрационное приложение svelte.

Команда sirv поступает из sirv-cli в package.json.

Вы можете попробовать другие статические файловые серверы, такие как serve, если хотите.

Таким образом, вы можете поэтапно разрабатывать и фиксировать, чтобы иметь постепенно улучшающееся приложение.

Я не уверен в производительности sirv команд в качестве веб-сервера для прод. Но вы упомянули, что это для тренировок, подойдет.

package.json

{
  "name": "svelte-app",
  "version": "1.0.0",
  "scripts": {
    "build": "rollup -c",
    "dev": "rollup -c -w",
    "start": "sirv public --single -H 0.0.0.0"
  },
  "devDependencies": {
    "@rollup/plugin-commonjs": "^11.0.0",
    "@rollup/plugin-node-resolve": "^7.0.0",
    "rollup": "^1.20.0",
    "rollup-plugin-livereload": "^1.0.0",
    "rollup-plugin-svelte": "^5.0.3",
    "rollup-plugin-terser": "^5.1.2",
    "svelte": "^3.0.0"
  },
  "dependencies": {
    "sirv-cli": "^0.4.4"
  }
}
person Cem Çakırlar    schedule 28.01.2020
comment
Спасибо за указатель. Я пытаюсь поместить стройное приложение в контейнер докеров. Если у вас будет время, я хотел бы узнайте больше о том, как вам это удалось! - person ticofab; 08.04.2020

Я столкнулся с той же проблемой и не смог понять, почему вновь созданные веб-приложения не используют напрямую файлы hostingstart.html. Это верно для многих различных конфигураций технических стеков. Однако я создал статическое веб-приложение html (включая css и js) в Azure, используя эти шаги.

Это создало веб-приложение на основе .Net, которое не было доступно на портале. У него были параметры, особенно на страницах по умолчанию и т. Д. Теперь я повторно использовал это веб-приложение для запуска проекта с нуля и продолжаю строить его поверх. Надеюсь это поможет.

person Do Or Do Not    schedule 07.05.2020