因此,只要我将应用程序放在比 micro 更大的实例上,我的应用程序就可以很好地安装和部署。
当我在micro上部署composer试图安装时,我得到一个php错误,提示我无法分配足够的内存。所以我做了一些谷歌搜索,似乎你可以在启动/创建实例时创建一个交换文件/磁盘,这里有两个教程一个两个
这些可能会过时,所以第一个问题是这还能做吗?
第二个问题是如何创建.ebextensions文件以在部署时实现这一点?
这是我的尝试,但它的效果并不出所料,因为我对此知之甚少。
commands:
command:dd if=/dev/zero of=/swapfile bs=1M count=3072
command:mkswap /swapfile
command:swapon /swapfile
您可以创建预部署挂钩以通过 eb 扩展来设置交换。在项目根目录中创建一个 .eb 扩展
文件夹。在该文件夹中,创建一个包含以下内容的文件 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-swap/
在机器上运行Composer需要相当多的资源,尤其是RAM。
我了解到,在 EC2 微型实例上使用交换空间会适得其反,因为 a) 交换空间很慢,b) 使用它会计入 IO,而 IO 也必须付费,从而允许在下个月产生意外账单。
部署任何使用Composer的东西的正确方法是在将代码部署到机器上之前安装所有依赖项,然后一次性同步它。这样你就可以独立于实例的有限资源,因为你可以使用一些强大的部署机器(我打赌你的开发机器可以做到这一点)。你还可以防止因为一些必需的库的托管关闭而导致站点损坏(有没有经历过Github停机?),因为你会在部署服务器上检测到这一点,而不是在实时机器上。此外,Composer会缓存下载的任何东西,这也可能超过微实例上的有限资源——或者至少将其用于非生产性的事情。
没有尝试创建交换,所以我无法回答你的第一个问题。但是请注意,. eb扩展名
文件是一个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。日志
文件。这会告诉你发生了什么。还有什么没有按预期工作…;-)
祝你好运
假设我在Wordpress中创建了一个站点,它运行在Elastic Beanstalk上。现在,在运行的应用程序上,我将创建帖子/页面,上传图像等。也就是说,数据库中的一些数据、视频、文件和记录将被添加到运行的应用程序中。 从我在AWS控制台中看到的情况来看,我可以部署一个应用程序的不同版本--但是根据上面的场景,如果我部署了一个新版本,我会不会丢失直接上传到正在运行的应用程序中的所有文件(即文件
我是AWS的新手,这个问题似乎很基本。然而,我需要看看我是否能找到解决方案。 我首先创建并启动了一个 EC2 实例,然后创建了一个弹性 Beanstalk 实例,并在该实例上部署了一个示例应用程序。默认情况下,弹性 Beanstalk 会将“默认环境”附加到此实例,我无法将其更改为我的 EC2 实例。如何将我的 EC2 实例(我之前创建的实例)附加到此弹性豆茎实例?我正在使用亚马逊免费套餐来学习。
我有一个用Python 2.7/Tornado编写的服务器,我正在尝试将其部署到AWS上。我遇到了AWS弹性豆茎,它看起来是一种非常方便的方法来部署我的代码。 txt文件中有一个tornado==4.4.2的条目。 我尝试添加一些日志语句来写入外部文件,但该文件没有被创建,这可能意味着应用程序甚至没有启动。 如果有人能提供一些在AWS-EB上部署龙卷风应用程序的步骤,或者我应该如何开始解决这个问题
我试图在AWS Elastic Beanstek上部署一个geodjango应用程序。配置是64位AmazonLinux2017.09 v2.6.6运行Python 3.6。尝试部署时我收到此错误: 如何安装所需的软件包?我通读了在AWS Beanstalk或EC2实例中使用GeoDjango支持设置Django,但是我仍然遇到问题。我的ebextensions目前看起来像:
我无法让Flask-SocketIO与我在AWS弹性豆茎(ELB)上的实例一起工作,由于需要使用socketio.run(application)运行Flask-SocketIO,ELB似乎要调用全局应用程序对象本身。 ELB文档指出,使用application.py作为文件名并提供一个可调用的应用程序对象(在本例中是Flask对象)允许Elastic Beanstalk轻松找到应用程序的代码。
我对亚马逊AWS服务非常陌生。我想知道是否有办法运行EC2的一个实例(比如Amazon Linux AMI ),然后将两个环境连接到这个实例。 特别是,我希望在单个EC2实例上运行PHP和Tomcat环境。 问题是,每次我在Elastic Beanstalk中创建新环境时,它似乎也会创建一个新的EC2实例。我是不是遗漏了什么? 我很感激任何关于此的提示。