Поэтому мое приложение устанавливается и развертывается нормально, пока я помещаю его в экземпляр размером больше микро.
когда я развертываю на микро, когда композитор пытается установить, я получаю ошибку php, не имея возможности выделить достаточно памяти. поэтому я сделал некоторый поиск в Google и, похоже, вы можете создать файл / диск подкачки при загрузке / создании экземпляра, вот два учебника один два
они могут быть датированы таким первым вопросом, может ли это еще быть сделано?
Второй вопрос: как создать файл .ebextensions, чтобы это произошло при развертывании?
Вот моя попытка, но она не работает неудивительно, так как я очень мало знаю об этом.
commands: command:dd if=/dev/zero of=/swapfile bs=1M count=3072 command:mkswap /swapfile command:swapon /swapfile
Запуск Composer на компьютере требует довольно много ресурсов, особенно оперативной памяти.
Я узнал, что использовать экземпляр промежуточного пространства на экземпляре EC2 является контрпродуктивным, потому что он – медленное пространство подкачки и b) использование его в сравнении с IO, которое также должно быть оплачено, что позволяет сделать неожиданный счет в следующем месяце.
Правильный способ развертывания всего, что использует Composer, – установить все зависимости до развертывания кода на компьютере, а затем синхронизировать его за один раз. Таким образом, вы не зависимы от ограниченных ресурсов экземпляра, потому что вы можете использовать какую-то мощную машину для развертывания (я уверен, ваша машина-разработчик может это сделать). Вы также не можете завершить работу с поврежденным сайтом, потому что хостинг какой-либо требуемой библиотеки не работает (когда-либо испытанное время ожидания Github?), Потому что вы обнаружите это на развертывающем сервере, а не в режиме реального времени. Кроме того, Composer будет кэшировать все загруженные, что также может превышать ограниченные ресурсы на микро-экземпляре – или, по крайней мере, использовать его для чего-то непродуктивного.
Не пытались создать своп, поэтому я не могу ответить на ваш первый вопрос. Но .ebextensions
в .ebextensions
файл .ebextensions
является YAML-файлом. Это означает, что пространства и синтаксис чрезвычайно важны для правильной работы вещей …
Синтаксис вашего примера немного выключен. Должно быть что-то вроде этого (см. Здесь ):
commands: 000_dd: command: dd if=/dev/zero of=/swapfile bs=1M count=3072 001_mkswap: command: mkswap /swapfile 002_swapon: command: swapon /swapfile
Команды выполняются в алфавитном порядке, поэтому префикс их с номером – хорошая идея.
Убедитесь, что вы можете войти в свой экземпляр EC2 и следить за файлом /var/log/cfn-init.log
. Это скажет вам, что произойдет. И что не сработало по назначению … 😉
Удачи!
Вы можете создать привязку predeploy для настройки swap через ebextensions. Создайте папку .ebextensions
в корне вашего проекта. В этой папке создайте файл 0001_setup_swap.config
со следующим содержимым:
commands: create-pre-dir: command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/pre" ignoreErrors: true files: "/opt/elasticbeanstalk/hooks/appdeploy/pre/0001_setup_swap.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash SWAPFILE=/var/swapfile SWAP_MEGABYTES=2048 if [ -f $SWAPFILE ]; then echo "Swapfile $SWAPFILE found, assuming already setup" exit; fi /bin/dd if=/dev/zero of=$SWAPFILE bs=1M count=$SWAP_MEGABYTES /sbin/mkswap $SWAPFILE /sbin/swapon $SWAPFILE echo 10 | sudo tee /proc/sys/vm/swappiness echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf /bin/chown root:root $SWAPFILE /bin/chmod 600 $SWAPFILE
Для получения дополнительной информации см. Следующие: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-12-04 , http://steinn.org/post/elasticbeanstalk- замена/