- Django collectstatic не работает на производстве с S3, но те же настройки работают локально
- 3 ответа
- статические файлы приложения django не работают
- 4 ответа
- Настройте статическое сопоставление файлов
- Django admin.py Unknown command: ‘collectstatic’
- 12 Answers 12
- Collectstatic error while deploying Django app to Heroku
- 19 Answers 19
- Step 1
- Step 2
- Troubleshooting
- Медиа-файлы Django не отображаются с Debug = False в рабочей среде — Django 1.10
- 5 ответов
Django collectstatic не работает на производстве с S3, но те же настройки работают локально
Я перемещал некоторые настройки, чтобы сделать более определенную локальную и производственную среду, и я, должно быть, что-то напутал.
Ниже приведены большинство соответствующих настроек. Если я перенесу настройки production.py (которые на данный момент содержат только настройки, связанные с AWS) в base.py, я смогу обновить S3 с моего локального компьютера. Точно так же, если я сохраню эти настройки AWS в base.py и отправлю в производство, S3 обновится соответствующим образом. Кроме того, если я что-то печатаю из production.py, он печатает. Однако, если я задаю production.py мои «локальные» настройки для manage.py или когда я нажимаю на Heroku с настройками, как показано ниже, S3 не обновляется.
Что насчет моих настроек неверно? (Ну, я уверен, что несколько вещей, но конкретно, заставляя S3 не обновлять?)
Вот некоторый соответствующий код:
__init__.py (в каталоге с base, local и production)
3 ответа
Хорошо, позвольте мне попробовать, как выяснилось в комментариях к вопросу, вы выполняете обновление S3 с помощью collectstatic , но это команда управления, которая вызывается с помощью файла manage.py , в котором вы задали cobev.settings.local как настройки, которые не равны cobev.settings.production , который используется для файла wsgi.py .
Я думаю, что вы должны управлять своим файлом настроек, используя обычный путь Django, переменную среды ОС с именем DJANGO_SETTINGS_MODULE .
Наверняка вы сможете установить его в любой производственной среде, в которой вы работаете.
Тогда, если это может помочь, вот мой конфиг для AWS / Django / S3 в производстве:
Общая статическая конфигурация:
Конфигурация Common Media:
Производственный статический конфиг:
Вот мой класс StaticStorage:
После этого я добавляю команду в папку .ebextensions в файл .config для collectstatic:
Похоже, вы используете Whitenoise. Whitenoise позволяет django обслуживать свои статические файлы. Это другой подход, если вы хотите обслуживать их из AWS.
Итак, вам нужно удалить Whitenoise , чтобы использовать django-хранилища. Удалите его из настроек, промежуточного программного обеспечения, wsgi.py и т. Д.
Кроме того, вы можете удалить все из __init__.py в настройках — используемый файл настроек задается переменной DJANGO_SETTINGS_MODULE env.
Согласно вашему STATICFILES_DIRS , каталог media включен в виде статических файлов. Предпочтительно, чтобы носитель обслуживался отдельно от статических файлов (одно из отличий — статические файлы с большей вероятностью будут кэшироваться и распаковываться), т. Е. Также с AWS, но из отдельного сегмента S3.
Вы также можете добавить AWS CloudFront как CDN перед вашими группами позже.
Источник
статические файлы приложения django не работают
Статические файлы не работают даже на странице администратора.
Я не добавил никаких статических файлов.
У меня проблемы со стилем моей страницы администратора.
Я следовал приведенному ниже руководству, чтобы создать приложение django.
ниже — мои settings.py
Я уже запустил коллектор в производстве.
4 ответа
Я думаю, что ваши настройки и способ запуска collectstatic в порядке.
Если вы размещаете на pythonanywhere , который, как я полагаю, основан на вашем ALLOWED_HOSTS , вам нужно следовать это руководство:
Настройте статическое сопоставление файлов
Наконец, настройте сопоставление статических файлов, чтобы наши веб-серверы обслуживали ваши статические файлы.
Перейдите на вкладку «Веб» на панели инструментов PythonAnywhere. Перейдите в раздел «Статические файлы». Введите тот же URL-адрес, что и STATIC_URL, в разделе URL (как правило, / static /). Введите путь из STATIC_ROOT в раздел «путь» (полный путь, включая / home / имя пользователя / и т.д.)
Затем нажмите «Перезагрузить» и проверьте статическое сопоставление файлов, чтобы получить известный статический файл.
Например, если у вас есть файл по адресу /home/myusername/myproject/static/css/base.css, перейдите на страницу http://www.your-domain.com/static/css/base.css
Это в основном то, что вы бы сделали вручную, настроив свой веб-сервер (nginx / apache, как в ответ pfitzer), но я предполагаю, вместо этого он выполняет тот же процесс установки псевдонима каталога через веб-интерфейс pythonanywhere.
Когда выполняется collectstatic, значение STATICFILES_FINDERS по умолчанию django.contrib.staticfiles.finders.FileSystemFinder будет собирать ваши статические файлы из любых путей, которые есть в STATICFILES_DIRS.
Другое значение по умолчанию STATICFILES_FINDERS django.contrib.staticfiles.finders.AppDirectoriesFinder будет искать в / static / папке любых приложений в вашем INSTALLED_APPS.
Все найденные статические файлы будут помещены в указанный каталог STATIC_ROOT.
Это скопирует все файлы из ваших статических папок в каталог STATIC_ROOT.
Вы также можете использовать
Чтобы увидеть, какие каталоги collectstatic будут искать.
Основная схема запуска статических файлов в производство — это просто запустить команду collectstatic .
Вам нужно настроить веб-сервер для обслуживания файлов в STATIC_ROOT по URL-адресу STATIC_URL .
Перейдите по этой ссылке.
Если вы используете nginx, вам нужно это в вашей конфигурации
Источник
Django admin.py Unknown command: ‘collectstatic’
I have upgraded from django 1.2.7 to django 1.5.1
I am using python 2.6.6
When i try to run python manage.py collectstatic i get
from my settings.py
If i run python manage.py help i get
If i run python manage.py version
12 Answers 12
I had a similar error message, but despite my suspicions, it had nothing to do with the Django update. If you have an error in settings (I had an empty SECRET_KEY value), then «django» will be the only app that gets loaded. I found the root of the problem by running python manage.py shell and that quickly told me what’s wrong with the settings.
For those coming here from google, I resolved it through adding
If you change name or destanation of your settings.py file, you need to invoke your manage.py with key —settings.
I recently came across this issue.
First, in your question, INSTALLED_APPS is missing a closing bracket. so check that isn’t the problem!
For me, the missing management commands was due to the MEDIA_URL setting missing a trailing slash. For some reason, this caused all commands, except the base django commands, to be missing when I used ./manage.py —help
The way I discovered this was to run a base command, which informed me of the problem with my settings.py file.
Maybe it is caused by «TEMPLATE_CONTEXT_PROCESSORS» . The official documentation says:
Be careful when you override settings, especially when the default value is a non-empty tuple or dictionary, such as MIDDLEWARE_CLASSES and TEMPLATE_CONTEXT_PROCESSORS. Make sure you keep the components required by the features of Django you wish to use.
And I checked the default value at Django setting documentation It seems that you missed an options:
The whole list of default values are:
And in my django project’s setting file, I didn’t find this value. SO I think maybe you do not need to override this value.
Источник
Collectstatic error while deploying Django app to Heroku
I’m trying to deploy a Django app to Heroku, it starts to build, download and installs everything, but that’s what I get when it comes to collecting static files
This is the whole settings.py file
This is the structure of the project
19 Answers 19
I just updated to Django 1.10 today and had the exact same problem. Your static settings are identical to mine as well.
This worked for me, run the following commands:
disable the collectstatic during a deploy
heroku config:set DISABLE_COLLECTSTATIC=1
git push heroku master
run migrations (django 1.10 added at least one)
heroku run python manage.py migrate
run collectstatic using bower
heroku run ‘bower install —config.interactive=false;grunt prep;python manage.py collectstatic —noinput’
enable collecstatic for future deploys
heroku config:unset DISABLE_COLLECTSTATIC
try it on your own (optional)
heroku run python manage.py collectstatic
future deploys should work as normal from now on
You have STATICFILES_DIRS configured to expect a static directory in the same directory as your settings.py file, so make sure it’s there not somewhere else.
Also, do you have any files in that static directory? If you don’t then git won’t track it and so although it exists locally it won’t exist in git. The usual solution to this is to create an empty file called .keep in the directory which will ensure that git tracks it. But once you have some static files in this directory then it won’t be a problem anymore.
DO NOT disable collectstatic on heroku with heroku config:set DISABLE_COLLECTSTATIC=1 . This will just hide the error and not make your app healthy.
Instead, it’s better to understand why the collectstatic command fails because it means something is not right with your settings.
Step 1
Run locally both commands:
You should see one or more error messages. Most of the time, it’s a missing variable (for ex: STATIC_ROOT ) you must add to your project settings.py file.
It’s necessary to add the test command because some collectstatic related issues will only surface with test , such as this one
Step 2
Once you’ve fixed all the error messages locally, push again to heroku.
Troubleshooting
Remember you can also run commands directly in your heroku VM. If you cannot reproduce locally, run the collecstatic command in heroku and check what’s going on directly in your production environment:
(Same goes for heroku console obviously)
Run python manage.py collectstatic locally and fix any errors. In my case there were reference errors that prevented that command from running successfully.
This worked for me:
step 1 — heroku config:set DISABLE_COLLECTSTATIC=1
step 2 — git push heroku master
I face same problem..
Follow this step
- heroku config:set DISABLE_COLLECTSTATIC=1
- git push heroku master
- python manage.py collectstatic
- python manage.py test
- If any error occurred after running test..check your STATIC_ROOT is correct like this ==> STATIC_ROOT = os.path.join(BASE_DIR, ‘static’) .
- After run collectstatic command check all static files are store in static directory for your root dir. level(manage.py dir. level).
- heroku run python manage.py collectstatic .
- heroku run python manage.py migrate
- heroku config:unset DISABLE_COLLECTSTATIC (for future use).
This error has occurred because you do not have staticfiles in your Project’s Root Directory.
Don’t worry. The solution is SIMPLE.
You only need TWO STEPS.
Step 1: Open your settings.py file and write
Step 2: Run below given command in terminal in your Project’s root directory. (If you are using any Virtual environment for Django Project then go inside your Virtual environment and then go into your Project’s root directory and then run below given command.)
Congrats : Your Problem is Solved.
Now, you can COMMIT and PUSH your «changes» so that it is reflected in your Repository and then you are good to go.
Источник
Медиа-файлы Django не отображаются с Debug = False в рабочей среде — Django 1.10
В настоящее время у меня есть два вида статических файлов и медиа-файлы. Статические файлы содержат мои css, js и другое статическое содержимое. Файлы мультимедиа содержат материалы, которые пользователь загружает. Статическая папка находится рядом с папкой мультимедиа. Теперь на моем развернутом компьютере. Если я установлю DEBUG = False , мои статические файлы будут отображаться очень хорошо, однако мой медиа-контент никогда не будет отображаться. Я получаю 404 not found ошибку. Мой вопрос заключается в том, как отображать мультимедийный контент в производственной среде, когда DEBUG = False. С DEBUG = True все вроде нормально работает? Я прочитал следующую страницу и опробовал эти вещи.
1 — попытался создать отдельную папку для статических носителей, как статический контент. В настоящее время мой статический контент управляется командой collectstatic . Я использую apache для webfaction. У меня есть статическая папка static_content , когда я запускаю ./manage.py collectstatic , все мое содержимое в статической папке было скопировано в папку static_content . Я попытался создать другую статическую папку. называется static_media . Однако, когда я запустил ./manage.py collectstatic , содержимое моей папки media было скопировано в static_content , а не в static_media , как должно было. Может кто-нибудь сказать мне, почему команда collectstatic не вставила содержимое в static_media ?
Вот как выглядит моя конфигурация
Вот как выглядит мой urls.py
Использую ли я правильный подход, создавая отдельную папку для управления медиаконтентом, как для статического контента, когда DEBUG = False? Если так, то почему команда collectstatic сбрасывает весь мой медиаконтент в мою папку static_content вместо папки static_media ? Также, если я использую статическую папку для управления медиаконтентом, когда пользователь загружает данные, куда они будут загружены в media или static_media .
5 ответов
Вы не должны использовать collectstatic для своего медиа-каталога. Удалить ‘/home/admin/webapps/mainfolder/mainapp/media’ из STATICFILES_DIRS , затем установить
Как только вы это сделаете, static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) должен обслуживать мультимедийные файлы, когда DEBUG = True .
Для DEBUG = False вам необходимо настроить Apache для обслуживания мультимедийных файлов.
Я столкнулся с той же проблемой с DEBUG=False . Я решил это, настроив расположение мультимедиа Nginx в блоке сервера следующим образом.
FULL_PATH_TO_APP — это полный путь к каталогу, где находится моя папка media .
В вашем urls.py файле:
Добавить эту строку
Добавьте эти два URL в urlpatterns:
У меня это сработало 🙂
В Pythonanywhere сервер Просто добавить статический файл url и каталог
URL
/ Статический /
/СМИ/
Путь к каталогу
/ Главная / taukir707 / MyBlog / статический
/ главная / taukir707 / MyBlog / СМИ
Если вы используете Nginx, пусть он обслуживает медиа файлы
Location / media / / home / myprojectdir / myproject ; >
Источник