为什么AWS Elastic Beanstalk会继续提供旧的应用版本?

时间:2014-04-27 17:47:37

标签: git amazon-web-services amazon-ec2 elastic-beanstalk

我在Django上开发了一个应用程序并配置为在AWS Elastic Beanstalk上部署它。该应用的早期版本已启用管理员。我在新应用中禁用了相同内容。

以下是该应用的url.py。

from django.conf.urls import patterns, include, url
#from django.contrib import admin
#from django.contrib import admin.site.urls
#admin.autodiscover()
urlpatterns = patterns('',
    # Examples:
    url(r'^$', 'firstapp.views.home', name='home'),
    url(r'^jd/', include('jd.urls')),
   # url(r'^admin/', include('admin.site.urls')),
)

但是当我浏览应用程序的URL时,所提供的应用程序仍然是旧版本。我ssh-ed到服务器并检查了文件。这些文件是旧应用程序的文件。 AWS EB控制台显示部署到环境的新应用程序版本。我还从AWS EB面板下载了代码,代码属于新应用程序。

Elastic Beanstalk env的URL是: http://secondapp-env.elasticbeanstalk.com/

可以在此处访问管理面板: http://secondapp-env.elasticbeanstalk.com/admin/ 理想情况下,此网址应为404.

问题在于,在整个AWS EB控制台中,我看到新版本的应用程序已部署并投放(我已尝试使用git aws.push推送代码以及在aws eb控制台上传)但实际上驻留在ec2服务器上的代码仍然是旧版本的应用程序。

  

如何强制上传代码?实际部署是否有延迟   代码(虽然我部署新代码已经过了一个多小时   版本和代码非常小)

2 个答案:

答案 0 :(得分:0)

如果AWS Management Console显示您部署的新AWS Elastic Beanstalk应用版本,实际情况应该是这样,其他所有内容都是AWS端的严重错误,因此有点可疑

从这个角度来看,我希望您可能不会以某种方式查看正确的资源 - 例如,您是否意外地将一个版本部署到不同的区域? (在使用AWS时,在某些时候几乎每个人都可能会看到错误的区域;)

当然,您不能拥有两个具有相同环境URL的已部署应用程序,因此实际上需要部署一个不同的应用程序(可能Elastic Beanstalk已自动选择一个,这可能会发生,具体取决于部署方案) - 这里有几件事要尝试:

  1. 验证您所看到的新环境的网址实际上是您想要的环境网址,而不是自动生成的环境网址
  2. 鉴于这只是一个测试部署,我只是删除新的一个,并期望旧的仍然可以在该URL上使用
  3. 两者都会证实你怀疑你正在运行两个环境,发现另一个环境应该很简单。

    祝你好运!

答案 1 :(得分:0)

您很可能引用了两个不同的文件或结构。

根据您使用的API,其中很多都有npm build个功能。您可能正在编辑" raw"代码,而不是构建,然后部署相同的构建文件。如果是这种情况,您将需要运行构建工具:gulp,webpack或grunt,然后再次部署。