按照dotcloud教程的说明,这是我postinstall
中的代码:
#!/bin/sh
python createdb.py
python some_project/manage.py syncdb --noinput
python mkadmin.py
mkdir -p /home/dotcloud/data/media /home/dotcloud/volatile/static
ln -sf /home/dotcloud/volatile/static /home/dotcloud/static
python some_project/manage.py collectstatic --noinput
... nginx.conf
location /media/ { root /home/dotcloud/data ; }
...和settings.py
....
MEDIA_ROOT = '/home/dotcloud/data/media/'
MEDIA_URL = '/media/'
STATIC_ROOT = '/home/dotcloud/volatile/static/'
STATIC_URL = '/static/'
....
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'some_project',
)
运行postinstall
时,会抛出此错误:
OSError: [Errno 2] No such file or directory: '/home/dotcloud/rsync-1346498181296/some_project/static'
我已经使用了很长时间而且令人困惑,因为文档说/static/
已经由python服务设置并链接到/home/dotcloud/static
有人可以协助吗?一切都运作良好,直到我为静态内容设置应用程序。 Django版本在Python 2.7上是1.4.1
答案 0 :(得分:2)
睡觉后,我发现我的'static'文件夹不在我在'settings.py'文件中指定的位置。
此外,dotCloud更新了他们的文档,警告说'/ static /'不再像前面所说的那样自动创建,所以我更改了我的postinstall
脚本以删除符号链接到'/ static /'并调整了nginx.conf
文件,如更新文档中所述。
答案 1 :(得分:0)
“./postinstall失败并返回代码”等错误消息表示您自己的脚本存在问题,而不是平台。
为了在dotCloud上轻松调试postinstall执行,您可以执行以下操作:
我们假设您的应用是“拉面”而您的服务是“www”。
$ dotcloud -A ramen run www
> ~/current/postinstall
它会重新执行postinstall,但是这次会话会从你的会话中重新执行,这样你就可以轻松更新postinstall代码并重新运行它,而不必一次又一次地推送。
找到根本原因后,在本地修复并重新启动应用程序。