Git Push在Openshift上失败?

2024-05-23 19:26:53 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试在Openshift中git push到Django repo,得到以下错误。在

remote: Traceback (most recent call last):
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/app-root/runtime/repo/wsgi/myproject/manage.py", line 11, in <module>
remote:     execute_from_command_line(sys.argv)
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/core/management/__init__.py", line 338, in execute_from_command_line
remote:     utility.execute()
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/core/management/__init__.py", line 330, in execute
remote:     self.fetch_command(subcommand).run_from_argv(self.argv)
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/core/management/base.py", line 390, in run_from_argv
remote:     self.execute(*args, **cmd_options)
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/core/management/base.py", line 441, in execute
remote:     output = self.handle(*args, **options)
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/contrib/staticfiles/management/commands/collectstatic.py", line 168, in handle
remote:     collected = self.collect()
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect
remote:     for path, storage in finder.list(self.ignore_patterns):
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/contrib/staticfiles/finders.py", line 112, in list
remote:     for path in utils.get_files(storage, ignore_patterns):
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/contrib/staticfiles/utils.py", line 28, in get_files
remote:     directories, files = storage.listdir(location)
remote:   File "/var/lib/openshift/55d9fa9f7628e164d400008b/python/virtenv/lib/python2.7/site-packages/Django-1.8-py2.7.egg/django/core/files/storage.py", line 300, in listdir
remote:     for entry in os.listdir(path):
remote: OSError: [Errno 2] No such file or directory: '/Users/ns/ergo/wsgi/static'
remote: -------------------------
remote: Git Post-Receive Result: failure
remote: Activation status: failure
remote: Activation failed for the following gears:
remote: 55d9fa9f7628e164d400008b (Error activating gear: CLIENT_ERROR: Failed to execute action hook 'deploy' for 55d9fa9f7628e164d400008b application ergo
remote: #<IO:0x00000002124290>
remote: #<IO:0x00000002124218>
remote: )
remote: Deployment completed with status: failure
remote: postreceive failed

我检查过OSError目录(/Users/ns/ergo/wsgi/static)确实存在。出什么问题了?在

现在,如果我在deploy hook中注释以下脚本,那么git推送就成功了

python "$OPENSHIFT_REPO_DIR"wsgi/myproject/manage.py collectstatic --noinput

所以静态文件引起了一些问题?在


Tags: djangoinpyexecuteremoteeggvarlib
1条回答
网友
1楼 · 发布于 2024-05-23 19:26:53

您看到的症状与它声称的这个重复的问题并不完全相同,但是需要正确地设置STATIC_ROOT作为一种补救措施。在

出现的错误表明您已将STATIC_ROOT的路径硬编码为本地MacOS X系统上的实际路径。你不能这样做,你需要动态地计算它。在

对于OpenShift,应该将STATIC_ROOT设置为:

STATIC_ROOT = os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'static')

collectstatic运行时,它应该将静态文件放在OpenShift中的wsgi/static目录下。该目录是特殊的,当它存在时,OpenShift将自动配置Apache/mod wsgi实例,以提供来自URL /static的静态文件。所以确保STATIC_URL也被设置为/static。在

相关问题 更多 >