#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. Скомпилируйте статику, как указано в документации, «сделайте статику» или «сделайте статические фильмы».