сервер django 127.0.0.1:18000 не работает в браузере для проекта openedx

#python #django #docker #openedx

Вопрос:

Я использую контейнер docker(devstack) для проекта openedx на Mac.

Поскольку я случайно вышел из всех контейнеров(я изменил настройки ресурсов docker и нажал кнопку Применить и перезапустить), я не могу запустить сервер. Я снова запустил контейнеры, и все работает нормально.

 docker ps

0377bed7e3bb   edxops/edxapp:hawthorn.master        "bash -c 'source /ed…"   6 days ago    Up 4 hours   0.0.0.0:18000->18000/tcp, :::18000->18000/tcp, 0.0.0.0:19876->19876/tcp, :::19876->19876/tcp, 18010/tcp   edx.devstack.lms
 

Когда я набираю команду ниже в контейнере docker,

 python /edx/app/edxapp/edx-platform/manage.py lms runserver 18000 

System check identified no issues (0 silenced).
October 08, 2021 - 15:38:25
Django version 1.11.18, using settings 'lms.envs.devstack_docker'
Starting development server at http://127.0.0.1:18000/
Quit the server with CONTROL-C.
 

Похоже, что он работает на терминале, но браузер Chrome показывает ERR_EMPTY_RESPONSE знак ошибки.

когда я попытался использовать 0.0.0.0:18000 или localhost:18000, он также подключается к серверу, но выдает такую ошибку, но разница в том, что это режим отладки django.

 IOError at /dashboard
[Errno 13] Permission denied: '/tmp/mako_lms/7fa50c86c772c2affd8b5a04d05a85da/dashboard.html.py'

 

Странно, но когда я запускаю сервер на 0.0.0.0:18000, я могу видеть сайт администратора django
127.0.0.1 or localhost or 0.0.0.0 :18000/admin , но я получаю ошибку с другими URL-адресами.

Я полный программист-новичок. Может кто-нибудь подсказать мне, что еще можно попробовать? Спасибо.

Вот обратная связь

 Environment:


Request Method: GET
Request URL: http://127.0.0.1:18000/dashboard/

