1

按照 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

4

2 回答 2

2

睡了一会儿,我发现我的“静态”文件夹不在我在“settings.py”文件中指定的位置。

此外,dotCloud 更新了他们的文档,警告“/static/”不再像前面所说的那样自动创建,所以我更改了postinstall脚本以删除到“/static/”的符号链接,并nginx.conf按照更新文档中的说明调整了文件。

参考:
在 dotCloud 上处理静态文件

于 2012-09-02T14:42:40.997 回答
0

任何像“./postinstall failed with return code”这样的错误消息都意味着您自己的脚本有问题,而不是平台有问题。

为了在 dotCloud 上轻松调试安装后执行,您可以执行以下操作:

假设您的应用是“拉面”,而您的服务是“www”。

$ dotcloud -A ramen run www
> ~/current/postinstall

它将重新执行安装后,但这次从您的会话开始,因此您将能够轻松更新安装后代码并重新运行它,而无需一次又一次地推送。

找到根本原因后,在本地修复它并重新推送您的应用程序。

于 2013-02-20T21:04:38.070 回答