Не удается загрузить статические файлы с бутылкой на эластичном бобовом стебле

После некоторой помощи я запустил приложение для бутылок с помощью Elastic. Бобовый стебель. Ну почти - я все еще не вижу никаких статических файлов. Я следовал инструкциям здесь, вставив файл с именем python.conf в каталоге .ebextensions с этим:

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

К сожалению, это не сработало. Мои файлы находятся в папках /static (например, /static/js, /static/css и т. д.). В моем приложении для бутылок я обслуживал статические файлы в соответствии с ответом здесь вот так:

@route('/static/:path#.+#')
def server_static(path):
    return static_file(path, root='./static')

Все работает, когда я запускаю его локально. Кто-нибудь знает, что я делаю неправильно? Должен ли я следовать другой процедуре, потому что мои статические файлы находятся в подпапках или потому что я использую бутылку вместо фляги? Мне известен похожий вопрос это было задано здесь для фляги, но ответа не было (и, насколько я знаю, это может быть совершенно другая проблема). Большое спасибо, Алекс


person Alex S    schedule 29.04.2013    source источник
comment
Просто предположение, но пробовали ли вы использовать абсолютный путь вместо относительного в root='./static'?   -  person ron rothman    schedule 30.04.2013
comment
хм нет у меня нет. Честно говоря, я даже не уверен, какой статический путь будет в экземпляре, он явно будет отличаться от моей локальной копии. Будет ли решением вместо этого размещать статические файлы на S3? Могу ли я просто использовать уникальный URL-адрес для каждого из этих элементов? Думаю, мне придется вернуться ко всему html и переключить его на адреса S3, но на данный момент это будет не так сложно.   -  person Alex S    schedule 01.05.2013


Ответы (2)


Я уверен, что это не самое элегантное решение, но я решил эту проблему, поместив все свои статические файлы в корзину S3 и используя ее на всех своих страницах.

На самом деле у меня было не так много статических файлов, так что это не было большой проблемой. Я только что сделал переменную URL-адреса корзины S3:

S3Static = r'mystaticbucket.s3-us-west-2.amazonaws.com'

Передал его в свои шаблоны бутылок и изменил ссылки с:

<link rel="stylesheet" type="text/css" href = "/static/css/MarmoStyle.css" >

to

<link rel="stylesheet" type="text/css" href = "{{S3Static}}/static/css/Style.css">

(т.е. просто добавили {{S3Static}} перед путем). Если вы используете статический файл в отдельном шаблоне заголовка %included, как я, вам нужно передать переменную S3Static в шаблон следующим образом:

%include header.tpl S3Static=S3Static

И это было об этом. Я знаю, что это не будет идеальным решением для всех, и, вероятно, есть лучшие способы сделать это, но до сих пор это работало для меня. Спасибо, Алекс

person Alex S    schedule 02.05.2013

Вы действительно должны изучить модуль белого шума Python. Тогда у вас есть только одна строка, которую вы должны изменить, а маршрутизация URL-адресов обрабатывается белым шумом рядом с бутылкой. По сути, вы можете оставить URL-адрес таким же, как и ваш домен, даже если whitenoise извлекает откуда-то еще. Плюс он предназначен для кэширования ваших статических данных. Определенно следует использовать его. Для настройки требуется около 3 строк, и вы можете удалить маршрут статической папки бутылки.

person eatmeimadanish    schedule 24.08.2017