Amazon web services 将多个服务部署到Elastic Beanstalk-静态文件示例&;蟒蛇瓶 背景

Amazon web services 将多个服务部署到Elastic Beanstalk-静态文件示例&;蟒蛇瓶 背景,amazon-web-services,amazon-elastic-beanstalk,Amazon Web Services,Amazon Elastic Beanstalk,Elastic beanstalk可以通过应用程序负载平衡器配置来为多个不同的进程提供服务 在本例中,假设我们在FlaskAPI端点旁边配置一个静态文件服务器 下图显示了我们可以创建两个进程,一个api指向端口2000,另一个默认进程通过端口80 在ALB中添加规则意味着我们可以根据路径前缀将传入侦听器路由到特定进程。在本例中,以/api/*开头的任何内容都将被转发到api应用程序,而剩余的流量将通过默认服务 问题: 这一切都很好,我们现在有了一个弹性beanstalk环境,可以承载多个服务。然

Elastic beanstalk可以通过应用程序负载平衡器配置来为多个不同的进程提供服务

在本例中,假设我们在FlaskAPI端点旁边配置一个静态文件服务器

下图显示了我们可以创建两个进程,一个api指向端口2000,另一个默认进程通过端口80

在ALB中添加规则意味着我们可以根据路径前缀将传入侦听器路由到特定进程。在本例中,以/api/*开头的任何内容都将被转发到api应用程序,而剩余的流量将通过默认服务

问题: 这一切都很好,我们现在有了一个弹性beanstalk环境,可以承载多个服务。然而,目前尚不清楚的是,实际如何进行部署以针对特定流程

在单进程场景中,您只需在应用了
eb init
的目录上键入
eb deploy
,然后就可以开始了。现在,如何使用
eb deploy
部署多个流程,具体来说,如何在本例中部署“api”流程或“默认”流程


问题仍然是如何将部署部署到目标流程,但仍然存在 这是一个选项,用于特别处理静态文件,而不需要根据问题调整ALB

  • 在根目录中创建一个名为
    .ebextensions
  • 在其中,创建一个文件
    anything.config
    ——我们将其命名为
    python.config
    ,并添加下面的代码
  • /html:html
    的语法将传入的url路径映射到本地路径上您部署的路径(与
    .ebextensions
    的级别相同)-在这种情况下,url路径与服务器上的物理文件夹名称相同,但不必如此

    重要提示:不要添加尾随斜杠,例如
    /html/:html/
    将不起作用

    Nginx在幕后进行配置 默认情况下,elastic beanstalk使用代理服务器,允许您配置如何将url前缀映射到驱动器上的位置

    通过在
    .ebextensions
    中创建上述设置,将为运行应用程序的ec2实例中位于应用程序前面的nginx服务器创建一个新的配置值

    通过登录到实例并导航到下面的nginx暂存区配置,您可以自己看到这一点:
    /var/proxy/staging/nginx/conf.d/elasticbeanstalk/

    您将在其中看到以下文件:

    00_application.conf 01_static.conf healthd.conf

    此设置负责创建包含以下内容的
    01_static.conf
    文件,将任何html请求别名化为部署在
    /var/app/current/
    下的同名文件夹

    location /html {
        alias /var/app/current/html;
        access_log off;
    }
    
    要快速测试nginx配置更改,而不需要
    eb deploy
    周期,您可以从位于的最终位置调整配置
    /etc/nginx/conf.d/elasticbeanstalk/01_static.conf

    然后做一个

    服务nginx重启

    我就是这样发现的,在我的案例中,尾随的斜杠引起了问题

    location /html {
        alias /var/app/current/html;
        access_log off;
    }