Django Version: 1.11.18
Python Version: 2.7.12
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.humanize',
 'django.contrib.messages',
 'django.contrib.redirects',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.staticfiles',
 'djcelery',
 'openedx.core.djangoapps.common_initialization.apps.CommonInitializationConfig',
 'lms_initialization.apps.LMSInitializationConfig',
 'openedx.core.djangoapps.common_views',
 'simple_history',
 'config_models',
 'waffle',
 'openedx.core.djangoapps.service_status',
 'status',
 'edxmako.apps.EdxMakoConfig',
 'pipeline',
 'static_replace',
 'webpack_loader',
 'web_fragments',
 'openedx.core.djangoapps.plugin_api',
 'openedx.core.djangoapps.contentserver',
 'openedx.core.djangoapps.site_configuration',
 'openedx.core.djangoapps.video_config',
 'openedx.core.djangoapps.video_pipeline',
 'courseware',
 'student.apps.StudentConfig',
 'static_template_view',
 'staticbook',
 'track',
 'eventtracking.django.apps.EventTrackingConfig',
 'util',
 'lms.djangoapps.certificates.apps.CertificatesConfig',
 'dashboard',
 'lms.djangoapps.instructor_task',
 'openedx.core.djangoapps.course_groups',
 'bulk_email',
 'branding',
 'support',
 'openedx.core.djangoapps.external_auth',
 'django_openid_auth',
 'provider',
 'provider.oauth2',
 'edx_oauth2_provider',
 'oauth2_provider',
 'openedx.core.djangoapps.oauth_dispatch.apps.OAuthDispatchAppConfig',
 'third_party_auth',
 'oauth_provider',
 'openedx.core.djangoapps.auth_exchange',
 'wiki',
 'django_notify',
 'course_wiki',
 'mptt',
 'sekizai',
 'wiki.plugins.links',
 'course_wiki.plugins.markdownedx',
 'django.contrib.admin',
 'debug',
 'openedx.core.djangoapps.util.apps.UtilConfig',
 'django_comment_client',
 'django_comment_common',
 'discussion_api',
 'notes',
 'edxnotes',
 'splash',
 'openedx.core.djangoapps.datadog.apps.DatadogConfig',
 'rest_framework',
 'openedx.core.djangoapps.user_api',
 'shoppingcart',
 'notification_prefs',
 'notifier_api',
 'course_modes.apps.CourseModesConfig',
 'enrollment',
 'entitlements',
 'bulk_enroll',
 'lms.djangoapps.verify_student.apps.VerifyStudentConfig',
 'openedx.core.djangoapps.dark_lang',
 'microsite_configuration.apps.MicrositeConfigurationConfig',
 'rss_proxy',
 'openedx.core.djangoapps.embargo',
 'course_action_state',
 'edx_jsme',
 'django_countries',
 'mobile_api',
 'social_django',
 'survey.apps.SurveyConfig',
 'lms.djangoapps.lms_xblock.apps.LMSXBlockConfig',
 'problem_builder',
 'submissions',
 'openassessment',
 'openassessment.assessment',
 'openassessment.fileupload',
 'openassessment.workflow',
 'openassessment.xblock',
 'edxval',
 'openedx.core.djangoapps.content.course_overviews.apps.CourseOverviewsConfig',
 'openedx.core.djangoapps.content.course_structures.apps.CourseStructuresConfig',
 'openedx.core.djangoapps.content.block_structure.apps.BlockStructureConfig',
 'lms.djangoapps.course_blocks',
 'openedx.core.djangoapps.coursegraph.apps.CoursegraphConfig',
 'mailing',
 'corsheaders',
 'openedx.core.djangoapps.cors_csrf',
 'lms.djangoapps.commerce.apps.CommerceConfig',
 'openedx.core.djangoapps.credit.apps.CreditConfig',
 'lms.djangoapps.teams',
 'xblock_django',
 'openedx.core.djangoapps.programs.apps.ProgramsConfig',
 'openedx.core.djangoapps.catalog',
 'openedx.core.djangoapps.self_paced',
 'sorl.thumbnail',
 'milestones',
 'gating.apps.GatingConfig',
 'statici18n',
 'openedx.core.djangoapps.api_admin',
 'openedx.core.djangoapps.verified_track_content',
 'learner_dashboard',
 'badges.apps.BadgesConfig',
 'django_sites_extensions',
 'email_marketing.apps.EmailMarketingConfig',
 'release_util',
 'celery_utils',
 'openedx.core.djangoapps.crawlers',
 'database_fixups',
 'openedx.core.djangoapps.waffle_utils',
 'lms.djangoapps.course_goals',
 'openedx.features.course_bookmarks',
 'openedx.features.course_experience',
 'openedx.features.course_search',
 'openedx.features.enterprise_support.apps.EnterpriseSupportConfig',
 'openedx.features.learner_profile',
 'openedx.features.learner_analytics',
 'openedx.features.portfolio_project',
 'experiments',
 'django_filters',
 'rest_framework_swagger',
 'lms.djangoapps.board',
 'edx_sga',
 'edx_proctoring',
 'organizations',
 'enterprise',
 'consent',
 'integrated_channels.integrated_channel',
 'integrated_channels.degreed',
 'integrated_channels.sap_success_factors',
 'django_object_actions',
 u'openedx.core.djangoapps.password_policy.apps.PasswordPolicyConfig',
 u'openedx.core.djangoapps.ace_common.apps.AceCommonConfig',
 u'lms.djangoapps.discussion.apps.DiscussionConfig',
 u'openedx.core.djangoapps.schedules.apps.SchedulesConfig',
 u'lms.djangoapps.grades.apps.GradesConfig',
 u'openedx.core.djangoapps.plugins.apps.PluginsConfig',
 u'openedx.core.djangoapps.credentials.apps.CredentialsConfig',
 u'openedx.core.djangoapps.bookmarks.apps.BookmarksConfig',
 u'lms.djangoapps.instructor.apps.InstructorConfig',
 u'openedx.core.djangoapps.zendesk_proxy.apps.ZendeskProxyConfig',
 u'openedx.core.djangoapps.theming.apps.ThemingConfig',
 u'completion.apps.CompletionAppConfig',
 'coursewarehistoryextended',
 'debug_toolbar',
 'debug_toolbar_mongo']
