Я пытаюсь развернуть приложение на python в azure, но оно не работает даже с образцом приложения для быстрого запуска

Вот статья от Microsoft с кратким руководством по запуску приложения на python в azure. Итак, я пытаюсь развернуть приложение на python в azure, используя бесплатный уровень, но это просто не работает. Я уже перепробовал множество способов. Я скопировал пример кода проекта из здесь, как и предлагается в статье. Затем я попытался запустить его локально, используя python 3.12. Эта версия является последней, поддерживаемой для веб-приложения Azure на данный момент. Он работает локально на моем компьютере, хотя /admin/ там не работает, но все равно: по крайней мере, какая-то страница открывается успешно. Я запустил его через сообщество pycharm в виртуальной среде. Затем я попытался загрузить эти папки и файлы в папку site/wwwroot:

folder:
.venv
hello_azure
quickstartproject
static
.env.sample
db.sqlite3
manage.py
requirements.txt

Перед этим я создал веб-приложение на free tier, выбрал python 3.12 и открыл публичный доступ к веб-сайту. В обзоре приложения, которое запущено. Я также пытался добавить в качестве команды запуска эти: manage.py runserver, site/wwwroot/manage.py runserver, python manage.py runserver, python site/wwwroot/manage.py runserver,, но ничего из этого не сработало. При попытке открыть веб-сайт отображается следующая ошибка:

:( Application Error
If you are the application administrator, you can access the
diagnostic resources.

Инструменты разработки, на вкладке Сеть отображается ошибка 503. Когда я перехожу к этим "диагностическим ресурсам" по предоставленной ссылке, там написано "Ресурс не найден. Код состояния: 404. Сообщение о статусе: недоступно" (там больше текста, но это, кажется, самое важное). но! Этот ресурс существует, и мое веб-приложение имеет статус "Запущено". Также я пытался перезапустить его после внесения некоторых изменений несколько раз и подождал несколько минут, думая, что, вероятно, ему потребуется всего 5 минут, чтобы начать работать так, как это происходит с .NET applications после выпуска. Но это не помогло.

Сначала я попробовал это с моим целевым веб-сайтом, который я на самом деле пытаюсь развернуть. Затем я решил попробовать просто минималистичный подход для проверки концепции с предоставленным образцом. Но это тоже не сработало.

В лог-потоке много текста. Одним из последних сообщений, которое привлекло мое внимание, было вот это: Container {container-name} didn't respond to HTTP pings on port: 8000, failing site start. See container logs for debugging.

Файлы журналов, найденные с помощью filezilla в папке "LogFiles", содержат массу сообщений, но ничего, что могло бы показаться информативным. Просто куча общих сообщений типа "запуск веб-сайта, неожиданное исключение, не удалось запустить контейнер, остановка веб-сайта из-за исключения". Не ожидаю логов, но что-то в этом роде есть. Также есть команда docker run -d --expose=8000 --name {application-name} -e WEBSITE_USE_DIAGNOSTIC_SERVER=false -e.

ALLOWED_HOSTS содержит домен для моего веб-сайта, на котором я пытаюсь разместить свой код. Я даже пробовал в качестве теста просто оставить его ALLOWED_HOSTS = [], что должно быть разрешено любому хосту, но это не помогло, так что здесь это определенно не проблема. Я обновил это в файле production.py.

Консоль SSH также по какой-то причине не работает. Она просто выдает сообщение об ошибке "SSH CONN ЗАКРЫТ". Так что никаких доступных действий там тоже нет.

Так что в настоящее время я просто в полном замешательстве и не имею ни малейшего представления о том, как заставить это [censored] работать. Либо я определенно делаю что-то не так, либо azure не предоставляет работающий хостинг для приложений на python (по крайней мере, в бесплатной версии). В большинстве подобных случаев речь идет о разработчике. Так, может быть, еще можно что-то сделать? Есть идеи и/или предложения о том, что происходит, почему и как это исправить?

P.S. На данный момент моя цель - разместить его на azure бесплатно, не потратив ни цента. Если я правильно понял, это должно быть возможно на azure. На данный момент мой веб-сайт размещен бесплатно по адресу pythonanywhere.com, но время от времени требуется обновление веб-сайта вручную. Поэтому я подумал о том, чтобы попытаться перейти на azure.

Я попытался создать образец приложения Django и развернуть его в Azure App Service (бесплатный уровень), но столкнулся с той же проблемой.

Проблема связана со свободным уровнем Azure, поскольку он имеет ограниченные ресурсы процессора, памяти и сети, которые могут быстро закончиться при запуске приложения Django.

Я получил статус Quota exceeded.

enter image description here

Итак, чтобы устранить проблему, я повысил уровень ценообразования до premium и успешно развернул приложение. Теперь я могу просмотреть страницу.

Мой settings .py:

Убедитесь, что для ALLOWED_HOSTS установлено значение '*', так как это разрешено для всех доменов.

import os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = '<secret-key>'
DEBUG = True  
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'whitenoise.runserver_nostatic',  
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'quickstartproject.urls'
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
WSGI_APPLICATION = 'quickstartproject.wsgi.application'
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")  
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"

Requirements.txt:

Django>=4.2,<5.0
gunicorn>=21.2,<22.0
whitenoise>=6.6,<7.0

Запустите приведенные ниже команды, чтобы собрать статические файлы для работы.

python manage.py collecstatic
python manage.py migrate

Я успешно развернул приложение в службе приложений Azure с помощью Github actions.

enter image description here

Выход:

enter image description here

enter image description here

Вернуться на верх