Я понимаю, что для mod_xsendfile
(что является большим обломом), поэтому мне интересно, можно ли вообще добавить его через .ebextensions
config, учитывая, что его нужно скачать и скомпилировать.
Возможно ли это сделать только с .ebextensions
config или мне нужно создать и поддерживать пользовательский AMI, чтобы он работал с Elastic Beanstalk? Если возможно, как мне настроить его без пакета yum?
В дополнение к вашему собственному ответу:
Помимо httpd24-devel, вам также понадобится установленный gcc, иначе apxs -cia mod_xsendfile.c завершится ошибкой.
К счастью, мне удалось настроить это, используя только .ebextensions
конфиги. Я создал следующий файл конфигурации ...
packages:
yum:
httpd24-devel: []
commands:
xsendfile_download:
command: wget https://tn123.org/mod_xsendfile/mod_xsendfile.c
cwd: /home/ec2-user
ignoreErrors: true
xsendfile_install:
command: apxs -cia mod_xsendfile.c
cwd: /home/ec2-user
ignoreErrors: true
Первый, это гарантирует, что правильная версия httpd-devel будет установлена вместе с apxs, которые необходимы для компиляции расширений Apache.
поскольку apxs
по умолчанию не входит ни в одну EB-версию Amazon Linux, а поскольку стандартный AMI для php 5.6 включает Apache 2.4, мы должны убедиться, что используем конкретный пакет yum для httpd24.
следующий, мы запускаем две пользовательские команды: Первая команда скачивает mod_xsendfile
в домашний каталог (который всегда /home/ec2-user/
на Amazon Linux), а второй компилирует Это. Поскольку это происходит каждый раз при создании экземпляра, mod_xsendfile
всегда будет готов к использованию к моменту запуска apache.
Оказывается, на самом деле это было довольно простое решение, и его можно использовать для обеспечения загрузки и компиляции любого пакета Apache при каждом создании нового экземпляра на AWS Elastic Beanstalk.
НОТА: Если вы хотите сделать его более отказоустойчивым (например, если бы mod_xsendfile
link когда-либо находился в автономном режиме, когда экземпляр запускался), вы можете разместить файл в другом месте, например S3, и вместо этого загрузить его оттуда.
Но это заставляет его работать, по крайней мере ... никакого специального AMI не требуется!