Я использую AWS Beanstalk для моего приложения Django/Python, и я хотел бы использовать модуль mod_pagespeed Google. Можно ли установить и запустить mod_pagespeed с помощью файла .ebextensions/.config?Возможно ли использовать конфигурацию AWS Beanstalk's .ebextensions для установки модуля mod_pagespeed Apache?
ответ
Скачать пакет
Добавить обороты в каталог ebextensions
создать файл .config в каталоге .ebextensions
добавить команды в файл конфигурации, как это:
container_commands:
01-command:
command: rm -rf /pagespeed/ebextensions
02-command:
command: mkdir -p /pagespeed/ebextensions
03-command:
command: cp -R .ebextensions/* /pagespeed/ebextensions/
04-command:
command: rpm -U /pagespeed/ebextensions/mod-pagespeed.rpm
Убедитесь, что команды имеют отступ, как показано на рисунке, без вкладок, иначе он не будет работать.
swap «mod-pagespeed.rpm» для любого фактического имени файла rpm.
Хорошо, поэтому я хочу добавить ответ Чарли Смита. Я предлагаю вам убедиться, что вы включили следующее.
- mod_deflate - Возможно, вы захотите Gzip html, css, xml и javascript.
- Включить фильтр перезаписи доменов в Apache.conf, если вы используете CDN (напр. AWS CloudFront)
- Установите короткий кэш-контроль для изображений и CSS, так PageSpeed будет иметь возможность расширить кэш при включении фильтр extend_cache.
- Мне также нравятся фильтры rewrite_javascript, dns_prefetch, collapse_whitespace и comb_javascript.
Вот GitHub Gists, которые показывают вам, как это делается.
- The apache conf file
- The Beanstalk container_commands (они в основном так же, как Чарли)
Спасибо, ребята! Я получил работу отлично после вашего ответа @ man2xxl.
Вам не придется возиться с каталогом/PageSpeed / расширений, хотя, Beanstalk .ebextensions конфигурации может быть просто:
packages:
yum:
at: []
10_setup_apache_for_mod_pagespeed:
command: "cp enable_mod_pagespeed.conf /etc/httpd/conf.d"
20_install_mod_pagespeed:
command: rpm -U -iv --replacepkgs mod-pagespeed-*.rpm
30_clear_mod_pagespeed_cache:
command: touch /var/cache/mod_pagespeed/cache.flush
Предполагается, что у вас есть mod_pagespeed rpm, включенный в корень вашего репо. – colllin
Вы можете установить пакеты по URL. Поэтому вам не нужно загружать и распространять RPM. Что-то вроде это работает:
packages:
rpm:
pagespeed: https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm
files:
"/etc/httpd/conf.d/zzzz-pagespeed-options.conf":
mode: "00644"
owner: root
group: root
encoding: plain
content: |
# put your pagespeed configuration here
Обратите внимание, что я назвал этот файл ZZZZ-PageSpeed-options.conf, так что сервер HTTPD будет загрузить его в последнюю очередь.
Другим преимуществом этого является то, что вам действительно не нужно включать какие-либо команды или беспокоиться о копировании файлов по и поддерживать файлы в папке .ebextensions. Вы просто обновляете запись файла в файле .config.
Будет ли это гарантировать, что он включен? – man2xxl
rpm устанавливает файлы .conf для вас, если вы обнаружите, что вам нужно перезапустить apache, добавьте еще одну команду в.config файл для «apachectl restart» –
Я бы предложил переписать команды сценарию bash, потому что container_commands запускается в любое время, когда вы развертываете. Сценарий Bash может проверить, запускается ли он в первый раз, а затем устанавливаются необходимые изменения. Это поможет вам сократить время простоя во время развертывания. –