13

フラスコアプリで静的アセットを認識させるにはどうすればいいですか? 標準の /.ebextensions/python.config の YAML 行をいくつか実行しました。

option_settings:
  "aws:elasticbeanstalk:container:python:staticfiles":
    "/static/": "static/"

テンプレート内のアセットへの呼び出しはすべて、「{{url_for('static', filename='img/office.jpg')}}」タイプのものでラップされています。

ただし、ページの読み込み時に画像、スタイル、または JavaScript が表示されません。ログ ファイル 404 の例を次に示します。 .com/

明らかな何かが欠けていますか?git aws.push を実行すると、すべてがローカルでうまく動作します。静的アセットだけがロードされません

4

8 に答える 8

11

Elastic Beanstalk パネルからも実行できます。

構成 -> ソフトウェア構成 -> 静的ファイル

その後

ここに画像の説明を入力

代替オプションとして

于 2017-11-15T09:28:42.297 に答える
6

これを書いている時点で、AWS EB の構成と格闘するのに何時間も費やした後、私は静的ファイルを期待どおりに動作させることをあきらめ、Flask アプリの作成を次のように更新しました。

app = Flask(__name__, static_url_path='/s')

これにより、URL が次のようにレンダリングされ、コードとテンプレートで/s/scripts/my-script.js常に使用url_for('static', ...)されるため、AWS の外部でもすべてが機能し続けました。

2013 年 9 月 30 日の更新staticFiles: AWS EB の Python コンテナーで設定が完全​​に無視されることはほぼ保証できます。

上で提案した変更には、すべての静的ファイル リクエストを Flask (より正確には WSGI) 経由でルーティングするという望ましくない欠点があります。ただし、これを修正するのはそれほど難しくありません。

プロジェクト ルートにapp-httpd.confという名前の Apache conig ファイルを作成します。

Alias /s /opt/python/current/app/static
<Directory /opt/python/current/app/static>
Order allow,deny
Allow from all
</Directory>

この構成は、静的ファイル用に選択したのと同じ接頭辞である で始まる URL のすべての要求を引き継いで、アプリの静的フォルダー/sからファイルを提供するように Apache に指示します。

このファイルを.ebextensions/custom-apache.configに作成します。

container_commands:
  add_apache_conf:
    command: "cp app-httpd.conf /etc/httpd/conf.d"

このファイルは、アプリの展開中に使用され、新しい .config ファイルを、Apache が参照するすべての .config ファイルを読み込むように構成されているディレクトリにコピーします。

于 2013-07-02T21:19:16.997 に答える
0

この問題を解決するために私が見つけた奇妙なことは、.gitignore ファイルを編集することでした。/dist フォルダーの削除が含まれていました。これには、CSS が生成された dist フォルダーが含まれていました。そのため、デプロイ時に css ファイルが実際に欠落していました。

これが同じ船に乗っている可能性のある人に役立つことを願っています.

于 2016-11-28T00:27:56.410 に答える
0

この問題はローカルで機能したため、少し困惑しました。構成を変更する必要はありません。HTMLファイルの1行目を2行目に変更したところ、うまくいきました。静的フォルダーをルート ディレクトリに保持し、構成も /static/:/static/ に保持します。

 1 <link rel="stylesheet" href={{url_for('static',filename='style.css')}}/>

2 <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='style.css') }}">

href を引用符で囲んでいる可能性があります。

于 2019-12-31T02:48:34.057 に答える
-1

奇妙なことに、からのすべてのファイルstatic/img/が提供されていましたが、中static/css/またはstatic/js/単に提供されていないという同様の問題がありました。

これを修正するため.elasticbeanstalk/optionsettings.app-envに、Flask ソースのルート ディレクトリから開き、このコード ブロックを次のように編集しました。

[aws:elasticbeanstalk:container:python]
NumProcesses=1
NumThreads=15
StaticFiles=/static/.*=
WSGIPath=application.py

[aws:elasticbeanstalk:container:python:staticfiles]

StaticFiles実際には正規表現を取ることに注意してください/static/.*.*/static/

于 2013-10-03T05:16:39.983 に答える