Installed Middleware:
['crum.CurrentRequestUserMiddleware',
 'openedx.core.djangoapps.request_cache.middleware.RequestCache',
 'openedx.core.djangoapps.monitoring_utils.middleware.MonitoringCustomMetrics',
 'mobile_api.middleware.AppVersionUpgrade',
 'openedx.core.djangoapps.header_control.middleware.HeaderControlMiddleware',
 'microsite_configuration.middleware.MicrositeMiddleware',
 'django_comment_client.middleware.AjaxExceptionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.contrib.sites.middleware.CurrentSiteMiddleware',
 'django_sites_extensions.middleware.RedirectMiddleware',
 'openedx.core.djangoapps.safe_sessions.middleware.SafeSessionMiddleware',
 'openedx.core.djangoapps.cache_toolbox.middleware.CacheBackedAuthenticationMiddleware',
 'student.middleware.UserStandingMiddleware',
 'openedx.core.djangoapps.contentserver.middleware.StaticContentServer',
 'openedx.core.djangoapps.user_api.middleware.UserTagsEventContextMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'track.middleware.TrackMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'openedx.core.djangoapps.cors_csrf.middleware.CorsCSRFMiddleware',
 'openedx.core.djangoapps.cors_csrf.middleware.CsrfCrossDomainCookieMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'splash.middleware.SplashMiddleware',
 'openedx.core.djangoapps.geoinfo.middleware.CountryMiddleware',
 'openedx.core.djangoapps.embargo.middleware.EmbargoMiddleware',
 'openedx.core.djangoapps.lang_pref.middleware.LanguagePreferenceMiddleware',
 'openedx.core.djangoapps.dark_lang.middleware.DarkLangMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django_comment_client.utils.ViewNameMiddleware',
 'codejail.django_integration.ConfigureCodeJailMiddleware',
 'ratelimitbackend.middleware.RateLimitMiddleware',
 'openedx.core.djangoapps.session_inactivity_timeout.middleware.SessionInactivityTimeout',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'courseware.middleware.CacheCourseIdMiddleware',
 'courseware.middleware.RedirectMiddleware',
 'course_wiki.middleware.WikiAccessMiddleware',
 'openedx.core.djangoapps.theming.middleware.CurrentSiteThemeMiddleware',
 'waffle.middleware.WaffleMiddleware',
 'openedx.features.enterprise_support.middleware.EnterpriseMiddleware',
 'edx_rest_framework_extensions.middleware.EnsureJWTAuthSettingsMiddleware',
 'openedx.core.djangoapps.site_configuration.middleware.SessionCookieDomainOverrideMiddleware',
 'django_comment_client.utils.QueryCountDebugMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware',
 'third_party_auth.middleware.ExceptionMiddleware']



Traceback:

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _legacy_get_response
  249.             response = self._get_response(request)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/utils/decorators.py" in inner
  185.                     return func(*args, **kwargs)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  149.                     response = view_func(request, *args, **kwargs)

File "/edx/app/edxapp/edx-platform/openedx/core/djangoapps/util/maintenance_banner.py" in _decorated
  42.         return func(request, *args, **kwargs)

File "/edx/app/edxapp/edx-platform/common/djangoapps/student/views/dashboard.py" in student_dashboard
  848.     response = render_to_response('dashboard.html', context)

File "/edx/app/edxapp/edx-platform/common/djangoapps/edxmako/shortcuts.py" in render_to_response
  169.     return HttpResponse(render_to_string(template_name, dictionary, namespace, request), **kwargs)

File "/edx/app/edxapp/edx-platform/common/djangoapps/edxmako/shortcuts.py" in render_to_string
  158.     template = engine.get_template(template_name)

File "/edx/app/edxapp/edx-platform/common/djangoapps/edxmako/backend.py" in get_template
  56.             return Template(lookup_template(self.namespace, template_name), engine=self)

File "/edx/app/edxapp/edx-platform/openedx/core/djangoapps/request_cache/middleware.py" in inner_wrapper
  119.                 result = f(*args, **kwargs)

File "/edx/app/edxapp/edx-platform/common/djangoapps/edxmako/paths.py" in lookup_template
  156.     return LOOKUP[namespace].get_template(name)

File "/edx/app/edxapp/edx-platform/common/djangoapps/edxmako/paths.py" in get_template
  107.                     template = super(DynamicTemplateLookup, self).get_template(get_template_path_with_theme(uri))

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/mako/lookup.py" in get_template
  253.                     return self._load(srcfile, uri)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/mako/lookup.py" in _load
  318.                     **self.template_args)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/mako/template.py" in __init__
  322.             module = self._compile_from_file(path, filename)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/mako/template.py" in _compile_from_file
  379.             module = compat.load_module(self.module_id, path)

File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/mako/compat.py" in load_module
  87.         fp = open(path, 'rb')

Exception Type: IOError at /dashboard/
Exception Value: [Errno 13] Permission denied: '/tmp/mako_lms/7fa50c86c772c2affd8b5a04d05a85da/dashboard.html.py'

 

Комментарии:

1. На странице отладки Django должно быть что-то вроде «Переключиться на копирование-вставку», и он покажет всю обратную трассировку. Можете ли вы добавить обратную связь к своему вопросу?

2. @yedpodtrzitko Я добавил обратную запись. Спасибо.

3. Причина, по которой вы не можете связаться с сервером в первом примере, заключается в том, что сервер runserver запускается на 127.0.0.1 (локальный хост), и такой адрес не может быть достигнут с других машин (т. Е. ваша машина <-> докер). Чтобы исправить это, вы должны добавить 0.0.0.0 туда: manage.py lms runserver 0.0.0.0:18000

4. Похоже, что Django пытается открыть шаблон в данном каталоге, а разрешения каталога слишком строги, поэтому он не может получить к нему доступ. Я не понимаю причину , по которой используются шаблоны /tmp , но попробуйте ослабить разрешение каталога, что-то вроде chmod -R 775 /tmp/mako_lms

5. Скомпилируйте статику, как указано в документации, «сделайте статику» или «сделайте статические фильмы».