Elastic-beanstalk gzip Python и Django

Я пытаюсь включить сжатие gzip для Python 2.7 и Django 1.11 с помощью Apache 2.4.39 (Amazon).

Я успешно включил сжатие gzip при создании приложения Elastic Beanstalk php 7.2.

Я поместил файл .htaccess в /etc/httpd/conf.d и назвал его compression.conf

Я перезапустил Apache

$ sudo service httpd restart

На моей странице test.html использовались локальные файлы js и css, которые теперь были сжаты с помощью gzip.

Файл взят из секции сжатия html5 шаблона.

Однако у меня не получилось с Elastic Beanstalk, Python 2.7 и Django 1.11.

Я разместил файл здесь /etc/httpd/conf.d/compression.conf перезапустил апач

Локальные файлы css и js не сжимаются.

В /var/log/httpd/error_log нет соответствующих ошибок

Любые предложения приветствуются.

==================================

оба файла в .ebextensions

из файла html5boilerplate .htaccess

<----------------- start enable_mod_deflate.conf ------------------------->

# ----------------------------------------------------------------------
# | Compression                                                        |
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>

    # Force compression for mangled `Accept-Encoding` request headers
    #
    # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
    # https://calendar.perfplanet.com/2010/pushing-beyond-gzipping/

    <IfModule mod_setenvif.c>
        <IfModule mod_headers.c>
            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
        </IfModule>
    </IfModule>

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    # Compress all output labeled with one of the following media types.
    #
    # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype

    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE "application/atom+xml" \
                                      "application/javascript" \
                                      "application/json" \
                                      "application/ld+json" \
                                      "application/manifest+json" \
                                      "application/rdf+xml" \
                                      "application/rss+xml" \
                                      "application/schema+json" \
                                      "application/geo+json" \
                                      "application/vnd.ms-fontobject" \
                                      "application/wasm" \
                                      "application/x-font-ttf" \
                                      "application/x-javascript" \
                                      "application/x-web-app-manifest+json" \
                                      "application/xhtml+xml" \
                                      "application/xml" \
                                      "font/eot" \
                                      "font/opentype" \
                                      "font/otf" \
                                      "image/bmp" \
                                      "image/svg+xml" \
                                      "image/vnd.microsoft.icon" \
                                      "text/cache-manifest" \
                                      "text/calendar" \
                                      "text/css" \
                                      "text/html" \
                                      "text/javascript" \
                                      "text/plain" \
                                      "text/markdown" \
                                      "text/vcard" \
                                      "text/vnd.rim.location.xloc" \
                                      "text/vtt" \
                                      "text/x-component" \
                                      "text/x-cross-domain-policy" \
                                      "text/xml"

    </IfModule>

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    # Map the following filename extensions to the specified
    # encoding type in order to make Apache serve the file types
    # with the appropriate `Content-Encoding` response header
    # (do note that this will NOT make Apache compress them!).
    #
    # If these files types would be served without an appropriate
    # `Content-Enable` response header, client applications (e.g.:
    # browsers) wouldn't know that they first need to uncompress
    # the response, and thus, wouldn't be able to understand the
    # content.
    #
    # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
    # https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding

    <IfModule mod_mime.c>
        AddEncoding gzip              svgz
    </IfModule>

</IfModule>
 <--------------------------enable_mod_deflate.conf  ------------------------------>

<---------------------- myapp.config ------------------------------------->
 container_commands:
  01_setup_apache:
    command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf"

<---------------------- end myapp.config ------------------------------------->    

На основе: http://www.tonmoygoswami.com/2013/05/how-to-enable-gzip-on-amazon-elastic.html

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
590
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Лучший способ сделать это — создать файл в вашем каталоге .ebextensions.
Используйте эту папку для настройки всех файлов, которые будут запускаться при каждом запуске компьютера.
Таким образом, вам не нужно получать доступ к машине и изменять конфигурацию вручную.

Создайте файл .ebextensions/gzip.config следующим образом:

files:
  "/etc/httpd/conf.d/enable_mod_deflate.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/plain
        AddOutputFilterByType DEFLATE text/html
        AddOutputFilterByType DEFLATE application/xhtml+xml
        AddOutputFilterByType DEFLATE text/xml
        AddOutputFilterByType DEFLATE application/xml
        AddOutputFilterByType DEFLATE application/xml+rss
        AddOutputFilterByType DEFLATE application/x-javascript
        AddOutputFilterByType DEFLATE text/javascript
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE image/png
        AddOutputFilterByType DEFLATE image/gif
        AddOutputFilterByType DEFLATE image/jpeg

        DeflateCompressionLevel 9 # Highest level
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
        <IfModule mod_headers.c>
          Header append Vary User-Agent env=!dont-vary
        </IfModule>
      </IfModule>

Спасибо за предложение. Вы тестировали это на Django 1.11 и Python 2.7? ошибки: Helloapp-env-2 [Экземпляр: i-03905e92f051a489c] Ошибка команды в экземпляре. Код возврата: 1 Вывод: (TRUNCATED)... apache_is_running() Файл "/opt/elasticbeanstalk/hooks/config.py", строка 280, в файле sure_apache_is_running поднять PythonHooksError("Apache не запущен, но должен быть." ) config.PythonHooksError: Apache не запущен, но должен быть. Ошибка хука /opt/elasticbeanstalk/hooks/appdeploy/enact/01flip.py. Для получения дополнительной информации проверьте /var/log/eb-activity.log с помощью консоли.

JohnC 24.06.2019 21:53

@johnc Некоторые люди говорили, что для работы Apache необходимо перезапустить. Я бы посоветовал вам попробовать развернуть ваш .conf полностью пустым, просто чтобы проверить, нормально ли запускается сервер, и файл будет создан или скопирован /etc/httpd/conf.d/ правильно. В противном случае у вас может быть ошибка в содержимом .conf.

Danilo Akamine 24.06.2019 22:29

Я попробовал еще раз и избавился от всех ошибок. Однако Apache не сжимал файлы. Теперь я думаю, что это потому, что они размещены на Amazon S3 <link type = "text/css" href = "стенд-дизайн.s3.amazonaws.com/static/css/main.css" rel = "stylesheet" /> и не имеют общего доменного имени. Я решил проблему, заархивировав файлы с помощью 7zip. Как только я добавил метаданные в каждый из 5 файлов в S3 (Content-Encoding gzip), это сработало, и браузер показывает сжатый и несжатый размер на вкладке сети. Спасибо за вашу помощь.

JohnC 26.06.2019 13:58

Помните, что если вам нужно это для отдыха json API, вы должны добавить строку для этого AddOutputFilterByType DEFLATE application/json

educolo 19.04.2021 22:25

Другие вопросы по теме