1

dotcloud チュートリアルで指示されているように、これは my のコードです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

少し寝た後、「static」フォルダーが「settings.py」ファイルで指定した場所にないことに気付きました。

また、dotCloud はドキュメントを更新して、前述のように「/static/」が自動的に作成されなくなったことを警告したため、スクリプトを変更して「/static/」へのシンボリック リンクを削除し、更新されたドキュメントの指示に従ってファイルを postinstall調整しました。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 に答える