天道酬勤,学无止境

如何创建 .ebextensions/01_packages.config 文件?(How can I create .ebextensions/01_packages.config file?)

问题

我正在 Elastic Beanstalk 上部署我的 django 应用程序并逐步完成教程。 该步骤涉及“自定义部署过程”以向 Ec2 添加其他包。 我需要添加以下包:

packages:
  yum:
    git: []
    postgresql93-devel: []

并要求在项目的根目录下创建 .ebextensions/01_packages.config ,我不能创建它。 任何人请帮助我。 谢谢!

回答1

以下可能对您有所帮助:

您需要遵循以下层次结构:

ProjectFolder
    settings.py
    urls.py
App1
    models.py
    views.py
.ebextensions
    01_packages.config
.elasticbeanstalk
    config.yml
.git
manage.py
requirements.txt
.gitignore

以及 01_packages.config 中的以下代码:

packages:
..yum:
....git: []
....postgresql93-devel: []

.(dot) 您可以将其称为空格数。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • How can I create .ebextensions/01_packages.config file?
    I am deploying my django app on Elastic Beanstalk and going through the tutorial step by step. The is step involved "Customizing the Deployment Process" to add additional packages to Ec2. I need to add the following packages: packages: yum: git: [] postgresql93-devel: [] and asked to create .ebextensions/01_packages.config at the root of the project and I am not abel to create it. Anyone please help me with that. Thanks!
  • 如何在运行Docker实例的亚马逊弹性beantalk中更改nginx配置(How to change nginx config in amazon elastic beanstalk running a docker instance)
    问题 登录并设置cookie后,我会收到错误502。读取日志时,我得到了错误: 014/05/17 01:54:43 [error] 11013#0: *8 upstream sent too big header while reading response header from upstream, client: 83.248.134.236, server: , request: "GET /administration HTTP/1.1", upstream: 经过一番快速搜索之后,我发现:http://developernote.com/2012/09/how-i-fixed-nginx-502-bad-gateway-error/ 我想尝试将fastcgi_buffers和fastcgi_buffer_size设置为其他值。 但是我如何在Amazon Elasticbeanstalk的Nginx上设置变量? Nginx服务器在我的docker实例之前。 回答1 我还需要修改nginx配置。 创建一个脚本来修改nginx配置(可能需要/etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker.conf )并重新启动nginx服务( service nginx restart )。
  • 如何在 Amazon Elastic Beanstalk 单容器 Docker 环境中运行 Rails 迁移和播种(How to run Rails migrations and seeding in Amazon Elastic Beanstalk single container Docker environment)
    问题 我正在使用 docker 将 Rails 应用程序部署到 Elastic Beanstalk,到目前为止一切都已解决。 我正处于应用程序需要运行数据库的迁移和播种的地步,但我无法确切地弄清楚我需要如何继续。 /.ebextensions文件夹中的任何命令似乎都在主机而不是/.ebextensions容器的上下文中运行。 那是对的吗? 我可以在启动后运行命令在 docker 容器内执行迁移,但是如何确保迁移仅在单个实例上运行? 是否有环境变量或其他某种方式可以告诉我 docker 容器中的领导者是哪台机器? 更新:我于 15 年 8 月 6 日在 Amazon Elastic Beanstalk 论坛上发布了一个问题,询问如何在容器上运行“来自 Docker 主机的命令”。 您可以关注那里的对话,因为它们很有用。 回答1 我不确定您提出的解决方案是否有效。 看来 EB Docker 部署的当前进程在新的 docker 容器运行之前运行容器命令,这意味着您不能在其上使用docker exec 。 我怀疑您的命令将针对尚未停止服务的旧容器执行。 经过多次反复试验,我通过使用带有 shell 脚本的容器命令来解决这个问题。 container_commands: 01_migrate_db: command: ".ebextensions/scripts/migrate_db.sh"
  • 为 Elastic Beanstalk 上的 github 私有存储库访问设置 SSH 密钥(Setting up SSH keys for github private repo access on Elastic Beanstalk)
    问题 我的 Node.JS 项目包含对托管在 github 上的私有 NPM 存储库的引用。 这在本地工作正常,但我正在努力使其在 Elastic Beanstalk 上工作。 dependencies: { ... "express": "^4.12.4", "jsonwebtoken": "^5.0.5", "my-private-module": "git@github.com:<my-user>/<my-repo>.git#<my-version>", ... } —— 我需要的是能够在我的 Elastic Beanstalk 实例上为 git 设置一个有效的 SSH 配置,而不必在源代码控制中存储密钥等。 显然,EB 实例没有访问我的私有 github 存储库所需的 SSH 密钥。 如果我使用 HTTPS 风格的 git URL 和username:password@github.com内联,它工作正常。 它也可以使用 github 提供的 oauth 令牌方法(本质上是一个 user:pass)。 但是我不希望将任何凭据签入源代码管理,因此我尝试从 github 进行克隆以通过 SSH 在我的 EB 实例上工作。 我已经尝试了一百万种方法,包括根据这篇博客文章的npm preinstall脚本,它曾经在 npm2 之前一直有效,在 npm2 中,在构建树后进行了更改
  • 弹性beantalk部署花费的时间超过超时时间,如何增加超时时间(Elastic beanstalk deployment taking longer than timeout period, how do I increase timeout period)
    问题 使用AWS网站的应用程序的新环境的弹性beantalk部署警告 Create environment operation is complete, but with command timeouts. Try increasing the timeout period 并且尽管它最终将环境显示为绿色,但尝试连接到url只是给出了 Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. 该应用程序的早期版本可以正常工作,但是在ebextensions中,它必须从s3复制一个大文件,然后解压缩,这需要花费相当长的时间。 该应用程序的早期版本仅需要复制3GB文件,而新版本则必须复制6GB文件,而且据我所知,没有其他错误。我猜这已经导致超时并阻止了tomcat启动。 但是,如何增加超时时间,我看不到该在哪里做呢? 回答1 您可以使用选项设置来执行此操作。 可以使用ebextensions指定选项设置。 在您的应用程序源中的一个名为.ebextensions的目录中创建一个文件。 可以说文件是.ebextensions
  • 找不到pg_config可执行文件(pg_config executable not found)
    问题 我在安装psycopg2时遇到问题。 当我尝试pip install psycopg2时出现以下错误: Error: pg_config executable not found. Please add the directory containing pg_config to the PATH or specify the full executable path with the option: python setup.py build_ext --pg-config /path/to/pg_config build ... or with the pg_config option in 'setup.cfg'. ---------------------------------------- Command python setup.py egg_info failed with error code 1 in /tmp/pip-build/psycopg2 但是问题是pg_config实际上在我的PATH ; 它运行没有任何问题: $ which pg_config /usr/pgsql-9.1/bin/pg_config 我尝试将pg_config路径添加到setup.cfg文件,并使用从其网站(http://initd.org/psycopg/
  • 使用来自 ACM 的证书在 elasticbeanstalk 中强制使用 https(Forcing https in elasticbeanstalk with certificate from ACM)
    问题 我已经配置了一个可扩展的 EB(Elasticbeanstalk) rails(puma) 实例。 我已经通过 ACM(亚马逊证书管理器)申请了 https 并将其应用于我的负载均衡器。 现在我的网站启用了 HTTPS。 但是如何强制重定向到 https? 我已经在网上尝试了许多解决方案,建议通过 .ebextensions 手动进行 nginx 配置设置,但我不确定从哪里获得 ACM 的证书?(我假设 ACM 现在不可能? )。 如何强制使用 HTTPS? 回答1 当前的 AWS EB Rails 和 Node.js 设置都使用 nginx(如果您的 Web 服务器是 apache,请参阅此答案),因此以下应该有效(改编自此问题): 使用以下内容创建文件.ebextensions/01-force-https.config ( .config很重要,而不是.conf )。 如果您的环境是单个实例: files: "/etc/nginx/conf.d/01-force-https.conf": owner: root group: root mode: "000644" content: | server { listen 8080; return 301 https://$host$request_uri; } 如果您的环境是负载平衡的,很遗憾,您不能简单地添加到现有配置中
  • Beanstalk:Node.js部署-由于权限被拒绝,node-gyp失败(Beanstalk: Node.js deployment - node-gyp fails due to permission denied)
    问题 将Node.js应用程序(节点6,npm 5)部署到Beanstalk失败,原因是: 糟糕! 堆栈错误:EACCES:权限被拒绝,mkdir'/ tmp / deployment / application / node_modules / heapdump / build' 尽管该错误不是特定于软件包的,但是任何node-gyp调用都会失败。 AWS控制台中的ERROR事件显示为: [Instance:i-12345]命令在实例上失败。 返回代码:1输出:(TRUNCATED)... / opt / elasticbeanstalk / containerfiles / ebnode.py“,行180,在npm_install中引发e子进程。CalledProcessError:命令'['/ opt / elasticbeanstalk / node-install / node- v6.10.0-linux-x64 / bin / npm','-production','install']'返回非零退出状态1.钩子/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh失败。有关更多详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log。 和eb-activity.log包含上述npm错误。
  • 502 Bad Gateway Deploying Express Generator Template on Elastic Beanstalk(502 Bad Gateway Deploying Express Generator Template on Elastic Beanstalk)
    问题 我使用express生成器创建了一个简单的express应用,当在dev上启动时,它在localhost:3000上运行良好。 当我使用eb命令git aws.push将其推送到弹性beantalk时,在生产服务器上出现502错误。 查看日志,我得到的错误是: 2014/04/01 19:29:40 [error] 24204#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.2.178, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "macenvexp-env-hqv9ucmzev.elasticbeanstalk.com" 2014/04/01 19:29:40 [error] 24204#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.2.178, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127
  • 在 Elastic Beanstalk Docker 容器上运行非 www 的东西(Running non-www stuff on an Elastic Beanstalk Docker container)
    问题 我想在 Elastic Beanstalk 中的 Docker 容器上运行 SMTP 服务器,因此在我的 Dockerfile 中,我公开了端口 25(没有其他端口) EXPOSE 25 我还编辑了 beanstalk 负载均衡器(使用 EC2 网络管理员)并向其添加了端口 25: | LB Protocol | LB Port | Instance Protocol | Instance Port | SSL | | TCP | 25 | TCP | 25 | N/A | .... 并编辑实例的安全组以允许入站 TCP 流量到端口 25(允许所有位置能够直接连接到实例)。 虽然似乎不起作用。 如果我在 Virtualbox 中使用相同的 Dockerfile(使用选项-p 25:25 ),我可以通过主机连接到端口 25 并且 SMTP 服务器正在侦听。 如果我使用前面提到的配置在 Elastic Beanstalk 中运行容器,我无法使用负载均衡器或直接连接到 EC2 实例连接到端口 25。 任何想法我在这里做错了什么? 回答1 建议您使用 elasticbeanstalk ebextensions 执行此操作,而不是直接从 EC2 Web 管理员编辑负载均衡器配置,因为即使替换了自动扩展组中的 EC2 实例,这些更改也会对您的环境持续存在。 您可以尝试以下方法吗?
  • AWS errors when installing requirements with python 2.7 when EB environment is python 3.6
    How do I get the aWS EB instance to use the python 3 version that is already installed on the instance? I can't get a new environment running with Python 3.6 running Django 2.1+. Local (not in virtual env): which python -> /usr/local/bin/python python -V -> Python 2.7.15 which python3 -> /usr/local/bin/python3 python3 -V -> Python 3.6.5 which pip -> /usr/local/bin/pip pip -V -> pip 18.0 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)` which pip3 -> /usr/local/bin/pip3 pip3 -V -> pip 18.0 from /usr/local/lib/python3.6/site-packages/pip (python 3.6) Local in virtualenv mstFirst
  • 如何创建纯解决方案级 NuGet 包(How do I create a pure solution-level NuGet package)
    问题 我想创建和分发一个 NuGet 包,安装时只将解决方案范围内的安装包安装到根packages夹,引用.NuGet\packages.config文件中的.NuGet\packages.config 。 我已经找到了一些关于此主题的 NuGet 包格式的信息,根据 NuGet 常见问题解答,如果遵循以下准则,这应该是可能的: 项目级包和解决方案级包有什么区别? 解决方案级包只需在解决方案中安装一次即可用于解决方案中的所有项目。 必须在要使用它的每个项目中单独安装项目级包。 对于解决方案级别的包,NuGet 不会更改项目中的任何内容,而在项目级别的包中它会更改。 通常,解决方案级别的包会安装可从包管理器控制台窗口中调用的新命令。 另一个建议的 SO 解决方案指出,上述方法也应该有效。 问题是,我无法让它发挥作用。 我已经验证我的包没有 lib 或 content 目录: 我已将所有要分发的文件放在包中的tools文件夹中,包括安装时运行的 init.ps1` 脚本。 我正在使用 Visual Studio 2015,当我想安装软件包时: 我首先必须选择要安装到的项目。 我原以为不必指定这一点,因为它应该是解决方案范围的。 :/ init.ps1脚本确实按照我希望的方式运行和执行命令。 :) 但是,在我被迫选择完成安装的项目中创建了一个packages夹。
  • AWS Elastic Beanstalk和Composer(AWS Elastic Beanstalk and Composer)
    问题 我有一个具有Composer依赖项的应用程序,我想将其部署到Elastic Beanstalk容器中。 但是,我的composer.json文件不在项目的根文件夹中。 我的项目根目录具有以下结构: - .ebextensions - scripts - www (Webroot) - composer.json 而且我在容器配置选项中将文档根目录设置为/ www。 问题是我需要在包装盒上安装composer并运行composer安装脚本以添加项目依赖项。 我了解到,在部署期间,EB将检查项目根目录中是否存在composer.json文件并安装Composer,但在这种情况下,我的composer.json文件位于子目录中。 我认为可以在部署应用程序后使用.ebextenstions添加命令来安装Composer和依赖项。 我使用以下容器命令创建了文件.ebextensions / 01-composer.config: container_commands: 01-install-composer: command: "curl -sS https://getcomposer.org/installer | php" 02-install-packages: command: "php composer.phar install" cwd: "/var/app/current
  • 在将django应用程序部署到AWS beantalk时无效的requirements.txt(Invalid requirements.txt on deploying django app to aws beanstalk)
    问题 直到我最近一次提交,我一直在将我的应用程序部署到beantalk环境中没有任何问题。 现在我明白了 Time Type Details 2013-09-01 10:19:12 UTC+0800 ERROR Failed to deploy application. 2013-09-01 10:19:11 UTC+0800 ERROR Responses from [i-50f40d06] were received, but the commands failed. 2013-09-01 10:19:11 UTC+0800 ERROR Your requirements.txt is invalid. Snapshot your logs for details. 2013-09-01 10:19:11 UTC+0800 ERROR [Instance: i-50f40d06 Module: AWSEBAutoScalingGroup ConfigSet: Hook-PreAppDeploy] Failed on instance with return code: 1 Output: Error occurred during build: Command hooks failed . 快照日志说: 2013-09-01 02:19:08,852 [INFO] (9941
  • 在AWS beantalk下将特定的EBS卷挂载到Docker(Mount specific EBS volume to Docker under AWS beanstalk)
    问题 AWS Beanstalk可以从Docker容器运行应用程序。 如文档(http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html)所述,可以将目录映射写入Dockerrun.aws.json中的EC2卷: "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } 但是,是否可以挂载特定的EBS音量? 例如,我需要在Docker容器中运行db并使用Beanstalk进行部署。 显然,我需要数据的持久性,数据库的备份/还原等。 回答1 您可以在任何Beanstalk环境中挂载EBS卷。 该卷将在EC2实例上可用。 您可以使用ebextensions选项设置来执行此操作。 在您的应用程序源.ebextensions/01-ebs.config创建一个文件,其内容如下: option_settings: - namespace: aws:autoscaling:launchconfiguration option_name: BlockDeviceMappings value: /dev/sdj=:100,/dev/sdh=snap-51eef269,/dev
  • 如何获取NuGet以安装/更新packages.config中的所有软件包?(How do I get NuGet to install/update all the packages in the packages.config?)
    问题 我有一个包含多个项目的解决方案。 大多数第三方引用都丢失了,但是每个项目都有packages.config文件。 如何获取NuGet来安装/更新所需的所有软件包? 每个项目都需要通过命令行完成吗? 回答1 您可以使用nuget.exe还原软件包,或者在安装NuGet 2.7或更高版本时,可以在Visual Studio中简单地编译解决方案,这还将还原丢失的软件包。 对于NuGet.exe,您可以为每个项目运行以下命令。 nuget install packages.config 或者使用NuGet 2.7,您可以使用命令行来还原解决方案中的所有软件包。 nuget restore YourSolution.sln 这两个都将拉下包装。 但是,在运行此命令时,将不会修改您的项目文件,因此项目应该已经具有对NuGet包的引用。 如果不是这种情况,则可以使用Visual Studio安装软件包。 使用NuGet 2.7及更高版本,Visual Studio将在构建解决方案时自动还原丢失的NuGet程序包,因此无需使用NuGet.exe。 要更新解决方案中的所有程序包,请先还原它们,然后可以使用NuGet.exe来更新程序包,或者可以在Visual Studio中从“程序包管理器控制台”窗口中更新程序包,或者最后可以使用“管理”包对话框。 在命令行中
  • 如何使用非默认运行参数在AWS Elastic Beanstalk中运行Docker容器?(How can I run a Docker container in AWS Elastic Beanstalk with non-default run parameters?)
    问题 我有一个在我的本地开发机器上运行良好的Docker容器。 我想将其移至AWS Elastic Beanstalk ,但遇到了一些麻烦。 我正在尝试使用s3fs将S3存储桶安装到我的容器中。 我有Dockerfile: FROM tomcat:7.0 MAINTAINER me@example.com RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential libfuse-dev libcurl4-openssl-dev libxml++2.6-dev libssl-dev mime-support automake libtool wget tar # Add the java source ADD . /path/to/tomcat/webapps/ ADD run_docker.sh /root/run_docker.sh WORKDIR $CATALINA_HOME EXPOSE 8080 CMD ["/root/run_docker.sh"] 然后我安装s3fs ,挂载S3存储桶,并在创建映像后通过运行run_docker.sh运行Tomcat服务器: #!/bin/bash #run_docker.sh wget https://github
  • Nginx client_max_body_size 在 AWS Elastic Beanstalk 上的 Docker 容器中不起作用(Nginx client_max_body_size not working in Docker container on AWS Elastic Beanstalk)
    问题 我遇到了一个问题,即 nginx 似乎忽略(或覆盖)我在 AWS Elastic Beanstalk 上的 Ubuntu Docker 容器中升级的 client_max_body_size 指令。 这会阻止用户上传大于 nginx 默认 1MB 的文件。 我用的client_max_body_size 10M; 在 http、服务器和位置块中无效,我仍然在 nginx 日志中看到“客户端打算发送太大的正文”错误。 我已经在 AWS EC2 Ubuntu 实例上成功使用了这些设置,但是由于在 Docker 容器中使用相同的设置,我遇到了这个问题。 我还尝试使用此处概述的 ebextension 在 AWS Elastic Beanstalk 上增加 Nginx conf 中的 client_max_body_size 该应用程序本身是在 Tomcat 容器中运行的 CFML (Railo)。 以下是相关的 nginx 文件: 完整的未删节文件在这里 https://github.com/chapmandu/docker-railo 提前致谢。 nginx错误.log 2014/12/02 03:02:05 [error] 32116#0: *142 client intended to send too large body: 1290803 bytes, client
  • How to modify NGINX configuration on Deploying app Elastic beanstalk
    I need to add some locations to nginx.conf so the environment URL points to app.php. I have modified the file using vi. Restarting NGINX it works. But I need this configuration to be load automatically when I use eb deploy. I have read and tried: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html Elasticbeanstalk configuring HTTPS on Single Instance of Python: null values are not allowed in templates How to configure .ebextensions for nginx location directive? Amazon Elastic Beanstalk ebextension I have /.ebextensions/01_nginx.config files: "/etc/nginx/nginx
  • 如何创建解决方案级别的 NuGet 包?(How to create a solution-level NuGet package?)
    问题 如何创建解决方案级 NuGet 包。 也就是说,它不涉及任何项目,并列在 .nuget\packages.config 中(不在任何项目级别的 packages.config 文件中)。 例如,psake 和 RavenDB.Server 是解决方案级别的 NuGet 包。 我在 .nuspec 文件或 nuget.exe 的文档中找不到任何关于解决方案级包的内容。 当他们调用 nuget pack 时,我在这两个项目的构建过程中找不到任何特别之处。 事实上,我根本找不到关于创建解决方案级包的单一搜索结果。 回答1 我找到了 Phil Haack 的简短评论。 它来自 CodePlex 上的一个问题: 我们已经支持这一点。 只是不要将任何内容放在 /Content 文件夹中,也不要放在 /Lib 文件夹中。 如果您的包仅在 /Tools 文件夹中包含内容,则该包将不会安装在项目中。 还没有机会对此进行测试,但这听起来像是您正在寻找的。 快速浏览 RavenDB.Server 包(将 .nupkg 重命名为 .zip)会发现一个与 Phil 在评论中所说的一致的设置。 没有内容文件夹,没有 lib 文件夹。 很多文件。 这些文件不在/tools文件夹中,所以我认为假设这不是必需的是安全的。